知

模块四 · 质量与生产

第 10 / 14 节19 分钟阅读型

评估:没有回归集,改 prompt 就是在赌

模型输出有随机性,"试一下感觉不错"不是评估。这一节给出三层评估、评估集怎么建、judge 的偏差与缓解,以及灰度该看什么。

读完这一节,你能做到

  1. 说清为什么 AI 功能必须有离线评估集。
  2. 按检索层、生成层、任务层三层定位问题。
  3. 建一个能一键跑、能持续补充的回归集。
  4. 用 judge 做规模评估,同时知道它什么时候不可信。

一、为什么必须有评估集

三个现实:

  • 模型输出有随机性。 同一条 prompt 跑两次结果可能不同,单次成功不能说明问题。
  • 改动的因果不直观。 换一个词、加一句话,可能整体变好也可能局部变差。
  • 回归极容易发生。 修好 A 场景的 prompt,常常弄坏 B 场景。

没有评估集,团队的协作方式会退化成"谁嗓门大听谁的"。

二、三层评估

层看什么数据来源
检索正确片段有没有被召回、排第几问题 + 正确片段 id
生成是否忠于材料、是否答到要点人工抽检 + 规则/模型辅助
任务端到端是否完成业务指标(解决率、转人工率)

为什么要分层

端到端掉点,可能是检索没给对材料,也可能是材料给了但模型跑偏。不分层,就只能瞎猜。

一个实用顺序

端到端出问题时,先看两条 trace:一条成功的、一条失败的。对比检索片段和 prompt,差异通常一眼能看出来。

多步流程怎么测

端到端太慢、也太贵,要分三层:

层怎么测特点
单步固定输入,断言工具参数与解析结果快,能进 CI
链路回放线上 trace,工具返回用固定桩可重复,测编排与分支
端到端少量真实场景慢但最真实

必须覆盖的五个分支:工具超时、工具返回空、参数校验失败、超过步数上限、需要转人工。这五条覆盖了绝大多数线上事故。

三、评估集怎么建

四个来源

  1. 真实日志采样:按意图分层抽样,别只抽热门的。
  2. 边界样本:空输入、超长输入、多意图混合、错别字。
  3. 历史 badcase:修过的每一个问题都入集,防止回归。
  4. 对抗样本:诱导提问、越权请求、套系统提示、文档里埋指令。

规模

起步 50-100 条就能用;每周从线上补 5-10 条。关键是能一键跑完并输出通过率,不能一键跑的评估集两周后就不会有人用。

维护节奏

  • 每周:从线上补 5-10 条新样本(含 badcase)。
  • 每次发版:跑全量,记录通过率并与上一版对比。
  • 每月:清理重复样本,补充新的对抗样本(攻击手法会变)。
  • 每季度:检查标注是否还符合当前业务口径,过时样本下线。

评估集不是一次性资产,它会腐化。没人维护的评估集,半年后测的是半年前的问题。

每条要标注什么

  • 输入
  • 期望行为(答案要点 / 该拒答 / 该转人工)
  • 归属层(检索 / 生成 / 任务)

四、用模型当评委:能用,但不能全信

四类偏差

  1. 位置偏好:更靠前的答案容易得分高。
  2. 长度偏好:更长、更有条理的回答被判更好。
  3. 自我偏好:同族模型打分会偏高。
  4. 宽松倾向:很少给低分,区分度不够。

四个缓解手段

  • 成对比较 + 交换位置:A/B 各跑一次并互换位置,两次都判同一方赢才算赢。
  • 给评分标准:把"好"拆成可判定条目(是否引用来源、是否答到要点、是否编造),逐条判。
  • 换模型打分:评委与被评不同族。
  • 人工校准:抽 30-50 条人工打分,对比模型打分,偏差大的维度就不用模型评。

什么时候不能用 judge

涉及事实正确性时,judge 会被"看起来很对"的编造骗过。这类必须接可验证来源(对数据库、对原文)。

五、灰度与 A/B

为什么按会话或用户分流

Agent 是有状态的。同一会话里前半段用新版本、后半段用旧版本,行为会前后矛盾。按用户 id 或会话 id 哈希分流才能保证一致性。

灰度看什么

指标说明
兜底率走到规则兜底或转人工的比例
平均步数突然变多说明规划变差
工具失败率参数错、权限错的占比
单次成本token 与调用次数
负反馈点踩、重复追问、直接转人工

A/B 的前提

提前定一个主指标(如任务完成率),其他作为护栏指标(成本、延迟、投诉率)。主指标不显著、护栏变差,就不该上。

一个常见错误

同时改 prompt、模型和检索参数,然后比较效果——无法归因。

六、常见坑

  1. 只用 happy path 验证。 上线后长尾全线崩。
  2. 评估靠手工点。 跑不起来的评估等于没有。
  3. 直接信 judge 分数。 位置与长度偏好会让结论失真。
  4. badcase 修完不入集。 同一个问题会反复出现。
  5. 按请求随机分流。 同一用户在两版之间跳变。
  6. 一次改多个变量。 改好了不知道是哪一处起的作用。

七、动手任务:自写 → AI 写 → 对比 → 取舍

四步不跳:① 自己写(限时,关掉补全)→ ② 让 AI 写同一题 → ③ 逐条比对 → ④ 说出保留谁的写法。

① 自己写

  1. 为你的场景写 10 条评估样本:输入、期望行为、归属层。
  2. 设计一张灰度看板:主指标、护栏指标、回滚条件。

② 让 AI 写同一题

把第 1 题交给 AI,补一句 按 CSV 列结构输出(input、expected、layer、note),其中至少 3 条是边界或对抗样本。

③ 对比要盯的点

  • 它生成的样本是不是都很规整(缺真实用户的错别字与半句话)?
  • 期望行为写的是"要点"还是"标准答案"?
  • 有没有分层?

④ 一句话取舍

它给的样本里,你能直接拿去跑的有几条?剩下的为什么不能用。

八、自测

  1. 为什么 AI 功能必须有离线评估集?
  2. 三层评估分别看什么?
  3. 评估集的四个来源是什么?
  4. judge 的四类偏差与四个缓解手段是什么?
  5. 为什么灰度要按用户或会话分流?
  6. 灰度期间主指标与护栏指标分别举例。

参考答案要点:随机性、因果不直观、易回归;检索/生成/任务;日志、边界、badcase、对抗;位置、长度、自我、宽松,交换位置、评分标准、换模型、人工校准;Agent 有状态,按请求分流会前后矛盾;完成率 vs 成本延迟投诉。

配套题目

★ 越多越该先背;点题目可看完整答案与深入版。

提示:读完可以顺手做几道对应题目,检验是否真的理解