Skip to main content

ReAct:Reasoning与Acting协同,让Agent边想边做的奠基之作

Paper Info


Overview

  1. 背景问题:2023 年前后的大模型要么只会直接生成答案、要么只会链式推理,推理过程是黑箱、幻觉问题严重,且无法访问训练数据之外的实时信息。

  2. 核心思路:把"思考过程显性化"与"调用外部工具"两件事结合起来,让模型在自然语言中写出推理步骤的同时,按需执行搜索、计算、查表等行动获取外部证据。

  3. 命名由来Reasoning(推理)与 Acting(行动)的首字母组合即为 ReAct,与化学反应中的"反应"同音,暗示两者结合产生新能力。

  4. 核心循环:以 Thought → Action → Observation 三元组为基本单元不断循环,直至模型判断任务完成;每一步的 Observation 都会拼回上下文供下一步 Thought 使用。

  5. 思考显性化:模型用自然语言写出推理步骤(如"我需要先查询爱因斯坦获得诺贝尔奖的年份"),让原本黑箱的推理路径可被人类读取、调试与纠正。

  6. 行动能力:在思考之后,模型可触发预定义的工具(如搜索引擎、计算器、Wikipedia 查询接口),由框架解析工具调用并把结果以 Observation 形式回填。

  7. 工具设计要点:必须为模型提供清晰的工具描述与输入格式,否则模型容易调用错误的工具或传入错误参数;工具接口的"友好度"直接影响 Agent 的可靠性。

  8. 观察整合:Observation 不只是工具返回值,而是与历史 Thought / Action 一起被拼接到上下文,模型据此继续推理;这让多步依赖、跨工具组合成为可能。

  9. 实验验证:在常识推理(HotpotQA)、事实验证(Fever)、多步问答、知识密集型任务以及 ALFWorld、WebShop 等交互式环境中,ReAct 均显著优于纯 CoT 或纯 Act 的基线。

  10. 历史地位:现代 Agent Loop 的事实标准,几乎所有后续 Agent 框架(Reflexion、AutoGPT、ReWOO、Toolformer 等)都可视为对 ReAct 这一循环结构的扩展或改进;论文提出后即开源,极大加速了 Agent 技术普及。


核心内容解读

2023 年大模型的两类"偏科"

ReAct 诞生前,主流的大模型使用方式呈现明显的两极分化:

一类是直接生成(Standard Prompting)。模型读入问题后直接吐出最终答案,省去了中间步骤。这种方式快但不可控——答案可能是对的,也可能是模型"自信地胡说",即所谓的幻觉问题;对于需要多步推理或多信息源整合的问题尤为吃力。

另一类是纯思维链(Chain-of-Thought, CoT)。让模型在作答前先写出一串推理步骤,再给出最终答案。这种方式显著提升了可解释性与复杂推理能力,但 CoT 本质仍是"闭门造车"——推理过程发生在模型内部,且所有依赖的信息都被压缩在模型的参数化记忆里,无法访问外部实时数据。

这两类方法各有强项却彼此割裂:前者缺乏过程,后者缺乏与外部世界的交互。与此同时,工具调用(Tool Use / Toolformer)、搜索引擎增强(WebGPT)等方向各自发展,却鲜有人把它们与链式推理系统性地整合到同一个 prompt 框架里。

论文的洞察:把推理与行动放到同一条链上

Shunyu Yao 等人观察到一个朴素但关键的现象——人类解决复杂问题时,本就是"边想边做"的:先在脑中形成假设,再去查阅资料或执行操作,根据结果更新假设,循环往复直至问题解决。他们由此提出:

让语言模型在同一段上下文中交替生成 Thought(推理)与 Action(行动),并把外部工具返回的 Observation 拼回上下文,作为下一步推理的依据。

这一设计带来三点收益:

  1. 推理路径可读。Thought 用自然语言写就,人可以直接审视每一步是否合理,不再面对一个不可解释的"黑箱答案"。
  2. 幻觉被显性抑制。当模型不确定某个事实时,可以直接发起搜索,把权威结果作为 Observation 引用,避免凭空编造。
  3. 知识可扩展。再大的模型也无法穷尽实时或长尾信息;通过工具调用,模型的"知识边界"被动态外推到了整个互联网与各种 API。

ReAct 的循环结构:Thought → Action → Observation

ReAct 的核心是一个极简的三元组循环

xH5joZ
Thought t: 我接下来需要知道 X,因此调用搜索工具。
Action t: Search[X]
Observation t: 关于 X 的搜索结果 ...
Thought t+1: 根据搜索结果我可以推断 Y ...
Action t+1: Lookup[Y] 或 Finish[Y]
Observation t+1: ...

每轮循环中:

  • Thought 由模型自由生成,可以是分解子目标、规划下一步、解释上一步 Observation、跟踪整体进度等任意形式的内心独白;
  • Action 受限于预定义的工具空间(如 Search[query]Lookup[entity]Calculate[expr]Finish[answer]),由框架解析后实际执行;
  • Observation 是工具的返回值,被拼回 prompt 上下文,进入下一轮 Thought。

