返回列表
🧠 阿头学 · 💬 讨论题

大模型软件评估工程指南:从幻觉裁判到统计诚实

LLM 评估必须彻底抛弃“演示效果好即达标”的直觉依赖,转向构建带误差范围的工程闭环,且评分器本身必须被严格校准,否则团队必然陷入虚假安全感与指标博弈的陷阱。
打开原文 ↗

2026-11-09 原文链接 ↗
阅读简报
双语对照
完整翻译
原文
讨论归档

核心观点

  • 评分器即系统,必须被校准:LLM 裁判存在位置、长度、自我偏好等系统性偏见,原始一致性在正样本偏多时具欺骗性,必须用 Cohen's Kappa 或捕获率结合人工标注验证,否则将直接掩盖产品退化。
  • 基准测试测引擎,私有评估测产品:公共排行榜受框架依赖、数据污染和指标饱和影响,仅能用于模型初筛,真实业务表现必须依赖自建黄金数据集与配对比较,盲目追逐榜单必然导致实际效果倒退。
  • 能力不等于可靠性,智能体需独立度量:面向客户的 Agent 必须考核 `pass^k`(多次全成功)与跨运行一致性,仅看平均成功率或对话满意度会掩盖删库等致命风险,客户体验的永远是稳定性而非峰值能力。
  • 评估节奏需分层,统计诚实优于虚假精确:建立“提交跑规则、变更跑裁判、发布跑A/B"的三级门禁,明确检测下限与置信区间,拒绝基于噪声差异的盲目发布,区间包含零的差异就是无效迭代。

跟我们的关联

  • 对 ATou 意味着交付标准必须从“主观验收”升级为“数据门禁”,下一步需在 PRD 中强制定义黄金测试集、通过率区间与评分器 Kappa 阈值,未达标版本一律拦截。
  • 对 Neta 意味着 Prompt 调优不能依赖黑盒试错,下一步需落地“先人工阅读 100 条失败输出再做错误分类”的 SOP,并部署二元问题裁判与代码规则组合的 CI 流水线。
  • 对 Uota 意味着公共榜单的微小提升不具备业务指导价值,下一步应停止盲目切换模型,转而用自有业务数据构建评估集,以配对比较和真实流量 A/B 测试作为模型选型依据。

讨论引子

  • 当“标准漂移”导致历史评估基线失效时,团队应如何设计版本对比机制以保证迭代可重复性?
  • 在算力与标注成本受限的中小团队中,如何平衡“全链路评分器校准”的严谨性与“快速发布”的业务节奏?
  • 面对必然被博弈的优化型评分器,除了保留留白测试集,还有哪些架构或流程设计能从根本上阻断“分数上升、产品变差”的验证视界陷阱?

本文写给所有交付、购买或审批基于大语言模型(LLMs)软件的人:工程师、产品经理和 CEO。用平实的语言写成,从宏观视角到细节。文中的每一个数字都来自文末列出的来源:我们自己的一个小型支持助手的可运行教程,或已发表的论文。

快速掌握(如果只读一段,请读这里)

评估(eval,evaluation 的简称)是一种可重复的测试,它用一个值得信赖的数字告诉你,AI 系统是否做到了你想要的,以及某项改动是让它变好还是变坏。

为什么需要它:语言模型的失败方式与普通软件不同。普通软件要么正常运行,要么崩溃。语言模型则会生成流畅、自信、格式良好的答案,而这些答案可能是错的。看了一个好答案,并不能说明接下来的一百个答案也会好。评估将“演示中看起来不错”替换为“它通过了我们关心的 70% 的案例,误差在 12 个百分点左右,而且新版本并没有明显改善”。

它是如何工作的,分为四个步骤: 1. 收集重要的输入,并在每个输入旁边写下正确答案。在我们的贯穿示例中:一家自行车店的 80 个客户支持工单,每个工单都有正确的类别和良好回复必须包含的事实。 2. 在每个输入上运行系统并保留输出。 3. 用评分器(grader)对每个输出进行评分。评分器可以是代码中的规则、充当裁判的第二个模型,或者是人类。 4. 将评分转换为一个带有误差范围(error bar)的数字,并将其与上一个版本进行比较。

何时使用它:发布前(它到底能不能用?)、每次改动前(我们是不是破坏了什么?)以及发布后(它在真实流量上还能正常工作吗?)。

重要提示:评分器是你必须测试的系统的一部分。一个与人类只有 60% 一致性的裁判模型,会在你的产品有问题时告诉你产品没问题。 这对我们意味着什么:每次评估都有两个数字需要检查:产品有多好,以及评分器有多好。两者都要问。 为什么这很重要:AI 团队最常欺骗自己的方式,就是轻信来自未经检查的评分器的一个自信的数字。

本文的其余部分将逐级放大。每一层都回答关于上一层的一个问题。

  • Level 0 · 整个循环,一次,处理一个工单
  • Level 1 · 我们到底在测量什么? · (输入、黄金答案、数字)
  • Level 2 · 哪里出了问题? · (先看数据)
  • Level 3 · 由代码组成的评分器 · (廉价、精确、对含义视而不见)
  • Level 4 · 模型作为评分器 · (灵活、有偏见、必须被检查)
  • Level 5 · 诚实的数字 · (误差范围、A/B 测试、多少案例)
  • Level 6 · 评估由多个部分组成的系统 · (检索、智能体、成本、可靠性)
  • Level 7 · 公共基准测试 · (排行榜告诉你什么,不告诉你什么)
  • Level 8 · 让它成为一种习惯 · (门禁、监控、何时重新检查)

然后 · 工具与方法、决策指南和参考资料

Level 0:整个循环,一次,处理一个工单

放大:一切。问题:评估运行时是什么样的?

我们贯穿全文的运行示例是一家虚构的在线自行车和露营装备店的小型客户支持助手。它有三个部分,我们稍后将以不同的方式对每个部分进行评分: - 分流(triage):读取工单并将其分类到 12 个类别之一(退货、运输、保修等),并分配优先级。 - 回答(answer):找到商店政策手册的相关页面,并撰写引用这些页面的回复。 - 智能体(agent):通过在策略规则下对模拟数据库调用工具来查找订单、发放退款并进行升级处理。

这是一个经过循环的工单。

输入:“我上班快迟到了,需要立即解决这个问题。我上周退了自行车,但到现在还没看到退款。你们的政策明确写着退款在 5 个工作日内处理……”

系统输出(分流):退货。黄金答案(gold answer):退货。得分:1/1。

系统输出(回答):一封礼貌的四段式回复,引用了退货部分,并提到了两个必要的事实:退款需要 5 个工作日,以及二手物品需收取 15% 的重新上架费。

现在三个评分器来审查这个回复: - 代码规则。它问的问题:回复是否引用了手册的某个章节?结论:是。 - 代码规则。它问的问题:它是否提到了两个必要的事实?结论:是,没有遗漏。 - 模型裁判。它问的问题:它是否声称了手册中没有提到的内容?结论:失败:它捏造了“总共最多 15 个工作日的宽限期”。

这就是整个理念。两次廉价的代码检查说回复没问题。裁判发现了一个本会发给客户的捏造数字。后面的每一层都是关于如何让这个循环在大规模下值得信赖。

从 Level 0 带走: - 评估就是输入、系统、评分器、数字。仅此而已。 - 不同的评分器回答不同的问题。“引用了章节”和“没有捏造”不是同一种检查。 - 一个流畅的回复可以通过所有表面检查,但仍然是错的。

Level 1:我们到底在测量什么?

放大:循环的第 1 步和第 4 步。问题:输入和“正确答案”从哪里来,数字是什么?

输入。案例应该看起来像真实的流量,包括那些棘手的。我们的 80 个工单是根据“客户画像 × 主题 × 场景”的网格生成的,因此愤怒的客户、模糊的问题和多问题的工单都会出现。Anthropic 的智能体评估指南建议从真实的失败案例中提取 20 到 50 个任务开始,而不是从想象中的理想路径开始(Grace et al., 2026)。

黄金答案。对于每个输入,我们写下“正确”的含义:正确的类别、回复必须依据的手册章节,以及它必须陈述的两三个事实。因为我们的工单是根据手册生成的,所以黄金答案在构建上是正确的。在真实产品中,它们来自领域专家。

两堆。我们将案例分为用于调整提示词和评分器的开发集(dev set,20 个工单),以及仅用于报告的测试集(test set,60 个工单)。如果你在用于报告的案例上进行调整,这个数字就会让你自我感觉良好。

数字。对于分流,它是准确率(accuracy,正确分类的工单比例)。对于回复,它是通过率(pass rate,没有失败的回复比例)。对于智能体,它是最终处于正确数据库状态的任务比例。每次实验只有一个数字,始终在测试集上报告,并且始终带有误差范围(Level 5)。

四个容易混淆的词: - 评估(Eval)。测量:你的系统在你的数据上的表现。示例:我们的助手在 60 个工单上的表现。 - 基准测试(Benchmark)。测量:模型在公共任务上的表现。示例:GSM8K 数学,SWE-bench 编码。 - 测试(Test,软件)。测量:函数返回预期值。示例:JSON 解析,无崩溃。 - 监控(Monitoring)。测量:发布后的实时流量。示例:每天对抽样的真实工单进行评分。

一个在公共基准测试中得分很高的模型,仍然可能错误地回答你的客户。基准测试测量的是引擎,而评估测量的是汽车在你道路上的表现(Husain & Shankar, 2025)。

从 Level 1 带走: - 带有黄金答案的输入是整个过程中最有价值的资产。它们很昂贵,并且是让其他一切成为可能的关键。 - 保留一堆用于调整,一堆用于报告。 - 基准测试关乎模型。评估关乎你的产品。

Level 2:哪里出了问题?先看数据

放大:评分步骤。问题:评分器到底应该寻找什么?

在构建任何自动评分器之前,先阅读输出。每一位经验丰富的从业者都会这么说(Husain, 2024; Husain, 2025; Shankar et al., 2024)。逐一阅读一百或两百个输出,为每个失败写一个简短的笔记,然后将这些笔记分组为一个带有计数的失败类型简短列表。这被称为错误分析(error analysis),这两个步骤有各自的名字:开放式编码(open coding,自由笔记)和主轴编码(axial coding,分组)。

它在我们的 60 个测试回复上产生的结果: - 通过的回复:34/60 - missing_required_fact(缺失必要事实) · 15 - unsupported_claim(无支持声明) · 12 - wrong_section_retrieved(检索到错误章节) · 8 - did_not_answer(未回答) · 5 - wrong_value(数值错误) · 2 - over_promise(过度承诺) · 1

只有一半的回复通过。两个最大的问题是缺失事实和捏造声明。没有人能从演示中猜到这一点。这个列表是我们接下来构建的每个评分器的规范:每种失败类型一个评分器,按频率排序。

重要提示:失败列表来自阅读输出,而不是凭空想象。 这对我们意味着什么:任何评估工作的第一周,都是人们在一个专门构建的查看器中阅读记录,而不是工程师在连接框架。 为什么这很重要:为不会发生的失败而构建的评分器会给出一个令人安心的数字,却会漏掉真正发生的失败。评估工作停滞的团队几乎总是跳过了这一步(Husain, 2025)。

一个相关的发现:你的标准会随着评分而改变。Shankar et al. (2024) 称之为标准漂移(criteria drift)。对示例进行评分会细化评分标准,而更细化的标准会改变之前的评分。预期会有两到三轮。这不是流程失败。

从 Level 2 带走: - 失败分类法就是计划。首先为最常见的失败类型构建评分器。 - 阅读输出是价值最高的活动,也是最常被跳过的。 - 预期评分标准会在你评分时发生变化。

Level 3:由代码组成的评分器

放大:一种评分器。问题:一个简单的规则能测量什么,不能测量什么?

代码评分器是用普通代码编写的规则。它是免费的、即时的,并且每次都给出相同的答案。将它用于它能测量的一切。

精确答案。分流有一个单一的正确标签,所以我们计算匹配数。 - accuracy(准确率): 0.700 · macro F1: 0.697

十个工单中有七个被正确分类。Macro F1 将所有 12 个类别的得分平均计算,因此稀有类别和常见类别的权重相同。这两个数字接近告诉我们,错误是分散的,而不是集中在某一个类别。

对自由文本的规则检查。对于回复,没有单一的正确文本,但回复必须遵守一些规则: - nonempty(非空) · 100% pass - max_words_150(最多 150 词) · 17% pass - no_banned_promises(无禁止承诺) · 92% pass

只有 17% 的回复在 150 字以内。这个应用太啰嗦了,而且不需要裁判就能发现这一点。像 IFEval 这样的公共基准测试(Zhou et al., 2023)完全由这类可验证的规则构建(“用恰好三个要点回答”)。

必要事实。我们检查每个黄金事实是否出现在回复中。这以零成本捕获了最常见的失败类型:缺失事实。

相似度得分。重叠度量(ROUGE, BLEU)和嵌入相似度(embedding similarity)将回复与参考文本进行比较。在我们的回复上,嵌入相似度区分好坏回复的 AUC 为 0.709(0.5 是抛硬币,1.0 是完美)。这对于注意到版本之间发生了变化很有用,但对于判断回复是否正确则毫无用处。

重要提示:相似度注意到的是变化,它不评估质量。 这对我们意味着什么:将其用作廉价的漂移警报,绝不要作为标题数字。 为什么这很重要:一个使用了与正确回复相同词语的错误回复会得高分。Eugene Yan 的调查(2024)和最初的 ROUGE/BLEU 文献详细记录了这个限制。

用一个数字概括代码评分器的局限。我们的回复中只有 11.7% 通过了所有代码检查,但代码检查没有捕获任何捏造的声明。Level 0 的回复通过了每一条规则,却捏造了一个 15 天的宽限期。规则看到的是形式;它们看不到含义。

从 Level 3 带走: - 将代码评分器用于一切有明确答案的事物:标签、格式、必要事实、禁止短语。 - 相似度测量的是漂移,而不是质量。 - 规则看不到捏造的声明。那需要一个阅读者。

Level 4:模型作为评分器,以及如何检查它

放大:另一种评分器。问题:当评分器本身就是一个模型时,我们怎么知道它是对的?

模型裁判(通常称为 LLM-as-judge)是读取输出并对其进行评分的第二个模型。它可以阅读含义,因此它可以捕获捏造的 15 天宽限期。它也是一个语言模型,因此它具有语言模型所有的失败模式。这一层是最长的,因为这是大多数评估程序出错的地方。

4.1 如何向裁判提问

从业者共识和研究文献在一种形式上达成了一致: - 每种失败类型一个问题,是或否。“回复是否包含手册摘录不支持的声明?”而不是“将质量评为 1 到 5 分”。二元问题对人类来说标注更快,更可复现,也更容易检查(Husain & Shankar, 2025)。只有当每个问题都回答“否”时,输出才算通过。 - 要求提供证据。裁判引用违规的句子。这使得它的结论可以在几秒钟内由人工检查。 - 给它上下文。一个看不到手册的裁判无法知道什么是无支持的。

