← 返回信息流

精选Hugging Face Blog新闻

智能体评测新指标:一致性差距揭示可靠性问题

huggingface.co开源教程模型产品AI评分:70/100

研究指出主流智能体评测只报告平均成功率(Mean@k),掩盖了可靠性问题。在 AppWorld 上,GPT-4.1 驱动的 ReAct 智能体平均成功率 77.4%,但五次重复全部成功的任务仅占 53.0%,一致性差距达 24.4 个百分点,困难任务上更达 30 点。作者提出 Consistency Analyzer,通过重采样轨迹定位易翻转的决策点,并生成一致性指南,将差距从 24.4pp 降至 12.0pp,且不损失平均准确率。

那在台上很难堪。在生产环境中,这是一个可靠性问题:一个曾经成功的工作流,下次用户发出同样的请求时可能会失败。对于关键任务型工作,比如核对金融交易或检查合同中的义务条款,这可能是致命的。

大多数基准测试用平均值掩盖了这种变异性。在 AppWorld 上,使用 GPT-4.1 的 ReAct agent 在五次重复运行中平均成功率为 77.4%。但它仅在 53.0% 的任务上五次运行全部成功——存在 24.4 个百分点的一致性差距。

大多数基准测试报告的是第一个数字。我们构建了一种方法来测量第二个——并改进它。

在之前的一篇文章中,我们介绍了 ALTK-Evolve——一个将 agent 自身过去的轨迹转化为可复用指南的系统,这些指南自动蒸馏并在推理时注入回去。它可测量地提升了任务成功率,但这些结果也只是回答了平均情况的问题。本文介绍一致性指南(consistency guidelines),这是 altk-evolve 中一种新的指南类型,构建在我们称为一致性分析器(Consistency Analyzer)的诊断工具之上,直接针对这一差距。

TL;DR

  • 准确率掩盖了一个不可靠性问题。一个 ReAct agent(GPT-4.1 在 AppWorld test_normal 上)平均成功率为 77.4%,但仅在 53.0% 的任务上五次重复运行全部成功——存在 24.4 个百分点的一致性差距。在困难任务上,这一差距达到 30 个百分点。
  • 我们正是为此构建了一个诊断工具。一致性分析器对 agent 自身记录的轨迹进行重采样,找出容易翻转的决策点——即模型距离做出不同选择只差一个 token 采样的步骤。它只需要一条轨迹,不需要 ground truth——它对该轨迹中的每个决策点进行重采样,通过一次请求 k 个补全的调用(默认 k=5),而非端到端重新运行任务。
  • 将这种诊断转化为指南后,差距减半——从 24.4pp 降至 12.0pp(同任务 Pass⁵ +16.0pp,相似任务 +13.0pp),且不损失任何平均准确率。
  • 完整方法和评估见 arXiv 上的技术报告。

几乎没人报告的那个指标

标准的 agent 评估报告 Mean@k:运行基准测试 k 次,取通过率的平均值。通常 k=3,有时仅为 1。这是每个排行榜上的数字,也是实践中“77% 准确率”的含义。

Mean@k 回答的是“这个 agent 平均有多好?”它没有回答真实用户关心的问题:如果我再问一次完全相同的问题,它还能表现好吗?为此你需要 Pass^k:agent 在全部 k 次运行中都成功的任务比例。

⚠️ Pass^k 不是 Pass@k。大家熟悉的 Pass@k 是乐观的——它问的是 k 次尝试中是否至少有一次成功,这在你能够验证和重试时是正确的问题。Pass^k 是其悲观的镜像:每一次尝试都必须成功。相同的字母,相反的问题。Pass^k ≤ Mean@k ≤ Pass@k,始终成立。

Mean@5 vs. Pass^5 by task difficulty, GPT-4.1 on AppWorld test_normal, with the consistency gap called out in red
Mean@5 vs. Pass^5 by task difficulty, GPT-4.1 on AppWorld test_normal, with the consistency gap called out in red

一个由 GPT-4.1 支持的 ReAct agent 取得了 77.4% 的 Mean@5——确实很强。但 Pass^5 仅为 53.0%。基准测试中近四分之一的任务是 agent 有时能解决、有时不能解决的,而任务本身在运行之间没有任何变化。我们称这一差距——Mean@k 减去 Pass^k——为一致性差距。

