大语言模型回答一道题,像坐在考场里写卷子:题目一次性给全,答案一次性交回。但让它订一件商品、查一组资料、修改一张表格或在终端里完成操作,就不再是「知道答案」这么简单了。它必须反复经历同一个循环:看见当前情况,决定下一步,动手,接住反馈,再改计划。

这正是 LLM 从「模型」走向「agent」的分水岭。

本文细读四篇有代表性的论文:

  • ReAct(2022)研究怎样把推理与行动编成一个闭环;
  • Toolformer(2023)研究怎样让模型自己学会何时调用哪件工具;
  • AgentBench(2023)研究怎样在多种交互环境里统一评测 agent;
  • AgentBoard(2024)研究成功率之外,怎样看清 agent 的中间进展和失败原因。

它们不是四个互相替代的算法。ReAct 是运行时控制范式,Toolformer 是训练方法,后两篇则属于评测层。把它们放在一起,恰好能回答一条完整的问题链:agent 怎样工作,工具能力怎样学来,最后又该怎样判卷。

ReAct运行时范式边想 · 边做 · 边看闭环控制Toolformer训练方法何时 · 调什么 · 怎么调自监督工具学习AgentBench广度评测八种交互环境能不能做成AgentBoard过程诊断进度 · 能力 · 轨迹究竟卡在哪造 agent测 agent从「生成一个答案」走向「完成一个任务」这是一条问题链,不是四篇互相替代的算法
四篇论文对应三层问题:运行时闭环、工具学习、广度评测与过程诊断

一、先把「模型」和「agent」分开

语言模型本质上只做一件事:给定上文,预测下一个 token。Agent 则是一个系统:模型外面还包着任务指令、记忆、工具描述、动作解析器和环境。一个更接近工程现实的等式是:

Agent = LLM
      + 控制循环(prompt / planner)
      + 记忆(history / state)
      + 工具与动作空间
      + 解析、执行、报错与重试

在第 t 步,环境有一个 agent 未必看得全的状态 sₜ,只给它一份观察 oₜ。Agent 根据任务目标和历史选择动作 aₜ,环境执行后转移到 sₜ₊₁,再返回新的观察。用一行表示:

观察 oₜ → agent 选择动作 aₜ → 环境转移 sₜ → sₜ₊₁ → 新观察 oₜ₊₁

这是一种部分可观察的序贯决策问题。难点不只在单步「想得对不对」,还包括:过去的信息有没有记住、动作格式是否合法、工具结果是否读懂、撞墙后能否换路,以及几十轮后是否还记得最初目标。

后面四篇论文,其实分别抓住了这条链上的不同位置。

二、ReAct:把「想」和「做」交错起来

2.1 两种单腿走路

ReAct 的出发点是:当时关于语言模型的两条研究线各缺一条腿。

Chain-of-Thought(CoT)只推理。 模型可以写出一串貌似连贯的思考,但整个过程是闭卷的:中途无法查证事实,也收不到现实反馈。一旦早期事实编错,后面的推理越完整,可能只是错得越自洽。

Act-only 只行动。 模型可以搜索、点击或移动,却没有显式的工作记忆来分解目标、总结观察、记录已完成的子任务。于是它容易反复试同一个无效动作,或者走到一半忘了自己为什么出发。

ReAct 的办法非常朴素:让语言模型交错生成 Thought → Action → Observation。其中 Thought 是写入上下文的语言,但不改变外部世界;Action 才真正触发搜索、点击或移动;Observation 由环境返回,不是模型自己编的。

任务目标 + 历史当前上下文 cₜThought分解目标 / 更新计划语言动作:不改变外部世界Actionsearch[...] / open[...]Environment搜索、网页、游戏、房间Observation新事实 / 成功 / 报错外部世界写回上下文更新后的上下文cₜ₊₁ = cₜ + Thought + Obs模型内部外部世界Reason to act:想清楚再动手Act to reason:动手取得新证据
ReAct 的闭环:reason to act 决定下一步,act to reason 从环境取得新证据

论文把这个想法写成一个漂亮的形式:原本动作空间是 A,现在扩成

 = A ∪ L

