评测(Evals):一个 AI 系统能不能用,看四个数字

把 evals 拆成输入、系统、判官、数字四件事,再给判官本身打一次分。文中每个数字都标了来源。

一个 eval 的钱主要花在读输出和标用例上,代码只占很小一块。这篇把它拆成四个部件,每个部件配一个可以自己复算的数字。

片子一分五十五秒,中文配音,字幕烧在画面里,也可以用播放器关掉。

一、两条规则放过的回答#

一家卖自行车和露营装备的网店,客服工单进到模型里。工单说,我上周退了车,退款还没到账,你们自己写着五个工作日。

系统的回复很客气,四段,引用了退换货那一节,两个必含事实也都在,五个工作日和二手商品 15% 的折旧费。两条代码规则同时放行,一条查有没有引用章节,一条查必含事实齐不齐。

模型判官判它失败。它多写了一句「总额度最多 15 个工作日」。

作者在 60 条测试用例上重跑了一遍,只有 11.7% 的回复能通过全部代码规则,而代码规则一条编造的断言都没抓到。这两个数字摆在一起,就是 eval 存在的理由。一段格式和引用都挑不出毛病的话,可以同时是错的,而错的那部分恰好是客户会当真照做的部分。

图 1 一条工单走完整个循环。两次绿灯都在看形式,编造的那句 15 天从判官这道口子漏出去
轻点放大

二、四个词,四条路#

概念测什么例子常见误用
eval你的系统在你的数据上这个助手跑 60 条工单拿它跟别人的模型比
benchmark一个模型在一套公开题上GSM8K、SWE-bench拿它选产品路线
test一个函数有没有返回预期值JSON 能解析、不崩以为通过就是对的
monitoring上线之后的真实流量每天抽样评一批工单只在出事的时候看

四件事的差别不在精度,在数据归属。benchmark 的题是别人出的,eval 的题得你自己攒,攒不出来就没有 eval。原文给了一个比喻,模型是引擎,eval 是你的车在你这条路上的表现。这个比喻站得住,因为它顺手解释了另一件事,引擎评测拿第一的模型,到你这里答错客户的问题,两件事并不矛盾。

三、先读输出,再写判官#

任何自动判官动手之前,先把输出读一遍。作者读的是 60 条测试回复,逐条记一句失败原因,再把笔记并成类别。这批数据的结果是这样。

结果条数
通过34
缺必含事实15
有编造的断言12
检索到错误章节8
没有回答问题5
数值写错2
过度承诺1

60 条里 34 条通过,勉强过半。最大的两个问题合计 27 条,从 demo 里完全看不出来,因为 demo 只看一条。这张表就是后面所有判官的需求文档,按频次从高到低建。给不发生的失败写判官,得到的是一个好看但没用的数字。

读的时候标准会变。原文引 Shankar 等人 2024 年的说法,叫 criteria drift。标到第 40 条发现前 20 条的标准太松,回头改一遍。两三轮属于正常,不算返工。

图 2 60 条测试回复的失败分类。两类问题合计 27 条,比其余五类加起来还多
轻点放大

四、代码判官能做完的那一半#

有确定答案的部分交给规则,免费、即时、每次结果一样。

triage 是一个 12 选 1 的分类,看准确率。作者的数是 accuracy 0.700,macro F1 0.697。两个数接近,说明错得比较分散,没有集中在某一个类别上。

自由文本也有硬规则可以查。同一批回复里,非空 100% 通过,禁令词 92% 通过,150 词以内 17% 通过。最后这个数字说明产品话太多,不需要任何判官就能发现。

必含事实的检查也在这一层,把最高频的那类失败按零成本抓住。

相似度是另一种用法。embedding 相似度在这批回复上把好回复和坏回复分开的 AUC 是 0.709,0.5 等于抛硬币。它能告诉你版本之间变了,不能告诉你变得对不对。写错但用词相近的回复,相似度分很高。

判官能回答看不见
代码规则格式、标签、必含事实、禁语意思
相似度有没有变化对不对
专用检测器这句话在原文里有没有依据别的问题
生成式判官任何能读出来的标准偏差,需要校准
人工标注真值速度,成本
线上 A/B真实业务影响慢,有用户风险

五、判官也要先被考#

人工把 60 条全标一遍做参照,再让判官跑一遍。

人工判通过人工判失败
判官判通过2616
判官判失败810

一致的 36 条,60%。判官说通过 42 条,人工说 34 条。26 条坏回复它抓到 10 条。kappa 0.15。