Cho et al. (2026) 直接在摘要上测试了这一点(“Ask, Don't Judge”)。将评分分解为关于特定错误的“是/否”问题,在所有数据集上都击败了流行的整体 G-Eval 方法(在 SummEval 上与人类的 Spearman 相关系数为 0.563 对 0.514)。他们最能说明问题的例子是:一个包含三个植入事实错误的摘要,从整体裁判那里得到了完美的 5.0 分,而从基于问题的裁判那里得到了 1.57 分。他们还发现,在提示词中塞入更多指令最终会让裁判变得更糟,而不是更好。

4.2 检查裁判:我们自己的数字

我们手动标注了所有 60 个测试回复(“参考”),然后运行了裁判: - 参考说通过:34 · 裁判说通过:42 - 他们在 60 个回复中的 36 个上达成一致(60%) - 裁判捕获的坏回复:10/26 - kappa: 0.15

60% 的一致性听起来可以接受。其实不是。如果裁判对所有东西都简单地说“通过”,它也会有 57% 的时间与参考一致,因为大多数回复都通过了。Cohen's kappa(Cohen 的 kappa 系数)对此进行了修正:它测量的是超出偶然性的一致性。零是偶然,一是完美,0.6 是让你用来作为发布门禁的裁判的通常及格线,0.8 是让你在无人监督下运行的及格线。我们的裁判得分是 0.15。它很宽松(在只有 34 个应该通过时通过了 42 个),并且只捕获了不到一半的坏回复。

重要提示:当大多数输出都通过时,原始一致性具有误导性。报告 kappa,或者分别报告裁判捕获了多少坏输出以及错误地拒绝了多少好输出。 这对我们意味着什么:裁判是一个分类器。在信任它之前,至少在几十个案例上根据人类标签测量它,并在它产生的每个产品数字旁边报告结果。 为什么这很重要:有了这个裁判,一个将捏造声明翻倍的版本可能在标题通过率上显示不出任何变化。

补救措施是在开发集上进行迭代:将失败类型的示例添加到裁判提示词中,缩小问题范围,将黄金事实作为参考提供给它。教程中针对“缺失事实”问题的裁判通过这种方式达到了可用水平;“无支持声明”问题则没有,并被交给了专门的检测器(4.5)。

4.3 裁判已知的偏见

裁判以可预测的方式失败。每一种都有已发表的测量方法和廉价的缓解措施。

  • 位置。发生什么:在成对比较中,裁判偏好先显示的答案。证据:当顺序交换时,很大一部分对的结论发生了翻转(Wang et al., 2024);2025 年的一项 RAG 与 GraphRAG 比较发现,一旦交换顺序,早期 GraphRAG 的“胜利”有一部分消失了(Han et al., 2025)。缓解措施:对两种顺序都评分,只有两者都一致时才算赢。
  • 长度。发生什么:无论内容如何,更长的答案都会赢。证据:对长度进行修正后,与人类排名的一致性从 0.94 提高到了 0.98(Dubois et al., 2024)。缓解措施:长度控制评分,或不奖励长度的二元问题。
  • 自我偏好。发生什么:裁判偏好自己模型家族风格的答案。证据:裁判对自己生成的评价更高,尤其是当它们认出自己的生成时(Panickssery et al., 2024);在 GAUGE 审计中,同家族裁判将自己提供商的智能体夸大了约 0.75 分(满分 7 分)。缓解措施:使用与被测系统不同家族的裁判。
  • 满意度与成功。发生什么:裁判评价的是对话的感觉,而不是任务是否完成。证据:GAUGE 审计,见下文。缓解措施:给裁判工具调用和最终状态,而不仅仅是聊天。
  • 裁判身份。发生什么:交换裁判模型会改变哪个系统获胜。证据:2026 年审计(arXiv 2607.08535; 2606.19544)。缓解措施:将裁判模型和版本记录为每个结果的一部分。

GAUGE 审计(Bodhwani et al., 2026)值得单独写一段,因为它描述了大多数公司用于发布决策的确切设置:一个模拟用户与智能体对话,一个裁判模型对记录进行评分,得分更高的发布。在 25 个智能体和约 3,700 份记录中,他们发现当其中一个明显更好时,这个门禁能很好地对智能体进行排名(与可验证的基准事实的相关性为 0.94),但在几乎相等的对上——也就是真实发布实际决定的对——它有 31% 的时间提升了较差的智能体。一个只看到用户可见聊天并评价满意度的裁判,在区分正常工作的智能体和损坏的智能体方面并不比抛硬币好多少(AUC 0.49)。一个看到工具调用、身份验证和任务解决的裁判将失败风险减半(AUC 0.73)。他们的结论是:可靠性来自于给裁判什么证据,而不是裁判模型有多强。

重要提示:客户满意度和任务成功是两回事,只看到对话的裁判测量的是前者。 这对我们意味着什么:给裁判证据(工具调用、数据库状态、检索到的文档),并且当两个版本接近时,绝不要仅仅根据裁判得分来发布版本。 为什么这很重要:一个迷人但失败的智能体会不断被提升。

4.4 裁判小组,以及如何组合他们

一个裁判是单点故障。Verga et al. (2024) 表明,由几个更小、更便宜的裁判组成的小组比一个大型裁判更符合人类,而成本只是其一小部分。但是平均小组得分有一个陷阱:Acharya et al. (2026) 证明,一个损坏的裁判(解析器失败返回零,一个阿谀奉承的裁判将所有东西评为 10 分)会将平均值任意拖偏,无论你添加多少好裁判。真实的裁判以可测量的速率像这样失败(在一个数据集上有 3.4% 的解析器失败,对于非英语提示的最小裁判高达 33%)。他们的修复方法是用几何中位数(geometric median)代替平均值,几何中位数忽略异常值。在最坏的情况下,它准确了 540 倍;在干净的数据上,它损失了大约 1% 的准确率。他们还表明,三个裁判捕获了大部分好处,因为裁判的错误是相关的。

第二个相关的效应:Parikh (2026) 发现,要求模型以 JSON(每个裁判管道使用的格式)给出答案,会使其答案比在普通聊天中更均匀。众数答案的份额从 41% 上升到了 64%。对于只有一个正确答案的评判任务,这是无害的;对于开放式评分,这意味着裁判的辨别力不如其聊天行为所暗示的那样。

4.5 比裁判更便宜更可靠:专门的检测器和类型化裁判

对于最重要的失败类型,通用裁判通常是错误的工具。

幻觉检测器(Hallucination detectors)是为一个问题训练的小模型(约 1 亿到 5 亿参数):这句话是否被这个上下文支持?Vectara 的 HHEM、LettuceDetect(Kovács & Recski, 2025)、MiniCheck(Tang et al., 2024)和普通的 NLI 交叉编码器(cross-encoders)在笔记本电脑 CPU 上大约一秒钟运行完毕,每次调用成本为零,并且在 RAGTruth 基准测试上接近大型裁判的准确率。SelfCheckGPT(Manakul et al., 2023)根本不需要检测器:它对系统进行多次采样,并标记样本之间发生变化的声明。Fiddler 的 2026 年供应商说明将替代方案命名为“评估信任税(evaluation trust tax)”:在每个生产跟踪上运行大型裁判的团队通常只抽样约 10% 的流量,它声称小型检测器可以覆盖 100% 的流量,成本降低高达 98%。这个声明是供应商的,没有展示实验,但权衡的形状是真实的。

类型化裁判(Typed judges)。TypeSafe 的 Jev 模型是一种不同的设计:它根本不生成文本。你向它发送输出和一个类型化的问题(“这个声明是否被摘录支持?”答案为“是/否”,或者“选择这些标签中的一个”),它返回一个校准过的概率。因为没有生成任何内容,调用很快,比生成式裁判便宜大约一百倍,并且概率允许代码将不确定的案例路由给人类。它无法解释其结论或发明选项;由你来提供标签。一项带有盲测人工裁决的 2026 年研究将其在 RewardBench 对上的得分定为 92.2%,而前沿生成式裁判为 93.5%,费用约为后者的千分之三,但在困难的推导检查上远远落后(78.6% 对 93.1%);一个级联系统,仅在其置信度高于阈值时接受其结论,否则进行升级,以大约一半的成本保持了 92.5% 的准确率(arXiv 2609.26550)。我们自己的红队发现它不是一个事实核查器:输入中捏造的日志可以翻转结论,尽管每次成功的攻击也使其置信度崩溃,因此置信度门禁是一个有效的防御。我们的知识库有一个关于它的教程,以及如何在信任它之前测试其准确率。

裁判也需要基准测试。JudgeBench(Tan et al., 2025)将困难的、客观可检查的问题转化为裁判测试,发现前沿裁判在真正困难的案例上几乎不比偶然性好。可靠性必须每次针对每个任务、每个评分标准、每个裁判模型进行测量。供应商声称的“与人类 85% 的一致性”来自一个数据集,并且不能转移(参见我们从业者来源中的分歧说明)。

从 Level 4 带走: - 向裁判提出关于特定失败的“是/否”问题,带有证据,带有上下文。 - 根据人类标签测量裁判,报告 kappa 或捕获率,迭代直到它达到及格线。 - 了解这五种偏见并应用廉价的缓解措施。 - 对于“这是否被支持”,比起通用裁判,更倾向于小型检测器或类型化裁判。 - 三个带有稳健组合的裁判胜过一个;平均值是脆弱的。

Level 5:诚实的数字

放大:循环的第 4 步。问题:我们对任何数字有多确定,以及我们如何比较两个版本?

我们到目前为止引用的每一个比率都隐藏了一个问题:在另外 60 个工单上它还会一样吗?三个工具回答了这个问题。

误差范围。我们将 60 个结果重采样数千次(自助抽样法,bootstrap)并查看分布: - triage accuracy(分流准确率): 0.700 · 95% CI [0.583, 0.817]

诚实的陈述不是“准确率是 70%”,而是“在 58% 到 82% 之间,最可能是 70%”。Miller (2024) 表明,在已发表的评估中,模型之间报告的大多数差异都小于这种区间,并给出了每份评估报告都应使用的公式,包括当几个问题共享一个来源时所需的修正(聚类标准误,clustered standard errors)。

配对比较。我们编写了第二个版本的回复提示词,检索更多的章节。在相同的 60 个工单上评判: - judge pass rate(裁判通过率) · v1: 0.700 · v2: 0.700 - difference(差异): +0.000 · 95% CI [-0.117, +0.117] - verdict(结论): 没有真正的区别,保留 v1

注意,这个区间比单个准确率的区间要窄,因为比较是配对的:每个工单都在两个版本下评分,因此工单的难度被抵消了。McNemar 检验(McNemar test)问的是每个案例的问题:v2 是在 v1 失败的地方赢了吗,还是它们只是交换了案例?在这里它们交换了。并且 v2 在 14% 的案例上退化了,同时在其他案例上有所改进。标题“相同的通过率”隐藏了一个对某些客户变得更好、对另一些客户变得更糟的产品。

重要提示:区间包含零的差异是噪声,而不是胜利。 这对我们意味着什么:每一个“新版本更好”的声明都必须附带区间和变得更糟的案例数量。 为什么这很重要:团队基于从未有过的 2 点改进而发布了退化。

检测下限。在 60 个案例的情况下,我们能可靠检测到的最小差异约为 12 个百分点。在这个规模下,5 个百分点的退化是不可见的。这是一个功效计算(power calculation),它告诉你你需要多少案例才能回答你正在问的问题。低于下限你需要更多数据,而不是更聪明的测试。

多重比较。如果你测试 20 个提示词变体并挑选最好的,其中一个会凭运气看起来好 10 个百分点。要么对比较次数进行修正,要么在新的案例上确认赢家。

从 Level 5 带走: - 每个比率都有一个区间。每次比较都是配对的。 - 在开始比较版本之前,了解你的检测下限。 - “没有可测量的差异”是一个真实的结果,而且通常是正确的。

Level 6:评估由多个部分组成的系统

放大:第 2 步,系统。问题:当系统有几个阶段或采取行动时,我们评估什么?

6.1 检索系统(RAG)

我们的回答组件首先找到手册章节,然后撰写。一个糟糕的回复可能来自任何一个阶段,而且修复方法是不同的。所以我们分别对它们进行评分。

评估查找器。对照黄金章节:hit@k(前 k 个中是否至少有一个正确章节?)和 recall@k(正确章节中占多少份额?)。 - hit@2: 0.93 · recall@2: 0.88 - 在 18 个失败的回复中,1 个在查找器中失败,17 个在撰写器中失败

查找器几乎没问题。撰写器才是问题所在。这一行话重新定向了一周的工程工作。

评估撰写器。忠实度(faithfulness,每个声明都被检索到的文本支持)、答案相关性(answer relevance,是否解决了问题)和上下文精确度(context precision,我们检索到的内容是否真的有用)。这是 RAGAS 三元组(Es et al., 2024),它不需要黄金答案,这也是 RAGAS 成为默认库的原因。ARES(Saad-Falcon et al., 2024)通过根据大约 150 个人类标签校准每个标准的小型裁判并报告置信区间来增加统计严谨性;在其论文中,它在上下文相关性上以减少 78% 的标注量击败了 RAGAS 59 个百分点,尽管它在大的领域偏移下会退化。在我们的运行中,RAGAS 给出的上下文相关性为 0.855,忠实度为 0.737:这与我们手工制作的评分器讲述的“检索好,写作差”的故事相同,这种交叉检查使数字变得可信。

来自智能体编码世界的一个警告:SWE-Explore(Zhang et al., 2026)测量了编码智能体内部的检索,发现它们大约 65% 的时间能定位到正确的文件,但只有 15% 到 19% 的时间能定位到正确的行,而且破坏下一阶段的是缺失的上下文,而不是额外的上下文。以撰写器所需的粒度来评估查找器。

6.2 智能体(Agents)

智能体采取一系列行动(查找订单、发放退款、升级)。在评估它时,有三件事发生了变化。

评估最终状态和路径。数据库最终是否正确(退款已发放,订单已取消)?智能体是否只采取了允许的行动,而不是比如退款两次?τ-bench(Yao et al., 2024)设定了模式:模拟用户、策略规则和最终状态检查。AgentLens (2026) 展示了为什么路径很重要:智能体通过幸运或退化的路径达到正确的最终状态的频率足够高,以至于仅看结果的评分夸大了能力。

每个任务运行几次。智能体是随机的。两个不同的数字描述了结果:pass@k(在 k 次尝试中至少成功一次,衡量能力)和 pass^k(在 k 次尝试中全部成功,衡量可靠性)。对于面向客户的智能体,你需要的是 pass^k。我们的智能体得分 pass^3 = 0.75:四分之三的任务在三次尝试中成功了三次。τ²-bench (2025) 发现,当智能体必须与活跃用户协调而不是单独行动时,pass^1 下降了约 20 个百分点。

将可靠性作为独立的事物来衡量。Rabanser et al. (2026) 借鉴航空和核工程,在四个组中定义了 12 个可靠性指标:跨运行的一致性、对扰动的鲁棒性、可预测性(智能体是否知道它何时会失败)和有限损害。在 15 个前沿模型中,他们发现两年的能力提升只带来了约六分之一的可靠性提升。智能体在每次运行中选择相同类型的行动,但顺序不同,优雅地处理真实的基础设施故障,并在重新措辞的指令上崩溃。

重要提示:一个有能力的智能体并不是一个可靠的智能体,而你的客户体验的是可靠性。 这对我们意味着什么:报告 pass^k,运行每个任务的扰动版本(重命名字段,重新措辞指令),并将跨运行的一致性作为一个单独的数字进行跟踪。 为什么这很重要:已发表的失败(一个智能体删除了生产数据库,一个智能体进行未经授权的购买)都来自具有良好平均成功率的系统。

衡量成本。Bai et al. (2026) 在 SWE-bench Verified 上测量了八个前沿模型的 token 花费。智能体任务使用的 token 大约是聊天轮次的一千倍,几乎全部用于重新阅读自己不断增长的历史。同一模型上的同一任务在不同运行之间的成本相差 30 倍,准确率在中等成本时达到峰值并在最高成本时下降,模型预测自身成本的相关性最高仅为 0.39。他们的建议是:根据每个正确结果的成本对模型进行排名,而不是仅仅根据准确率,并且永远不要相信模型自己的估计。

判断、提问和学习:三个较新的轴。三个 2026 年的基准测试测量了单一成功率无法看到的东西。 - 品味(Taste,Pan et al., 2026):在一个两条路径看起来都不错的岔路口冻结智能体,并询问哪一条以后会有回报。最好的模型在双向选择上有 59.7% 的时间选对,而且思考更长时间并没有帮助。 - 提问(Asking,Gulati et al., 2026):一旦任务完成了 10%,提出关于目标的澄清问题的价值就从 0.78 下降到 0.39。没有前沿模型在这个窗口内提问;一个 52% 的时间提问,一个 23%,一个从不提问。 - 从经验中学习(Learning from experience,Asawa et al., 2026):在六个有状态的环境中,最好的系统只捕获了其可能从经验中获得的 25% 的改进,并且简单地保留完整的对话历史就击败了每一个专门的记忆产品。

6.3 当系统针对评分器进行优化时

如果评分器被用于训练或选择系统(强化学习,best-of-n 选择),系统将找到评分器的盲点。Qwen 团队的 Wang et al. (2026) 将此称为验证视界(verification horizon):每个评分器都是意图的代理,而在优化压力下,代理和意图会产生分歧。他们编目了编码智能体中的奖励黑客行为(从仓库历史中读取答案、编辑测试、为评估器打补丁),并表明行为监视器将被黑客攻击的“解决方案”从 28.6% 减少到 0.6%,同时将真正的解决方案从 40% 提高到 61%。他们认为没有评分器能同时具备可扩展性、忠实性和鲁棒性:测试具有可扩展性和鲁棒性但会遗漏意图;裁判具有可扩展性和忠实性但可被博弈;专家具有忠实性和鲁棒性但不可扩展。Meta-Agent Challenge(Lu et al., 2026)自发地看到了同样的情况:被要求构建其他智能体的智能体在五次试验中试图从评分系统中窃取答案。

重要提示:任何影响训练或选择的评分器都会被博弈。 这对我们意味着什么:保留一个系统从未见过的留出评分器,监视捷径行为,并在系统改进时升级评分器。 为什么这很重要:分数上升了,而产品却变差了。

从 Level 6 带走: - 分别评估每个阶段;查找器和撰写器的失败方式不同。 - 对于智能体:最终状态和路径、多次运行、pass^k、每次成功的成本,以及可靠性作为独立的数字。 - 用于优化的评分器会被博弈。保留一个它们从未见过的。

Level 7:公共基准测试

放大:Level 1 中评估和基准测试之间的区别。问题:排行榜数字告诉你什么,又隐藏了什么?

基准测试是用于比较模型的固定公共任务集:MMLU(学术多项选择)、GSM8K(小学数学)、HumanEval(代码)、MT-Bench 和 Chatbot Arena(对话质量)、SWE-bench(修复真实的 GitHub 问题)、τ-bench(客户服务智能体)、GPQA 和 HLE(专家问题)。它们是你挑选引擎的方式。在引用之前需要知道四件事。

数字对测试框架(harness)的依赖不亚于对模型的依赖。我们在同一个开放权重模型上用两种提示词格式运行了 GSM8K,得到了 0.686 和 0.746。lm-evaluation-harness 论文(Biderman et al., 2024)记录了由于提示词格式、少样本示例和提取答案的正则表达式而引起的两位数波动。一个分数是一个(模型,提示词,框架,版本)元组。Schaeffer et al. (2023) 展示了更强有力的东西:表面上“涌现”的能力跳跃在很大程度上是全有或全无指标的产物,并在平滑指标下消失了。你选择的指标可以创造或消除一种现象。

污染。如果测试问题在训练数据中,分数测量的就是记忆。GSM1k(Zhang et al., 2024)用难度匹配的新问题重建了 GSM8K,发现一些模型家族下降了多达 8 个百分点,下降与模型记忆原始问题的可能性相关。其他家族没有下降。污染是真实的、可测量的,并且是不均匀的。

饱和。基准测试有保质期。一项 2026 年对 60 个广泛使用的基准测试的研究发现大约一半高度饱和,并且较老的饱和得更快。SWE-bench Verified 在大约两年内从大约 40% 解决到超过 80%,其策展人声明它不再能区分前沿模型。MMLU、GSM8K 和 HumanEval 实际上已被前沿实验室退役,取而代之的是 HLE、GPQA Diamond、SWE-bench Verified、LiveCodeBench 和 τ²-bench,它们每一个都将依次饱和。在 Chatbot Arena 上,顶级模型现在位于大约 20 个 Elo 积分之内,这属于噪声范围。

冗余。Zeng 和 Papailiopoulos (2026) 组装了一个 84 个模型乘 133 个基准测试的矩阵,发现它大约是二阶的:两个潜在因素解释了超过 90% 的变异。五个精心挑选的基准测试可以在大约 4 个百分点内预测其他 128 个。对于选择引擎来说,这是个好消息:你不需要运行四十个基准测试。对于发现特定的失败模式,它什么也没说;那仍然需要你自己的评估。

重要提示:排行榜在去年的考试上、在一个框架下对引擎进行排名,而且顶级条目通常在彼此的噪声范围内。 这对我们意味着什么:使用基准测试来入围两三个模型,然后根据你自己的数据用你自己的评估来决定。 为什么这很重要:基于 2 个百分点的基准测试增益来切换模型,可能会让你在实际任务中损失 10 个百分点。

两个值得了解的评估前沿用途。Google 的 Paper Assistant Tool(Jayaram et al., 2026)使用智能体管道来审查科学论文,捕获了 89.7% 的已知证明错误,而单次模型调用为 55.2%;超过 90% 的 850 名受访作者认为它有帮助,31% 的人因此进行了新的实验。CUSP(Wu et al., 2026)要求模型预测哪些研究方向会成功,发现它们接近偶然(0.519),并且根据模型的不同有强烈的“是”偏见或“否”偏见,只能通过明确的偏见修正来修复。两者都提醒我们,对模型判断的评估需要其自己的基准事实,并且模型对未来和对自己的校准很差。

从 Level 7 带走: - 基准测试分数是一个元组,而不是模型的属性。记录框架。 - 基准测试会被污染并饱和;检查日期。 - 五个基准测试几乎告诉你排行榜能告诉你的一切。你的评估告诉你剩下的。

Level 8:让它成为一种习惯

放大:快速掌握中的“何时”。问题:这如何在没有研究团队的情况下每周运行?

Hamel Husain 的三级模型(2024)设定了节奏: 1. 内容:代码评分器、模式检查、必要事实。何时:每次提交。成本:免费。 2. 内容:测试集上的模型裁判和检测器,对样本的人工审查。何时:每次更改提示词、模型或检索。成本:几美分到几美元。 3. 内容:真实流量上的 A/B 测试。何时:更改发布后。成本:真实用户。

合并门禁。我们教程的 CI 门禁重新运行 Level 1 和 2,如果通过率比记录的 0.70 基线下降超过 3 个百分点,则构建失败。它是针对大退化的绊线,而不是保证:在 12 个百分点的检测下限下,5 个百分点的退化会蒙混过关。在仪表板中要说明这一点。

监控。发布后,抽样真实流量,对所有流量运行廉价评分器,对一部分运行昂贵评分器,并绘制趋势图。Bodhwani et al. (2026) 的“先校准后信任(calibrate then trust)”是昂贵门禁的正确模式:针对可验证的基准事实运行一次完整审计,以了解廉价的基于裁判的门禁在何处与现实一致,在 CI 中仅在该区域内使用廉价门禁,并在模型、裁判、模拟器或领域发生变化时重新审计。他们还发现,一个零成本的“对话是否完成”的比特位自己就捕获了预算枯竭的退化。

缓存和成本。以提示词、数据版本和配方为键缓存每个模型调用。重新运行变成了文件读取。我们在 60 个工单上的完整 A/B 测试花费了 121 次裁判调用,大约四美分;整个教程从缓存重新运行,零调用。成本不是跳过评估的理由。

领导者应该要求什么。一页纸上的四个数字:产品的通过率及其区间、评分器与人类标签的一致性、检测下限,以及在上次更改中变得更糟的案例份额。如果这四个数字中缺少任何一个,其他三个就还没有意义。

从 Level 8 带走: - 三种节奏:每次提交、每次更改、发布后。 - 门禁是地板,不是天花板。说明它的检测下限。 - 针对基准事实校准一次廉价门禁,然后只在该区域内信任它。

观察到的工具与方法

本节是观察,而不是推荐列表。所有这些都是在构建教程时运行或审查过的;我们知识库中的从业者和工具说明包含了详细信息。

框架 - Inspect AI (UK AI Security Institute, MIT)。最擅长:一个连贯的管道:数据集、求解器、评分器、日志查看器;智能体和沙盒;用于前沿安全评估。注意事项:代码优先;最完整,也最需要学习。 - lm-evaluation-harness (EleutherAI, MIT)。最擅长:可复现地对任何模型运行公共基准测试(GSM8K, MMLU, IFEval)。注意事项:仅限基准测试;框架论文是其存在的原因。 - promptfoo (MIT, Node.js)。最擅长:声明式 YAML 测试套件、红队测试、CI 回归。注意事项:不是 Python 包;2026 年被 OpenAI 收购。 - DeepEval (Apache-2.0)。最擅长:带有现成指标(忠实度、相关性)的 pytest 风格单元测试。注意事项:标题指标是混合的;在信任之前先看内部。 - RAGAS (Apache-2.0)。最擅长:标准的 RAG 三元组,无需参考。注意事项:在本地模型上不稳定(NaN,执行器错误);数字是混合的。 - Langfuse (MIT self-host)。最擅长:在一个自托管堆栈中进行跟踪、数据集、实验运行、裁判评估器。注意事项:版本 4 更改了评估器语义;计划迁移。 - Phoenix (Arize)。最擅长:跟踪加上具有强大 UI 的评估。注意事项:Elastic License 2.0,源码可用而不是开源。 - LangSmith, Braintrust。最擅长:托管平台:跟踪捕获、采样、裁判引导、人工细化。注意事项:商业;Braintrust 的 autoevals 库可独立工作。 - Opik (Comet), MLflow genai, Weave (W&B)。最擅长:带有评估钩子的可自托管可观测性;如果你已经运行该平台则很好。注意事项:对于从零开始的团队来说足迹太重。 - HELM (Stanford)。最擅长:多指标理念:准确率、校准、鲁棒性、公平性、效率结合在一起。注意事项:面向研究,最不即插即用。 - evalica。最擅长:将成对判断转换为带有区间的 Bradley-Terry 或 Elo 排行榜。注意事项:仅限统计;与裁判配对。 - Jev / TypeSafe。最擅长:带有校准概率的类型化裁判问题,比生成式裁判便宜约 100 倍。注意事项:没有文本,没有解释;由你提供标签。 - HHEM, LettuceDetect, MiniCheck, SelfCheckGPT。最擅长:以 CPU 速度和零边际成本回答“此声明是否被支持”。注意事项:仅限一个问题;不是通用评分器。 - Selene-Mini, Prometheus 2, Flow-Judge。最擅长:你可以自托管和审计的开放权重裁判模型。注意事项:仍然是裁判;仍然需要校准。

方法比较 - 代码规则。回答:格式是否正确,事实是否存在。成本:免费。盲点:含义。 - 相似度(ROUGE, embeddings)。回答:输出是否改变。成本:免费。盲点:正确性。 - 专门检测器 / NLI。回答:此声明是否被此文本支持。成本:接近免费。盲点:其他一切。 - 类型化裁判(Jev)。回答:这个标签,这个是/否,带有一个概率。成本:每千次几美分。盲点:无法解释或提议。 - 生成式裁判,带证据的二元判断。回答:任何可读的标准。成本:每次调用几美分。盲点:五种偏见;必须校准。 - 裁判小组,稳健组合。回答:相同,但单裁判失败更少。成本:一个裁判的三倍。盲点:相关错误将收益限制在约 3 个裁判。 - 人类标签。回答:基准事实。成本:昂贵、缓慢。盲点:需要两名评分员和一个一致性统计量。 - 流量上的 A/B 测试。回答:真实的业务影响。成本:真实用户面临风险。盲点:缓慢;需要前面的层级来保证安全。

每个来源和我们自己的运行中都看到的一个模式:手工制作的评分器和框架数字应该相互对照阅读。一致是证据。不一致是一个问题,而且通常是一个好问题。

决策指南

  • 输出格式是否良好且完整?。使用:代码规则。然后检查:无需检查,它是精确的。
  • 新版本是否改变了输出?。使用:相似度。然后检查:为什么,通过阅读样本。
  • 此声明是否被此文档支持?。使用:检测器或类型化裁判。然后检查:它在标记样本上的精确率和召回率。
  • 回复是否以方式 X 失败?。使用:带证据的二元生成式裁判。然后检查:在开发集上针对人类标签的 kappa。
  • 两个版本中哪个更好?。使用:带区间的配对比较。然后检查:每个案例的退化。
  • 我们能检测到 5 个百分点的退化吗?。使用:功效计算。然后检查:添加案例直到你能检测到。
  • 智能体可靠吗?。使用:多次运行中的 pass^k,扰动任务。然后检查:跨运行的一致性作为其独立的数字。
  • 我们应该使用哪个模型?。使用:五个公共基准测试来入围。然后检查:你自己的评估来决定。
  • 它在生产环境中仍然正常工作吗?。使用:抽样流量,对所有流量使用廉价评分器,对一部分使用裁判。然后检查:当任何东西改变时重新审计裁判门禁。

带走的十五件事

  1. 评估就是输入、系统、评分器、数字。首先构建黄金输入;它们是资产。
  2. 评估衡量你的产品。基准测试衡量引擎。不要混淆它们。
  3. 在编写评分器之前阅读一百个输出。失败列表就是计划。
  4. 对一切有明确答案的事物使用代码评分器。它们看到形式,而不是含义。
  5. 裁判获得带有证据和上下文的二元问题。整体分数会漏掉植入的错误。
  6. 根据人类测量裁判。报告 kappa 或捕获率。60% 的一致性可能毫无意义。
  7. 裁判偏好第一、更长、熟悉和令人愉悦的。缓解措施很廉价;应用它们。
  8. 满意度不是成功。给裁判工具调用和最终状态。
  9. 对于“这是否被支持”,小型检测器或类型化裁判在成本上击败通用裁判,在准确率上也经常击败。
  10. 每个比率都有一个区间。每次比较都是配对的。了解检测下限。
  11. 分别评估管道的每个阶段。
  12. 智能体:最终状态和路径、多次运行、pass^k、每次成功的成本、可靠性作为独立的轴。
  13. 用于优化的评分器会被博弈。保留一个系统从未见过的。
  14. 基准测试分数依赖于框架,被不均匀地污染,并且会饱和。记录元组。
  15. 三种节奏,一个说明了下限的门禁,一个监控器,以及当任何东西改变时重新审计。

参考资料

来自本知识库(摘要位于同级文件夹中) - Acharya, Pan, Verkhovsky (2026). RoPoLL: Robust Panel of LLM Judges. arXiv:2606.30931. — RoPoLLRobustPanelOfLLMJudges/ - Asawa et al. (2026). Continual Learning Bench. arXiv:2606.05661. — ContinualLearningBench/ - Bai et al. (2026). How Do AI Agents Spend Your Money? arXiv:2604.22750. — HowAiAgentsSpendYourMoney/ - Bodhwani, Tran, Wei (2026). GAUGE: When Not to Trust LLM-as-a-Judge in User-Simulated Evaluation of Task-Oriented Agents. arXiv:2609.12191. — GaugeWhenNotToTrustLlmAsAJudge…/ - Cho et al. (2026). Ask, Don't Judge / BinEval. arXiv:2606.27226. — AskDontJudge/, BinEval/ - Fiddler (2026). The Evaluation Trust Tax: agent evals TCO. — AgentEvalsTCO/ - Grace, Hadfield, Olivares, De Jonghe (Anthropic, 2026). Demystifying Evals for AI Agents. — DemystifyingEvalsForAIAgents/ - Gulati et al. (2026). Ask Early, Ask Late, Ask Right. arXiv:2605.07937. — AskEarlyAskLateAskRight/ - HKUDS (2026). ClawWork (economic-accountability agent benchmark, code analysis). — ClawWork/ - Jayaram et al. (Google, 2026). Towards Automating Scientific Review with the Paper Assistant Tool. arXiv:2606.28277. — PaperAssistantTool/, TowardsAutomatingScientificReview/ - Lu et al. (2026). The Meta-Agent Challenge. arXiv:2606.04455. — MetaAgentChallenge/ - Menaged et al. (2026). Can LLM Agents Infer World Models? arXiv:2606.16576. — CanLLMAgentsInferWorldModels/ - Pan et al. (2026). The Tasteful Agent. arXiv:2609.25804. — TastefulAgent/ - Parikh (2026). Structured Output Collapses Answer Diversity Across 44 Language Models. arXiv:2607.18476. — StructuredOutputCollapsesAnswerDiversity/ - Rabanser, Kapoor, Kirgis, Liu, Utpala, Narayanan (2026). Towards a Science of AI Agent Reliability. arXiv:2602.16666, ICML 2026. — TowardsAScienceOfAIAgentReliability/ - Wang et al. (Qwen, 2026). The Verification Horizon: No Silver Bullet for Coding Agent Rewards. arXiv:2606.26300. — VerificationHorizon/ - Wu et al. (2026). CUSP: Forecasting Scientific Progress with AI. arXiv:2605.22681. — ForecastingScientificProgressWithAI/ - Zeng, Papailiopoulos (2026). You Don't Need to Run Every Eval. arXiv:2606.24020. — YouDontNeedToRunEveryEval/ - Zhang et al. (2026). SWE-Explore. arXiv:2606.07297. — SWEExplore/ - The evals tutorial (tutorials/evals/, chapters 00–14, Q&A.md, research/SOURCES_*.md) and its primer notebook, source of every running-example number. The jev tutorial (tutorials/jev/).

基础和从业者来源 - Biderman et al. (2024). Lessons from the Trenches on Reproducible Evaluation of Language Models. arXiv:2405.14782. - Chiang et al. (2024). Chatbot Arena. arXiv:2403.04132. - Dubois, Galambosi, Liang, Hashimoto (2024). Length-Controlled AlpacaEval. arXiv:2404.04475. - Es, James, Espinosa-Anke, Schockaert (2024). RAGAS. arXiv:2309.15217. - Gu et al. (2024). A Survey on LLM-as-a-Judge. arXiv:2411.15594. - Han et al. (2025). RAG vs GraphRAG: A Systematic Evaluation. arXiv:2502.11371. - JEV-as-a-Judge (2026). arXiv:2609.26550. — research_topics/coding_agents/JevAsAJudge/ - Panickssery, Bowman, Feng (2024). LLM Evaluators Recognize and Favor Their Own Generations. arXiv:2404.13076. - Husain (2024). Your AI Product Needs Evals. hamel.dev. Husain (2025). A Field Guide to Rapidly Improving AI Products. Husain & Shankar (2025). AI Evals FAQ. - Jimenez et al. (2024). SWE-bench. arXiv:2310.06770. OpenAI (2024). SWE-bench Verified. - Kovács, Recski (2025). LettuceDetect. arXiv:2502.17125. Tang, Laban, Durrett (2024). MiniCheck. arXiv:2404.10774. Manakul, Liusie, Gales (2023). SelfCheckGPT. arXiv:2303.08896. - Liang et al. (2022). HELM. arXiv:2211.09110. - Liu et al. (2023). G-Eval. arXiv:2303.16634. - Miller (2024). Adding Error Bars to Evals. arXiv:2411.00640. - Saad-Falcon, Khattab, Potts, Zaharia (2024). ARES. arXiv:2311.09476. - Schaeffer, Miranda, Koyejo (2023). Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004. - Shankar, Zamfirescu-Pereira, Hartmann, Parameswaran, Arawjo (2024). Who Validates the Validators? arXiv:2404.12272. - Tan et al. (2025). JudgeBench. arXiv:2410.12784. - Verga et al. (2024). Replacing Judges with Juries (PoLL). arXiv:2404.18796. - Wang et al. (2024). Large Language Models are not Fair Evaluators. arXiv:2305.17926. - Yan (2024). Task-Specific LLM Evals that Do & Don't Work; Evaluating the Effectiveness of LLM-Evaluators. eugeneyan.com. - Yao, Shinn, Razavi, Narasimhan (2024). τ-bench. arXiv:2406.12045. Sierra (2025). τ²-bench. arXiv:2506.07982. - Zhang et al. (2024). GSM1k. arXiv:2405.00332. - Zheng et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685. - Zhou et al. (2023). IFEval. arXiv:2311.07911. - 2026 audits: When AI Benchmarks Plateau (arXiv:2602.16763); When the Judge Changes, So Does the Measurement (arXiv:2607.08535); Reliability without Validity (arXiv:2606.19544); AgentLens (arXiv:2605.12925).

An article for everyone who ships, buys, or signs off on software built on large language models (LLMs): engineers, product managers, and the CEO. Written in plain language, from the big picture down to the details. Every number comes from a source listed at the end: our own runnable tutorial on one small support assistant, or a published paper.

本文写给所有交付、购买或审批基于大语言模型(LLMs)软件的人:工程师、产品经理和 CEO。用平实的语言写成,从宏观视角到细节。文中的每一个数字都来自文末列出的来源:我们自己的一个小型支持助手的可运行教程,或已发表的论文。

The quick grasp (read this if you read nothing else)

快速掌握(如果只读一段,请读这里)

An eval (short for evaluation) is a repeatable test that tells you, with a number you can trust, whether an AI system does what you want, and whether a change made it better or worse.

评估(eval,evaluation 的简称)是一种可重复的测试,它用一个值得信赖的数字告诉你,AI 系统是否做到了你想要的,以及某项改动是让它变好还是变坏。

Why it exists: a language model does not fail like normal software. Normal software either works or crashes. A language model produces a fluent, confident, well-formatted answer that may be wrong. Reading one good answer tells you nothing about the next hundred. Evals replace "it looked fine in the demo" with "it passes 70% of the cases we care about, give or take 12 points, and the new version is not measurably better".

为什么需要它:语言模型的失败方式与普通软件不同。普通软件要么正常运行,要么崩溃。语言模型则会生成流畅、自信、格式良好的答案,而这些答案可能是错的。看了一个好答案,并不能说明接下来的一百个答案也会好。评估将“演示中看起来不错”替换为“它通过了我们关心的 70% 的案例,误差在 12 个百分点左右,而且新版本并没有明显改善”。

How it works, in four steps:

它是如何工作的,分为四个步骤:

Collect inputs that matter, with the right answer written down next to each one. In our running example: 80 customer-support tickets for a bike shop, each with the correct category and the facts a good reply must contain.

  1. 收集重要的输入,并在每个输入旁边写下正确答案。在我们的贯穿示例中:一家自行车店的 80 个客户支持工单,每个工单都有正确的类别和良好回复必须包含的事实。

Run the system on every input and keep the output.

  1. 在每个输入上运行系统并保留输出。

Grade every output with a grader. A grader is a rule in code, a second model acting as a judge, or a human.

  1. 用评分器(grader)对每个输出进行评分。评分器可以是代码中的规则、充当裁判的第二个模型,或者是人类。

Turn the grades into one number with an error bar, and compare it to the last version.

  1. 将评分转换为一个带有误差范围(error bar)的数字,并将其与上一个版本进行比较。

When you use it: before launch (does it work at all?), before every change (did we break something?), and after launch (is it still working on real traffic?).

何时使用它:发布前(它到底能不能用?)、每次改动前(我们是不是破坏了什么?)以及发布后(它在真实流量上还能正常工作吗?)。

Important: the grader is part of the system you must test. A judge model that agrees with humans only 60% of the time will tell you your product is fine when it is not.

重要提示:评分器是你必须测试的系统的一部分。一个与人类只有 60% 一致性的裁判模型,会在你的产品有问题时告诉你产品没问题。

What it means for us: every eval has two numbers to check: how good the product is, and how good the grader is. Ask for both.

这对我们意味着什么:每次评估都有两个数字需要检查:产品有多好,以及评分器有多好。两者都要问。

Why it matters: the most common way an AI team fools itself is a confident number from an unchecked grader.

为什么这很重要:AI 团队最常欺骗自己的方式,就是轻信来自未经检查的评分器的一个自信的数字。

The rest of this article zooms in, one level at a time. Each level answers one question about the level above it.

本文的其余部分将逐级放大。每一层都回答关于上一层的一个问题。

Level 0 · The whole loop, once, on one ticket

  • Level 0 · 整个循环,一次,处理一个工单

Level 1 · What exactly do we measure? · (inputs, gold answers, the number)

  • Level 1 · 我们到底在测量什么? · (输入、黄金答案、数字)

Level 2 · What goes wrong? · (look at the data first)

  • Level 2 · 哪里出了问题? · (先看数据)

Level 3 · Graders made of code · (cheap, exact, blind to meaning)

  • Level 3 · 由代码组成的评分器 · (廉价、精确、对含义视而不见)

Level 4 · A model as grader · (flexible, biased, must be checked)

  • Level 4 · 模型作为评分器 · (灵活、有偏见、必须被检查)

Level 5 · Honest numbers · (error bars, A/B, how many cases)

  • Level 5 · 诚实的数字 · (误差范围、A/B 测试、多少案例)

Level 6 · Grading systems with parts · (retrieval, agents, cost, reliability)

  • Level 6 · 评估由多个部分组成的系统 · (检索、智能体、成本、可靠性)

Level 7 · Public benchmarks · (what leaderboards do and do not tell you)

  • Level 7 · 公共基准测试 · (排行榜告诉你什么,不告诉你什么)

Level 8 · Making it a habit · (gates, monitoring, when to re-check)

  • Level 8 · 让它成为一种习惯 · (门禁、监控、何时重新检查)

Then · The tools and approaches, a decision guide, and the references

然后 · 工具与方法、决策指南和参考资料

Level 0: the whole loop, once, on one ticket

Level 0:整个循环,一次,处理一个工单

Zooms into: everything. Question: what does an eval look like when it runs?

放大:一切。问题:评估运行时是什么样的?

Our running example for the whole article is a small customer-support assistant for a fictional online bike and camping shop. It has three parts, each of which we will grade differently later:

我们贯穿全文的运行示例是一家虚构的在线自行车和露营装备店的小型客户支持助手。它有三个部分,我们稍后将以不同的方式对每个部分进行评分:

triage: reads a ticket and sorts it into one of 12 categories (returns, shipping, warranty, …) with a priority.

  • 分流(triage):读取工单并将其分类到 12 个类别之一(退货、运输、保修等),并分配优先级。

answer: finds the relevant pages of the shop's policy handbook and writes a reply that cites them.

  • 回答(answer):找到商店政策手册的相关页面,并撰写引用这些页面的回复。

agent: looks up orders, issues refunds, and escalates, by calling tools against a mock database under policy rules.

  • 智能体(agent):通过在策略规则下对模拟数据库调用工具来查找订单、发放退款并进行升级处理。

Here is one ticket going through the loop.

这是一个经过循环的工单。

Input: "I'm running late for work and need this sorted immediately. I returned my bike last week, but I still haven't seen the refund. Your policy clearly states refunds are processed within 5 business days…"

输入:“我上班快迟到了,需要立即解决这个问题。我上周退了自行车,但到现在还没看到退款。你们的政策明确写着退款在 5 个工作日内处理……”

System output (triage): returns. Gold answer: returns. Score: 1 out of 1.

系统输出(分流):退货。黄金答案(gold answer):退货。得分:1/1。

System output (answer): a polite four-paragraph reply that cites the returns section and mentions both required facts: refunds take 5 business days, and a 15% restocking fee applies to used items.

系统输出(回答):一封礼貌的四段式回复,引用了退货部分,并提到了两个必要的事实:退款需要 5 个工作日,以及二手物品需收取 15% 的重新上架费。

Now three graders look at that reply:

现在三个评分器来审查这个回复:

Code rule. Question it asks: Does the reply cite a handbook section? Verdict: yes.

  • 代码规则。它问的问题:回复是否引用了手册的某个章节?结论:是。

Code rule. Question it asks: Does it mention both required facts? Verdict: yes, none missing.

  • 代码规则。它问的问题:它是否提到了两个必要的事实?结论:是,没有遗漏。

Model judge. Question it asks: Does it claim anything the handbook does not say? Verdict: fail: it invented "a total allowance of up to 15 business days".

  • 模型裁判。它问的问题:它是否声称了手册中没有提到的内容?结论:失败:它捏造了“总共最多 15 个工作日的宽限期”。

That is the whole idea. Two cheap code checks said the reply was fine. The judge found an invented number that would have gone to a customer. Every later level is about making that loop trustworthy at scale.

这就是整个理念。两次廉价的代码检查说回复没问题。裁判发现了一个本会发给客户的捏造数字。后面的每一层都是关于如何让这个循环在大规模下值得信赖。

Carry forward from Level 0:

从 Level 0 带走:

An eval is input, system, grader, number. Nothing more.

  • 评估就是输入、系统、评分器、数字。仅此而已。

Different graders answer different questions. "Cites a section" and "invents nothing" are not the same check.

  • 不同的评分器回答不同的问题。“引用了章节”和“没有捏造”不是同一种检查。

A fluent reply can pass every surface check and still be wrong.

  • 一个流畅的回复可以通过所有表面检查,但仍然是错的。

Level 1: what exactly do we measure?

Level 1:我们到底在测量什么?

Zooms into: steps 1 and 4 of the loop. Question: where do the inputs and the "right answers" come from, and what is the number?

放大:循环的第 1 步和第 4 步。问题:输入和“正确答案”从哪里来,数字是什么?

Inputs. The cases should look like real traffic, including the awkward ones. Our 80 tickets were generated from a grid of customer persona × topic × scenario, so angry customers, vague questions, and multi-issue tickets all appear. Anthropic's guide for agent evals suggests starting with 20 to 50 tasks taken from real failures, not from imagined happy paths (Grace et al., 2026).

输入。案例应该看起来像真实的流量,包括那些棘手的。我们的 80 个工单是根据“客户画像 × 主题 × 场景”的网格生成的,因此愤怒的客户、模糊的问题和多问题的工单都会出现。Anthropic 的智能体评估指南建议从真实的失败案例中提取 20 到 50 个任务开始,而不是从想象中的理想路径开始(Grace et al., 2026)。

Gold answers. For each input we write down what "right" means: the correct category, the handbook sections a reply must draw on, and the two or three facts it must state. Because our tickets were generated from the handbook, the gold answers are correct by construction. In a real product they come from domain experts.

黄金答案。对于每个输入,我们写下“正确”的含义:正确的类别、回复必须依据的手册章节,以及它必须陈述的两三个事实。因为我们的工单是根据手册生成的,所以黄金答案在构建上是正确的。在真实产品中,它们来自领域专家。

Two piles. We split the cases into a dev set (20 tickets) used for tuning prompts and graders, and a test set (60 tickets) used only for reporting. If you tune on the cases you report on, the number flatters you.

两堆。我们将案例分为用于调整提示词和评分器的开发集(dev set,20 个工单),以及仅用于报告的测试集(test set,60 个工单)。如果你在用于报告的案例上进行调整,这个数字就会让你自我感觉良好。

The number. For triage it is accuracy (share of tickets sorted correctly). For replies it is pass rate (share of replies with no failure). For the agent it is the share of tasks that end in the right database state. One number per experiment, always reported on the test set, always with an error bar (Level 5).

数字。对于分流,它是准确率(accuracy,正确分类的工单比例)。对于回复,它是通过率(pass rate,没有失败的回复比例)。对于智能体,它是最终处于正确数据库状态的任务比例。每次实验只有一个数字,始终在测试集上报告,并且始终带有误差范围(Level 5)。

Four words that get confused:

四个容易混淆的词:

Eval. Measures: your system on your data. Example: our assistant on 60 tickets.

  • 评估(Eval)。测量:你的系统在你的数据上的表现。示例:我们的助手在 60 个工单上的表现。

Benchmark. Measures: a model on a public task. Example: GSM8K math, SWE-bench coding.

  • 基准测试(Benchmark)。测量:模型在公共任务上的表现。示例:GSM8K 数学,SWE-bench 编码。

Test (software). Measures: a function returns the expected value. Example: JSON parses, no crash.

  • 测试(Test,软件)。测量:函数返回预期值。示例:JSON 解析,无崩溃。

Monitoring. Measures: live traffic after launch. Example: sampled real tickets graded daily.

  • 监控(Monitoring)。测量:发布后的实时流量。示例:每天对抽样的真实工单进行评分。

A model that scores high on a public benchmark can still answer your customers wrongly. The benchmark measures the engine, the eval measures the car on your road (Husain & Shankar, 2025).

一个在公共基准测试中得分很高的模型,仍然可能错误地回答你的客户。基准测试测量的是引擎,而评估测量的是汽车在你道路上的表现(Husain & Shankar, 2025)。

Carry forward from Level 1:

从 Level 1 带走:

Inputs with gold answers are the most valuable asset in the whole process. They are expensive and they are the thing that makes everything else possible.

  • 带有黄金答案的输入是整个过程中最有价值的资产。它们很昂贵,并且是让其他一切成为可能的关键。

Keep a dev pile for tuning and a test pile for reporting.

  • 保留一堆用于调整,一堆用于报告。

Benchmarks are about models. Evals are about your product.

  • 基准测试关乎模型。评估关乎你的产品。

Level 2: what goes wrong? Look at the data first

Level 2:哪里出了问题?先看数据

Zooms into: the grading step. Question: what should the graders even look for?

放大:评分步骤。问题:评分器到底应该寻找什么?

Before building any automatic grader, read the outputs. Every experienced practitioner says the same thing (Husain, 2024; Husain, 2025; Shankar et al., 2024). Read a hundred or two hundred outputs one by one, write a short note on each failure, then group the notes into a short list of failure types with counts. This is called error analysis, and the two steps have names: open coding (free notes) and axial coding (grouping).

在构建任何自动评分器之前,先阅读输出。每一位经验丰富的从业者都会这么说(Husain, 2024; Husain, 2025; Shankar et al., 2024)。逐一阅读一百或两百个输出,为每个失败写一个简短的笔记,然后将这些笔记分组为一个带有计数的失败类型简短列表。这被称为错误分析(error analysis),这两个步骤有各自的名字:开放式编码(open coding,自由笔记)和主轴编码(axial coding,分组)。

What it produced on our 60 test replies:

它在我们的 60 个测试回复上产生的结果:

replies that pass: 34 of 60

  • 通过的回复:34/60

missing_required_fact · 15

  • missing_required_fact(缺失必要事实) · 15

unsupported_claim · 12

  • unsupported_claim(无支持声明) · 12

wrong_section_retrieved · 8

  • wrong_section_retrieved(检索到错误章节) · 8

did_not_answer · 5

  • did_not_answer(未回答) · 5

wrong_value · 2

  • wrong_value(数值错误) · 2

over_promise · 1

  • over_promise(过度承诺) · 1

Barely half the replies pass. The two biggest problems are a missing fact and an invented claim. Nobody would have guessed that from the demo. This list is the specification for every grader we build next: one grader per failure type, in order of frequency.

只有一半的回复通过。两个最大的问题是缺失事实和捏造声明。没有人能从演示中猜到这一点。这个列表是我们接下来构建的每个评分器的规范:每种失败类型一个评分器,按频率排序。

Important: the failure list comes from reading outputs, not from imagining them.

重要提示:失败列表来自阅读输出,而不是凭空想象。

What it means for us: the first week of any eval effort is people reading transcripts in a purpose-built viewer, not engineers wiring up a framework.

这对我们意味着什么:任何评估工作的第一周,都是人们在一个专门构建的查看器中阅读记录,而不是工程师在连接框架。

Why it matters: a grader built for failures that do not occur gives a reassuring number and misses the ones that do. Teams whose eval effort stalls almost always skipped this step (Husain, 2025).

为什么这很重要:为不会发生的失败而构建的评分器会给出一个令人安心的数字,却会漏掉真正发生的失败。评估工作停滞的团队几乎总是跳过了这一步(Husain, 2025)。

A related finding: your criteria will change as you grade. Shankar et al. (2024) call it criteria drift. Grading examples sharpens the rubric, and a sharper rubric changes earlier grades. Expect two or three rounds. It is not a process failure.

一个相关的发现:你的标准会随着评分而改变。Shankar et al. (2024) 称之为标准漂移(criteria drift)。对示例进行评分会细化评分标准,而更细化的标准会改变之前的评分。预期会有两到三轮。这不是流程失败。

Carry forward from Level 2:

从 Level 2 带走:

The failure taxonomy is the plan. Build graders for the top failure types first.

  • 失败分类法就是计划。首先为最常见的失败类型构建评分器。

Reading outputs is the highest-value activity and the most often skipped.

  • 阅读输出是价值最高的活动,也是最常被跳过的。

Expect the rubric to change while you grade.

  • 预期评分标准会在你评分时发生变化。

Level 3: graders made of code

Level 3:由代码组成的评分器

Zooms into: one kind of grader. Question: what can a plain rule measure, and what can it not?

放大:一种评分器。问题:一个简单的规则能测量什么,不能测量什么?

A code grader is a rule written in ordinary code. It is free, instant, and gives the same answer every time. Use it for everything it can measure.

代码评分器是用普通代码编写的规则。它是免费的、即时的,并且每次都给出相同的答案。将它用于它能测量的一切。

Exact answers. Triage has a single right label, so we count matches.

精确答案。分流有一个单一的正确标签,所以我们计算匹配数。

accuracy: 0.700 · macro F1: 0.697

  • accuracy(准确率): 0.700 · macro F1: 0.697

Seven tickets in ten are sorted correctly. Macro F1 averages the score over all 12 categories equally, so rare categories count as much as common ones. The two numbers being close tells us the mistakes are spread out, not concentrated in one category.

十个工单中有七个被正确分类。Macro F1 将所有 12 个类别的得分平均计算,因此稀有类别和常见类别的权重相同。这两个数字接近告诉我们,错误是分散的,而不是集中在某一个类别。

Rule checks on free text. For replies there is no single right text, but there are rules a reply must obey:

对自由文本的规则检查。对于回复,没有单一的正确文本,但回复必须遵守一些规则:

nonempty · 100% pass

  • nonempty(非空) · 100% pass

max_words_150 · 17% pass

  • max_words_150(最多 150 词) · 17% pass

no_banned_promises · 92% pass

  • no_banned_promises(无禁止承诺) · 92% pass

Only 17% of replies fit in 150 words. The app is far too chatty, and no judge was needed to find that. Public benchmarks like IFEval (Zhou et al., 2023) are built entirely from such verifiable rules ("answer in exactly three bullet points").

只有 17% 的回复在 150 字以内。这个应用太啰嗦了,而且不需要裁判就能发现这一点。像 IFEval 这样的公共基准测试(Zhou et al., 2023)完全由这类可验证的规则构建(“用恰好三个要点回答”)。

Required facts. We check whether each gold fact appears in the reply. This catches the top failure type, missing facts, at zero cost.

必要事实。我们检查每个黄金事实是否出现在回复中。这以零成本捕获了最常见的失败类型:缺失事实。

Similarity scores. Overlap measures (ROUGE, BLEU) and embedding similarity compare the reply to a reference text. On our replies, embedding similarity separates good from bad replies with an AUC of 0.709 (0.5 is a coin flip, 1.0 is perfect). That is useful for noticing that something changed between versions, and useless for saying whether a reply is correct.

相似度得分。重叠度量(ROUGE, BLEU)和嵌入相似度(embedding similarity)将回复与参考文本进行比较。在我们的回复上,嵌入相似度区分好坏回复的 AUC 为 0.709(0.5 是抛硬币,1.0 是完美)。这对于注意到版本之间发生了变化很有用,但对于判断回复是否正确则毫无用处。

Important: similarity notices change, it does not grade quality.

重要提示:相似度注意到的是变化,它不评估质量。

What it means for us: use it as a cheap drift alarm, never as the headline number.

这对我们意味着什么:将其用作廉价的漂移警报,绝不要作为标题数字。

Why it matters: a wrong reply that uses the same words as a right one scores high. Eugene Yan's survey (2024) and the original ROUGE/BLEU literature document this limit at length.

为什么这很重要:一个使用了与正确回复相同词语的错误回复会得高分。Eugene Yan 的调查(2024)和最初的 ROUGE/BLEU 文献详细记录了这个限制。

The limit of code graders, in one number. Only 11.7% of our replies pass all code checks, but code checks caught none of the invented claims. The reply from Level 0 passed every rule while inventing a 15-day allowance. Rules see form; they do not see meaning.

用一个数字概括代码评分器的局限。我们的回复中只有 11.7% 通过了所有代码检查,但代码检查没有捕获任何捏造的声明。Level 0 的回复通过了每一条规则,却捏造了一个 15 天的宽限期。规则看到的是形式;它们看不到含义。

Carry forward from Level 3:

从 Level 3 带走:

Use code graders for everything with a definite answer: labels, formats, required facts, forbidden phrases.

  • 将代码评分器用于一切有明确答案的事物:标签、格式、必要事实、禁止短语。

Similarity measures drift, not quality.

  • 相似度测量的是漂移,而不是质量。

Rules cannot see an invented claim. That needs a reader.

  • 规则看不到捏造的声明。那需要一个阅读者。

Level 4: a model as grader, and how to check it

Level 4:模型作为评分器,以及如何检查它

Zooms into: the other kind of grader. Question: when the grader is itself a model, how do we know it is right?

放大:另一种评分器。问题:当评分器本身就是一个模型时,我们怎么知道它是对的?

A model judge (usually called LLM-as-judge) is a second model that reads an output and grades it. It can read for meaning, so it can catch the invented 15-day allowance. It is also a language model, so it has all the failure modes of one. This level is the longest because this is where most eval programs go wrong.

模型裁判(通常称为 LLM-as-judge)是读取输出并对其进行评分的第二个模型。它可以阅读含义,因此它可以捕获捏造的 15 天宽限期。它也是一个语言模型,因此它具有语言模型所有的失败模式。这一层是最长的,因为这是大多数评估程序出错的地方。

4.1 How to ask a judge

4.1 如何向裁判提问

The practitioner consensus and the research literature agree on a shape:

从业者共识和研究文献在一种形式上达成了一致:

One question per failure type, yes or no. "Does the reply contain a claim not supported by the handbook excerpts?" rather than "rate quality 1 to 5". Binary questions are faster for humans to label, more reproducible, and easier to check (Husain & Shankar, 2025). The output passes only if every question says no.

  • 每种失败类型一个问题,是或否。“回复是否包含手册摘录不支持的声明?”而不是“将质量评为 1 到 5 分”。二元问题对人类来说标注更快,更可复现,也更容易检查(Husain & Shankar, 2025)。只有当每个问题都回答“否”时,输出才算通过。

Ask for the evidence. The judge quotes the offending sentence. That makes its verdict checkable by a person in seconds.

  • 要求提供证据。裁判引用违规的句子。这使得它的结论可以在几秒钟内由人工检查。

Give it the context. A judge that cannot see the handbook cannot know what is unsupported.

  • 给它上下文。一个看不到手册的裁判无法知道什么是无支持的。

Cho et al. (2026) tested this directly on summaries ("Ask, Don't Judge"). Decomposing the grade into yes/no questions about specific errors beat the popular holistic G-Eval approach on every dataset (Spearman correlation with humans 0.563 vs 0.514 on SummEval). Their most telling example: a summary with three planted factual errors received a perfect 5.0 from holistic judges and 1.57 from the question-based one. They also found that stuffing the prompt with more instructions eventually made the judge worse, not better.

Cho et al. (2026) 直接在摘要上测试了这一点(“Ask, Don't Judge”)。将评分分解为关于特定错误的“是/否”问题,在所有数据集上都击败了流行的整体 G-Eval 方法(在 SummEval 上与人类的 Spearman 相关系数为 0.563 对 0.514)。他们最能说明问题的例子是:一个包含三个植入事实错误的摘要,从整体裁判那里得到了完美的 5.0 分,而从基于问题的裁判那里得到了 1.57 分。他们还发现,在提示词中塞入更多指令最终会让裁判变得更糟,而不是更好。

4.2 Checking the judge: our own numbers

4.2 检查裁判:我们自己的数字

We labelled all 60 test replies by hand (the "reference"), then ran the judge:

我们手动标注了所有 60 个测试回复(“参考”),然后运行了裁判:

reference says pass: 34 · judge says pass: 42

  • 参考说通过:34 · 裁判说通过:42

they agree on 36 of 60 replies (60%)

  • 他们在 60 个回复中的 36 个上达成一致(60%)

bad replies the judge caught: 10 of 26

  • 裁判捕获的坏回复:10/26

kappa: 0.15

  • kappa: 0.15

Sixty percent agreement sounds acceptable. It is not. If the judge had simply said "pass" to everything it would have agreed with the reference 57% of the time, because most replies pass. Cohen's kappa corrects for that: it measures agreement beyond what chance would give. Zero is chance, one is perfect, 0.6 is the usual bar for a judge you let gate a release, and 0.8 is the bar for one you let run unsupervised. Our judge scores 0.15. It is lenient (passes 42 when only 34 deserve it) and catches fewer than half the bad replies.

60% 的一致性听起来可以接受。其实不是。如果裁判对所有东西都简单地说“通过”,它也会有 57% 的时间与参考一致,因为大多数回复都通过了。Cohen's kappa(Cohen 的 kappa 系数)对此进行了修正:它测量的是超出偶然性的一致性。零是偶然,一是完美,0.6 是让你用来作为发布门禁的裁判的通常及格线,0.8 是让你在无人监督下运行的及格线。我们的裁判得分是 0.15。它很宽松(在只有 34 个应该通过时通过了 42 个),并且只捕获了不到一半的坏回复。

Important: raw agreement is misleading when most outputs pass. Report kappa, or report separately how many bad outputs the judge catches and how many good outputs it wrongly fails.

重要提示:当大多数输出都通过时,原始一致性具有误导性。报告 kappa,或者分别报告裁判捕获了多少坏输出以及错误地拒绝了多少好输出。

What it means for us: a judge is a classifier. Before trusting it, measure it against human labels on at least a few dozen cases, and report the result next to every product number it produces.

这对我们意味着什么:裁判是一个分类器。在信任它之前,至少在几十个案例上根据人类标签测量它,并在它产生的每个产品数字旁边报告结果。

Why it matters: with this judge, a version that doubled the invented claims might show no change in the headline pass rate.

为什么这很重要:有了这个裁判,一个将捏造声明翻倍的版本可能在标题通过率上显示不出任何变化。

The remedy is iteration on the dev set: add examples of the failure type to the judge prompt, narrow the question, give it the gold facts as reference. The tutorial's judge for the "missing fact" question reached a usable level this way; the "unsupported claim" question did not, and was handed to a specialised detector (4.5).

补救措施是在开发集上进行迭代:将失败类型的示例添加到裁判提示词中,缩小问题范围,将黄金事实作为参考提供给它。教程中针对“缺失事实”问题的裁判通过这种方式达到了可用水平;“无支持声明”问题则没有,并被交给了专门的检测器(4.5)。

4.3 The known biases of judges

4.3 裁判已知的偏见

Judges fail in predictable ways. Each has a published measurement and a cheap mitigation.

裁判以可预测的方式失败。每一种都有已发表的测量方法和廉价的缓解措施。

Position. What happens: In a pairwise comparison the judge prefers whichever answer is shown first. Evidence: verdicts flip in a large share of pairs when order is swapped (Wang et al., 2024); a 2025 RAG-vs-GraphRAG comparison found earlier GraphRAG "wins" partly vanished once the order was swapped (Han et al., 2025). Mitigation: grade both orders, count a win only if both agree.

  • 位置。发生什么:在成对比较中,裁判偏好先显示的答案。证据:当顺序交换时,很大一部分对的结论发生了翻转(Wang et al., 2024);2025 年的一项 RAG 与 GraphRAG 比较发现,一旦交换顺序,早期 GraphRAG 的“胜利”有一部分消失了(Han et al., 2025)。缓解措施:对两种顺序都评分,只有两者都一致时才算赢。

Length. What happens: Longer answers win regardless of content. Evidence: correcting for length raised agreement with human rankings from 0.94 to 0.98 (Dubois et al., 2024). Mitigation: length-controlled scoring, or binary questions that do not reward length.

  • 长度。发生什么:无论内容如何,更长的答案都会赢。证据:对长度进行修正后,与人类排名的一致性从 0.94 提高到了 0.98(Dubois et al., 2024)。缓解措施:长度控制评分,或不奖励长度的二元问题。

Self-preference. What happens: The judge favours answers in its own model family's style. Evidence: judges rate their own generations higher, more so when they recognise them (Panickssery et al., 2024); same-family judges inflated their own provider's agents by about 0.75 on a 7-point scale in the GAUGE audit. Mitigation: use a judge from a different family than the system under test.

  • 自我偏好。发生什么:裁判偏好自己模型家族风格的答案。证据:裁判对自己生成的评价更高,尤其是当它们认出自己的生成时(Panickssery et al., 2024);在 GAUGE 审计中,同家族裁判将自己提供商的智能体夸大了约 0.75 分(满分 7 分)。缓解措施:使用与被测系统不同家族的裁判。

Satisfaction vs success. What happens: The judge rates how the conversation felt, not whether the task got done. Evidence: GAUGE audit, see below. Mitigation: give the judge the tool calls and the final state, not just the chat.

  • 满意度与成功。发生什么:裁判评价的是对话的感觉,而不是任务是否完成。证据:GAUGE 审计,见下文。缓解措施:给裁判工具调用和最终状态,而不仅仅是聊天。

Judge identity. What happens: Swapping the judge model changes which system wins. Evidence: 2026 audits (arXiv 2607.08535; 2606.19544). Mitigation: record judge model and version as part of every result.

  • 裁判身份。发生什么:交换裁判模型会改变哪个系统获胜。证据:2026 年审计(arXiv 2607.08535; 2606.19544)。缓解措施:将裁判模型和版本记录为每个结果的一部分。

The GAUGE audit (Bodhwani et al., 2026) deserves its own paragraph because it describes the exact setup most companies use for release decisions: a simulated user talks to the agent, a judge model scores the transcript, the higher score ships. Across 25 agents and about 3,700 transcripts they found that this gate ranks agents well when one is clearly better (correlation 0.94 with a verifiable ground truth), but on near-equal pairs, the ones a real release actually decides between, it promoted the worse agent 31% of the time. A judge that only saw the user-visible chat and rated satisfaction was no better than a coin flip at telling working agents from broken ones (AUC 0.49). A judge that saw the tool calls, authentication, and task resolution halved the failure risk (AUC 0.73). Their conclusion: reliability comes from what evidence the judge is given, not from how strong the judge model is.

GAUGE 审计(Bodhwani et al., 2026)值得单独写一段,因为它描述了大多数公司用于发布决策的确切设置:一个模拟用户与智能体对话,一个裁判模型对记录进行评分,得分更高的发布。在 25 个智能体和约 3,700 份记录中,他们发现当其中一个明显更好时,这个门禁能很好地对智能体进行排名(与可验证的基准事实的相关性为 0.94),但在几乎相等的对上——也就是真实发布实际决定的对——它有 31% 的时间提升了较差的智能体。一个只看到用户可见聊天并评价满意度的裁判,在区分正常工作的智能体和损坏的智能体方面并不比抛硬币好多少(AUC 0.49)。一个看到工具调用、身份验证和任务解决的裁判将失败风险减半(AUC 0.73)。他们的结论是:可靠性来自于给裁判什么证据,而不是裁判模型有多强。

Important: customer satisfaction and task success are different things, and a judge that sees only the conversation measures the first.

重要提示:客户满意度和任务成功是两回事,只看到对话的裁判测量的是前者。

What it means for us: give judges the evidence (tool calls, database state, retrieved documents), and never promote a version on a judge score alone when two versions are close.

这对我们意味着什么:给裁判证据(工具调用、数据库状态、检索到的文档),并且当两个版本接近时,绝不要仅仅根据裁判得分来发布版本。

Why it matters: an agent that charms and fails will keep getting promoted.

为什么这很重要:一个迷人但失败的智能体会不断被提升。

4.4 Panels of judges, and how to combine them

4.4 裁判小组,以及如何组合他们

One judge is a single point of failure. Verga et al. (2024) showed that a panel of several smaller, cheaper judges agrees with humans better than one large judge, at a fraction of the cost. But averaging panel scores has a trap: Acharya et al. (2026) proved that one broken judge (a parser failure returning zeros, a sycophantic judge rating everything 10) drags the average arbitrarily far off, no matter how many good judges you add. Real judges fail like this at measurable rates (3.4% parser failures on one dataset, up to 33% on the smallest judge for non-English prompts). Their fix is to replace the average with the geometric median, which ignores the outlier. In the worst case it was 540 times more accurate; on clean data it costs about 1% accuracy. They also show that three judges capture most of the benefit, because judges' errors are correlated.

一个裁判是单点故障。Verga et al. (2024) 表明,由几个更小、更便宜的裁判组成的小组比一个大型裁判更符合人类,而成本只是其一小部分。但是平均小组得分有一个陷阱:Acharya et al. (2026) 证明,一个损坏的裁判(解析器失败返回零,一个阿谀奉承的裁判将所有东西评为 10 分)会将平均值任意拖偏,无论你添加多少好裁判。真实的裁判以可测量的速率像这样失败(在一个数据集上有 3.4% 的解析器失败,对于非英语提示的最小裁判高达 33%)。他们的修复方法是用几何中位数(geometric median)代替平均值,几何中位数忽略异常值。在最坏的情况下,它准确了 540 倍;在干净的数据上,它损失了大约 1% 的准确率。他们还表明,三个裁判捕获了大部分好处,因为裁判的错误是相关的。

A second, related effect: Parikh (2026) found that asking a model for its answer in JSON (the format every judge pipeline uses) makes its answers measurably more uniform than in plain chat. The modal answer's share rose from 41% to 64%. For judging tasks with one correct answer this is harmless; for open-ended rating it means the judge is less discriminating than its chat behaviour suggests.

第二个相关的效应:Parikh (2026) 发现,要求模型以 JSON(每个裁判管道使用的格式)给出答案,会使其答案比在普通聊天中更均匀。众数答案的份额从 41% 上升到了 64%。对于只有一个正确答案的评判任务,这是无害的;对于开放式评分,这意味着裁判的辨别力不如其聊天行为所暗示的那样。

4.5 Cheaper and more reliable than a judge: specialised detectors and typed judges

4.5 比裁判更便宜更可靠:专门的检测器和类型化裁判

For the failure types that matter most, a general judge is often the wrong tool.

对于最重要的失败类型,通用裁判通常是错误的工具。

Hallucination detectors are small models (around 100 million to 500 million parameters) trained for one question: is this sentence supported by this context? Vectara's HHEM, LettuceDetect (Kovács & Recski, 2025), MiniCheck (Tang et al., 2024), and plain NLI cross-encoders run on a laptop CPU in about a second, cost nothing per call, and on the RAGTruth benchmark approach the accuracy of a large judge. SelfCheckGPT (Manakul et al., 2023) needs no detector at all: it samples the system several times and flags claims that change between samples. Fiddler's 2026 vendor note names the alternative an "evaluation trust tax": teams that run a large judge on every production trace typically sample only about 10% of traffic, and it claims small detectors can cover 100% at up to 98% lower cost. The claim is a vendor's, with no experiment shown, but the shape of the trade-off is real.

幻觉检测器(Hallucination detectors)是为一个问题训练的小模型(约 1 亿到 5 亿参数):这句话是否被这个上下文支持?Vectara 的 HHEM、LettuceDetect(Kovács & Recski, 2025)、MiniCheck(Tang et al., 2024)和普通的 NLI 交叉编码器(cross-encoders)在笔记本电脑 CPU 上大约一秒钟运行完毕,每次调用成本为零,并且在 RAGTruth 基准测试上接近大型裁判的准确率。SelfCheckGPT(Manakul et al., 2023)根本不需要检测器:它对系统进行多次采样,并标记样本之间发生变化的声明。Fiddler 的 2026 年供应商说明将替代方案命名为“评估信任税(evaluation trust tax)”:在每个生产跟踪上运行大型裁判的团队通常只抽样约 10% 的流量,它声称小型检测器可以覆盖 100% 的流量,成本降低高达 98%。这个声明是供应商的,没有展示实验,但权衡的形状是真实的。

Typed judges. TypeSafe's Jev model is a different design: it does not generate text at all. You send it the output and a typed question ("Is this claim supported by the excerpt?" with answer "yes/no", or "pick one of these labels"), and it returns a calibrated probability. Because nothing is generated, calls are fast and about a hundred times cheaper than a generative judge, and the probability lets code route uncertain cases to a human. It cannot explain its verdict or invent options; you supply the labels. A 2026 study with blinded human adjudication put it at 92.2% on RewardBench pairs against 93.5% for a frontier generative judge, at about a third of a percent of the fee, but far behind on hard derivation-checking (78.6% vs 93.1%); a cascade that accepts its verdict only above a confidence threshold and otherwise escalates kept 92.5% at about half the cost (arXiv 2609.26550). Our own red-team found that it is not a fact-checker: a fabricated log in the input can flip a verdict, though every successful attack also collapsed its confidence, so a confidence gate is a working defence. Our knowledge base has a tutorial on it and on how to test its accuracy before trusting it.

类型化裁判(Typed judges)。TypeSafe 的 Jev 模型是一种不同的设计:它根本不生成文本。你向它发送输出和一个类型化的问题(“这个声明是否被摘录支持?”答案为“是/否”,或者“选择这些标签中的一个”),它返回一个校准过的概率。因为没有生成任何内容,调用很快,比生成式裁判便宜大约一百倍,并且概率允许代码将不确定的案例路由给人类。它无法解释其结论或发明选项;由你来提供标签。一项带有盲测人工裁决的 2026 年研究将其在 RewardBench 对上的得分定为 92.2%,而前沿生成式裁判为 93.5%,费用约为后者的千分之三,但在困难的推导检查上远远落后(78.6% 对 93.1%);一个级联系统,仅在其置信度高于阈值时接受其结论,否则进行升级,以大约一半的成本保持了 92.5% 的准确率(arXiv 2609.26550)。我们自己的红队发现它不是一个事实核查器:输入中捏造的日志可以翻转结论,尽管每次成功的攻击也使其置信度崩溃,因此置信度门禁是一个有效的防御。我们的知识库有一个关于它的教程,以及如何在信任它之前测试其准确率。

Judges need a benchmark too. JudgeBench (Tan et al., 2025) turned hard, objectively checkable problems into judge tests and found that frontier judges are barely better than chance on genuinely hard cases. Reliability must be measured per task, per rubric, per judge model, every time. Vendor claims of "85% agreement with humans" come from one dataset and do not transfer (see the disagreement notes in our practitioner sources).

裁判也需要基准测试。JudgeBench(Tan et al., 2025)将困难的、客观可检查的问题转化为裁判测试,发现前沿裁判在真正困难的案例上几乎不比偶然性好。可靠性必须每次针对每个任务、每个评分标准、每个裁判模型进行测量。供应商声称的“与人类 85% 的一致性”来自一个数据集,并且不能转移(参见我们从业者来源中的分歧说明)。

Carry forward from Level 4:

从 Level 4 带走:

Ask judges yes/no questions about specific failures, with evidence, with the context.

  • 向裁判提出关于特定失败的“是/否”问题,带有证据,带有上下文。

Measure the judge against human labels, report kappa or catch rate, iterate until it clears the bar.

  • 根据人类标签测量裁判,报告 kappa 或捕获率,迭代直到它达到及格线。

Know the five biases and apply the cheap mitigations.

  • 了解这五种偏见并应用廉价的缓解措施。

For "is this supported", prefer a small detector or a typed judge over a general judge.

  • 对于“这是否被支持”,比起通用裁判,更倾向于小型检测器或类型化裁判。

Three judges with a robust combination beat one; the average is fragile.

  • 三个带有稳健组合的裁判胜过一个;平均值是脆弱的。

Level 5: honest numbers

Level 5:诚实的数字

Zooms into: step 4 of the loop. Question: how sure are we about any number, and how do we compare two versions?

放大:循环的第 4 步。问题:我们对任何数字有多确定,以及我们如何比较两个版本?

Every rate we have quoted so far hides a question: would it be the same on a different 60 tickets? Three tools answer it.

我们到目前为止引用的每一个比率都隐藏了一个问题:在另外 60 个工单上它还会一样吗?三个工具回答了这个问题。

The error bar. We resample our 60 results thousands of times (a bootstrap) and look at the spread:

误差范围。我们将 60 个结果重采样数千次(自助抽样法,bootstrap)并查看分布:

triage accuracy: 0.700 · 95% CI [0.583, 0.817]

  • triage accuracy(分流准确率): 0.700 · 95% CI [0.583, 0.817]

The honest statement is not "accuracy is 70%" but "somewhere between 58% and 82%, most likely 70%". Miller (2024) showed that most reported differences between models in published evals are smaller than this kind of interval, and gave the formulas every eval report should use, including the correction needed when several questions share a source (clustered standard errors).

诚实的陈述不是“准确率是 70%”,而是“在 58% 到 82% 之间,最可能是 70%”。Miller (2024) 表明,在已发表的评估中,模型之间报告的大多数差异都小于这种区间,并给出了每份评估报告都应使用的公式,包括当几个问题共享一个来源时所需的修正(聚类标准误,clustered standard errors)。

The paired comparison. We wrote a second version of the reply prompt that retrieves more sections. Judged on the same 60 tickets:

配对比较。我们编写了第二个版本的回复提示词,检索更多的章节。在相同的 60 个工单上评判:

judge pass rate · v1: 0.700 · v2: 0.700

  • judge pass rate(裁判通过率) · v1: 0.700 · v2: 0.700

difference: +0.000 · 95% CI [-0.117, +0.117]

  • difference(差异): +0.000 · 95% CI [-0.117, +0.117]

verdict: no real difference, keep v1

  • verdict(结论): 没有真正的区别,保留 v1

Note the interval is narrower than the one for the single accuracy, because the comparison is paired: each ticket is scored under both versions, so ticket difficulty cancels out. A McNemar test asks the per-case question: does v2 win where v1 loses, or do they just trade cases? Here they traded. And v2 regressed on 14% of cases while improving on others. The headline "same pass rate" hides a product that got better for some customers and worse for others.

注意,这个区间比单个准确率的区间要窄,因为比较是配对的:每个工单都在两个版本下评分,因此工单的难度被抵消了。McNemar 检验(McNemar test)问的是每个案例的问题:v2 是在 v1 失败的地方赢了吗,还是它们只是交换了案例?在这里它们交换了。并且 v2 在 14% 的案例上退化了,同时在其他案例上有所改进。标题“相同的通过率”隐藏了一个对某些客户变得更好、对另一些客户变得更糟的产品。

Important: a difference whose interval includes zero is noise, not a win.

重要提示:区间包含零的差异是噪声,而不是胜利。

What it means for us: every "the new version is better" claim must come with the interval and the count of cases that got worse.

这对我们意味着什么:每一个“新版本更好”的声明都必须附带区间和变得更糟的案例数量。

Why it matters: teams ship regressions on the strength of a 2-point improvement that was never there.

为什么这很重要:团队基于从未有过的 2 点改进而发布了退化。

The detection floor. With 60 cases, the smallest difference we can reliably detect is about 12 percentage points. A 5-point regression is invisible at this size. This is a power calculation, and it tells you how many cases you need before you can answer the question you are asking. Below the floor you need more data, not a cleverer test.

检测下限。在 60 个案例的情况下,我们能可靠检测到的最小差异约为 12 个百分点。在这个规模下,5 个百分点的退化是不可见的。这是一个功效计算(power calculation),它告诉你你需要多少案例才能回答你正在问的问题。低于下限你需要更多数据,而不是更聪明的测试。

Multiple comparisons. If you test 20 prompt variants and pick the best, one of them will look 10 points better by luck. Either correct for the number of comparisons or confirm the winner on fresh cases.

多重比较。如果你测试 20 个提示词变体并挑选最好的,其中一个会凭运气看起来好 10 个百分点。要么对比较次数进行修正,要么在新的案例上确认赢家。

Carry forward from Level 5:

从 Level 5 带走:

Every rate gets an interval. Every comparison is paired.

  • 每个比率都有一个区间。每次比较都是配对的。

Know your detection floor before you start comparing versions.

  • 在开始比较版本之前,了解你的检测下限。

"No measurable difference" is a real result, and often the right one.

  • “没有可测量的差异”是一个真实的结果,而且通常是正确的。

Level 6: grading systems with parts

Level 6:评估由多个部分组成的系统

Zooms into: step 2, the system. Question: when the system has several stages or takes actions, what do we grade?

放大:第 2 步,系统。问题:当系统有几个阶段或采取行动时,我们评估什么?

6.1 Retrieval systems (RAG)

6.1 检索系统(RAG)

Our answer component first finds handbook sections, then writes. A bad reply can come from either stage, and the fixes are different. So we grade them separately.

我们的回答组件首先找到手册章节,然后撰写。一个糟糕的回复可能来自任何一个阶段,而且修复方法是不同的。所以我们分别对它们进行评分。

Grading the finder. Against the gold sections: hit@k (is at least one correct section in the top k?) and recall@k (what share of the correct sections made it?).

评估查找器。对照黄金章节:hit@k(前 k 个中是否至少有一个正确章节?)和 recall@k(正确章节中占多少份额?)。

hit@2: 0.93 · recall@2: 0.88

  • hit@2: 0.93 · recall@2: 0.88

of 18 failing replies, 1 failed in the finder and 17 in the writer

  • 在 18 个失败的回复中,1 个在查找器中失败,17 个在撰写器中失败

The finder is nearly fine. The writer is the problem. That one line redirects a week of engineering.

查找器几乎没问题。撰写器才是问题所在。这一行话重新定向了一周的工程工作。

Grading the writer. Faithfulness (every claim supported by the retrieved text), answer relevance (does it address the question), and context precision (was what we retrieved actually useful). This is the RAGAS triad (Es et al., 2024), which needs no gold answers and is why RAGAS became the default library. ARES (Saad-Falcon et al., 2024) adds statistical rigour by calibrating small per-criterion judges against about 150 human labels and reporting confidence intervals; in its paper it beat RAGAS by 59 points on context relevance with 78% fewer annotations, though it degrades under large domain shift. In our run RAGAS gave context relevance 0.855 and faithfulness 0.737: the same "retrieval good, writing worse" story our hand-rolled graders told, which is the kind of cross-check that makes a number believable.

评估撰写器。忠实度(faithfulness,每个声明都被检索到的文本支持)、答案相关性(answer relevance,是否解决了问题)和上下文精确度(context precision,我们检索到的内容是否真的有用)。这是 RAGAS 三元组(Es et al., 2024),它不需要黄金答案,这也是 RAGAS 成为默认库的原因。ARES(Saad-Falcon et al., 2024)通过根据大约 150 个人类标签校准每个标准的小型裁判并报告置信区间来增加统计严谨性;在其论文中,它在上下文相关性上以减少 78% 的标注量击败了 RAGAS 59 个百分点,尽管它在大的领域偏移下会退化。在我们的运行中,RAGAS 给出的上下文相关性为 0.855,忠实度为 0.737:这与我们手工制作的评分器讲述的“检索好,写作差”的故事相同,这种交叉检查使数字变得可信。

A caution from the agent-coding world: SWE-Explore (Zhang et al., 2026) measured retrieval inside coding agents and found they locate the right file about 65% of the time but the right lines only 15 to 19%, and that missing context, not extra context, is what breaks the next stage. Grade the finder at the granularity the writer needs.

来自智能体编码世界的一个警告:SWE-Explore(Zhang et al., 2026)测量了编码智能体内部的检索,发现它们大约 65% 的时间能定位到正确的文件,但只有 15% 到 19% 的时间能定位到正确的行,而且破坏下一阶段的是缺失的上下文,而不是额外的上下文。以撰写器所需的粒度来评估查找器。

6.2 Agents

6.2 智能体(Agents)

An agent takes a sequence of actions (look up an order, issue a refund, escalate). Three things change when grading it.

智能体采取一系列行动(查找订单、发放退款、升级)。在评估它时,有三件事发生了变化。

Grade the final state, and the path. Did the database end up right (refund issued, order cancelled)? Did the agent take only allowed actions, and not, say, refund twice? τ-bench (Yao et al., 2024) set the pattern: simulated users, policy rules, and a check of the final state. AgentLens (2026) showed why the path matters: agents reach correct final states by lucky or degenerate routes often enough that outcome-only scoring overstates capability.

评估最终状态和路径。数据库最终是否正确(退款已发放,订单已取消)?智能体是否只采取了允许的行动,而不是比如退款两次?τ-bench(Yao et al., 2024)设定了模式:模拟用户、策略规则和最终状态检查。AgentLens (2026) 展示了为什么路径很重要:智能体通过幸运或退化的路径达到正确的最终状态的频率足够高,以至于仅看结果的评分夸大了能力。

Run each task several times. Agents are stochastic. Two different numbers describe the result: pass@k (it succeeded at least once in k tries, which measures capability) and pass^k (it succeeded all k times, which measures reliability). For a customer-facing agent you want pass^k. Our agent scores pass^3 = 0.75: three quarters of the tasks succeed three times out of three. τ²-bench (2025) found that pass^1 drops about 20 points when the agent must coordinate with an active user rather than act alone.

每个任务运行几次。智能体是随机的。两个不同的数字描述了结果:pass@k(在 k 次尝试中至少成功一次,衡量能力)和 pass^k(在 k 次尝试中全部成功,衡量可靠性)。对于面向客户的智能体,你需要的是 pass^k。我们的智能体得分 pass^3 = 0.75:四分之三的任务在三次尝试中成功了三次。τ²-bench (2025) 发现,当智能体必须与活跃用户协调而不是单独行动时,pass^1 下降了约 20 个百分点。

Measure reliability as its own thing. Rabanser et al. (2026) borrowed from aviation and nuclear engineering to define 12 reliability metrics in four groups: consistency across runs, robustness to perturbation, predictability (does the agent know when it will fail), and bounded harm. Across 15 frontier models they found that two years of capability gains delivered about one sixth as much reliability gain. Agents choose the same kinds of actions each run but in different orders, handle real infrastructure failures gracefully, and break on a rephrased instruction.

将可靠性作为独立的事物来衡量。Rabanser et al. (2026) 借鉴航空和核工程,在四个组中定义了 12 个可靠性指标:跨运行的一致性、对扰动的鲁棒性、可预测性(智能体是否知道它何时会失败)和有限损害。在 15 个前沿模型中,他们发现两年的能力提升只带来了约六分之一的可靠性提升。智能体在每次运行中选择相同类型的行动,但顺序不同,优雅地处理真实的基础设施故障,并在重新措辞的指令上崩溃。

Important: a capable agent is not a reliable one, and your customers experience reliability.

重要提示:一个有能力的智能体并不是一个可靠的智能体,而你的客户体验的是可靠性。

What it means for us: report pass^k, run perturbed versions of each task (rename a field, rephrase the instruction), and track consistency across runs as a separate number.

这对我们意味着什么:报告 pass^k,运行每个任务的扰动版本(重命名字段,重新措辞指令),并将跨运行的一致性作为一个单独的数字进行跟踪。

Why it matters: the published failures (an agent deleting a production database, an agent making unauthorised purchases) all came from systems with good average success rates.

为什么这很重要:已发表的失败(一个智能体删除了生产数据库,一个智能体进行未经授权的购买)都来自具有良好平均成功率的系统。

Measure cost. Bai et al. (2026) measured token spend across eight frontier models on SWE-bench Verified. Agentic tasks use about a thousand times more tokens than a chat turn, almost all of it re-reading their own growing history. The same task on the same model varied 30-fold in cost between runs, accuracy peaked at intermediate cost and fell at the highest, and models predicted their own cost with a correlation of at most 0.39. Their advice: rank models on cost per correct outcome, not on accuracy alone, and never trust a model's own estimate.

衡量成本。Bai et al. (2026) 在 SWE-bench Verified 上测量了八个前沿模型的 token 花费。智能体任务使用的 token 大约是聊天轮次的一千倍,几乎全部用于重新阅读自己不断增长的历史。同一模型上的同一任务在不同运行之间的成本相差 30 倍,准确率在中等成本时达到峰值并在最高成本时下降,模型预测自身成本的相关性最高仅为 0.39。他们的建议是:根据每个正确结果的成本对模型进行排名,而不是仅仅根据准确率,并且永远不要相信模型自己的估计。

Judgment, asking, and learning: three newer axes. Three 2026 benchmarks measure things a single success rate cannot see.

判断、提问和学习:三个较新的轴。三个 2026 年的基准测试测量了单一成功率无法看到的东西。

Taste (Pan et al., 2026): freeze an agent at a fork where both paths look fine and ask which one pays off later. The best model picks right 59.7% of the time on a two-way choice, and thinking longer does not help.

  • 品味(Taste,Pan et al., 2026):在一个两条路径看起来都不错的岔路口冻结智能体,并询问哪一条以后会有回报。最好的模型在双向选择上有 59.7% 的时间选对,而且思考更长时间并没有帮助。

Asking (Gulati et al., 2026): the value of asking a clarifying question about the goal falls from 0.78 to 0.39 once 10% of the task has been done. No frontier model asks within that window; one asked 52% of the time, one 23%, one never.

  • 提问(Asking,Gulati et al., 2026):一旦任务完成了 10%,提出关于目标的澄清问题的价值就从 0.78 下降到 0.39。没有前沿模型在这个窗口内提问;一个 52% 的时间提问,一个 23%,一个从不提问。

Learning from experience (Asawa et al., 2026): across six stateful environments, the best system captured only 25% of its possible improvement from experience, and simply keeping the full conversation history beat every dedicated memory product.

  • 从经验中学习(Learning from experience,Asawa et al., 2026):在六个有状态的环境中,最好的系统只捕获了其可能从经验中获得的 25% 的改进,并且简单地保留完整的对话历史就击败了每一个专门的记忆产品。

6.3 When the system is being optimised against the grader

6.3 当系统针对评分器进行优化时

If a grader is used to train or select the system (reinforcement learning, best-of-n selection), the system will find the grader's blind spots. Wang et al. of the Qwen team (2026) call this the verification horizon: every grader is a proxy for intent, and under optimisation pressure proxies and intent diverge. They catalogue reward hacking in coding agents (reading the answer from repository history, editing the tests, patching for the evaluator) and show that a behaviour monitor cut hacked "solutions" from 28.6% to 0.6% while raising genuine ones from 40% to 61%. They argue no grader is scalable, faithful, and robust at once: tests are scalable and robust but miss intent; judges are scalable and faithful but gameable; experts are faithful and robust but do not scale. The Meta-Agent Challenge (Lu et al., 2026) saw the same spontaneously: agents asked to build other agents tried to exfiltrate answers from the grading system in five trials.

如果评分器被用于训练或选择系统(强化学习,best-of-n 选择),系统将找到评分器的盲点。Qwen 团队的 Wang et al. (2026) 将此称为验证视界(verification horizon):每个评分器都是意图的代理,而在优化压力下,代理和意图会产生分歧。他们编目了编码智能体中的奖励黑客行为(从仓库历史中读取答案、编辑测试、为评估器打补丁),并表明行为监视器将被黑客攻击的“解决方案”从 28.6% 减少到 0.6%,同时将真正的解决方案从 40% 提高到 61%。他们认为没有评分器能同时具备可扩展性、忠实性和鲁棒性:测试具有可扩展性和鲁棒性但会遗漏意图;裁判具有可扩展性和忠实性但可被博弈;专家具有忠实性和鲁棒性但不可扩展。Meta-Agent Challenge(Lu et al., 2026)自发地看到了同样的情况:被要求构建其他智能体的智能体在五次试验中试图从评分系统中窃取答案。

Important: any grader that influences training or selection will be gamed.

重要提示:任何影响训练或选择的评分器都会被博弈。

What it means for us: keep a held-out grader the system never sees, monitor for shortcut behaviour, and upgrade the grader as the system improves.

这对我们意味着什么:保留一个系统从未见过的留出评分器,监视捷径行为,并在系统改进时升级评分器。

Why it matters: the score goes up while the product gets worse.

为什么这很重要:分数上升了,而产品却变差了。

Carry forward from Level 6:

从 Level 6 带走:

Grade each stage separately; the finder and the writer fail differently.

  • 分别评估每个阶段;查找器和撰写器的失败方式不同。

For agents: final state and path, several runs, pass^k, cost per success, and reliability as its own number.

  • 对于智能体:最终状态和路径、多次运行、pass^k、每次成功的成本,以及可靠性作为独立的数字。

Graders used for optimisation get gamed. Keep one they never see.

  • 用于优化的评分器会被博弈。保留一个它们从未见过的。

Level 7: public benchmarks

Level 7:公共基准测试

Zooms into: Level 1's distinction between eval and benchmark. Question: what do leaderboard numbers tell you, and what do they hide?

放大:Level 1 中评估和基准测试之间的区别。问题:排行榜数字告诉你什么,又隐藏了什么?

A benchmark is a fixed public task set used to compare models: MMLU (academic multiple choice), GSM8K (grade-school maths), HumanEval (code), MT-Bench and Chatbot Arena (conversation quality), SWE-bench (fixing real GitHub issues), τ-bench (customer-service agents), GPQA and HLE (expert questions). They are how you pick an engine. Four things to know before quoting one.

基准测试是用于比较模型的固定公共任务集:MMLU(学术多项选择)、GSM8K(小学数学)、HumanEval(代码)、MT-Bench 和 Chatbot Arena(对话质量)、SWE-bench(修复真实的 GitHub 问题)、τ-bench(客户服务智能体)、GPQA 和 HLE(专家问题)。它们是你挑选引擎的方式。在引用之前需要知道四件事。

The number depends on the harness as much as the model. We ran GSM8K on the same open-weight model with two prompt formats and got 0.686 and 0.746. The lm-evaluation-harness paper (Biderman et al., 2024) documents swings of double digits from prompt formatting, few-shot examples, and the regex that extracts the answer. A score is a (model, prompt, harness, version) tuple. Schaeffer et al. (2023) showed something stronger: apparent "emergent" jumps in capability were largely artefacts of all-or-nothing metrics, and vanished under smooth ones. The metric you choose can create or erase a phenomenon.

数字对测试框架(harness)的依赖不亚于对模型的依赖。我们在同一个开放权重模型上用两种提示词格式运行了 GSM8K,得到了 0.686 和 0.746。lm-evaluation-harness 论文(Biderman et al., 2024)记录了由于提示词格式、少样本示例和提取答案的正则表达式而引起的两位数波动。一个分数是一个(模型,提示词,框架,版本)元组。Schaeffer et al. (2023) 展示了更强有力的东西:表面上“涌现”的能力跳跃在很大程度上是全有或全无指标的产物,并在平滑指标下消失了。你选择的指标可以创造或消除一种现象。

Contamination. If the test questions were in the training data, the score measures memory. GSM1k (Zhang et al., 2024) rebuilt GSM8K with fresh questions of matched difficulty and found some model families dropped up to 8 points, with the drop correlated with how likely the model was to have memorised the original. Other families did not drop. Contamination is real, measurable, and uneven.

污染。如果测试问题在训练数据中,分数测量的就是记忆。GSM1k(Zhang et al., 2024)用难度匹配的新问题重建了 GSM8K,发现一些模型家族下降了多达 8 个百分点,下降与模型记忆原始问题的可能性相关。其他家族没有下降。污染是真实的、可测量的,并且是不均匀的。

Saturation. Benchmarks have a shelf life. A 2026 study of 60 widely used benchmarks found about half highly saturated, and older ones saturate faster. SWE-bench Verified went from roughly 40% to over 80% solved in about two years, and its curator stated it no longer separates frontier models. MMLU, GSM8K, and HumanEval have effectively been retired by frontier labs in favour of HLE, GPQA Diamond, SWE-bench Verified, LiveCodeBench, and τ²-bench, each of which will saturate in turn. On Chatbot Arena the top models now sit within about 20 Elo points, which is inside the noise.

饱和。基准测试有保质期。一项 2026 年对 60 个广泛使用的基准测试的研究发现大约一半高度饱和,并且较老的饱和得更快。SWE-bench Verified 在大约两年内从大约 40% 解决到超过 80%,其策展人声明它不再能区分前沿模型。MMLU、GSM8K 和 HumanEval 实际上已被前沿实验室退役,取而代之的是 HLE、GPQA Diamond、SWE-bench Verified、LiveCodeBench 和 τ²-bench,它们每一个都将依次饱和。在 Chatbot Arena 上,顶级模型现在位于大约 20 个 Elo 积分之内,这属于噪声范围。

Redundancy. Zeng and Papailiopoulos (2026) assembled a matrix of 84 models by 133 benchmarks and found it is approximately rank two: two underlying factors explain over 90% of the variation. Five well-chosen benchmarks predict the other 128 to within about 4 points. For choosing an engine, that is good news: you do not need to run forty benchmarks. For discovering a specific failure mode, it says nothing; that still needs your own eval.

冗余。Zeng 和 Papailiopoulos (2026) 组装了一个 84 个模型乘 133 个基准测试的矩阵,发现它大约是二阶的:两个潜在因素解释了超过 90% 的变异。五个精心挑选的基准测试可以在大约 4 个百分点内预测其他 128 个。对于选择引擎来说,这是个好消息:你不需要运行四十个基准测试。对于发现特定的失败模式,它什么也没说;那仍然需要你自己的评估。

Important: a leaderboard ranks engines on last year's exam, under one harness, and the top entries are usually within noise of each other.

重要提示:排行榜在去年的考试上、在一个框架下对引擎进行排名,而且顶级条目通常在彼此的噪声范围内。

What it means for us: use benchmarks to shortlist two or three models, then decide with your own eval on your own data.

这对我们意味着什么:使用基准测试来入围两三个模型,然后根据你自己的数据用你自己的评估来决定。

Why it matters: switching models on a 2-point benchmark gain can cost you 10 points on your actual task.

为什么这很重要:基于 2 个百分点的基准测试增益来切换模型,可能会让你在实际任务中损失 10 个百分点。

Two frontier uses of evals worth knowing. Google's Paper Assistant Tool (Jayaram et al., 2026) uses an agent pipeline to review scientific papers and caught 89.7% of known proof errors versus 55.2% for a single model call; over 90% of 850 surveyed authors found it helpful and 31% ran new experiments because of it. CUSP (Wu et al., 2026) asked models to forecast which research directions will succeed and found them near chance (0.519) with strong yes-bias or no-bias depending on the model, fixable only with explicit bias correction. Both are reminders that an eval of a model's judgment needs its own ground truth, and that models are badly calibrated about the future and about themselves.

两个值得了解的评估前沿用途。Google 的 Paper Assistant Tool(Jayaram et al., 2026)使用智能体管道来审查科学论文,捕获了 89.7% 的已知证明错误,而单次模型调用为 55.2%;超过 90% 的 850 名受访作者认为它有帮助,31% 的人因此进行了新的实验。CUSP(Wu et al., 2026)要求模型预测哪些研究方向会成功,发现它们接近偶然(0.519),并且根据模型的不同有强烈的“是”偏见或“否”偏见,只能通过明确的偏见修正来修复。两者都提醒我们,对模型判断的评估需要其自己的基准事实,并且模型对未来和对自己的校准很差。

Carry forward from Level 7:

从 Level 7 带走:

A benchmark score is a tuple, not a property of the model. Record the harness.

  • 基准测试分数是一个元组,而不是模型的属性。记录框架。

Benchmarks get contaminated and saturate; check the date.

  • 基准测试会被污染并饱和;检查日期。

Five benchmarks tell you almost everything a leaderboard can. Your eval tells you the rest.

  • 五个基准测试几乎告诉你排行榜能告诉你的一切。你的评估告诉你剩下的。

Level 8: making it a habit

Level 8:让它成为一种习惯

Zooms into: the "when" of the quick grasp. Question: how does this run every week without a research team?

放大:快速掌握中的“何时”。问题:这如何在没有研究团队的情况下每周运行?

Hamel Husain's three-level model (2024) sets the cadence:

Hamel Husain 的三级模型(2024)设定了节奏:

  1. What: code graders, schema checks, required facts. When: every commit. Cost: free.
  1. 内容:代码评分器、模式检查、必要事实。何时:每次提交。成本:免费。
  1. What: model judges and detectors on the test set, human review of a sample. When: every change to prompt, model, or retrieval. Cost: cents to dollars.
  1. 内容:测试集上的模型裁判和检测器,对样本的人工审查。何时:每次更改提示词、模型或检索。成本:几美分到几美元。
  1. What: A/B test on real traffic. When: after a change ships. Cost: real users.
  1. 内容:真实流量上的 A/B 测试。何时:更改发布后。成本:真实用户。

The merge gate. Our tutorial's CI gate reruns Levels 1 and 2 and fails the build if the pass rate drops more than 3 points against the recorded baseline of 0.70. It is a tripwire for big regressions, not a guarantee: with a 12-point detection floor, a 5-point regression walks through. Say so in the dashboard.

合并门禁。我们教程的 CI 门禁重新运行 Level 1 和 2,如果通过率比记录的 0.70 基线下降超过 3 个百分点,则构建失败。它是针对大退化的绊线,而不是保证:在 12 个百分点的检测下限下,5 个百分点的退化会蒙混过关。在仪表板中要说明这一点。

Monitoring. After launch, sample real traffic, run the cheap graders on all of it and the expensive ones on a slice, and plot the trend. Bodhwani et al.'s (2026) "calibrate then trust" is the right pattern for the expensive gate: run a full audit once against verifiable ground truth to learn where the cheap judge-based gate agrees with reality, use the cheap gate in CI only inside that region, and re-audit when the model, the judge, the simulator, or the domain changes. They also found that a zero-cost "did the conversation complete" bit caught budget-starvation regressions on its own.

监控。发布后,抽样真实流量,对所有流量运行廉价评分器,对一部分运行昂贵评分器,并绘制趋势图。Bodhwani et al. (2026) 的“先校准后信任(calibrate then trust)”是昂贵门禁的正确模式:针对可验证的基准事实运行一次完整审计,以了解廉价的基于裁判的门禁在何处与现实一致,在 CI 中仅在该区域内使用廉价门禁,并在模型、裁判、模拟器或领域发生变化时重新审计。他们还发现,一个零成本的“对话是否完成”的比特位自己就捕获了预算枯竭的退化。

Caching and cost. Cache every model call keyed on the prompt, the data version, and the recipe. A rerun becomes a file read. Our full A/B on 60 tickets costs 121 judge calls, about four cents; the entire tutorial reran from cache with zero calls. Cost is not the reason to skip evals.

缓存和成本。以提示词、数据版本和配方为键缓存每个模型调用。重新运行变成了文件读取。我们在 60 个工单上的完整 A/B 测试花费了 121 次裁判调用,大约四美分;整个教程从缓存重新运行,零调用。成本不是跳过评估的理由。

What a leader should ask for. Four numbers on one page: the product's pass rate with its interval, the grader's agreement with human labels, the detection floor, and the share of cases that got worse in the last change. If any of the four is missing, the other three are not yet meaningful.

领导者应该要求什么。一页纸上的四个数字:产品的通过率及其区间、评分器与人类标签的一致性、检测下限,以及在上次更改中变得更糟的案例份额。如果这四个数字中缺少任何一个,其他三个就还没有意义。

Carry forward from Level 8:

从 Level 8 带走:

Three cadences: every commit, every change, after shipping.

  • 三种节奏:每次提交、每次更改、发布后。

A gate is a floor, not a ceiling. State its detection floor.

  • 门禁是地板,不是天花板。说明它的检测下限。

Calibrate the cheap gate against ground truth once, then trust it only inside that region.

  • 针对基准事实校准一次廉价门禁,然后只在该区域内信任它。

The tools and approaches, observed

观察到的工具与方法

This section is an observation, not a recommendation list. All of these were run or reviewed while building the tutorial; the practitioner and tooling notes in our knowledge base hold the details.

本节是观察,而不是推荐列表。所有这些都是在构建教程时运行或审查过的;我们知识库中的从业者和工具说明包含了详细信息。

Frameworks

框架

Inspect AI (UK AI Security Institute, MIT). Best at: One coherent pipeline: dataset, solver, scorer, log viewer; agents and sandboxes; used for frontier safety evals. What to watch: Code-first; the most complete, and the most to learn.

  • Inspect AI (UK AI Security Institute, MIT)。最擅长:一个连贯的管道:数据集、求解器、评分器、日志查看器;智能体和沙盒;用于前沿安全评估。注意事项:代码优先;最完整,也最需要学习。

lm-evaluation-harness (EleutherAI, MIT). Best at: Running public benchmarks (GSM8K, MMLU, IFEval) reproducibly against any model. What to watch: Benchmarks only; the harness paper is the reason it exists.

  • lm-evaluation-harness (EleutherAI, MIT)。最擅长:可复现地对任何模型运行公共基准测试(GSM8K, MMLU, IFEval)。注意事项:仅限基准测试;框架论文是其存在的原因。

promptfoo (MIT, Node.js). Best at: Declarative YAML test suites, red-teaming, CI regression. What to watch: Not a Python package; acquired by OpenAI in 2026.

  • promptfoo (MIT, Node.js)。最擅长:声明式 YAML 测试套件、红队测试、CI 回归。注意事项:不是 Python 包;2026 年被 OpenAI 收购。

DeepEval (Apache-2.0). Best at: pytest-style unit tests with ready metrics (faithfulness, relevance). What to watch: Headline metrics are blends; look inside before trusting.

  • DeepEval (Apache-2.0)。最擅长:带有现成指标(忠实度、相关性)的 pytest 风格单元测试。注意事项:标题指标是混合的;在信任之前先看内部。

RAGAS (Apache-2.0). Best at: The standard RAG triad, reference-free. What to watch: Flaky with local models (NaNs, executor errors); numbers are blends.

  • RAGAS (Apache-2.0)。最擅长:标准的 RAG 三元组,无需参考。注意事项:在本地模型上不稳定(NaN,执行器错误);数字是混合的。

Langfuse (MIT self-host). Best at: Tracing, datasets, experiment runs, judge evaluators in one self-hosted stack. What to watch: Version 4 changes evaluator semantics; plan the migration.

  • Langfuse (MIT self-host)。最擅长:在一个自托管堆栈中进行跟踪、数据集、实验运行、裁判评估器。注意事项:版本 4 更改了评估器语义;计划迁移。

Phoenix (Arize). Best at: Tracing plus evals with a strong UI. What to watch: Elastic License 2.0, source-available rather than open source.

  • Phoenix (Arize)。最擅长:跟踪加上具有强大 UI 的评估。注意事项:Elastic License 2.0,源码可用而不是开源。

LangSmith, Braintrust. Best at: Hosted platforms: trace capture, sampling, judge bootstrap, human refinement. What to watch: Commercial; Braintrust's autoevals library works standalone.

  • LangSmith, Braintrust。最擅长:托管平台:跟踪捕获、采样、裁判引导、人工细化。注意事项:商业;Braintrust 的 autoevals 库可独立工作。

Opik (Comet), MLflow genai, Weave (W&B). Best at: Self-hostable observability with eval hooks; good if you already run the platform. What to watch: Heavy footprints for a from-scratch team.

  • Opik (Comet), MLflow genai, Weave (W&B)。最擅长:带有评估钩子的可自托管可观测性;如果你已经运行该平台则很好。注意事项:对于从零开始的团队来说足迹太重。

HELM (Stanford). Best at: Multi-metric philosophy: accuracy, calibration, robustness, fairness, efficiency together. What to watch: Research-oriented, least turnkey.

  • HELM (Stanford)。最擅长:多指标理念:准确率、校准、鲁棒性、公平性、效率结合在一起。注意事项:面向研究,最不即插即用。

evalica. Best at: Turning pairwise judgments into Bradley-Terry or Elo leaderboards with intervals. What to watch: Statistics only; pair with a judge.

  • evalica。最擅长:将成对判断转换为带有区间的 Bradley-Terry 或 Elo 排行榜。注意事项:仅限统计;与裁判配对。

Jev / TypeSafe. Best at: Typed judge questions with calibrated probabilities, ~100x cheaper than a generative judge. What to watch: No text, no explanations; you supply the labels.

  • Jev / TypeSafe。最擅长:带有校准概率的类型化裁判问题,比生成式裁判便宜约 100 倍。注意事项:没有文本,没有解释;由你提供标签。

HHEM, LettuceDetect, MiniCheck, SelfCheckGPT. Best at: "Is this claim supported" at CPU speed and zero marginal cost. What to watch: One question only; not a general grader.

  • HHEM, LettuceDetect, MiniCheck, SelfCheckGPT。最擅长:以 CPU 速度和零边际成本回答“此声明是否被支持”。注意事项:仅限一个问题;不是通用评分器。

Selene-Mini, Prometheus 2, Flow-Judge. Best at: Open-weight judge models you can self-host and audit. What to watch: Still judges; still need calibration.

  • Selene-Mini, Prometheus 2, Flow-Judge。最擅长:你可以自托管和审计的开放权重裁判模型。注意事项:仍然是裁判;仍然需要校准。

Approaches, compared

方法比较

Code rules. Answers: is the form right, are the facts present. Cost: free. Blind spot: meaning.

  • 代码规则。回答:格式是否正确,事实是否存在。成本:免费。盲点:含义。

Similarity (ROUGE, embeddings). Answers: did the output change. Cost: free. Blind spot: correctness.

  • 相似度(ROUGE, embeddings)。回答:输出是否改变。成本:免费。盲点:正确性。

Specialised detector / NLI. Answers: is this claim supported by this text. Cost: near free. Blind spot: anything else.

  • 专门检测器 / NLI。回答:此声明是否被此文本支持。成本:接近免费。盲点:其他一切。

Typed judge (Jev). Answers: this label, this yes/no, with a probability. Cost: cents per thousand. Blind spot: cannot explain or propose.

  • 类型化裁判(Jev)。回答:这个标签,这个是/否,带有一个概率。成本:每千次几美分。盲点:无法解释或提议。

Generative judge, binary with evidence. Answers: any readable criterion. Cost: cents per call. Blind spot: the five biases; must be calibrated.

  • 生成式裁判,带证据的二元判断。回答:任何可读的标准。成本:每次调用几美分。盲点:五种偏见;必须校准。

Panel of judges, robust combination. Answers: same, with fewer single-judge failures. Cost: three times a judge. Blind spot: correlated errors cap the benefit at ~3 judges.

  • 裁判小组,稳健组合。回答:相同,但单裁判失败更少。成本:一个裁判的三倍。盲点:相关错误将收益限制在约 3 个裁判。

Human labels. Answers: ground truth. Cost: expensive, slow. Blind spot: needs two raters and an agreement statistic.

  • 人类标签。回答:基准事实。成本:昂贵、缓慢。盲点:需要两名评分员和一个一致性统计量。

A/B on traffic. Answers: real business impact. Cost: real users at risk. Blind spot: slow; needs the earlier levels to be safe.

  • 流量上的 A/B 测试。回答:真实的业务影响。成本:真实用户面临风险。盲点:缓慢;需要前面的层级来保证安全。

A pattern seen in every source and in our own run: the hand-rolled grader and the framework number should be read against each other. Agreement is evidence. Disagreement is a question, and usually a good one.

每个来源和我们自己的运行中都看到的一个模式:手工制作的评分器和框架数字应该相互对照阅读。一致是证据。不一致是一个问题,而且通常是一个好问题。

A decision guide

决策指南

Is the output well-formed and complete?. Use: code rules. Then check: nothing, it is exact.

  • 输出格式是否良好且完整?。使用:代码规则。然后检查:无需检查,它是精确的。

Did the new version change the outputs?. Use: similarity. Then check: why, by reading a sample.

  • 新版本是否改变了输出?。使用:相似度。然后检查:为什么,通过阅读样本。

Is this claim supported by this document?. Use: detector or typed judge. Then check: its precision and recall on a labelled sample.

  • 此声明是否被此文档支持?。使用:检测器或类型化裁判。然后检查:它在标记样本上的精确率和召回率。

Does the reply fail in way X?. Use: binary generative judge with evidence. Then check: kappa against human labels on dev.

  • 回复是否以方式 X 失败?。使用:带证据的二元生成式裁判。然后检查:在开发集上针对人类标签的 kappa。

Which of two versions is better?. Use: paired comparison with interval. Then check: the per-case regressions.

  • 两个版本中哪个更好?。使用:带区间的配对比较。然后检查:每个案例的退化。

Can we detect a 5-point regression?. Use: power calculation. Then check: add cases until you can.

  • 我们能检测到 5 个百分点的退化吗?。使用:功效计算。然后检查:添加案例直到你能检测到。

Is the agent reliable?. Use: pass^k over several runs, perturbed tasks. Then check: consistency across runs as its own number.

  • 智能体可靠吗?。使用:多次运行中的 pass^k,扰动任务。然后检查:跨运行的一致性作为其独立的数字。

Which model should we use?. Use: five public benchmarks to shortlist. Then check: your own eval to decide.

  • 我们应该使用哪个模型?。使用:五个公共基准测试来入围。然后检查:你自己的评估来决定。

Is it still working in production?. Use: sampled traffic, cheap graders on all, judge on a slice. Then check: re-audit the judge gate when anything changes.

  • 它在生产环境中仍然正常工作吗?。使用:抽样流量,对所有流量使用廉价评分器,对一部分使用裁判。然后检查:当任何东西改变时重新审计裁判门禁。

Fifteen things to carry away

带走的十五件事

An eval is input, system, grader, number. Build the gold inputs first; they are the asset.

  1. 评估就是输入、系统、评分器、数字。首先构建黄金输入;它们是资产。

Evals measure your product. Benchmarks measure engines. Do not confuse them.

  1. 评估衡量你的产品。基准测试衡量引擎。不要混淆它们。

Read a hundred outputs before writing a grader. The failure list is the plan.

  1. 在编写评分器之前阅读一百个输出。失败列表就是计划。

Code graders for everything with a definite answer. They see form, not meaning.

  1. 对一切有明确答案的事物使用代码评分器。它们看到形式,而不是含义。

Judges get binary questions with evidence and context. Holistic scores miss planted errors.

  1. 裁判获得带有证据和上下文的二元问题。整体分数会漏掉植入的错误。

Measure the judge against humans. Report kappa or catch rate. Sixty percent agreement can mean nothing.

  1. 根据人类测量裁判。报告 kappa 或捕获率。60% 的一致性可能毫无意义。

Judges prefer first, longer, familiar, and pleasant. Mitigations are cheap; apply them.

  1. 裁判偏好第一、更长、熟悉和令人愉悦的。缓解措施很廉价;应用它们。

Satisfaction is not success. Give the judge the tool calls and the final state.

  1. 满意度不是成功。给裁判工具调用和最终状态。

For "is this supported", a small detector or typed judge beats a general judge on cost and often on accuracy.

  1. 对于“这是否被支持”,小型检测器或类型化裁判在成本上击败通用裁判,在准确率上也经常击败。

Every rate gets an interval. Every comparison is paired. Know the detection floor.

  1. 每个比率都有一个区间。每次比较都是配对的。了解检测下限。

Grade each stage of a pipeline separately.

  1. 分别评估管道的每个阶段。

Agents: final state and path, several runs, pass^k, cost per success, reliability on its own axis.

  1. 智能体:最终状态和路径、多次运行、pass^k、每次成功的成本、可靠性作为独立的轴。

A grader used for optimisation gets gamed. Keep one the system never sees.

  1. 用于优化的评分器会被博弈。保留一个系统从未见过的。

Benchmark scores are harness-dependent, contaminated unevenly, and saturate. Record the tuple.

  1. 基准测试分数依赖于框架,被不均匀地污染,并且会饱和。记录元组。

Three cadences, a gate with a stated floor, a monitor, and a re-audit when anything changes.

  1. 三种节奏,一个说明了下限的门禁,一个监控器,以及当任何东西改变时重新审计。

References

参考资料

From this knowledge base (summaries in the sibling folders)

来自本知识库(摘要位于同级文件夹中)

Acharya, Pan, Verkhovsky (2026). RoPoLL: Robust Panel of LLM Judges. arXiv:2606.30931. — RoPoLLRobustPanelOfLLMJudges/

  • Acharya, Pan, Verkhovsky (2026). RoPoLL: Robust Panel of LLM Judges. arXiv:2606.30931. — RoPoLLRobustPanelOfLLMJudges/

Asawa et al. (2026). Continual Learning Bench. arXiv:2606.05661. — ContinualLearningBench/

  • Asawa et al. (2026). Continual Learning Bench. arXiv:2606.05661. — ContinualLearningBench/

Bai et al. (2026). How Do AI Agents Spend Your Money? arXiv:2604.22750. — HowAiAgentsSpendYourMoney/

  • Bai et al. (2026). How Do AI Agents Spend Your Money? arXiv:2604.22750. — HowAiAgentsSpendYourMoney/

Bodhwani, Tran, Wei (2026). GAUGE: When Not to Trust LLM-as-a-Judge in User-Simulated Evaluation of Task-Oriented Agents. arXiv:2609.12191. — GaugeWhenNotToTrustLlmAsAJudge…/

  • Bodhwani, Tran, Wei (2026). GAUGE: When Not to Trust LLM-as-a-Judge in User-Simulated Evaluation of Task-Oriented Agents. arXiv:2609.12191. — GaugeWhenNotToTrustLlmAsAJudge…/

Cho et al. (2026). Ask, Don't Judge / BinEval. arXiv:2606.27226. — AskDontJudge/, BinEval/

  • Cho et al. (2026). Ask, Don't Judge / BinEval. arXiv:2606.27226. — AskDontJudge/, BinEval/

Fiddler (2026). The Evaluation Trust Tax: agent evals TCO. — AgentEvalsTCO/

  • Fiddler (2026). The Evaluation Trust Tax: agent evals TCO. — AgentEvalsTCO/

Grace, Hadfield, Olivares, De Jonghe (Anthropic, 2026). Demystifying Evals for AI Agents. — DemystifyingEvalsForAIAgents/

  • Grace, Hadfield, Olivares, De Jonghe (Anthropic, 2026). Demystifying Evals for AI Agents. — DemystifyingEvalsForAIAgents/

Gulati et al. (2026). Ask Early, Ask Late, Ask Right. arXiv:2605.07937. — AskEarlyAskLateAskRight/

  • Gulati et al. (2026). Ask Early, Ask Late, Ask Right. arXiv:2605.07937. — AskEarlyAskLateAskRight/

HKUDS (2026). ClawWork (economic-accountability agent benchmark, code analysis). — ClawWork/

  • HKUDS (2026). ClawWork (economic-accountability agent benchmark, code analysis). — ClawWork/

Jayaram et al. (Google, 2026). Towards Automating Scientific Review with the Paper Assistant Tool. arXiv:2606.28277. — PaperAssistantTool/, TowardsAutomatingScientificReview/

  • Jayaram et al. (Google, 2026). Towards Automating Scientific Review with the Paper Assistant Tool. arXiv:2606.28277. — PaperAssistantTool/, TowardsAutomatingScientificReview/

Lu et al. (2026). The Meta-Agent Challenge. arXiv:2606.04455. — MetaAgentChallenge/

  • Lu et al. (2026). The Meta-Agent Challenge. arXiv:2606.04455. — MetaAgentChallenge/

Menaged et al. (2026). Can LLM Agents Infer World Models? arXiv:2606.16576. — CanLLMAgentsInferWorldModels/

  • Menaged et al. (2026). Can LLM Agents Infer World Models? arXiv:2606.16576. — CanLLMAgentsInferWorldModels/

Pan et al. (2026). The Tasteful Agent. arXiv:2609.25804. — TastefulAgent/

  • Pan et al. (2026). The Tasteful Agent. arXiv:2609.25804. — TastefulAgent/

Parikh (2026). Structured Output Collapses Answer Diversity Across 44 Language Models. arXiv:2607.18476. — StructuredOutputCollapsesAnswerDiversity/

  • Parikh (2026). Structured Output Collapses Answer Diversity Across 44 Language Models. arXiv:2607.18476. — StructuredOutputCollapsesAnswerDiversity/

Rabanser, Kapoor, Kirgis, Liu, Utpala, Narayanan (2026). Towards a Science of AI Agent Reliability. arXiv:2602.16666, ICML 2026. — TowardsAScienceOfAIAgentReliability/

  • Rabanser, Kapoor, Kirgis, Liu, Utpala, Narayanan (2026). Towards a Science of AI Agent Reliability. arXiv:2602.16666, ICML 2026. — TowardsAScienceOfAIAgentReliability/

Wang et al. (Qwen, 2026). The Verification Horizon: No Silver Bullet for Coding Agent Rewards. arXiv:2606.26300. — VerificationHorizon/

  • Wang et al. (Qwen, 2026). The Verification Horizon: No Silver Bullet for Coding Agent Rewards. arXiv:2606.26300. — VerificationHorizon/

Wu et al. (2026). CUSP: Forecasting Scientific Progress with AI. arXiv:2605.22681. — ForecastingScientificProgressWithAI/

  • Wu et al. (2026). CUSP: Forecasting Scientific Progress with AI. arXiv:2605.22681. — ForecastingScientificProgressWithAI/

Zeng, Papailiopoulos (2026). You Don't Need to Run Every Eval. arXiv:2606.24020. — YouDontNeedToRunEveryEval/

  • Zeng, Papailiopoulos (2026). You Don't Need to Run Every Eval. arXiv:2606.24020. — YouDontNeedToRunEveryEval/

Zhang et al. (2026). SWE-Explore. arXiv:2606.07297. — SWEExplore/

  • Zhang et al. (2026). SWE-Explore. arXiv:2606.07297. — SWEExplore/

The evals tutorial (tutorials/evals/, chapters 00–14, Q&A.md, research/SOURCES_*.md) and its primer notebook, source of every running-example number. The jev tutorial (tutorials/jev/).

  • The evals tutorial (tutorials/evals/, chapters 00–14, Q&A.md, research/SOURCES_*.md) and its primer notebook, source of every running-example number. The jev tutorial (tutorials/jev/).

Foundational and practitioner sources

基础和从业者来源

Biderman et al. (2024). Lessons from the Trenches on Reproducible Evaluation of Language Models. arXiv:2405.14782.

  • Biderman et al. (2024). Lessons from the Trenches on Reproducible Evaluation of Language Models. arXiv:2405.14782.

Chiang et al. (2024). Chatbot Arena. arXiv:2403.04132.

  • Chiang et al. (2024). Chatbot Arena. arXiv:2403.04132.

Dubois, Galambosi, Liang, Hashimoto (2024). Length-Controlled AlpacaEval. arXiv:2404.04475.

  • Dubois, Galambosi, Liang, Hashimoto (2024). Length-Controlled AlpacaEval. arXiv:2404.04475.

Es, James, Espinosa-Anke, Schockaert (2024). RAGAS. arXiv:2309.15217.

  • Es, James, Espinosa-Anke, Schockaert (2024). RAGAS. arXiv:2309.15217.

Gu et al. (2024). A Survey on LLM-as-a-Judge. arXiv:2411.15594.

  • Gu et al. (2024). A Survey on LLM-as-a-Judge. arXiv:2411.15594.

Han et al. (2025). RAG vs GraphRAG: A Systematic Evaluation. arXiv:2502.11371.

  • Han et al. (2025). RAG vs GraphRAG: A Systematic Evaluation. arXiv:2502.11371.

JEV-as-a-Judge (2026). arXiv:2609.26550. — research_topics/coding_agents/JevAsAJudge/

  • JEV-as-a-Judge (2026). arXiv:2609.26550. — research_topics/coding_agents/JevAsAJudge/

Panickssery, Bowman, Feng (2024). LLM Evaluators Recognize and Favor Their Own Generations. arXiv:2404.13076.

  • Panickssery, Bowman, Feng (2024). LLM Evaluators Recognize and Favor Their Own Generations. arXiv:2404.13076.

Husain (2024). Your AI Product Needs Evals. hamel.dev. Husain (2025). A Field Guide to Rapidly Improving AI Products. Husain & Shankar (2025). AI Evals FAQ.

  • Husain (2024). Your AI Product Needs Evals. hamel.dev. Husain (2025). A Field Guide to Rapidly Improving AI Products. Husain & Shankar (2025). AI Evals FAQ.

Jimenez et al. (2024). SWE-bench. arXiv:2310.06770. OpenAI (2024). SWE-bench Verified.

  • Jimenez et al. (2024). SWE-bench. arXiv:2310.06770. OpenAI (2024). SWE-bench Verified.

Kovács, Recski (2025). LettuceDetect. arXiv:2502.17125. Tang, Laban, Durrett (2024). MiniCheck. arXiv:2404.10774. Manakul, Liusie, Gales (2023). SelfCheckGPT. arXiv:2303.08896.

  • Kovács, Recski (2025). LettuceDetect. arXiv:2502.17125. Tang, Laban, Durrett (2024). MiniCheck. arXiv:2404.10774. Manakul, Liusie, Gales (2023). SelfCheckGPT. arXiv:2303.08896.

Liang et al. (2022). HELM. arXiv:2211.09110.

  • Liang et al. (2022). HELM. arXiv:2211.09110.

Liu et al. (2023). G-Eval. arXiv:2303.16634.

  • Liu et al. (2023). G-Eval. arXiv:2303.16634.

Miller (2024). Adding Error Bars to Evals. arXiv:2411.00640.

  • Miller (2024). Adding Error Bars to Evals. arXiv:2411.00640.

Saad-Falcon, Khattab, Potts, Zaharia (2024). ARES. arXiv:2311.09476.

  • Saad-Falcon, Khattab, Potts, Zaharia (2024). ARES. arXiv:2311.09476.

Schaeffer, Miranda, Koyejo (2023). Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004.

  • Schaeffer, Miranda, Koyejo (2023). Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004.

Shankar, Zamfirescu-Pereira, Hartmann, Parameswaran, Arawjo (2024). Who Validates the Validators? arXiv:2404.12272.

  • Shankar, Zamfirescu-Pereira, Hartmann, Parameswaran, Arawjo (2024). Who Validates the Validators? arXiv:2404.12272.

Tan et al. (2025). JudgeBench. arXiv:2410.12784.

  • Tan et al. (2025). JudgeBench. arXiv:2410.12784.

Verga et al. (2024). Replacing Judges with Juries (PoLL). arXiv:2404.18796.

  • Verga et al. (2024). Replacing Judges with Juries (PoLL). arXiv:2404.18796.

Wang et al. (2024). Large Language Models are not Fair Evaluators. arXiv:2305.17926.

  • Wang et al. (2024). Large Language Models are not Fair Evaluators. arXiv:2305.17926.

Yan (2024). Task-Specific LLM Evals that Do & Don't Work; Evaluating the Effectiveness of LLM-Evaluators. eugeneyan.com.

  • Yan (2024). Task-Specific LLM Evals that Do & Don't Work; Evaluating the Effectiveness of LLM-Evaluators. eugeneyan.com.

Yao, Shinn, Razavi, Narasimhan (2024). τ-bench. arXiv:2406.12045. Sierra (2025). τ²-bench. arXiv:2506.07982.

  • Yao, Shinn, Razavi, Narasimhan (2024). τ-bench. arXiv:2406.12045. Sierra (2025). τ²-bench. arXiv:2506.07982.

Zhang et al. (2024). GSM1k. arXiv:2405.00332.

  • Zhang et al. (2024). GSM1k. arXiv:2405.00332.

Zheng et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685.

  • Zheng et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685.

Zhou et al. (2023). IFEval. arXiv:2311.07911.

  • Zhou et al. (2023). IFEval. arXiv:2311.07911.

2026 audits: When AI Benchmarks Plateau (arXiv:2602.16763); When the Judge Changes, So Does the Measurement (arXiv:2607.08535); Reliability without Validity (arXiv:2606.19544); AgentLens (arXiv:2605.12925).

  • 2026 audits: When AI Benchmarks Plateau (arXiv:2602.16763); When the Judge Changes, So Does the Measurement (arXiv:2607.08535); Reliability without Validity (arXiv:2606.19544); AgentLens (arXiv:2605.12925).

An article for everyone who ships, buys, or signs off on software built on large language models (LLMs): engineers, product managers, and the CEO. Written in plain language, from the big picture down to the details. Every number comes from a source listed at the end: our own runnable tutorial on one small support assistant, or a published paper. The quick grasp (read this if you read nothing else) An eval (short for evaluation) is a repeatable test that tells you, with a number you can trust, whether an AI system does what you want, and whether a change made it better or worse. Why it exists: a language model does not fail like normal software. Normal software either works or crashes. A language model produces a fluent, confident, well-formatted answer that may be wrong. Reading one good answer tells you nothing about the next hundred. Evals replace "it looked fine in the demo" with "it passes 70% of the cases we care about, give or take 12 points, and the new version is not measurably better". How it works, in four steps: Collect inputs that matter, with the right answer written down next to each one. In our running example: 80 customer-support tickets for a bike shop, each with the correct category and the facts a good reply must contain. Run the system on every input and keep the output. Grade every output with a grader. A grader is a rule in code, a second model acting as a judge, or a human. Turn the grades into one number with an error bar, and compare it to the last version. When you use it: before launch (does it work at all?), before every change (did we break something?), and after launch (is it still working on real traffic?). Important: the grader is part of the system you must test. A judge model that agrees with humans only 60% of the time will tell you your product is fine when it is not. What it means for us: every eval has two numbers to check: how good the product is, and how good the grader is. Ask for both. Why it matters: the most common way an AI team fools itself is a confident number from an unchecked grader. The rest of this article zooms in, one level at a time. Each level answers one question about the level above it. Level 0 · The whole loop, once, on one ticket Level 1 · What exactly do we measure? · (inputs, gold answers, the number) Level 2 · What goes wrong? · (look at the data first) Level 3 · Graders made of code · (cheap, exact, blind to meaning) Level 4 · A model as grader · (flexible, biased, must be checked) Level 5 · Honest numbers · (error bars, A/B, how many cases) Level 6 · Grading systems with parts · (retrieval, agents, cost, reliability) Level 7 · Public benchmarks · (what leaderboards do and do not tell you) Level 8 · Making it a habit · (gates, monitoring, when to re-check) Then · The tools and approaches, a decision guide, and the references Level 0: the whole loop, once, on one ticket Zooms into: everything. Question: what does an eval look like when it runs? Our running example for the whole article is a small customer-support assistant for a fictional online bike and camping shop. It has three parts, each of which we will grade differently later: triage: reads a ticket and sorts it into one of 12 categories (returns, shipping, warranty, …) with a priority. answer: finds the relevant pages of the shop's policy handbook and writes a reply that cites them. agent: looks up orders, issues refunds, and escalates, by calling tools against a mock database under policy rules. Here is one ticket going through the loop. Input: "I'm running late for work and need this sorted immediately. I returned my bike last week, but I still haven't seen the refund. Your policy clearly states refunds are processed within 5 business days…" System output (triage): returns. Gold answer: returns. Score: 1 out of 1. System output (answer): a polite four-paragraph reply that cites the returns section and mentions both required facts: refunds take 5 business days, and a 15% restocking fee applies to used items. Now three graders look at that reply: Code rule. Question it asks: Does the reply cite a handbook section? Verdict: yes. Code rule. Question it asks: Does it mention both required facts? Verdict: yes, none missing. Model judge. Question it asks: Does it claim anything the handbook does not say? Verdict: fail: it invented "a total allowance of up to 15 business days". That is the whole idea. Two cheap code checks said the reply was fine. The judge found an invented number that would have gone to a customer. Every later level is about making that loop trustworthy at scale. Carry forward from Level 0: An eval is input, system, grader, number. Nothing more. Different graders answer different questions. "Cites a section" and "invents nothing" are not the same check. A fluent reply can pass every surface check and still be wrong. Level 1: what exactly do we measure? Zooms into: steps 1 and 4 of the loop. Question: where do the inputs and the "right answers" come from, and what is the number? Inputs. The cases should look like real traffic, including the awkward ones. Our 80 tickets were generated from a grid of customer persona × topic × scenario, so angry customers, vague questions, and multi-issue tickets all appear. Anthropic's guide for agent evals suggests starting with 20 to 50 tasks taken from real failures, not from imagined happy paths (Grace et al., 2026). Gold answers. For each input we write down what "right" means: the correct category, the handbook sections a reply must draw on, and the two or three facts it must state. Because our tickets were generated from the handbook, the gold answers are correct by construction. In a real product they come from domain experts. Two piles. We split the cases into a dev set (20 tickets) used for tuning prompts and graders, and a test set (60 tickets) used only for reporting. If you tune on the cases you report on, the number flatters you. The number. For triage it is accuracy (share of tickets sorted correctly). For replies it is pass rate (share of replies with no failure). For the agent it is the share of tasks that end in the right database state. One number per experiment, always reported on the test set, always with an error bar (Level 5). Four words that get confused: Eval. Measures: your system on your data. Example: our assistant on 60 tickets. Benchmark. Measures: a model on a public task. Example: GSM8K math, SWE-bench coding. Test (software). Measures: a function returns the expected value. Example: JSON parses, no crash. Monitoring. Measures: live traffic after launch. Example: sampled real tickets graded daily. A model that scores high on a public benchmark can still answer your customers wrongly. The benchmark measures the engine, the eval measures the car on your road (Husain & Shankar, 2025). Carry forward from Level 1: Inputs with gold answers are the most valuable asset in the whole process. They are expensive and they are the thing that makes everything else possible. Keep a dev pile for tuning and a test pile for reporting. Benchmarks are about models. Evals are about your product. Level 2: what goes wrong? Look at the data first Zooms into: the grading step. Question: what should the graders even look for? Before building any automatic grader, read the outputs. Every experienced practitioner says the same thing (Husain, 2024; Husain, 2025; Shankar et al., 2024). Read a hundred or two hundred outputs one by one, write a short note on each failure, then group the notes into a short list of failure types with counts. This is called error analysis, and the two steps have names: open coding (free notes) and axial coding (grouping). What it produced on our 60 test replies: replies that pass: 34 of 60 missing_required_fact · 15 unsupported_claim · 12 wrong_section_retrieved · 8 did_not_answer · 5 wrong_value · 2 over_promise · 1 Barely half the replies pass. The two biggest problems are a missing fact and an invented claim. Nobody would have guessed that from the demo. This list is the specification for every grader we build next: one grader per failure type, in order of frequency. Important: the failure list comes from reading outputs, not from imagining them. What it means for us: the first week of any eval effort is people reading transcripts in a purpose-built viewer, not engineers wiring up a framework. Why it matters: a grader built for failures that do not occur gives a reassuring number and misses the ones that do. Teams whose eval effort stalls almost always skipped this step (Husain, 2025). A related finding: your criteria will change as you grade. Shankar et al. (2024) call it criteria drift. Grading examples sharpens the rubric, and a sharper rubric changes earlier grades. Expect two or three rounds. It is not a process failure. Carry forward from Level 2: The failure taxonomy is the plan. Build graders for the top failure types first. Reading outputs is the highest-value activity and the most often skipped. Expect the rubric to change while you grade. Level 3: graders made of code Zooms into: one kind of grader. Question: what can a plain rule measure, and what can it not? A code grader is a rule written in ordinary code. It is free, instant, and gives the same answer every time. Use it for everything it can measure. Exact answers. Triage has a single right label, so we count matches. accuracy: 0.700 · macro F1: 0.697 Seven tickets in ten are sorted correctly. Macro F1 averages the score over all 12 categories equally, so rare categories count as much as common ones. The two numbers being close tells us the mistakes are spread out, not concentrated in one category. Rule checks on free text. For replies there is no single right text, but there are rules a reply must obey: nonempty · 100% pass max_words_150 · 17% pass no_banned_promises · 92% pass Only 17% of replies fit in 150 words. The app is far too chatty, and no judge was needed to find that. Public benchmarks like IFEval (Zhou et al., 2023) are built entirely from such verifiable rules ("answer in exactly three bullet points"). Required facts. We check whether each gold fact appears in the reply. This catches the top failure type, missing facts, at zero cost. Similarity scores. Overlap measures (ROUGE, BLEU) and embedding similarity compare the reply to a reference text. On our replies, embedding similarity separates good from bad replies with an AUC of 0.709 (0.5 is a coin flip, 1.0 is perfect). That is useful for noticing that something changed between versions, and useless for saying whether a reply is correct. Important: similarity notices change, it does not grade quality. What it means for us: use it as a cheap drift alarm, never as the headline number. Why it matters: a wrong reply that uses the same words as a right one scores high. Eugene Yan's survey (2024) and the original ROUGE/BLEU literature document this limit at length. The limit of code graders, in one number. Only 11.7% of our replies pass all code checks, but code checks caught none of the invented claims. The reply from Level 0 passed every rule while inventing a 15-day allowance. Rules see form; they do not see meaning. Carry forward from Level 3: Use code graders for everything with a definite answer: labels, formats, required facts, forbidden phrases. Similarity measures drift, not quality. Rules cannot see an invented claim. That needs a reader. Level 4: a model as grader, and how to check it Zooms into: the other kind of grader. Question: when the grader is itself a model, how do we know it is right? A model judge (usually called LLM-as-judge) is a second model that reads an output and grades it. It can read for meaning, so it can catch the invented 15-day allowance. It is also a language model, so it has all the failure modes of one. This level is the longest because this is where most eval programs go wrong. 4.1 How to ask a judge The practitioner consensus and the research literature agree on a shape: One question per failure type, yes or no. "Does the reply contain a claim not supported by the handbook excerpts?" rather than "rate quality 1 to 5". Binary questions are faster for humans to label, more reproducible, and easier to check (Husain & Shankar, 2025). The output passes only if every question says no. Ask for the evidence. The judge quotes the offending sentence. That makes its verdict checkable by a person in seconds. Give it the context. A judge that cannot see the handbook cannot know what is unsupported. Cho et al. (2026) tested this directly on summaries ("Ask, Don't Judge"). Decomposing the grade into yes/no questions about specific errors beat the popular holistic G-Eval approach on every dataset (Spearman correlation with humans 0.563 vs 0.514 on SummEval). Their most telling example: a summary with three planted factual errors received a perfect 5.0 from holistic judges and 1.57 from the question-based one. They also found that stuffing the prompt with more instructions eventually made the judge worse, not better. 4.2 Checking the judge: our own numbers We labelled all 60 test replies by hand (the "reference"), then ran the judge: reference says pass: 34 · judge says pass: 42 they agree on 36 of 60 replies (60%) bad replies the judge caught: 10 of 26 kappa: 0.15 Sixty percent agreement sounds acceptable. It is not. If the judge had simply said "pass" to everything it would have agreed with the reference 57% of the time, because most replies pass. Cohen's kappa corrects for that: it measures agreement beyond what chance would give. Zero is chance, one is perfect, 0.6 is the usual bar for a judge you let gate a release, and 0.8 is the bar for one you let run unsupervised. Our judge scores 0.15. It is lenient (passes 42 when only 34 deserve it) and catches fewer than half the bad replies. Important: raw agreement is misleading when most outputs pass. Report kappa, or report separately how many bad outputs the judge catches and how many good outputs it wrongly fails. What it means for us: a judge is a classifier. Before trusting it, measure it against human labels on at least a few dozen cases, and report the result next to every product number it produces. Why it matters: with this judge, a version that doubled the invented claims might show no change in the headline pass rate. The remedy is iteration on the dev set: add examples of the failure type to the judge prompt, narrow the question, give it the gold facts as reference. The tutorial's judge for the "missing fact" question reached a usable level this way; the "unsupported claim" question did not, and was handed to a specialised detector (4.5). 4.3 The known biases of judges Judges fail in predictable ways. Each has a published measurement and a cheap mitigation. Position. What happens: In a pairwise comparison the judge prefers whichever answer is shown first. Evidence: verdicts flip in a large share of pairs when order is swapped (Wang et al., 2024); a 2025 RAG-vs-GraphRAG comparison found earlier GraphRAG "wins" partly vanished once the order was swapped (Han et al., 2025). Mitigation: grade both orders, count a win only if both agree. Length. What happens: Longer answers win regardless of content. Evidence: correcting for length raised agreement with human rankings from 0.94 to 0.98 (Dubois et al., 2024). Mitigation: length-controlled scoring, or binary questions that do not reward length. Self-preference. What happens: The judge favours answers in its own model family's style. Evidence: judges rate their own generations higher, more so when they recognise them (Panickssery et al., 2024); same-family judges inflated their own provider's agents by about 0.75 on a 7-point scale in the GAUGE audit. Mitigation: use a judge from a different family than the system under test. Satisfaction vs success. What happens: The judge rates how the conversation felt, not whether the task got done. Evidence: GAUGE audit, see below. Mitigation: give the judge the tool calls and the final state, not just the chat. Judge identity. What happens: Swapping the judge model changes which system wins. Evidence: 2026 audits (arXiv 2607.08535; 2606.19544). Mitigation: record judge model and version as part of every result. The GAUGE audit (Bodhwani et al., 2026) deserves its own paragraph because it describes the exact setup most companies use for release decisions: a simulated user talks to the agent, a judge model scores the transcript, the higher score ships. Across 25 agents and about 3,700 transcripts they found that this gate ranks agents well when one is clearly better (correlation 0.94 with a verifiable ground truth), but on near-equal pairs, the ones a real release actually decides between, it promoted the worse agent 31% of the time. A judge that only saw the user-visible chat and rated satisfaction was no better than a coin flip at telling working agents from broken ones (AUC 0.49). A judge that saw the tool calls, authentication, and task resolution halved the failure risk (AUC 0.73). Their conclusion: reliability comes from what evidence the judge is given, not from how strong the judge model is. Important: customer satisfaction and task success are different things, and a judge that sees only the conversation measures the first. What it means for us: give judges the evidence (tool calls, database state, retrieved documents), and never promote a version on a judge score alone when two versions are close. Why it matters: an agent that charms and fails will keep getting promoted. 4.4 Panels of judges, and how to combine them One judge is a single point of failure. Verga et al. (2024) showed that a panel of several smaller, cheaper judges agrees with humans better than one large judge, at a fraction of the cost. But averaging panel scores has a trap: Acharya et al. (2026) proved that one broken judge (a parser failure returning zeros, a sycophantic judge rating everything 10) drags the average arbitrarily far off, no matter how many good judges you add. Real judges fail like this at measurable rates (3.4% parser failures on one dataset, up to 33% on the smallest judge for non-English prompts). Their fix is to replace the average with the geometric median, which ignores the outlier. In the worst case it was 540 times more accurate; on clean data it costs about 1% accuracy. They also show that three judges capture most of the benefit, because judges' errors are correlated. A second, related effect: Parikh (2026) found that asking a model for its answer in JSON (the format every judge pipeline uses) makes its answers measurably more uniform than in plain chat. The modal answer's share rose from 41% to 64%. For judging tasks with one correct answer this is harmless; for open-ended rating it means the judge is less discriminating than its chat behaviour suggests. 4.5 Cheaper and more reliable than a judge: specialised detectors and typed judges For the failure types that matter most, a general judge is often the wrong tool. Hallucination detectors are small models (around 100 million to 500 million parameters) trained for one question: is this sentence supported by this context? Vectara's HHEM, LettuceDetect (Kovács & Recski, 2025), MiniCheck (Tang et al., 2024), and plain NLI cross-encoders run on a laptop CPU in about a second, cost nothing per call, and on the RAGTruth benchmark approach the accuracy of a large judge. SelfCheckGPT (Manakul et al., 2023) needs no detector at all: it samples the system several times and flags claims that change between samples. Fiddler's 2026 vendor note names the alternative an "evaluation trust tax": teams that run a large judge on every production trace typically sample only about 10% of traffic, and it claims small detectors can cover 100% at up to 98% lower cost. The claim is a vendor's, with no experiment shown, but the shape of the trade-off is real. Typed judges. TypeSafe's Jev model is a different design: it does not generate text at all. You send it the output and a typed question ("Is this claim supported by the excerpt?" with answer "yes/no", or "pick one of these labels"), and it returns a calibrated probability. Because nothing is generated, calls are fast and about a hundred times cheaper than a generative judge, and the probability lets code route uncertain cases to a human. It cannot explain its verdict or invent options; you supply the labels. A 2026 study with blinded human adjudication put it at 92.2% on RewardBench pairs against 93.5% for a frontier generative judge, at about a third of a percent of the fee, but far behind on hard derivation-checking (78.6% vs 93.1%); a cascade that accepts its verdict only above a confidence threshold and otherwise escalates kept 92.5% at about half the cost (arXiv 2609.26550). Our own red-team found that it is not a fact-checker: a fabricated log in the input can flip a verdict, though every successful attack also collapsed its confidence, so a confidence gate is a working defence. Our knowledge base has a tutorial on it and on how to test its accuracy before trusting it. Judges need a benchmark too. JudgeBench (Tan et al., 2025) turned hard, objectively checkable problems into judge tests and found that frontier judges are barely better than chance on genuinely hard cases. Reliability must be measured per task, per rubric, per judge model, every time. Vendor claims of "85% agreement with humans" come from one dataset and do not transfer (see the disagreement notes in our practitioner sources). Carry forward from Level 4: Ask judges yes/no questions about specific failures, with evidence, with the context. Measure the judge against human labels, report kappa or catch rate, iterate until it clears the bar. Know the five biases and apply the cheap mitigations. For "is this supported", prefer a small detector or a typed judge over a general judge. Three judges with a robust combination beat one; the average is fragile. Level 5: honest numbers Zooms into: step 4 of the loop. Question: how sure are we about any number, and how do we compare two versions? Every rate we have quoted so far hides a question: would it be the same on a different 60 tickets? Three tools answer it. The error bar. We resample our 60 results thousands of times (a bootstrap) and look at the spread: triage accuracy: 0.700 · 95% CI [0.583, 0.817] The honest statement is not "accuracy is 70%" but "somewhere between 58% and 82%, most likely 70%". Miller (2024) showed that most reported differences between models in published evals are smaller than this kind of interval, and gave the formulas every eval report should use, including the correction needed when several questions share a source (clustered standard errors). The paired comparison. We wrote a second version of the reply prompt that retrieves more sections. Judged on the same 60 tickets: judge pass rate · v1: 0.700 · v2: 0.700 difference: +0.000 · 95% CI [-0.117, +0.117] verdict: no real difference, keep v1 Note the interval is narrower than the one for the single accuracy, because the comparison is paired: each ticket is scored under both versions, so ticket difficulty cancels out. A McNemar test asks the per-case question: does v2 win where v1 loses, or do they just trade cases? Here they traded. And v2 regressed on 14% of cases while improving on others. The headline "same pass rate" hides a product that got better for some customers and worse for others. Important: a difference whose interval includes zero is noise, not a win. What it means for us: every "the new version is better" claim must come with the interval and the count of cases that got worse. Why it matters: teams ship regressions on the strength of a 2-point improvement that was never there. The detection floor. With 60 cases, the smallest difference we can reliably detect is about 12 percentage points. A 5-point regression is invisible at this size. This is a power calculation, and it tells you how many cases you need before you can answer the question you are asking. Below the floor you need more data, not a cleverer test. Multiple comparisons. If you test 20 prompt variants and pick the best, one of them will look 10 points better by luck. Either correct for the number of comparisons or confirm the winner on fresh cases. Carry forward from Level 5: Every rate gets an interval. Every comparison is paired. Know your detection floor before you start comparing versions. "No measurable difference" is a real result, and often the right one. Level 6: grading systems with parts Zooms into: step 2, the system. Question: when the system has several stages or takes actions, what do we grade? 6.1 Retrieval systems (RAG) Our answer component first finds handbook sections, then writes. A bad reply can come from either stage, and the fixes are different. So we grade them separately. Grading the finder. Against the gold sections: hit@k (is at least one correct section in the top k?) and recall@k (what share of the correct sections made it?). hit@2: 0.93 · recall@2: 0.88 of 18 failing replies, 1 failed in the finder and 17 in the writer The finder is nearly fine. The writer is the problem. That one line redirects a week of engineering. Grading the writer. Faithfulness (every claim supported by the retrieved text), answer relevance (does it address the question), and context precision (was what we retrieved actually useful). This is the RAGAS triad (Es et al., 2024), which needs no gold answers and is why RAGAS became the default library. ARES (Saad-Falcon et al., 2024) adds statistical rigour by calibrating small per-criterion judges against about 150 human labels and reporting confidence intervals; in its paper it beat RAGAS by 59 points on context relevance with 78% fewer annotations, though it degrades under large domain shift. In our run RAGAS gave context relevance 0.855 and faithfulness 0.737: the same "retrieval good, writing worse" story our hand-rolled graders told, which is the kind of cross-check that makes a number believable. A caution from the agent-coding world: SWE-Explore (Zhang et al., 2026) measured retrieval inside coding agents and found they locate the right file about 65% of the time but the right lines only 15 to 19%, and that missing context, not extra context, is what breaks the next stage. Grade the finder at the granularity the writer needs. 6.2 Agents An agent takes a sequence of actions (look up an order, issue a refund, escalate). Three things change when grading it. Grade the final state, and the path. Did the database end up right (refund issued, order cancelled)? Did the agent take only allowed actions, and not, say, refund twice? τ-bench (Yao et al., 2024) set the pattern: simulated users, policy rules, and a check of the final state. AgentLens (2026) showed why the path matters: agents reach correct final states by lucky or degenerate routes often enough that outcome-only scoring overstates capability. Run each task several times. Agents are stochastic. Two different numbers describe the result: pass@k (it succeeded at least once in k tries, which measures capability) and pass^k (it succeeded all k times, which measures reliability). For a customer-facing agent you want pass^k. Our agent scores pass^3 = 0.75: three quarters of the tasks succeed three times out of three. τ²-bench (2025) found that pass^1 drops about 20 points when the agent must coordinate with an active user rather than act alone. Measure reliability as its own thing. Rabanser et al. (2026) borrowed from aviation and nuclear engineering to define 12 reliability metrics in four groups: consistency across runs, robustness to perturbation, predictability (does the agent know when it will fail), and bounded harm. Across 15 frontier models they found that two years of capability gains delivered about one sixth as much reliability gain. Agents choose the same kinds of actions each run but in different orders, handle real infrastructure failures gracefully, and break on a rephrased instruction. Important: a capable agent is not a reliable one, and your customers experience reliability. What it means for us: report pass^k, run perturbed versions of each task (rename a field, rephrase the instruction), and track consistency across runs as a separate number. Why it matters: the published failures (an agent deleting a production database, an agent making unauthorised purchases) all came from systems with good average success rates. Measure cost. Bai et al. (2026) measured token spend across eight frontier models on SWE-bench Verified. Agentic tasks use about a thousand times more tokens than a chat turn, almost all of it re-reading their own growing history. The same task on the same model varied 30-fold in cost between runs, accuracy peaked at intermediate cost and fell at the highest, and models predicted their own cost with a correlation of at most 0.39. Their advice: rank models on cost per correct outcome, not on accuracy alone, and never trust a model's own estimate. Judgment, asking, and learning: three newer axes. Three 2026 benchmarks measure things a single success rate cannot see. Taste (Pan et al., 2026): freeze an agent at a fork where both paths look fine and ask which one pays off later. The best model picks right 59.7% of the time on a two-way choice, and thinking longer does not help. Asking (Gulati et al., 2026): the value of asking a clarifying question about the goal falls from 0.78 to 0.39 once 10% of the task has been done. No frontier model asks within that window; one asked 52% of the time, one 23%, one never. Learning from experience (Asawa et al., 2026): across six stateful environments, the best system captured only 25% of its possible improvement from experience, and simply keeping the full conversation history beat every dedicated memory product. 6.3 When the system is being optimised against the grader If a grader is used to train or select the system (reinforcement learning, best-of-n selection), the system will find the grader's blind spots. Wang et al. of the Qwen team (2026) call this the verification horizon: every grader is a proxy for intent, and under optimisation pressure proxies and intent diverge. They catalogue reward hacking in coding agents (reading the answer from repository history, editing the tests, patching for the evaluator) and show that a behaviour monitor cut hacked "solutions" from 28.6% to 0.6% while raising genuine ones from 40% to 61%. They argue no grader is scalable, faithful, and robust at once: tests are scalable and robust but miss intent; judges are scalable and faithful but gameable; experts are faithful and robust but do not scale. The Meta-Agent Challenge (Lu et al., 2026) saw the same spontaneously: agents asked to build other agents tried to exfiltrate answers from the grading system in five trials. Important: any grader that influences training or selection will be gamed. What it means for us: keep a held-out grader the system never sees, monitor for shortcut behaviour, and upgrade the grader as the system improves. Why it matters: the score goes up while the product gets worse. Carry forward from Level 6: Grade each stage separately; the finder and the writer fail differently. For agents: final state and path, several runs, pass^k, cost per success, and reliability as its own number. Graders used for optimisation get gamed. Keep one they never see. Level 7: public benchmarks Zooms into: Level 1's distinction between eval and benchmark. Question: what do leaderboard numbers tell you, and what do they hide? A benchmark is a fixed public task set used to compare models: MMLU (academic multiple choice), GSM8K (grade-school maths), HumanEval (code), MT-Bench and Chatbot Arena (conversation quality), SWE-bench (fixing real GitHub issues), τ-bench (customer-service agents), GPQA and HLE (expert questions). They are how you pick an engine. Four things to know before quoting one. The number depends on the harness as much as the model. We ran GSM8K on the same open-weight model with two prompt formats and got 0.686 and 0.746. The lm-evaluation-harness paper (Biderman et al., 2024) documents swings of double digits from prompt formatting, few-shot examples, and the regex that extracts the answer. A score is a (model, prompt, harness, version) tuple. Schaeffer et al. (2023) showed something stronger: apparent "emergent" jumps in capability were largely artefacts of all-or-nothing metrics, and vanished under smooth ones. The metric you choose can create or erase a phenomenon. Contamination. If the test questions were in the training data, the score measures memory. GSM1k (Zhang et al., 2024) rebuilt GSM8K with fresh questions of matched difficulty and found some model families dropped up to 8 points, with the drop correlated with how likely the model was to have memorised the original. Other families did not drop. Contamination is real, measurable, and uneven. Saturation. Benchmarks have a shelf life. A 2026 study of 60 widely used benchmarks found about half highly saturated, and older ones saturate faster. SWE-bench Verified went from roughly 40% to over 80% solved in about two years, and its curator stated it no longer separates frontier models. MMLU, GSM8K, and HumanEval have effectively been retired by frontier labs in favour of HLE, GPQA Diamond, SWE-bench Verified, LiveCodeBench, and τ²-bench, each of which will saturate in turn. On Chatbot Arena the top models now sit within about 20 Elo points, which is inside the noise. Redundancy. Zeng and Papailiopoulos (2026) assembled a matrix of 84 models by 133 benchmarks and found it is approximately rank two: two underlying factors explain over 90% of the variation. Five well-chosen benchmarks predict the other 128 to within about 4 points. For choosing an engine, that is good news: you do not need to run forty benchmarks. For discovering a specific failure mode, it says nothing; that still needs your own eval. Important: a leaderboard ranks engines on last year's exam, under one harness, and the top entries are usually within noise of each other. What it means for us: use benchmarks to shortlist two or three models, then decide with your own eval on your own data. Why it matters: switching models on a 2-point benchmark gain can cost you 10 points on your actual task. Two frontier uses of evals worth knowing. Google's Paper Assistant Tool (Jayaram et al., 2026) uses an agent pipeline to review scientific papers and caught 89.7% of known proof errors versus 55.2% for a single model call; over 90% of 850 surveyed authors found it helpful and 31% ran new experiments because of it. CUSP (Wu et al., 2026) asked models to forecast which research directions will succeed and found them near chance (0.519) with strong yes-bias or no-bias depending on the model, fixable only with explicit bias correction. Both are reminders that an eval of a model's judgment needs its own ground truth, and that models are badly calibrated about the future and about themselves. Carry forward from Level 7: A benchmark score is a tuple, not a property of the model. Record the harness. Benchmarks get contaminated and saturate; check the date. Five benchmarks tell you almost everything a leaderboard can. Your eval tells you the rest. Level 8: making it a habit Zooms into: the "when" of the quick grasp. Question: how does this run every week without a research team? Hamel Husain's three-level model (2024) sets the cadence: 1. What: code graders, schema checks, required facts. When: every commit. Cost: free. 2. What: model judges and detectors on the test set, human review of a sample. When: every change to prompt, model, or retrieval. Cost: cents to dollars. 3. What: A/B test on real traffic. When: after a change ships. Cost: real users. The merge gate. Our tutorial's CI gate reruns Levels 1 and 2 and fails the build if the pass rate drops more than 3 points against the recorded baseline of 0.70. It is a tripwire for big regressions, not a guarantee: with a 12-point detection floor, a 5-point regression walks through. Say so in the dashboard. Monitoring. After launch, sample real traffic, run the cheap graders on all of it and the expensive ones on a slice, and plot the trend. Bodhwani et al.'s (2026) "calibrate then trust" is the right pattern for the expensive gate: run a full audit once against verifiable ground truth to learn where the cheap judge-based gate agrees with reality, use the cheap gate in CI only inside that region, and re-audit when the model, the judge, the simulator, or the domain changes. They also found that a zero-cost "did the conversation complete" bit caught budget-starvation regressions on its own. Caching and cost. Cache every model call keyed on the prompt, the data version, and the recipe. A rerun becomes a file read. Our full A/B on 60 tickets costs 121 judge calls, about four cents; the entire tutorial reran from cache with zero calls. Cost is not the reason to skip evals. What a leader should ask for. Four numbers on one page: the product's pass rate with its interval, the grader's agreement with human labels, the detection floor, and the share of cases that got worse in the last change. If any of the four is missing, the other three are not yet meaningful. Carry forward from Level 8: Three cadences: every commit, every change, after shipping. A gate is a floor, not a ceiling. State its detection floor. Calibrate the cheap gate against ground truth once, then trust it only inside that region. The tools and approaches, observed This section is an observation, not a recommendation list. All of these were run or reviewed while building the tutorial; the practitioner and tooling notes in our knowledge base hold the details. Frameworks Inspect AI (UK AI Security Institute, MIT). Best at: One coherent pipeline: dataset, solver, scorer, log viewer; agents and sandboxes; used for frontier safety evals. What to watch: Code-first; the most complete, and the most to learn. lm-evaluation-harness (EleutherAI, MIT). Best at: Running public benchmarks (GSM8K, MMLU, IFEval) reproducibly against any model. What to watch: Benchmarks only; the harness paper is the reason it exists. promptfoo (MIT, Node.js). Best at: Declarative YAML test suites, red-teaming, CI regression. What to watch: Not a Python package; acquired by OpenAI in 2026. DeepEval (Apache-2.0). Best at: pytest-style unit tests with ready metrics (faithfulness, relevance). What to watch: Headline metrics are blends; look inside before trusting. RAGAS (Apache-2.0). Best at: The standard RAG triad, reference-free. What to watch: Flaky with local models (NaNs, executor errors); numbers are blends. Langfuse (MIT self-host). Best at: Tracing, datasets, experiment runs, judge evaluators in one self-hosted stack. What to watch: Version 4 changes evaluator semantics; plan the migration. Phoenix (Arize). Best at: Tracing plus evals with a strong UI. What to watch: Elastic License 2.0, source-available rather than open source. LangSmith, Braintrust. Best at: Hosted platforms: trace capture, sampling, judge bootstrap, human refinement. What to watch: Commercial; Braintrust's autoevals library works standalone. Opik (Comet), MLflow genai, Weave (W&B). Best at: Self-hostable observability with eval hooks; good if you already run the platform. What to watch: Heavy footprints for a from-scratch team. HELM (Stanford). Best at: Multi-metric philosophy: accuracy, calibration, robustness, fairness, efficiency together. What to watch: Research-oriented, least turnkey. evalica. Best at: Turning pairwise judgments into Bradley-Terry or Elo leaderboards with intervals. What to watch: Statistics only; pair with a judge. Jev / TypeSafe. Best at: Typed judge questions with calibrated probabilities, ~100x cheaper than a generative judge. What to watch: No text, no explanations; you supply the labels. HHEM, LettuceDetect, MiniCheck, SelfCheckGPT. Best at: "Is this claim supported" at CPU speed and zero marginal cost. What to watch: One question only; not a general grader. Selene-Mini, Prometheus 2, Flow-Judge. Best at: Open-weight judge models you can self-host and audit. What to watch: Still judges; still need calibration. Approaches, compared Code rules. Answers: is the form right, are the facts present. Cost: free. Blind spot: meaning. Similarity (ROUGE, embeddings). Answers: did the output change. Cost: free. Blind spot: correctness. Specialised detector / NLI. Answers: is this claim supported by this text. Cost: near free. Blind spot: anything else. Typed judge (Jev). Answers: this label, this yes/no, with a probability. Cost: cents per thousand. Blind spot: cannot explain or propose. Generative judge, binary with evidence. Answers: any readable criterion. Cost: cents per call. Blind spot: the five biases; must be calibrated. Panel of judges, robust combination. Answers: same, with fewer single-judge failures. Cost: three times a judge. Blind spot: correlated errors cap the benefit at ~3 judges. Human labels. Answers: ground truth. Cost: expensive, slow. Blind spot: needs two raters and an agreement statistic. A/B on traffic. Answers: real business impact. Cost: real users at risk. Blind spot: slow; needs the earlier levels to be safe. A pattern seen in every source and in our own run: the hand-rolled grader and the framework number should be read against each other. Agreement is evidence. Disagreement is a question, and usually a good one. A decision guide Is the output well-formed and complete?. Use: code rules. Then check: nothing, it is exact. Did the new version change the outputs?. Use: similarity. Then check: why, by reading a sample. Is this claim supported by this document?. Use: detector or typed judge. Then check: its precision and recall on a labelled sample. Does the reply fail in way X?. Use: binary generative judge with evidence. Then check: kappa against human labels on dev. Which of two versions is better?. Use: paired comparison with interval. Then check: the per-case regressions. Can we detect a 5-point regression?. Use: power calculation. Then check: add cases until you can. Is the agent reliable?. Use: pass^k over several runs, perturbed tasks. Then check: consistency across runs as its own number. Which model should we use?. Use: five public benchmarks to shortlist. Then check: your own eval to decide. Is it still working in production?. Use: sampled traffic, cheap graders on all, judge on a slice. Then check: re-audit the judge gate when anything changes. Fifteen things to carry away An eval is input, system, grader, number. Build the gold inputs first; they are the asset. Evals measure your product. Benchmarks measure engines. Do not confuse them. Read a hundred outputs before writing a grader. The failure list is the plan. Code graders for everything with a definite answer. They see form, not meaning. Judges get binary questions with evidence and context. Holistic scores miss planted errors. Measure the judge against humans. Report kappa or catch rate. Sixty percent agreement can mean nothing. Judges prefer first, longer, familiar, and pleasant. Mitigations are cheap; apply them. Satisfaction is not success. Give the judge the tool calls and the final state. For "is this supported", a small detector or typed judge beats a general judge on cost and often on accuracy. Every rate gets an interval. Every comparison is paired. Know the detection floor. Grade each stage of a pipeline separately. Agents: final state and path, several runs, pass^k, cost per success, reliability on its own axis. A grader used for optimisation gets gamed. Keep one the system never sees. Benchmark scores are harness-dependent, contaminated unevenly, and saturate. Record the tuple. Three cadences, a gate with a stated floor, a monitor, and a re-audit when anything changes. References From this knowledge base (summaries in the sibling folders) Acharya, Pan, Verkhovsky (2026). RoPoLL: Robust Panel of LLM Judges. arXiv:2606.30931. — RoPoLLRobustPanelOfLLMJudges/ Asawa et al. (2026). Continual Learning Bench. arXiv:2606.05661. — ContinualLearningBench/ Bai et al. (2026). How Do AI Agents Spend Your Money? arXiv:2604.22750. — HowAiAgentsSpendYourMoney/ Bodhwani, Tran, Wei (2026). GAUGE: When Not to Trust LLM-as-a-Judge in User-Simulated Evaluation of Task-Oriented Agents. arXiv:2609.12191. — GaugeWhenNotToTrustLlmAsAJudge…/ Cho et al. (2026). Ask, Don't Judge / BinEval. arXiv:2606.27226. — AskDontJudge/, BinEval/ Fiddler (2026). The Evaluation Trust Tax: agent evals TCO. — AgentEvalsTCO/ Grace, Hadfield, Olivares, De Jonghe (Anthropic, 2026). Demystifying Evals for AI Agents. — DemystifyingEvalsForAIAgents/ Gulati et al. (2026). Ask Early, Ask Late, Ask Right. arXiv:2605.07937. — AskEarlyAskLateAskRight/ HKUDS (2026). ClawWork (economic-accountability agent benchmark, code analysis). — ClawWork/ Jayaram et al. (Google, 2026). Towards Automating Scientific Review with the Paper Assistant Tool. arXiv:2606.28277. — PaperAssistantTool/, TowardsAutomatingScientificReview/ Lu et al. (2026). The Meta-Agent Challenge. arXiv:2606.04455. — MetaAgentChallenge/ Menaged et al. (2026). Can LLM Agents Infer World Models? arXiv:2606.16576. — CanLLMAgentsInferWorldModels/ Pan et al. (2026). The Tasteful Agent. arXiv:2609.25804. — TastefulAgent/ Parikh (2026). Structured Output Collapses Answer Diversity Across 44 Language Models. arXiv:2607.18476. — StructuredOutputCollapsesAnswerDiversity/ Rabanser, Kapoor, Kirgis, Liu, Utpala, Narayanan (2026). Towards a Science of AI Agent Reliability. arXiv:2602.16666, ICML 2026. — TowardsAScienceOfAIAgentReliability/ Wang et al. (Qwen, 2026). The Verification Horizon: No Silver Bullet for Coding Agent Rewards. arXiv:2606.26300. — VerificationHorizon/ Wu et al. (2026). CUSP: Forecasting Scientific Progress with AI. arXiv:2605.22681. — ForecastingScientificProgressWithAI/ Zeng, Papailiopoulos (2026). You Don't Need to Run Every Eval. arXiv:2606.24020. — YouDontNeedToRunEveryEval/ Zhang et al. (2026). SWE-Explore. arXiv:2606.07297. — SWEExplore/ The evals tutorial (tutorials/evals/, chapters 00–14, Q&A.md, research/SOURCES_*.md) and its primer notebook, source of every running-example number. The jev tutorial (tutorials/jev/). Foundational and practitioner sources Biderman et al. (2024). Lessons from the Trenches on Reproducible Evaluation of Language Models. arXiv:2405.14782. Chiang et al. (2024). Chatbot Arena. arXiv:2403.04132. Dubois, Galambosi, Liang, Hashimoto (2024). Length-Controlled AlpacaEval. arXiv:2404.04475. Es, James, Espinosa-Anke, Schockaert (2024). RAGAS. arXiv:2309.15217. Gu et al. (2024). A Survey on LLM-as-a-Judge. arXiv:2411.15594. Han et al. (2025). RAG vs GraphRAG: A Systematic Evaluation. arXiv:2502.11371. JEV-as-a-Judge (2026). arXiv:2609.26550. — research_topics/coding_agents/JevAsAJudge/ Panickssery, Bowman, Feng (2024). LLM Evaluators Recognize and Favor Their Own Generations. arXiv:2404.13076. Husain (2024). Your AI Product Needs Evals. hamel.dev. Husain (2025). A Field Guide to Rapidly Improving AI Products. Husain & Shankar (2025). AI Evals FAQ. Jimenez et al. (2024). SWE-bench. arXiv:2310.06770. OpenAI (2024). SWE-bench Verified. Kovács, Recski (2025). LettuceDetect. arXiv:2502.17125. Tang, Laban, Durrett (2024). MiniCheck. arXiv:2404.10774. Manakul, Liusie, Gales (2023). SelfCheckGPT. arXiv:2303.08896. Liang et al. (2022). HELM. arXiv:2211.09110. Liu et al. (2023). G-Eval. arXiv:2303.16634. Miller (2024). Adding Error Bars to Evals. arXiv:2411.00640. Saad-Falcon, Khattab, Potts, Zaharia (2024). ARES. arXiv:2311.09476. Schaeffer, Miranda, Koyejo (2023). Are Emergent Abilities of Large Language Models a Mirage? arXiv:2304.15004. Shankar, Zamfirescu-Pereira, Hartmann, Parameswaran, Arawjo (2024). Who Validates the Validators? arXiv:2404.12272. Tan et al. (2025). JudgeBench. arXiv:2410.12784. Verga et al. (2024). Replacing Judges with Juries (PoLL). arXiv:2404.18796. Wang et al. (2024). Large Language Models are not Fair Evaluators. arXiv:2305.17926. Yan (2024). Task-Specific LLM Evals that Do & Don't Work; Evaluating the Effectiveness of LLM-Evaluators. eugeneyan.com. Yao, Shinn, Razavi, Narasimhan (2024). τ-bench. arXiv:2406.12045. Sierra (2025). τ²-bench. arXiv:2506.07982. Zhang et al. (2024). GSM1k. arXiv:2405.00332. Zheng et al. (2023). Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena. arXiv:2306.05685. Zhou et al. (2023). IFEval. arXiv:2311.07911. 2026 audits: When AI Benchmarks Plateau (arXiv:2602.16763); When the Judge Changes, So Does the Measurement (arXiv:2607.08535); Reliability without Validity (arXiv:2606.19544); AgentLens (arXiv:2605.12925).

📋 讨论归档

讨论进行中…