L 是自然语言空间。落在 L 里的动作就是 Thought:它不让环境转移,却会更新上下文,帮助下一步推理或行动。换句话说,ReAct 把「内心独白」也当成了一种动作。

举个自造的家务例子:

目标:把一枚洗净的苹果放进冰箱。

Thought 1:需要先找到苹果和水槽,再清洗,最后找冰箱。
Action 1:go_to[countertop]
Observation 1:台面上有 apple_1 和 cup_2。

Thought 2:苹果找到了,先拿起,再去水槽。
Action 2:take[apple_1]
Observation 2:你拿起了 apple_1。

Action 3:go_to[sink]
Observation 3:水槽是空的,可以使用。

Thought 3:清洗后还要把它放进冰箱;当前子目标是清洗。
Action 4:clean[apple_1, sink]
...

这里的 Thought 不必每一步都出现。知识问答通常需要密集的「想—查—看」;ALFWorld 这类几十步任务则更适合稀疏思考,只在开始规划、子目标完成、遇到异常或准备收尾时写一笔。论文的一个重要经验是:思考不是越多越好,而是要出现在改变决策的位置。

2.2 实验真正说明了什么

ReAct 在两类任务上测试。

第一类是知识密集型任务:HotpotQA 多跳问答与 FEVER 事实核查。模型只能看到问题,没有配套文段,可通过一个很弱的 Wikipedia 接口执行 search[entity]lookup[string]finish[answer]

PaLM-540B 的主要结果如下:

方法HotpotQA EMFEVER Accuracy
Standard28.757.1
CoT29.456.3
CoT-SC(21 次采样投票)33.460.4
Act-only25.758.9
ReAct27.460.9
ReAct → CoT-SC35.162.0
CoT-SC → ReAct34.264.6
当时的有监督 SOTA67.589.5

这个表很值得慢读。ReAct 并没有在所有任务上直接碾压 CoT:HotpotQA 上,原始 ReAct 甚至低于 CoT;FEVER 上才明显占优。最好的办法是混合:ReAct 在规定步数内找不到答案时退回 CoT-SC,或者 CoT-SC 投票不够一致时转去外部检索。

这说明内部知识和外部证据不是二选一:

  • CoT 更擅长自由地组织推理结构,却可能编造作为前提的事实;
  • ReAct 更有事实落点,却可能被糟糕的搜索结果带偏,或困在固定的交错格式里;
  • 两者按「不确定性」和「是否卡住」切换,比押宝一个范式更强。

论文又人工检查了 HotpotQA 的 200 条轨迹。CoT 的错误样本中,56% 涉及幻觉;ReAct 的抽样失败里没有标成幻觉,但 23% 是搜索结果无用,47% 是推理错误或重复循环。这里不能把小规模人工分析当成普遍定律,但它清楚揭示了一个交换:把事实交给外部世界,幻觉少了,检索与恢复能力就成了新的瓶颈。

第二类是长程决策任务:ALFWorld 家务世界与 WebShop 网页购物。

环境对照ReAct读法
ALFWorld 成功率Act 最佳 45%;BUTLER 37%最佳 71%显式分解子目标、追踪状态很关键
WebShop 成功率Act 30.1%;IL+RL 28.7%40.0%稀疏推理帮助从嘈杂页面里选属性
WebShop 平均得分Act 62.3;IL+RL 62.466.6部分满足商品条件也计分

ALFWorld 中,ReAct 只靠少量上下文示例,就超过了用大量专家轨迹训练的基线;WebShop 中则把此前最佳成功率绝对提高约 10 个百分点。但人类在 WebShop 仍有 59.6% 成功率,说明模型不太会持续探索和改写搜索词。

2.3 ReAct 的贡献与边界

ReAct 最重要的贡献不是发明了三个英文标签,而是把 LLM 变成了一个闭环策略:推理为行动服务,行动又为推理提供新事实。这套格式还带来可诊断性——人可以定位「哪条 Thought 导致哪次 Action」,论文甚至演示了只编辑两处 Thought 就把失败轨迹纠正过来。