循环终止于 Finish[answer] 行动(或达到预设的最大步数)。整个过程对模型而言就是一段连续文本的续写,对开发者而言则是一条可回放、可调试的执行轨迹。

思考显性化:用自然语言做推理

Thought 的设计哲学是"用自然语言做推理",而不是符号逻辑或形式化计划。这一选择带来几个关键优势:

  • 无需任务专属的解析器。模型直接写中文 / 英文句子,省去了为每个领域编写 grammar 或 DSL 的成本。
  • 可解释性自然达成。Thought 直接暴露给用户和下游调试工具,比从模型 logits 中反推意图更可靠。
  • 支持跨任务迁移。同一套"边想边做"的模板可以套用到问答、决策、网页导航等完全不同的领域,只需要替换 Action 空间。

论文也指出 Thought 的局限:自然语言推理本质上是"自由发挥",有时会冗余、跳跃甚至自相矛盾;后续工作(如 Reflexion、Self-Refine)正是通过在 Thought 之上叠加反思 / 修订步骤来弥补这一不足。

不过用一个更现实的视角看 Thought 的"开销"问题:模型需要多生成一段推理文本,确实会增加 token 消耗,但在 2023 年的时点之后,大模型算力越来越强,这点计算量其实越来越不是瓶颈——真正值钱的,是 Thought 带来的可解释性与可纠错性,而非那几行额外的输出 token。

行动与观察:把外部世界接入推理链

Action 空间的设计是 ReAct 落地的关键。论文在 HotpotQA / Fever 等知识密集任务上预定义了 Search(搜索引擎)、Lookup(实体属性查询)、Finish(终止)三类动作;在 ALFWorld / WebShop 等交互环境上,则换成 GotoTakeOpen 等环境操作指令。

为了让模型准确选用工具,论文强调三点工程经验:

  1. 工具描述必须清晰、格式必须规整。模型在 prompt 中只看到几行工具说明,描述含糊或参数命名不一致会直接导致调用失败。
  2. Few-shot 示例至关重要。在 prompt 里给 2~3 条完整的 Thought-Action-Observation 样例,比任何说明文字都更能让模型"看懂套路"。
  3. Observation 必须有界。把搜索引擎的全文返回直接塞回 prompt 容易爆长度;论文通常只截取前若干字符或关键词,迫使模型按需再次 Lookup。

值得注意的是,在 2023 年前后大模型能力很大程度上取决于 prompt 怎么写,prompt 工程在那个阶段非常关键——同一套 ReAct 框架,配上精心设计的 Few-shot 示例和工具描述,效果可以比"裸 prompt"高出一截。这也是为什么论文里的示例 prompt 被反复研读、被后续工作反复改造。

实验结果与历史地位

论文在多个任务族上对比了 Standard、CoT(纯推理)、Act-only(纯行动)以及 ReAct 四种范式,核心结论是:

  • ReAct 在知识密集任务上击败纯 CoT——因为它能主动搜索到训练数据外的事实,减少幻觉;
  • ReAct 在多步推理任务上击败纯 Act-only——因为 Thought 帮助模型维持长期计划、避免在长 Horizon 任务中迷失;
  • 两者可正交组合:在 HotpotQA 上,先用 ReAct 推理再让人工标注关键事实补强 CoT,可以把准确率推到更高的水平,提示了"推理 + 行动 + 监督"三者协同的方向。

更深远的影响在于范式层面:今天我们讨论的 Agent Loop(感知→思考→行动→观察→反思),其骨架几乎都能追溯到 ReAct 的 Thought-Action-Observation 三元组。无论是 Reflexion 引入的自我反思、ReWOO 引入的离线规划,还是 Toolformer、AutoGPT、LangChain Agents,都是在这条循环上做加法。

局限与后续工作

论文本身也坦承 ReAct 的不足:

  • 思考过程仍偏自由,缺乏结构化校验手段;
  • 工具调用灵活性不足,新工具的接入仍依赖人工编写描述;
  • 单轮循环难以应对极复杂任务,需要更长 horizon 的规划与反思。

这些问题也成了 2024–2025 年 Agent 研究的热门方向:让思考更结构化(如 Logic-LM)、让模型自主发现新工具(如 OpenAgents、Gorilla)、让循环具备多轮规划与元反思能力(如 Plan-and-Execute、Reflexion)。可以说,ReAct 既是终点(解决了"边想边做"的问题),也是起点(开启了 Agent 框架百花齐放的时代)

更关键的是 ReAct 给 Agent 领域留下了一个可观测、可回放、可调试的闭环——Thought 是"为什么这么做",Action 是"做了什么",Observation 是"结果如何",三段都落在同一段 prompt 的文本里。开发者不必再面对一个只吐最终答案的黑箱,可以直接读 Thought 看出模型在哪一步走偏,把 ReAct 的失败案例改写成新的 Few-shot 样本反向喂回去。这种"问题→干预→观察→改进"的飞轮,正是后续 Self-Refine / Reflexion / Constitutional AI 等"自我反思"类工作得以生长的土壤。

Resources