60% 听起来能接受,其实不行。判官闭着眼全判通过,也有 57% 的一致率,因为多数样本本来就通过。kappa 把这个底扣掉,0 是随机,1 是完全一致。卡发布一般要 0.6,无人值守要 0.8。0.15 的判官偏松,还漏过一半以上的坏回复。

kappa 会随通过率变化。同一份判官换到通过率五成的数据集上,kappa 会好看一些,判断能力一点没变。所以原文建议报 kappa,或者分开报抓到的坏样本和误杀的样本。两个都报最省事。

判官的偏差是有数的,补救也不贵。

偏差表现证据补救
位置成对比较里偏向先出现的那条交换顺序后大量结论翻转两个顺序都判,都赢才算赢
长度越长越容易赢长度校正后与人工排序的一致性从 0.94 提到 0.98长度受控的评分,或用不奖励长度的二元问题
自偏好偏爱自家模型的行文同族判官把自己的 agent 抬高约 0.75 分,7 分制判官换一个模型族
满意度不是成功评的是对话舒不舒服只看聊天的判官分不清能用的和坏掉的,AUC 0.49把工具调用和最终状态也给它
判官身份换判官就换赢家2026 年两项审计判官型号和版本跟结果一起记

满意度那一条值得多说一句。GAUGE 在 25 个 agent、约 3700 条对话上复现了大多数公司的发布流程,让模拟用户跟 agent 聊,让判官读记录打分,分高的上线。强弱分明的时候它排得很准,与可验证真值的相关系数 0.94。两组接近的时候,也就是真实发布真正要决定的那种情况,它在 31% 的情况下把更差的那个推了上去。判官看得到工具调用、鉴权和任务是否真的了结,AUC 从 0.49 升到 0.73,失败风险减半。决定可靠性的是判官拿到的证据,模型档位说了不算。

提问方式也有讲究。原文引 Cho 等人 2026 年的实验,把「给这份摘要打几分」换成一串是非题,比如「这条断言在原文里有依据吗」,在 SummEval 上与人判断的一致性从 0.514 提高到 0.563。他们还往摘要里塞了三个编造的事实,整体打分的判官给出 5.0 满分,是非题的判官给出 1.57。提示词里堆更多指令反而会让判官变差。

图 3 人工标注与判官判断的交叉表。右下角 10 条是抓到的,右上角 16 条是漏掉的
轻点放大

六、数字要带区间#

前面每个百分比都藏着一个问题,换 60 条工单,还会是这个数吗。

bootstrap 把 60 条结果重采样几千次,看分布。triage 准确率 0.700,95% 区间 0.583 到 0.817。诚实的写法是在 58% 到 82% 之间、最可能是 70%,只写一个 70% 会把区间一起省掉。

比较两版用配对。第二版回复多检索几节,同一批 60 条工单各跑一遍。

版本判官通过率
v10.700
v20.700
差值+0.000,95% 区间 −0.117 到 +0.117

区间跨过 0,结论是没差别,留 v1。区间比单边那个窄,因为配对之后题目的难度抵掉了。McNemar 问的是逐条的问题,v2 是不是在 v1 输的地方赢。这批数据里两版是互换的,v2 在 14% 的用例上变差,在另外一些上变好。总分一样,一部分客户体验变好,另一部分变差,只报总分会把这个藏起来。

检测下限是可以算的。60 条用例能可靠看出的差异大约 12 个百分点,5 个点的回归在这个尺度上是隐形的。这条对写周报有用,低于下限就写测不出来,不要写略有提升。

一次测 20 个 prompt 变体再挑最好的,总有一个凭运气高 10 点。要么做多重比较校正,要么在另一批用例上复验。

图 4 配对比较的区间跨过 0,同时 14% 的用例在第二版上变差。总分不动,产品的形状变了
轻点放大

七、有部件的系统,分开判#

客服助手其实有三块,分类、检索加写作、执行动作的 agent。三块失败的样子不同,修法也不同,所以要分开打分。

检索单独看。命中率 hit@2 是 0.93,召回 recall@2 是 0.88。18 条失败回复里,1 条是检索没找对,17 条是找到了材料却写坏了。这一行数字能省掉一周的工程量,因为团队多半会先去调检索。

写作部分用 RAGAS 那三项,不需要金标准答案。作者跑出来 context relevance 0.855,faithfulness 0.737,和手写判官的结论一致,都是检索还行、写作更差。两个来源的数字对上了,比单独一个可信。