但「看得见一段推理文字」不等于「它忠实暴露了模型内部因果过程」。更稳妥的说法是:ReAct 提供了一份可检查、可干预的工作记录,而不是大脑扫描仪。

它还有三个明确边界:

  1. 纯提示法依赖少量示例,复杂动作空间很快挤满上下文;
  2. 搜索无结果或环境反馈异常时,模型不一定会恢复,常出现循环;
  3. 论文主实验使用不可公开复现的 PaLM,虽然附录里的 GPT-3 结果支持范式可迁移,复现实验仍有门槛。

作者也试了训练路线:用 ReAct 自己生成的 3,000 条正确轨迹微调 PaLM-8B/62B,小模型从「背事实」转向学习「怎样查事实」。这一步已经在向下一篇 Toolformer 靠近:能否不靠人手写很多轨迹,让模型自己造出工具使用数据?

三、Toolformer:让模型自己给语料加上 API 调用

ReAct 主要回答运行时怎么组织思考与行动;Toolformer 则把问题往训练阶段推:一个普通语言模型,能否只看每个 API 的少量示范,就自己学会四件事——何时调用、调用哪个、参数怎么写、返回值怎么接着用。

论文从 GPT-J 6.7B 出发,给它五种工具:问答系统、Wikipedia 搜索、计算器、机器翻译和日历。API 调用也被线性化成普通 token:

<API> Calculator(27 + 4 * 2) → 35 </API>

于是「调用工具」仍然只是语言建模:模型生成特殊起始符、API 名和参数;当解码器生成箭头 时,外部程序暂停生成、真正执行 API,把返回值与结束符插回上下文,再让模型继续写。

3.1 自监督的四步流水线

① 普通语料 C没有人工工具标注② 采样候选哪里插 <API>?③ 执行工具拿到真实返回值 r④ 损失过滤结果让后文更好猜吗?同一个后文,两种条件L⁺:调用 + 返回结果L⁻:不调用 / 只有调用保留:L⁻ − L⁺ ≥ τf⑤ 增强语料 C* → 微调原模型少量 API 示范只负责“点火”,大规模标注由模型自己生成并筛选候选片段:27 + 4 × 2<API> Calculator(...)→ 35 </API>“有帮助”在这里不是人类打分,而是未来 token 的交叉熵下降。因此它学到的是语言建模意义上的工具价值,而非完整任务奖励。
Toolformer:采样候选、执行 API、用未来 token 损失过滤,再以增强语料微调

第一步:采样候选调用。 对普通文本 x = x₁…xₙ 的每个位置 i,模型估计此处开始 API 调用的概率:

pᵢ = pM(<API> | prompt, x₁…xᵢ₋₁)

超过采样阈值的位置才保留,再从这些位置生成若干个 API 名和参数候选。默认设置是开始符概率至少 5%,每段文本最多取 5 个位置,每个位置最多采 5 次;稀有的计算和翻译样本会放宽阈值。

第二步:真的执行。 候选不是模型幻想的返回值,而是送进计算器、检索器或翻译系统,得到文本结果 r

第三步:用语言模型自己的损失判卷。 对调用点之后的 token,比较两种条件:

L⁺ = 有 API 调用,也给真实返回值时的未来 token 损失
L⁻ = min(完全不调用,只有调用但不给结果) 的未来 token 损失

保留调用,当且仅当:L⁻ − L⁺ ≥ τf

默认 τf = 1.0。损失对离调用位置越近的 token 权重越高,主要关注紧随其后的约 5 个 token。直觉是:如果知道工具结果后,模型更容易预测原文接下来写什么,那么这次调用对模型「有用」。

第四步:回炉微调。 把所有通过筛选的调用插回原文,得到增强语料 C*,再用普通 next-token objective 微调同一个模型。于是模型既看到原来的自然语言,也看到那些自己判断有价值的 API 调用位置。

这里最漂亮的地方,是监督信号不来自人工标签,也不来自另一个奖励模型,而来自模型自己的困惑度下降。少量人工示范只定义 API 语法,大规模数据由模型自己提出、工具执行、损失函数筛选。