这不是一个用更大的模型就能修复的能力问题。它是一个正交的维度:一个 agent 可以同时既有能力又不一致。

Agent 为什么会翻转:尖锐决策与平坦决策

每当 LLM agent 做出决定——调用哪个 API、传什么参数、是否重试——这个决定都来自下一个 token 的概率分布。重要的是这个分布的形状。尖锐的分布将大部分概率质量集中在单个 token 上:第二名远远落后,同样的选择一次又一次地出现。平坦的分布将相当的概率质量分散在几个几乎并列的 token 上,哪个胜出接近于抛硬币。

形状决定了需要多大的噪声才能改变结果。尖锐分布具有韧性——GPU 浮点非结合性、请求批处理以及其他平台侧效应会轻微扰动数值,但远不足以重新排列一个明确的赢家。平坦分布则恰恰容易受到这种扰动的影响:接近平局的结果可能在微小扰动下重新排序。而由于一条轨迹串联了数十个决策,每一步微小的翻转概率会累积成某次运行结果不同的较大概率。这就是 24 个百分点差距的来源。

这也是为什么该问题在您的解码设置下依然存在。贪婪解码和固定种子都只控制分布如何被转换为 token——它们对分布本身毫无影响。在托管端点上,概率每次运行都会略有变化,因此同一个提示词发给同一个模型、温度设为零,今天可能以某种方式解决一个接近平局的结果,明天则可能以另一种方式解决。

我们的设置:ReAct agent 在温度 0.0 下运行,因此上述方差都不是普通采样造成的。

诊断,然后修复

这将问题转化为一次搜索:给定轨迹中哪些步骤是平坦的——知道之后又该如何处理?

一致性指南来自一个两阶段流水线,它接入 ALTK-Evolve 的现有机制——由一个全新的源信号驱动内容的生成。

consistency-guideline-pipeline
consistency-guideline-pipeline
  1. 检测——一致性分析器。给定一条已记录的轨迹,分析器通过受控重采样回放每个决策步骤,测量模型在该点的输出实际变化程度。具体而言,每个决策步骤额外进行一次模型调用,离线执行一次——调用时设置采样参数一次性抽取 k 个补全(默认 k=5)——针对已记录的上下文进行回放,不涉及新的工具调用、不涉及新的环境交互,也不是任务的第二次端到端 rollout。这会为每个决策步骤生成一个一致性分数,写入记分卡,以精确定位哪些决策在下次运行时有翻转风险。检测完全黑盒——不需要 logits、不需要模型内部信息、不需要超出您已有轨迹之外的任何插桩。
  1. 生成——针对性指南。每个被标记的步骤都会成为标准 ALTK-Evolve 格式的候选一致性指南,从而接入现有的存储和检索流水线。以下是一个真实示例,由 GPT-4.1 从 AppWorld 任务“根据我的 SimpleNote 笔记,我的愿望清单中有多少活动已完成?”的一条轨迹生成:

[指南 1] 在统计笔记内容中的复选框式标记时,使用行锚定正则匹配而非简单的子串计数——笔记标题经常在图例行中重复标记符号。[指南 2] 始终验证笔记查询的搜索结果,检查是否存在多个匹配项,并在继续之前确认正确的笔记。

这里没有任何内容是任务特定的琐碎知识。字符串计数 bug 和未经验证的搜索结果是在许多 AppWorld 任务中都会以高不确定性出现的决策点。这正是关键所在:分析器针对的是不稳定性,而非失败——因此它能捕捉到 agent 这次恰好做对、但下次很容易做错的步骤。

观看 2 分钟演示——agent 的五次并行运行在该任务上因计数策略的 agent 不确定性而分成 3-2,然后在上下文中加入这些指南后再次运行:五次全部一致。

结果:在不损失准确率的前提下缩小差距

我们在 AppWorld test_normal(168 个任务)上使用 GPT-4.1 的 ReAct agent 进行评估,从每个任务的一条基线轨迹生成一致性指南,并在 5 次全新运行中测试。

