“这个答案不错”不是评估。“准确率 92%”也未必是评估——如果测试集不代表真实任务、评分器没有校准、失败切片被平均数掩盖,数字只会让错误更有权威感。
我的定义是:Evaluation = 把产品承诺写成可重复运行、能区分改进与退化的证据系统。它不是上线前一次考试,而是需求、开发和生产之间的共同语言。
一套 Eval 至少包含五个对象
Task真实用户要完成的工作
Trial输入、环境与一次运行轨迹
Grader确定性、模型或人工评分
Outcome最终状态与副作用
对 Agent 还要保存 Transcript(轨迹):调用了哪些工具、花了多少步、在哪里失败。只看最终答案,会漏掉越权、浪费和偶然成功。概率系统还需要多次 Trial;一次通过不能代表稳定。
六种评估幻觉
FAILURE 01
单一总分
平均数很好,却掩盖高风险用户或关键任务持续失败。
FAILURE 02
考试泄题
开发者和模型反复看到测试集,优化的是题库而非能力。
FAILURE 03
评分器污染
用与被测系统相同偏好的模型评分,错误互相强化。
FAILURE 04
没有基线
只看新方案绝对分,不知道是否优于简单 Prompt 或人工流程。
FAILURE 05
单次运行
忽略随机性,把幸运样本当成稳定能力。
FAILURE 06
指标投机
系统学会讨好评分规则,却伤害真实用户价值。
完整案例:怎样评估一篇 AI Lab 文章
公开项目:目标是建立专业可信度,而不是把文章写长评估对象同时包含内容、来源、可用性、风格与隐私。
先建立最简单基线:旧版三章节短文。新版不以字数取胜,而要在五条证据上显著改善。
Depth有明确论点、最强反方和边界
Grounding概念归属准确,关键事实有官方来源
Usefulness包含完整案例、协议与测试
Voice有 Alex 的判断,不假装原创
Safety无客户泄露、虚构案例明确标注
确定性检查负责链接、章节、重复 ID 与敏感词;模型评分负责论证连贯性和反方强度;人类负责真实性、品牌语气和是否值得署名。三种 Grader 互补,而不是互相替代。
Eval Spec:从失败开始设计,而不是从分数开始
EVAL SPEC / REUSABLEv1.0
产品承诺:[用户能完成什么] 评估单位:[一次回答 / 一条轨迹 / 一个最终状态] 任务分布:[常见、关键、边界、对抗、历史事故] 基线:[人工 / 简单 Prompt / 现有版本] 评分维度:[定义、权重、硬性失败] Grader:[规则 / 模型 / 人工;各自负责什么] 重复次数:[概率任务至少多次运行] 切片:[用户、语言、风险、工具、任务难度] 通过门槛:[总体 + 关键切片 + 零容忍项] 失败分类:[原因而非表面症状] 回归策略:[每次改动运行哪些固定集合] 生产反馈:[哪些真实失败进入评估集]
评分器也要被评估
模型 Grader 可扩大覆盖面,但必须与专家样本校准。先让多人独立评分一批代表样本,讨论分歧并写清 rubric(评分标准);再测模型评分与共识的吻合度。遇到高风险或价值判断,不要把自动评分当最终裁决。
| Grader | 擅长 | 主要风险 |
|---|---|---|
| 确定性规则 | 格式、字符串、执行结果 | 只检查可见表面 |
| 模型评分 | 语义、完整性、开放式质量 | 偏好、漂移、自洽性偏差 |
| 人工专家 | 真实性、高风险判断、产品价值 | 昂贵、慢、评分不一致 |
最强反对意见:评估会让创造性工作被指标绑架
这条反对意见值得权衡。Eval 应守住底线和产品承诺,不应把所有优秀答案压成同一模板。把“不可接受”自动化,把“真正优秀”保留给人判断。
最终闭环:真实失败不断更新测试世界
开发集用于快速迭代,保留集用于防止自我欺骗,生产失败用于扩充新的切片。每次修复都要把对应失败变成回归样本,否则同类问题迟早回来。
Eval 的最高价值不是证明系统已经很好,而是让团队更快知道哪里不好、为什么不好,以及下一次改动究竟有没有变好。