3.2 数字好看,但要看它为什么好看

工具打开后,Toolformer 在算术任务上的提升非常大:

模型ASDivSVAMPMAWPS
GPT-J 6.7B7.55.29.9
Toolformer 6.7B40.429.444.0
GPT-3 175B14.010.019.8

但别急着把它读成「6.7B 的数学推理超过 175B」。Toolformer 在 97.9% 的算术样本上调用了计算器;优势来自知道何时把精确计算外包,不是参数里突然长出了更强的心算器。这恰好是工具增强的意义:系统能力可以超过裸模型能力。

知识问答上的提升更温和:WebQuestions 从 18.5 到 26.3,Natural Questions 从 12.8 到 17.7,TriviaQA 从 43.9 到 48.8,仍落后 GPT-3。原因也很有启发:论文里的搜索器简单,Toolformer 又不会浏览多个结果、根据坏结果重写查询。这正是 ReAct 擅长、Toolformer 缺少的闭环部分。

另外两点很重要:

  • 关闭 API 后,Toolformer 在 WikiText / CCNet 上的困惑度与只做继续预训练的 GPT-J 基本相同,说明工具数据没有明显损伤普通语言建模;
  • 工具使用能力在约 775M 参数才明显出现,更小模型即使拿到工具也未必会用。工具不会自动抹平模型能力差距。

3.3 Toolformer 学到的到底是什么

Toolformer 的筛选目标是「返回值能否降低后续 token 损失」,不是「是否更真实」「是否完成用户任务」「调用成本是否值得」,更不是「操作是否安全」。一个结果只要让原文更好预测,就可能被留下;论文也展示了看似无关却意外降低困惑度的噪声调用。

它还有几项作者明确承认的限制:

  • 不会把一个工具的输出接成另一个工具的输入,因为各工具的数据独立生成;
  • 不会与搜索器多轮交互,无法翻页或重写查询;
  • 是否调用对输入措辞敏感;
  • 数据效率低,处理上百万文档,某些工具只筛出几千个有效样本。

所以 ReAct 和 Toolformer 不是前后版本关系,而是两条正交轴:

ReActToolformer
核心问题多轮中下一步怎么想、怎么做API 调用行为怎样学进模型
主要手段少量示例提示,运行时闭环自监督造数据,再微调
强项多步、可根据 Observation 改计划自动决定是否调用,普通生成中自然插入
短板依赖 prompt 与上下文,易循环原版不能串联、重试或交互搜索

一个更完整的系统完全可以把两者合起来:模型先学会可靠地产生结构化工具调用,再在 ReAct 式循环里根据反馈重试、换工具与推进子目标。

四、AgentBench:别再只拿问答题考 agent

当「LLM 会不会当 agent」成为热门论断,新的问题出现了:大家各自在不同 demo 里展示成功案例,结果无法横向比较。AgentBench 的贡献,就是把 agent 放进一套统一的多轮考场。

它把交互评测形式化为部分可观察马尔可夫决策过程,并整理出八个环境:五个新建,三个由既有环境改造。

Code · 代码环境Game · 游戏环境Web · 网页环境OS · 操作系统Bash · Success RateDB · 数据库SQL · Success RateKG · 知识图谱查询工具 · Answer F1DCG · 数字卡牌策略规划 · Win RateLTP · 海龟汤二元提问 · Game ProgressHH · 家务世界ALFWorld · Success RateWS · 网页购物WebShop · RewardWB · 网页浏览Mind2Web · Step SR同一套“用户—agent—环境”多轮协议,背后却是八种动作空间与八种判分方式AgentBench 不再问“这道题答对没有”,而是问“在不同世界里,任务最后做成没有”。平均约 8 / 5 / 15 轮平均约 30 / 25 / 35 轮平均约 5 / 10 轮
AgentBench 的八种环境:代码、游戏与网页三大类,每类动作空间和判分方式都不同

这八门考试覆盖的不是同一种能力:OS 和 DB 看命令与代码执行,KG 看工具查询和知识获取,卡牌看策略,海龟汤看探索式提问,ALFWorld 看常识与长程状态追踪,网页任务则看搜索、点击和约束满足。