Pass⁵ lift from baseline to consistency guidelines, by task difficulty, GPT-4.1 on AppWorld test_normal
Pass⁵ lift from baseline to consistency guidelines, by task difficulty, GPT-4.1 on AppWorld test_normal
Mean@5 aggregate, baseline vs. consistency guidelines, same scale as the Pass⁵ chart above
Mean@5 aggregate, baseline vs. consistency guidelines, same scale as the Pass⁵ chart above

Mean@5(%),汇总——与上文的 Pass^5 同一尺度。

一致性差距大约缩小了一半。总体 Pass^5 从 53.0% 升至 69.0%,而 Mean@5 从 77.4% 升至 81.0%,将“看起来有能力”和“可以被信赖”之间的差距从 24.4 个百分点缩小到 12.0 个百分点。近三分之一此前不一致的任务,变成了智能体每一次运行都能通过的任务。

中间层和困难层获益最大。Medium +22.9 个百分点(相对提升 +44%),Hard +14.3 个百分点(相对提升 +45%)——按相对值看实际上持平,而按绝对值看 Medium 领先。Easy 提升 +12.2 个百分点,因为它的提升空间最小。这正是一致性指南在做它们被设计来做的事:找到并稳定那些智能体自身的不确定性正在泄漏到结果中的具体决策点。

Mean@5 从未下降。保持平均准确率是硬性要求,而不是锦上添花:一个通过牺牲 Mean@5 来提升 Pass^5 的系统,只是在把不可靠性挪来挪去,而不是修复它。平均准确率在每个难度层级都保持或提升。

这些指南具有泛化性——它们不是在修补某一条轨迹

应用到同一 AppWorld 场景中一个不同但相关的任务时——也就是这些指南被挖掘出来的那个场景的另一个变体——一致性指南仍然将 Pass^5 提升了 +13.0 个百分点,仅比同任务数字低 3 个百分点。从一次运行中得出的指南,不只是修补那次运行;它捕捉到了某种可以迁移的东西。

更有力的证据来自一个更弱的模型 gpt-oss-120b。同任务 Pass^5 从低得多的基线提升了 +6.0 个百分点(10.1% → 16.1%)——而且有趣的是,相似任务泛化数字(+8.7 个百分点)实际上超过了同任务增益,这表明这些指南捕捉到的是真正可复用的失败模式,而不是记住某一条轨迹的具体细节。

如果你要上线一个智能体

  • 在 Mean@k 旁边报告 Pass^k。平均值无法区分一个可靠的智能体和一个幸运的智能体;即使 k=3 也会暴露出一个你原本不知道存在的差距。
  • 预期差距会随难度扩大。你最难的层级,正是单一平均值最具误导性的地方。
  • 不要一开始就求助于更大的模型。一致性与能力是正交的。更强的模型会提高 Mean@k;它不一定缩小一致性差距。
  • 诊断不需要评分器,也不需要实时回放。每个决策步骤多一次 LLM 调用(默认采样 k=5 个补全)就足够了——不需要真实答案,也不需要针对环境重新运行任务。这正是它可用于生产流量的原因,而在生产流量中,你往往连一次端到端回放任务都做不到。

试一试

试试 ALTK-Evolve 工具包——这个开源仓库现在包含这些实验中使用的 Consistency Analyzer 和一致性指南生成功能——或者阅读 arXiv 上的技术报告以了解完整方法。

如果你对自己任务中无法复现的准确率数字感到熟悉,我们很想听听——你自己智能体中容易反复无常行为的具体例子,正是塑造我们下一步构建内容的反馈。请提交 issue 或 discussion。

附录:理解这些指标

  • Mean@k。将一个任务运行 k 次,报告平均通过率——大多数基准所称的“准确率”。
  • Pass^k。智能体在全部 k 次独立运行中都成功的任务比例。始终 ≤ Mean@k。这就是用户运行同一查询两次时所体验到的东西。
  • Pass@k。k 次运行中至少有一次成功——乐观的对应指标,常见于代码生成论文。
  • 一致性差距。Mean@k − Pass^k,以百分点计。

关联产物 / 参考资料

  • ALTK-Evolve 开源仓库 — github.com/AgentToolkit/altk-evolve
  • 技术报告 — arXiv
  • 一致性指南演示 —2 分钟视频

译文已达到本站中文翻译的字数上限,剩余内容请查看原文。

阅读原文