跳到正文
余翰林 · 产品作品集
返回

工具箱报告

评测驱动的第一次产品迭代:反馈工具契约修复全记录

从基线评测的 4 例结构违例,到归因三分类(真缺陷/契约过严/测量器误报),到修复复测后结构检查全 100%——evals 门禁价值的第一次完整验证。

source: claude · 方法论见 《AI 工具箱 evals 计划》 · 前篇 《AI 工具箱 evals 基线报告》 · 复测日期 2026-09-30,结论可能随产品与模型迭代过期

一、一句话

基线评测抓到反馈工具 4 例输出契约违例;逐例归因后发现只有 2 例是产品真缺陷,1 例是契约本身设计过严,1 例是检查器级联误报——三类问题三种修法,全部修完后复测 66 例,三工具结构检查全部 100%。

二、归因:4 例失败 ≠ 4 个产品缺陷

案例现象归因处置
fb-003JSON 键名丢失前引号,解析失败真缺陷:LLM 无执行保证,prompt 铁律写明了仍偶发违反服务端机械校验 + 带具体违例重试
fb-011同一条反馈计入两个主题(count 和 9≠8)真缺陷:同上,数量守恒被破坏同上
fb-0156 条完全相同的反馈只聚出 1 个主题(契约要求 ≥3)契约过严:退化输入下 1 个主题才是诚实答案,强凑 3 个是逼模型造假契约放松为 1-12
fb-00730 条多元反馈聚成 9 类(契约上限 8)契约过严 + 检查器级联:9 类本是好分析;其余三项"违例"是越界分支清空主题后,下游检查在空列表上判出的误报契约放松 + 检查器去级联

方法论沉淀:评测红了不等于产品错了。失败样本先打开原始输入/输出人工归因,再决定修产品、修契约还是修测量器——三者的成本和正确修法完全不同。

三、修复内容(三件套)

  1. prompt v1.1:新增"输出前自查"清单(JSON 语法/枚举合法/逐条数 count/逐条核对引用);反双计铁律;引用禁带 F01: 编号前缀;聚类粒度指引(按任务/问题聚类)。
  2. 服务端契约校验 + 一次重试(contracts.ts):完整输出缓冲后做机械验收(JSON 可解析、count 守恒、quotes 逐字、枚举合法),违例时把具体违例编号发回模型重试一次;重试仍违例则返回首次输出。演示模式(mock)不参与校验。
  3. 契约放松 1-12 + 检查器去级联:insights schema / prompt / evals 结构检查器三处同步;越界时下游检查改在真实主题上继续判定。

复测当晚,服务端重试机制在两轮评测中共实测触发 6 次——不是纸面防御。

四、复测数字(66 例全量,2026-09-30)

结构检查通过率(反馈工具,检查器口径已修正)

检查项基线复测
json_valid95.5%100%
count_sum_consistent85.7%100%
quotes_verbatim90.5%100%
sentiment_valid90.5%100%
themes_in_range90.5%100%

口径声明:基线数字包含级联误报与 3-8 过严契约的影响,复测在 1-12 契约与修正口径下进行——方向对比有效,绝对值不可直接当"产品提升 10 个点"解读。三工具 66 例(竞品/反馈/PRD)全部结构检查 100%,judge 四维均分两升两平(噪音范围内,judge 分数仅作回归参考)。

成本

  • judge(deepseek-flash,温度 0):prompt 140,825 + completion 25,970 token ≈ 2-3 元
  • 全程约 15 分钟,66/66 ok 无错误

五、残留与下一步

  • 大批量 count 纪律:22 例试点中 fb-007(30 条输入)重试一次仍未救回,全量复测中同类场景已通过——保留观察,不做专项优化。
  • judge 分数仍不跨工具可比:rubric 锚点工具错位与"judge 看不到输入"两项 v2 改进未动(改 judge 会破坏基线可比性,需与产品迭代同步规划)。
  • 基线已重钉至 run 20260930-005223;前篇基线报告保留为 2026-09-29 历史快照(其结论有效期声明已覆盖)。