AgentBench 学习笔记:评测 Agent,不能只看它怎么回答

消化 AgentBench 论文:为什么 LLM Agent 需要交互环境评测,AgentBench 如何用 8 类环境测试长期推理、决策和指令遵循,以及它对 Agent eval 的启发。

这篇是对论文 AgentBench: Evaluating LLMs as Agents 的学习笔记。

如果说传统 LLM 评测是在问“模型会不会回答问题”,AgentBench 问的是另一件事:

模型能不能在环境里连续行动,把任务做完?

这两件事差别很大。一个模型可以在单轮问答里表现很好,但一旦进入多轮环境,就会暴露出完全不同的问题:忘记目标、动作格式错、调用不存在的动作、陷入循环、遇到失败不会恢复、短期贪心导致长期任务失败。

AgentBench 的价值就在于,它把模型从静态题库里拿出来,放进一组交互环境中评测。

1. 为什么 Agent 不能只用问答评测

普通问答评测大多是这样的:

输入一个问题
模型输出一个答案
评分器判断答案对不对

Agent 任务更像这样:

用户给一个目标
Agent 观察环境
选择动作
环境返回结果
Agent 再选择动作
多轮之后完成或失败

这时评测重点不再只是最终文本,而是行动过程。

比如一个 OS 任务:找出某个目录下非空文件夹数量。Agent 需要生成 shell 命令,读取输出,必要时继续探索,最后提交答案。它可能不是不知道 Linux 命令,而是在某一步格式不对、路径理解错、忘记提交最终答案。

再比如 web shopping 任务:用户要找一个满足条件的商品。Agent 需要搜索、筛选、比较、进入详情页、检查约束、下单或提交结果。它每一步都可能走偏。

所以 Agent 评测必须包括环境、动作、观察、状态、终止条件和任务成功判定。

2. AgentBench 的 8 类环境

AgentBench 构造了 8 个环境,覆盖三类 grounding。

Code-grounded

  • Operating System
  • Database
  • Knowledge Graph

Game-grounded

  • Digital Card Game
  • Lateral Thinking Puzzles
  • House-Holding,也就是基于 ALFWorld 的家庭任务

Web-grounded

  • Web Shopping
  • Web Browsing

这组环境的好处是,它不把 Agent 能力绑定到单一任务。OS 测命令执行和状态操作;Database 测 SQL 查询和表结构理解;Knowledge Graph 测结构化知识检索;Card Game 测策略;Lateral Thinking 测多轮询问;House-Holding 测常识和动作规划;Web Shopping/Web Browsing 测网页任务执行。

AgentBench 不是让模型在一个环境里刷高分,而是看它在不同任务形态下是否具备稳定的行动能力。

3. 它测的是哪些失败

AgentBench 论文里很重要的一点,是它不仅看成功率,也分析失败类型。

常见失败包括:

  • Invalid Format:模型没有按环境要求输出动作格式。
  • Invalid Action:格式对了,但动作本身不合法。
  • Task Limit Exceeded:达到最大交互轮数仍未完成,或陷入重复。
  • 长期推理不足:当前动作看似合理,但偏离最终目标。
  • 决策能力不足:观察到新信息后不会调整策略。
  • 指令遵循不足:没有遵守环境协议或用户约束。

这些失败比“回答错了”更具体,也更有调试价值。

比如 Invalid Format 高,说明模型不是任务知识不足,而是协议遵循差;Invalid Action 高,可能是动作空间描述不清或模型没有学会环境约束;TLE 高,往往说明规划和恢复能力弱。

这对工程系统很重要,因为不同失败要用不同手段修。

格式失败:加 parser、action schema、重试修复
非法动作:改工具描述、加 action mask、返回结构化错误
任务超时:改规划器、加记忆、加反思或搜索
目标偏移:加强状态摘要和任务约束

4. AgentBench 的实验结论

论文评测了 API 模型和开源模型,结论大致是:顶级商业模型在复杂环境里明显更强,但距离真正实用仍有差距;许多开源模型在传统 benchmark 上看起来不错,一进 AgentBench 就暴露出多轮行动能力不足。

论文指出,阻碍可用 Agent 的关键问题包括长期推理、决策能力和指令遵循。它还观察到,高质量多轮 alignment 数据可能帮助 Agent 表现;代码训练对不同 Agent 任务的影响并不总是单向正面。

这个结论很值得注意。

很多人会以为“代码模型更适合 Agent”,因为 Agent 常常要调用工具、写命令、处理结构化输出。但 AgentBench 提醒我们,代码能力只是其中一部分。Agent 还需要目标保持、环境反馈理解、动作选择、失败恢复和多轮策略。

会写代码,不等于会行动。

5. Agent 评测应该怎么落地

我觉得 AgentBench 给工程团队的启发,可以落成五个原则。

第一,评测单元应该是任务完成,而不是单轮回答。

Agent 的结果是环境状态变化。最终回答好看,但事情没做成,就应该算失败。

第二,保留完整 trajectory。

每个评测样本都应该记录:

初始任务
每轮观察
每轮动作
工具返回
错误信息
最终状态
成功或失败原因

没有 trajectory,Agent 失败就很难归因。

第三,动作必须有协议。

自然语言自由输出太难稳定执行。AgentBench 里的环境都有动作格式和动作空间。真实系统也应该尽量把工具调用、命令执行、浏览器动作结构化。

第四,失败类型要分层。

不要只记录 failed。至少拆成 format、invalid action、tool error、timeout、wrong final answer、unsafe action、user constraint violation。只有这样,评测才能指导改进。

第五,评测要覆盖不同环境。

一个 Agent 在浏览器任务强,不代表它在数据库任务强;在短任务强,不代表长任务强;在确定性工具强,不代表开放网页强。Agent 能力是场景相关的。

6. AgentBench 的局限

AgentBench 是 Agent 评测入口,但不是终点。

首先,它主要面向 text-only LLM 的交互环境。现在很多 Agent 已经进入 GUI、浏览器视觉、多模态办公软件和真实 SaaS 环境,这些需要 WebArena、VisualWebArena、OSWorld 等更多基准补充。

其次,模拟环境再真实,也和生产系统有差距。真实工具有权限、数据隐私、网络抖动、并发状态、用户中途改需求、不可逆副作用。AgentBench 不能覆盖这些复杂性。

第三,不同 scaffold 会极大影响结果。同一个模型,配不同记忆、规划、工具解析、重试策略,表现可能差很多。因此评测时要区分“模型能力”和“Agent 系统能力”。

第四,成功率之外还要看成本。一个 Agent 如果花 100 轮才完成简单任务,在产品里可能不可接受。任务成功率必须和步数、延迟、工具调用成本一起看。

7. 我的 takeaway

AgentBench 最重要的贡献,是把 LLM 评测从静态回答推进到交互行动。

它让我们看到:Agent 的关键能力不是“知道答案”,而是在环境中持续选择正确动作。这个过程中,模型要遵守协议、理解反馈、保持目标、修正错误,并在有限轮数内完成任务。

所以评测 Agent 时,我会先写下这张表:

任务目标
初始环境
允许动作
观察格式
终止条件
成功判定
失败分类
成本指标
trajectory 存档

如果这些都没有,只拿几轮演示对话说 Agent “能用”,基本不可靠。

AgentBench 不会告诉你哪个 Agent 一定适合你的业务,但它给了一套正确的问题:不要只看模型怎么回答,要看它在环境里怎么行动,失败后怎么恢复,最终有没有把事情办成。

这就是 Agent eval 和普通 LLM eval 的分界线。