跳到正文
原文
Hugging Face Blog·· 2026-09-16精选AI 评分62

IBM 推出 ALTK-Evolve 一致性准则,把 ReAct 智能体的任务一致性差距缩小一半

Your Agent Aced the Task. Will It Do It Again?

AI 导读

IBM 研究团队在 ALTK-Evolve 中新增一致性准则(consistency guidelines),用于解决智能体同一任务多次运行结果不稳定的问题。

推荐理由

原文给出检测智能体决策不稳定点的方法与开源实现,并说明如何将诊断转成可复用准则。

正文 · AI 翻译

你的智能体在排练时表现正常,但在现场演示时,它走了另一条路径,同一个任务却失败了。

在台上这很尴尬。在生产环境中,这是一个可靠性问题:一个曾经成功过的工作流,下次用户发出同样的请求时可能会失败。对于关键任务型工作,比如核对一笔金融交易或检查合同中的某项义务,这可能直接导致项目无法推进。

大多数基准测试用平均值掩盖了这种波动性。在 AppWorld 上,使用 GPT-4.1 的 ReAct 智能体在五次重复中于 77.4% 的运行中成功。但它只对 53.0% 的任务在全部五次运行中都成功——这是一个 24.4 个百分点的一致性差距。

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

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

TL;DR

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

几乎没人报告的那个指标

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

Mean@k 回答的是“这个智能体平均有多好?”它没有回答真实用户关心的问题:如果我再问一次完全相同的问题,它还会表现好吗?为此你需要 Pass^k:智能体在全部 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

一个由 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

1. 检测——一致性分析器(Consistency Analyzer)。 给定一条已记录的轨迹,分析器通过受控重采样回放每一个决策步骤,测量模型在该点的输出实际变化有多大。具体来说,每一步决策额外进行一次模型调用,离线执行一次——以采样参数设置为一次性抽取 k 个补全(默认 k=5)的方式发出——针对已记录的上下文进行回放,不是新的工具调用,不是新的环境交互,也不是对任务的第二次端到端运行。这样会为每个决策步骤得出一个一致性分数,写入记分卡,从而精确指出哪些决策在下次运行时存在翻转风险。检测完全黑盒——不需要 logits,不需要模型内部信息,除了你已经拥有的轨迹之外不需要任何额外插桩。

2. 生成——针对性指南。每个被标记的步骤都会成为标准 ALTK-Evolve 格式下的候选一致性指南,从而无缝接入现有的存储与检索流水线。以下是一个真实示例,由 GPT-4.1 从 AppWorld 任务“How many activities are done in my bucket list as per my SimpleNote note?”的一条轨迹中生成:

[指南 1] 在统计笔记内容中的复选框式标记时,应使用锚定行的正则匹配,而不是简单的子串计数——笔记标题常常在图例行中重复出现该标记符号。

[指南 2] 对于笔记查询,务必通过检查是否存在多个匹配项并确认正确的笔记后再继续,以此验证搜索结果。

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

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


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

我们在 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

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 个百分点。近三分之一此前表现不一致的任务,变成了 agent 每一次运行都能通过的任务。

中等和困难层级获益最多。Medium +22.9 个百分点(相对提升 +44%),Hard +14.3 个百分点(相对提升 +45%)——相对提升幅度实际上持平,而 Medium 绝对提升更多。Easy 层级提升了 +12.2 个百分点,其提升空间本就最小。这正是一致性指南在设计上要做的事:找出并稳定那些 agent 自身不确定性正在渗入最终结果的特定决策点。

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——这个开源仓库现在包含这些实验中所用的一致性分析器和一致性指南生成功能——或者阅读 arXiv 上的技术报告以了解完整方法。

如果你对无法在自己的任务上复现的准确率数字感到似曾相识,我们很想听听——你自己智能体中易反复无常行为的具体例子,正是能塑造我们下一步构建方向的反馈。提交 issue 或发起 discussion。


附录:理解这些指标

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

关联制品 / 参考资料


来源:Hugging Face Blog · hf-mirror.com