同一模型在不同scaffold下benchmark可差10分——差距来自重试机制、工具默认参数、规划步骤等协议决策,而非模型本身。论文指出Agent评估至少涉及七个隐藏层。
两个团队在同一份 agent 基准测试上发布了成绩。一个落在六十出头,另一个破了七十。采购团队看到差距后做出了判断。
他们没有看到的是:两个团队可能运行的是同一个模型。他们根本不需要改变权重,差距就会出现。这个差距可能完全来自 scaffold。
一个团队给模型套上了一个带有更好重试机制的 harness。不同的工具默认配置。另一个团队跳过的某个 planner 步骤。这些都不会出现在排行榜上。
驱动决策的那次对比,不是两个 agent 之间的对比。
是两份合同之间的对比。
这个故事背后隐藏的错误是一个类别错误。
人们谈论 agent 基准测试时,仿佛它们在测量一个叫"模型"的东西。事实上并非如此。它们测量的是一个耦合系统。模型只是一个组件。剩下的是一系列协议决策,这些决策几乎从不公开,却几乎总是至关重要。
分数是那个栈的输出。改变任何一层,你就会改变这个数字的含义。
近期关于 agent 评估的研究已经明确命名了这些层。至少有七层。部署模式(deployment regime)。观测通道(observation channel)。harness 与 scaffold。指标与动作(metric and action)。配置好的评估器(configured evaluator)。评分协议(grader protocol)。审计束(audit bundle)。每一层都是一份合同。每一层都可协商。每一层都可能悄无声息地改变 verdict,而头条数字看起来毫无二致。
这就是基准测试的真实面目。不是对模型的测量。是对整个测试契约的测量,模型只是其中一个插槽。
七层结构的存在有其结构性原因。它们聚拢成三个角落,几乎出现在每一个已发布的 agent 评估失败案例中。模型被奖励的是什么。那种奖励是如何被优化的。测试契约与生产环境有何不同。一旦你把这三个角落纳入视野,七层栈就不再像一张检查清单,而开始呈现出被测事物的真实形状。
如果在没有这些层之间达到对等的情况下比较 agent 产品,你不是在比较 agent。
你是在比较合同,却称之为科学。
最显眼的一层,也是移动分数最多的一层,是 scaffold。
过去一年里构建过 agent 的人都感受过这一点,只是没有给它命名。你看到同事在一个你刚失败的任务上拿到了 75%。你查了权重——和你一样。他们改了提示模板,加了一个重试循环。模型没有变聪明。scaffold 变厚了。
数字说出了同样的结论。RWE-bench 报告称,在其基于 MIMIC-IV 的 162 项任务基准测试中,仅改变固定模型周围的 agent scaffold,就可以将性能移动超过 30 个百分点。同样的权重,不同的工具,不同的重试策略,不同的 planner,不同的头条。在那个基准测试上,被评估最好的 agent 大约达到 40% 的任务成功率;最好的开源配置接近 30%。一旦你知道合同本身可以移动 30 分,这两个数字就都不是真正关于模型的了。
如果 scaffold 单独就能移动双位数的分数,那么"我们用了和他们一样的模型"就不是一个公平比较的主张。这只是一个参数命名主张。
你只是命名了一个七槽合同中的一个槽。剩下六个在做大部分工作。
第二层悄无声息地移动分数的是评估器本身。
当一个基准测试使用 LLM 法官时,人们会写"由 GPT-4o 评分",仿佛这就把测量钉死了。事实上并没有。法官不是 GPT-4o。法官是 GPT-4o 加上一个提示模板。加上一个解码配置。加上一个平局和弃权策略。加上评分期间法官拥有的任何检索或工具访问。这些都不会随分数一起发布。
最近对 LLM 即法官设置的系统性评估表明,仅提示模板的选择就会实质性改变法官质量和内部一致性。两个团队报告"我们使用 GPT-4o 作为法官"可能运行的是实质上不同的评分器。奖励认知 hedging 的评分器与惩罚它的评分器意见相左。拥有检索访问权限的评分器检查事实性。没有检索的评分器不检查,也做不到。
这不是一个小字问题。
评估器就是测量仪器。如果两个团队使用不同的仪器并报告相同的数字,他们报告的就不是同一个东西。
没有一份发布的法官卡片,第三方就无法复现测量。他们只能重新运行模型。
第三层最安静,也最危险。它就是指标本身。
一个标准的 agent 指标是 pass@k。你给 agent k 次尝试。如果任何一次成功,就算通过。如果你的生产使用允许 k 次尝试,这是完全合理的。如果不允许,它就是主动误导。
有一个类似的指标,pass^k。同样的 k 次尝试。但只有当 agent 在所有尝试中都成功时才计数。它测量的是一致性,而不是能力。
这两个指标之间的差距可能很大,而且可能悄无声息地出现。
最近关于可信 agent 评估的研究表明,对 agent 进行受控错误注入可以大幅降低 pass^k,而几乎不动 pass@k。模型仍然有一个天花板,用足够多的尝试次数你仍然可以触及。但它失去了可靠地触及那个天花板的能力。如果你的头条是 pass@k 而你的生产模式是单次,排行榜说你正在发货。bug 追踪器说的却是另一回事。
同样的结构问题也出现在校准指标中。ECE 问的是陈述概率是否在平均意义上与经验频率匹配。AURC 问的是系统能否将更难的情况排得更低。两个系统在这两个指标上可能看起来几乎相同,而一个更严格、更了解弃权的指标——叫做 BAS(Behavioural Alignment Score,行为对齐分数)——却在它们之间急剧分化。BAS 问的是一个不同的问题。置信度表面是否在正是人或产品实际选择信任它的那个 regime 中保护你?两个具有"类似校准"的系统,一旦附加了一个成本函数,对这个问题的回答就可能完全不同。
指标不是对模型的测量。它是关于模型的运营者将容忍哪些错误的一份声明。如果该声明与你的运营合同不匹配,分数没有错。它在回答一个你没有问的问题。
这里是让这一切都微妙地变得更糟的部分。
在 scaffold 转移下,基准测试上 agent 的排名顺序往往相对稳定。最近的一项高效基准测试研究指出,排名保持比绝对校准更容易。数字在移动。顺序却不变。
如果你只需要一个相对决策,排名稳定性是令人安心的。Agent A 在这里胜过 Agent B,可能在生产中也胜过它。
如果你需要一个绝对决策,它就是一个陷阱。
采购、安全论证、SLA 设定、成本建模和风险披露都依赖于绝对数字。"这个 agent 以每次请求 5 美分的价格交付 80% 正确率"这样的声明绑定到校准水平,而不是排名。在 scaffold 转移下,排名可能保持不变而 80% 变成了 62%。你的电子表格仍在使用 80%。你的客户体验的却是 62%。
产生 80% 的那个协议是声明的一部分。一旦它与生产环境分化,声明就悄无声息地变成了假的,尽管模型没有任何变动。
这就是为什么经验丰富的评估团队将合同而不是分数作为主要制品。
你可以重新运行一个分数。只有当你把合同写下来时,你才能复现一个合同。
如果分数是合同的函数,实用的做法是把合同当作你拥有的东西。
这意味着对大多数团队当前的工作方式做出三个改变。
在比较之前先冻结合同。如果你无法在一页纸内描述你的部署模式、观测通道、scaffold 版本、指标、法官配置和评分协议,你就没有合同。你有的只是一厢情愿的假设。花一页纸写下来。提交它。让它成为每一次比较的前提条件。