4.1 它怎样尽量把考试做统一

AgentBench 的框架分成三类角色:Task Server 托管环境,Agent Server 提供模型推理接口,Client 在两者之间转发轨迹并调度任务。复杂环境放进 Docker,模型只需暴露 HTTP 接口。这个设计的价值不只是方便跑分,而是把「模型」与「环境」解耦,使同一个模型可以跑多门考试,同一个环境也能换不同模型。

论文的大部分任务采用单轮内同时输出 Thought + Action 的格式,给一个简单示例,温度设为 0。长历史会裁到约 3,500 token,并提示有消息被省略。这个细节很重要:最终分数测到的并非裸 LLM,而是

观测得分 = f(模型, prompt, 历史裁剪, 动作语法, 解析器, 环境, 指标)

不同任务的原始指标量纲也不一样:有 Success Rate、F1、Win Rate、Game Progress、Reward 和 Step Success Rate。论文先用当时所有参评模型在每项任务上的平均分做归一化,再加权平均成 Overall AgentBench(OA)。因此 OA 不是「完成了百分之多少」,而是相对于那批模型和那套权重的综合指数。

4.2 排名之外,失败终点更有价值

论文不同修订版覆盖的模型数与个别结果略有变化;以给定 PDF 所代表的 2023 年模型快照看,API 模型整体显著领先当时的开源模型,GPT-4 在多数环境领先,并在 ALFWorld 家务任务达到 78% 成功率。这个结论适合读作历史事实,不能拿来替代今天的模型排名。

更耐看的结果是失败类型。AgentBench 把轨迹终点分成:上下文超限(CLE)、格式错误、无效动作、轮次耗尽(TLE)和正常结束。

“没完成”不是一个原因先判执行轨迹怎样结束,再谈模型能力CLE上下文超限历史装不下旧的 2K 模型为主Invalid Format格式错误53.3%DB 轨迹的突出终点Invalid Action动作不合法64.1%HH 轨迹的突出终点TLE轮次耗尽67.9% / 82.5%KG / LTP:循环或没做完同一个 0 分,背后可能是记忆、协议遵循、动作落地或长程规划四种完全不同的问题
AgentBench 的失败分类:同一个 0 分可能来自四种完全不同的系统问题

几组数字把任务差异照得很清楚:

  • DB 中 53.3% 的轨迹因格式错误结束,说明「知道 SQL」和「严格按协议交付 SQL」是两种能力;
  • HH 中 64.1% 的轨迹生成了动作空间外的动作,问题在高层意图到可执行动作的 grounding;
  • KG 与 LTP 中,轮次耗尽分别占 67.9% 和 82.5%,常见原因是长程推理无进展或陷入重复;
  • 真正由上下文硬上限直接终止的比例反而很低,且主要出现在 2K 上下文的旧模型。

论文还观察到代码训练与高质量多轮对齐数据可能改善 agent 表现。比如 CodeLlama 在流程固定的任务上更有优势,Vicuna-13B 也明显强于共享底座的 Llama-2-13B。不过这些是不同模型之间的观察性比较,训练数据、对齐方法等变量没有完全控制,不应读成严格的因果实验。

4.3 AgentBench 的边界

AgentBench 把评测从静态问答推到了可执行、多轮、部分可观察的环境,这是关键一步。但它仍有三个局限:

  1. 八种任务的综合权重来自一批历史模型,整体分的直觉不如单项成功率清楚;
  2. 不同环境的动作空间、判分器和难度差别极大,一个 OA 很难解释模型究竟强在哪里;
  3. 成功率把轨迹压成 0 或 1——做完 90% 和第一步就失败,在最终表格里可能完全相同。

第三点直接引出 AgentBoard。

五、AgentBoard:成功率是终点照,进度率才是行车记录仪

假设两个 agent 都没把鸡蛋放进微波炉。Agent A 已经找到、取出并洗净鸡蛋,只在最后一步失败;Agent B 打开冰箱后便开始循环。成功率给它们的分都为 0,但工程师绝不会认为二者能力相同。