agent 要改三个地方。第一,判最终状态也判路径,agent 有时用奇怪的路走到对的终点。第二,每个任务跑多次,pass@k 量能力,pass^k 量可靠,面向客户的要用后者,作者的 agent pass^3 是 0.75。第三,成本单独记,同一任务同一模型不同次之间能差 30 倍,准确率在中间成本处最高,在最高成本处反而下降。

可靠性还可以单独当一个维度。Rabanser 等人 2026 年从航空和核电借来 12 个指标,分四组,跨运行一致性、抗扰动、可预测性、危害有界。15 个前沿模型上,两年的能力提升只换来大约六分之一的可靠性提升。一个 agent 能干活,和它每次都把活干对,是两件事,客户体验的是后一件。

还有一条容易被忽略。判官一旦被用来训练或挑选系统,系统就会去找判官的盲区。Qwen 团队 2026 年的文章把这个叫 verification horizon,编码 agent 会去翻仓库历史找答案、改测试、给评测器打补丁。他们加了一个行为监控,作弊解从 28.6% 降到 0.6%,真解从 40% 升到 61%。留一个系统永远看不到的判官,是这件事最低成本的做法。

八、榜只能选引擎#

公开榜的用途是缩小候选范围。用之前要知道四件事。

分数是模型、提示词、评测框架和版本四件东西的合成。作者拿同一个开源模型跑 GSM8K,两种提示格式分别得 0.686 和 0.746。lm-evaluation-harness 那篇论文记录过两位数级别的波动,来源是提示格式、few-shot 例子和抽答案的正则。

题目会漏进训练数据。GSM1k 用同难度的新题重建了 GSM8K,部分模型族掉了最多 8 分,掉多少与它背过原题的可能性相关。另外一些模型族没掉。

榜会过期。2026 年有人统计 60 个常用 benchmark,约一半已经饱和。SWE-bench Verified 两年从约 40% 涨到 80% 以上,策展人自己说它已经分不出前沿模型。Chatbot Arena 上头部模型的差距缩到约 20 个 Elo,落在噪声里。

榜也是冗余的。Zeng 和 Papailiopoulos 2026 年拼了一张 84 个模型乘 133 个 benchmark 的表,它的秩大约是二,两个因子解释了九成以上的变化。挑好的五个 benchmark 能把其余 128 个预测到 4 分以内。选引擎够用,找具体失败模式不够,那件事只能靠自己的 eval。

九、一周一次,四个数字#

把它变成习惯的成本比想象中低。Hamel Husain 的三级节奏可以直接照搬。

级别跑什么什么时候成本
1代码规则、schema、必含事实每次提交免费
2判官和检测器跑测试集,人工抽检每次改提示词、模型、检索美分级
3真实流量的 A/B上线之后有用户风险

作者教程里的 CI 门禁是这套东西的最小可用版本,通过率比记录的基线 0.70 掉超过 3 点就让构建失败。它挡的是大坑。12 点的检测下限摆在那里,5 点的回归会直接走过去。门禁页面上应该把这句话写出来,否则它会被当成质量保证。

缓存能把这套东西的成本压到几乎为零。整轮 A/B 是 121 次判官调用,约 4 美分,全部命中缓存时是 0 次调用。跳过 eval 的理由不是钱。

最后一页纸放四个数字。

数字作者这批数据的值来源
产品通过率及区间0.700,0.583 到 0.817教程实测
判官与人工的一致度kappa 0.15教程实测
检测下限约 12 个百分点按 60 条算
上次改动后变差的用例比例14%教程实测

四个缺一个,其余三个都没法解释。最容易被跳过的是第二个,而它决定了第一个能不能信。

图 5 三级节奏和四个数字。门禁落在第二级,而它的下限比它自己写的阈值宽四倍
轻点放大

参考#

  • Sergii Makarevych, 《Evals: how to know whether an AI system actually works》, X, 2026. https://x.com/sermakarevich/status/2106453816757354947
  • Hamel Husain, 《Your AI Product Needs Evals》, 2024. https://hamel.dev/blog/posts/evals/
  • Shankar 等, 《Who Validates the Validators?》, arXiv:2404.12272
  • Miller, 《Adding Error Bars to Evals》, arXiv:2411.00640
  • Bodhwani, Tran, Wei, 《GAUGE》, arXiv:2609.12191
  • Cho 等, 《Ask, Don’t Judge》, arXiv:2606.27226
  • Rabanser 等, 《Towards a Science of AI Agent Reliability》, arXiv:2602.16666
  • Zeng, Papailiopoulos, 《You Don’t Need to Run Every Eval》, arXiv:2606.24020
  • Wang 等, 《The Verification Horizon》, arXiv:2606.26300

输入以在 96 篇文章中查找

浏览全部文章