AgentBoard 的核心贡献,就是给这种「差一点」一个可计算的刻度。

目标:把一枚洗净的鸡蛋放进微波炉打开冰箱g₁取出鸡蛋g₂清洗鸡蛋g₃放进微波炉g₄Agent A:做到清洗,最后一步失败×Success = 0 Progress = 3/4 = 0.75Agent B:只找到冰箱便陷入循环×××Success = 0 Progress = 1/4 = 0.25
同样是 0 成功率,进度率能区分“差最后一步”与“几乎没开始”

5.1 九个环境与一个统一的进度定义

AgentBoard 选了四类九个环境:

  • Embodied AI:ALFWorld、ScienceWorld、BabyAI;
  • Game:Jericho、PDDL;
  • Web:WebShop、WebArena;
  • Tool:Tool-Query、Tool-Operation。

它们全部是文本交互、需要多轮,且大多部分可观察。与 AgentBench 相比,这组任务更偏重规划,还加入了真正的多站点 WebArena,以及查询、待办和表格操作等工具环境。

进度率有两种实现。

如果环境状态能连续比较,例如当前表格和目标表格有多少单元格一致,就直接算状态匹配度;如果中间状态语义含糊,就把目标拆成 K 个顺序子目标 g₁…gK,每完成一个记 1。简化后的离散形式是:

progressₜ = max over i≤t [ 1/K · Σₖ match(sᵢ, gₖ) ]

取历史最大值意味着它记录「这条轨迹最好走到哪」,即使 agent 后来回退或弄乱环境,已达到过的里程碑也不会从分析里消失。任务完成时 progress = 1,而 success rate 仍是「是否在 T 轮内做到 1」的二值统计。

为让子目标序列相对唯一,作者人工标注并三轮检查,还修改了约 5% 的题目。以「洗净鸡蛋并放进微波炉」为例,子目标可以是:打开冰箱 → 取鸡蛋 → 在水槽清洗 → 放进微波炉。路径允许绕路,但里程碑顺序固定。

5.2 进度率确实比 0/1 更会说话

作者让四位标注者人工判断多条轨迹进度,再与自动进度率比较;八项任务上的 Pearson 相关系数都超过 0.95,说明这套自动刻度与人的整体判断高度一致。

主结果也展示了它的区分力。以论文所用历史模型版本为准:

模型平均进度率平均成功率
GPT-470.047.9
Claude 248.926.2
GPT-3.5-Turbo41.419.7
Llama2-13B18.92.1
Mistral-7B24.63.9

最后两行最能说明问题:成功率都接近零,很难比较;进度率却显示 Mistral-7B 更常把任务推进到中段。对正在迭代的开源 agent,这种连续信号比满屏 0 分有用得多。

AgentBoard 还把「分析」扩成六个子能力:

  • memory:能否使用长距离历史;
  • planning:能否把复杂目标拆成子目标;
  • world modeling:是否理解完成任务所需的世界规律;
  • self-reflection:能否根据报错与反馈修正;
  • grounding:能否把计划翻译成合法动作;
  • spatial navigation:能否高效到达目标位置。

再配合有效动作率、难题/易题拆分、进度随步数变化、探索行为和失败轨迹,评测终于从一张排行榜变成一套体检报告。论文发现,多数开源模型约 6 步后就停止取得新进展;即便强模型,在 WebArena 和工具任务里也常早早达到平台期。代码训练与专门的 agent 轨迹训练普遍有帮助,但格式遵循好并不等于规划能力强。

5.3 一个很反直觉的 ReAct 消融

AgentBoard 为减少框架干扰,主评测采用 Act-only,而不是 ReAct。作者在 GPT-3.5-Turbo 上比较后发现,ReAct 在 Tool-Query / Tool-Operation 有提升;在 ALFWorld 上进度率略升、成功率却下降,在 PDDL 上两项都下降。收益并不稳定,作者推测长达 30 轮的交互中,额外 Thought 会持续消耗上下文。

这不是对 ReAct 的否定,而是非常重要的工程提醒:

短任务里,显式思考是工作记忆;长任务里,不受控的显式思考也可能变成上下文债务。

现代 agent 因此需要的不只是「多想」,而是压缩历史、结构化状态、适时总结和丢弃无用轨迹。AgentBoard 自己采用滑动窗口保留最近交互,也因此测到的是「模型 + 记忆策略」的组合。

进度率本身同样不是完美答案。它依赖人工定义的子目标与匹配规则;max over time 会记住曾经到达的最好状态,却不惩罚之后的破坏;唯一子目标序列也不适合所有开放任务。它更像可解释的里程表,不是通用价值函数。

六、把四篇论文叠成一套 agent 工程观

任务与约束用户目标ReAct 控制器计划 · 状态 · 恢复工具策略选择 · 参数 · 结果外部环境API · 网页 · 系统Observation 写回下一轮整条轨迹同时接受三副“体检”结果成功率 / 奖励过程进度 / 步数诊断格式 / 动作 / 循环会答题只是模型能力;稳定完成任务才是系统能力。
四篇论文合起来:控制闭环、工具策略、环境反馈,以及结果、过程、诊断三层指标

现在可以把四篇论文放回同一张表:

论文所在层核心变量主要监督最值得带走的东西
ReAct运行时控制Thought / Action / Observation少量人工轨迹提示推理与外部反馈必须闭环
Toolformer模型训练API 位置、类型、参数、结果未来 token 损失下降模型可以自举出工具调用数据
AgentBench系统评测八环境结果与失败终点环境判分器Agent 能力必须在可执行多轮任务里测
AgentBoard分析评测进度、有效动作、子能力、轨迹子目标与状态匹配只看最终成功率不够诊断系统

四篇论文合起来,有五条今天仍然实用的设计原则。

第一,闭环比长计划重要。 计划只是当前假设;每次工具返回和环境报错都必须写回状态,下一步根据新事实重算。

第二,工具调用至少有四个子问题。 要不要调、调哪个、参数是什么、结果怎么用。Toolformer 四个都训练了,但多工具串联、重试与成本控制仍需 ReAct 式控制器补上。

第三,动作必须有明确协议。 很多失败不是「不会」,而是格式错或动作不存在。类型约束、解析前校验、错误反馈和安全沙箱不是外围杂活,而是 agent 能力的一部分。

第四,长程任务需要状态压缩。 把全部 Thought 和 Observation 永久堆进上下文,迟早会淹没目标。应把轨迹分成短期原文、结构化任务状态与长期摘要。

第五,评测至少要三层。 结果层看成功率/奖励,过程层看进度和步数,诊断层看格式错误、无效动作、循环、探索与恢复。只报一个总分,几乎无法指导下一轮改进。

七、怎样正确阅读这些论文里的榜单

最后补三条防误读说明。

一是历史模型快照不等于当前排名。AgentBench 与 AgentBoard 评测的是论文当时可用的特定模型版本;真正长寿的是任务设计与失败分析,不是某个 2023 年 API 型号的名次。

二是,agent benchmark 测的是整个脚手架。Prompt 是 ReAct 还是 Act、历史是截断还是总结、动作是否自动修复,都会改变成绩。跨论文直接比较数字通常没有意义。

三是可执行评测仍不等于真实部署。模拟网页、Docker 和文本游戏有稳定真值,也更安全;现实网页会变化,外部 API 有权限、费用与副作用。AgentBoard 自己也把真实环境的标签漂移和安全约束列为难题。

八、写在最后

这四篇论文记录了 LLM Agent 研究早期非常清楚的一次视角迁移:

  1. ReAct 把问题从「一次生成什么」改成「下一步做什么」;
  2. Toolformer 把工具使用从手写 prompt 推向可训练、自举的行为;
  3. AgentBench 把漂亮 demo 推进统一、多环境、可执行的考场;
  4. AgentBoard 又把排行榜拆开,开始追问每一步究竟发生了什么。

如果只留一句话:会回答,是模型能力;能在反馈中稳定推进并完成任务,才是 agent 能力。 而要把后者做好,控制、工具、环境和评测缺一不可。

参考