ReAct: Synergizing Reasoning and Acting in Language Models

model 2210.03629
agentreasoningpromptingtool-usedecision-making

ReAct: Synergizing Reasoning and Acting in Language Models — L2 #

1. TL;DR #

把"思考"当成一种不改变环境的语言动作,塞进 agent 的动作空间 $\hat{A}=A\cup L$,让冻结的 PaLM-540B 用少样本交替生成 Thought/Action/Observation。推理指导取信息、取信息纠正推理,QA 上消灭幻觉,决策任务上 1–2 shot 反超训了 10³–10⁵ 条轨迹的 IL/RL。

2. Q1 / Q2 / Q3 #

Q1 — 痛点(要解决什么) #

两条独立的研究线各自残缺:

  1. 纯推理(CoT)是"静态黑箱"。模型只用自己的内部表示生成思维链,不与外部世界接地(not grounded),于是事实幻觉错误沿推理链传播成为主要失败模式。L1 Table 2 量化了这点:CoT 在 HotpotQA 上 56% 的失败来自 hallucination,成功样本里也有 14% 是"假阳性"(推理/事实是编的但答案碰巧对)。
  2. 纯行动(action-only planners,如 WebGPT/SayCan 风格)不做抽象推理。它们用语言先验预测下一个动作,但不维护 working memory、不对高层目标做抽象推理。结果是 agent 无法从上下文里判断"上一步动作有没有生效",在 ALFWorld 里表现为对着 sinkbasin 1 反复 take peppershaker 却"Nothing happens"仍不换策略(L1 Figure 1(2a))。
  3. 核心 gap:没人研究过把推理与行动以协同(synergistic)方式合起来做通用任务求解,也没人验证过这种合并是否比单独用其中之一有系统性收益

    Q2 — 方法(怎么解决) #

    一个极简的动作空间增广:把语言空间 $L$ 并进环境动作空间 $A$,得到 $\hat{A}=A\cup L$。落到语言空间的动作 $\hat{a}_t\in L$ 叫"thought / reasoning trace"——它对环境是 no-op(无 observation 反馈),只把自己追加进上下文 $c_{t+1}=(c_t,\hat{a}_t)$ 以支持后续推理或行动。这样推理与行动被折进同一个自回归动作生成循环,不需要单独的推理模块或控制器。

    两种使用模式:

    • dense thought(推理为主的任务,如 HotpotQA/Fever):thought 与 action 严格交替,每一步都是 thought→action→observation。
    • sparse thought(决策任务,如 ALFWorld/WebShop):让模型自己决定何时插入 thought(异步出现),只在关键位置思考。

    实现上全程用冻结的 PaLM-540B + 少样本 in-context(HotpotQA 6 例、Fever 3 例、ALFWorld/WebShop 每类任务 1–3 条人工轨迹),不改一个参数。另加一个 ReAct↔CoT-SC 回退启发式(ReAct 若在步数内答不出→退回 CoT-SC;CoT-SC 多数票占比

    核心技术壁垒:真正难复制的不是 prompt 格式,而是"thought 作为对环境无副作用、但会重写 agent 自身上下文的一等公民动作"这一表征选择——它让推理在闭环交互中动态生成,既能被外部 observation 纠偏(act→reason),又能反过来指导下一步取什么信息(reason→act),且无需任何额外训练或架构。所有下游收益(消幻觉、少样本反超 RL、可人工编辑思维)都从这一个表征决定派生。详见 §7。

    Q3 — 结果(做到什么程度) #

    • HotpotQA:ReAct 27.4 EM(略低于 CoT 29.4),但 ReAct→CoT-SC 组合 35.1 EM 为全场最佳
    • Fever:ReAct 60.9 Acc > CoT 56.3;CoT-SC→ReAct 64.6 为最佳
    • ALFWorld:最佳 ReAct 71% SR,绝对领先 BUTLER(37%)/best-Act(45%) +34%
    • WebShop:ReAct 40.0% SR,比前最佳绝对 +10%,且只用 1–2 shot 就反超训了 1,012 / 10,587 条轨迹的 IL / IL+RL。
    • 缩放交叉:prompt 时 ReAct 在小模型上最差,但仅 3,000 条轨迹微调后变为四法最佳(PaLM-8B-FT ReAct > 所有 62B prompting)。

    3. 架构 / 方法图 #

    ReAct 不是模型发布,其"架构"是动作生成循环的表征,而非网络结构。下图(论文 Figure 1)对同一 HotpotQA 问题并列 4 种 prompting 范式,直观展示 ReAct 相对 Standard / CoT / Act-only 的差异。

    Figure 1: four prompting paradigms on HotpotQA + Act-vs-ReAct on ALFWorld

    Paper's Figure 1(caption: "(1) Comparison of 4 prompting methods … solving a HotpotQA question. (2) Comparison of (a) Act-only and (b) ReAct prompting to solve an AlfWorld game.")。

    上半部分(1a→1d)应重点看 (1b) CoT 因幻觉答 "iPod"、(1c) Act-only 因缺推理答错 "yes",唯有 (1d) ReAct 交替 Thought/Action/Observation 收敛到正确的 "keyboard function keys"。下半部分 (2a) Act-only 陷入 "Nothing happens" 死循环,(2b) ReAct 先用常识推理"pepper shaker 更可能在 cabinet"再行动而成功——这正是 reason→act 的价值。

    ReAct 交互循环(把上面的行为抽象成状态流):

    flowchart LR C["上下文 c_t = (o_1,a_1,...,o_t)"] --> LLM["冻结 LLM (PaLM-540B)
    π̂(â_t | c_t)"] LLM -->|"â_t ∈ L (thought)
    对环境 no-op"| APP["c_{t+1} = (c_t, â_t)
    只重写上下文"] APP --> LLM LLM -->|"a_t ∈ A (action)"| ENV["环境 / Wikipedia API"] ENV -->|"o_{t+1} (observation)"| C

    关键在虚线之外的那条 thought 回边:thought 不进环境,只把 agent 自己的上下文变长,因此"想"和"做"共享同一个 decoding 循环,是 §2 Q2 所述表征选择的图示。

    • 顶层数据流(模型侧):N/A — ReAct 复用冻结 PaLM-540B,未改 tokenizer/embed/decoder/lm_head 任何结构
    • Attention / FFN / Norm 变体:N/A — 提示范式,非模型发布,不涉及架构改动

    4. 作者证明 #

    无形式化作者证明 — 仅实证。全文无编号 display 方程,仅两处 inline 记号(策略/上下文、动作空间增广),且无定理/收敛性证明。ReAct 的正确性完全由 §5 的实验与人工误差标注建立。下表列出这两处载荷记号供参照。

    记号含义出处
    $o_t\in O,\ a_t\in A$环境观测 / 动作§2
    $\pi(a_t\mid c_t)$策略,条件于全上下文§2
    $c_t=(o_1,a_1,\cdots,o_{t-1},a_{t-1},o_t)$交互上下文(轨迹前缀)§2
    $\hat{A}=A\cup L$增广动作空间(THE 核心式)§2
    $\hat{a}_t\in L$thought,对环境 no-op§2
    $c_{t+1}=(c_t,\hat{a}_t)$thought 只重写上下文§2

    方程物理意义:$\hat{A}=A\cup L$ 是全文唯一"公式",其物理意义是——推理不再是独立子系统,而是动作空间里的一类无环境副作用、只改自身记忆的动作。$c_{t+1}=(c_t,\hat{a}_t)$ 表明 thought 的全部作用就是把 working memory 拉长,从而让下一次 $\pi(\cdot\mid c_{t+1})$ 的条件分布更好。

    模型类 category 的额外要求(scaling-law fit / 参数分解表 / KV 容量预算 / 量化清单):N/A — 论文不发布权重、不做 scaling-law 拟合、不涉及量化。唯一可标注的经验缩放现象见 §5 Figure 3(prompt vs finetune 的规模交叉)。

    5. 实验与数据 #

    四个 benchmark,两半:知识密集推理(HotpotQA/Fever)+ 交互决策(ALFWorld/WebShop)。

    5.1 HotpotQA / Fever 主表 #

    Table 1: PaLM-540B prompting results on HotpotQA and Fever

    Paper's Table 1(caption: "PaLM-540B prompting results on HotpotQA and Fever.")。

    要点:ReAct(27.4) > Act(25.7) 在两任务都成立,说明推理指导取信息有价值;ReAct 在 Fever 上 60.9 > CoT 56.3,但在 HotpotQA 上 27.4 略输 CoT 29.4——这不是隐藏而是明确的失败行。真正的赢家是两个组合法 ReAct→CoT-SC 35.1 / CoT-SC→ReAct 64.6。注意所有 prompting 法离 Supervised SoTA(67.5/89.5) 都还很远。

    5.2 ReAct vs CoT 的成功/失败模式(为什么 ReAct 更可信) #

    Table 2: success and failure modes of ReAct vs CoT on HotpotQA

    Paper's Table 2(caption: "Types of success and failure modes of ReAct and CoT on HotpotQA … percentages in randomly selected examples studied by human.")。

    这是全文最有解释力的一张表:CoT 的 hallucination 占失败的 56%、假阳性 14%;ReAct 因接地把 hallucination 压到 0%、假阳性 6%。代价是 ReAct 的 reasoning error 反而升到 47%(CoT 仅 16%)——结构化交替约束了推理灵活性,且 23% 失败来自"搜索无信息"derail 了推理。这就是作者反复强调的factuality ↔ flexibility 权衡

    5.3 缩放:prompt vs finetune 的规模交叉 #

    Figure 3: scaling results for prompting and finetuning on HotpotQA

    Paper's Figure 3(caption: "Scaling results for prompting and finetuning on HotPotQA with ReAct (ours) and baselines.")。

    左(prompt)图里 ReAct 在 8B/62B 上四法最差——同时学推理和行动对 in-context 太难;右(finetune)图里仅 3,000 例微调后 ReAct 反超,PaLM-62B-FT ReAct 超过所有 540B prompting。作者解释:微调 Standard/CoT 只是教模型背(可能幻觉的)事实,而微调 ReAct/Act 教的是"如何行动去 Wikipedia 取信息"这种更可泛化的技能。

    5.4 ALFWorld 分任务成功率 #

    Table 3: ALFWorld task-specific success rates

    Paper's Table 3(caption: "AlfWorld task-specific success rates (%). … All methods use greedy decoding, except that BUTLER uses beam search.")。

    best-ReAct 71% 全面碾压 best-Act 45% 与 BUTLER 37%,且最差的 ReAct trial(48%) 都超过两个基线的最好 trial。ReAct-IM(用 Inner-Monologue 式密集外部反馈替换自由 thought)只有 53%,六类任务里五类不如 ReAct——证明"真正的 inner reasoning"(目标分解+子目标追踪+常识定位)而非单纯环境反馈复述,才是收益来源。

    5.5 WebShop 得分与成功率 #

    Table 4: score and success rate on WebShop

    Paper's Table 4(caption: "Score and success rate (SR) on Webshop. IL/IL+RL taken from Yao et al. (2022).")。

    ReAct 40.0% SR 比 IL(29.1)/IL+RL(28.7) 绝对高约 10 个点,而后两者分别训了 1,012 / 10,587 条轨迹。人类专家 59.6% 仍显著领先——说明 prompting agent 在需要大量商品探索与查询重述的任务上离人类还有距离。

    6. 论证链 #

    #论证步骤依据(paper-internal)
    1若推理与行动被并入同一动作空间 $\hat{A}=A\cup L$,thought 可在闭环中被 observation 纠偏、也可指导取信息§2 表征定义 + Figure 1(1d) 定性轨迹
    2于是接地能消除 CoT 的幻觉:ReAct 幻觉率 0% vs CoT 56% 失败来自幻觉Table 2 人工标注
    3但结构化交替牺牲推理灵活性 → ReAct 单用时 reasoning error 47% > CoT 16%,HotpotQA EM 27.4 < CoT 29.4Table 1 + Table 2
    4故用回退启发式融合内外知识:ReAct↔CoT-SC 组合两任务均显著超单法(35.1 / 64.6),且 3–5 样本即达 CoT-SC 21 样本水平Table 1 + Figure 2
    5在动作空间大、稀疏奖励的决策任务上,sparse-thought ReAct 用 1–2 shot 反超训了 10³–10⁵ 轨迹的 IL/RL(ALFWorld +34%、WebShop +10%)Table 3 + Table 4
    6且 ReAct 学到的是"行动取信息"这种可迁移技能:仅 3,000 例微调即从四法最差变最佳,小模型微调超大模型 promptingFigure 3

    7. 实现 cross-reference #

    • 官方 GPT-3 ReAct 提示与代码:作者在 Reproducibility Statement / Appendix A.1 给出 https://react-lm.github.io/(及匿名镜像 https://anonymous.4open.science/r/ReAct-2268/)。主实验用的 PaLM 未开源,因此模型侧 [实现未公开]
    • 完整 few-shot exemplar(四格式 Standard/Act/CoT/ReAct)见论文 Appendix C.1–C.4,L1 已逐字保留代表性轨迹(Colorado orogeny 例)。

    核心技术壁垒(展开):ReAct 唯一真正难复制的不是任何工程 trick,而是把 thought 定义为"环境无副作用、只重写 agent 上下文"的一类合法动作(§2 $\hat{A}=A\cup L$,$c_{t+1}=(c_t,\hat a_t)$)。这一个表征决定同时买到四样东西:(a) 推理能被真实 observation 纠偏(消幻觉,Table 2 的 0%);(b) 推理能指导下一步取什么信息(Act→ReAct 的增益);(c) 无需训练即可在任意动作空间上运行(1-shot 反超 RL);(d) 思维可被人工编辑以在线纠偏(Appendix A.3 改两条 thought 即救活轨迹)。竞品失败正因缺此表征:Inner Monologue 的"inner monologue"只是环境反馈复述而非自由推理(ReAct-IM 71 vs 53 的差距即其代价);WebGPT/SimpleTOD 完全不显式建模推理。

    关键实现细节(易忽略)

    1. 故意用弱 Wikipedia API——search 只返回前 5 句、lookup 只是 Ctrl+F。作者是有意削弱检索以逼模型用语言显式推理"下一步查什么",而非追求 SOTA 检索。这是反直觉的设计(handicap = feature)。
    2. dense vs sparse thought 的切换由任务性质决定:推理任务强制交替,决策任务让模型自行决定 thought 何时出现——同一 prompt 结构在两类任务上写法不同。
    3. 回退步数阈值(HotpotQA 7 步 / Fever 5 步)是经验调的,>该步数几乎不再提升(正确轨迹里用满步数的仅 0.84% / 1.33%)。
    4. 重复循环失败:贪心解码下 ReAct 常反复生成同一 thought/action 卡死,作者归为 reasoning error 并推测 beam search 可缓解(footnote 4)。
    5. 8. 部署 / 服务考量 #

      N/A — 非模型发布,无权重可部署。唯一与服务相关的启示:ReAct 的多步 Thought/Action/Observation 交替会显著拉长上下文(每步都追加 observation),在长 horizon 决策任务上容易触碰 in-context 长度上限——作者在 §6 Conclusion 明确点出"复杂任务大动作空间需要更多 demonstration,容易超过输入长度限制",这是把 ReAct 投产时最先撞到的成本墙。

      9. 开放问题 #

      • 规模饱和/反转:prompt 时 ReAct 在小模型最差、大模型才显优,微调后又反转(Figure 3)。其"同时学推理+行动"的收益在什么容量以下会彻底崩掉、以上会饱和?
      • 可迁移性:ReAct 目前只在文本环境验证。把 thought-as-action 表征迁到视觉/具身/音频模态(observation 非纯文本)是否仍成立?
      • 解码脆弱性:重复循环是贪心解码的产物还是范式内在缺陷?更好的解码(beam/采样)能否在不牺牲接地的前提下降低 47% 的 reasoning error?
      • 外部知识时效:ReAct 有时比 gold label 更"对"(Figure 4 的过时标签),这对 benchmark 评测本身提出质疑——如何区分"agent 错"与"标签过时"?

      Appendix: 模型架构图 #

      N/A — ReAct 为提示范式,复用冻结 PaLM-540B / GPT-3,无自研模型代码可提取架构图。方法侧的数据流已在 §3 用 Mermaid 交互循环图给出;六类必画架构图(Top-Level / Block / Attention 变体 / 辅 Attention / 选择机制 / 残差机制)均不适用,因为论文未改动任何底层网络结构。

      补充:两处关键"证据"图(人机协同与标签时效) #

      Figure 5: human-in-the-loop behavior correction on ALFWorld

      Paper's Figure 5(caption: "A human-in-the-loop behavior correction example with ReAct in AlfWorld. (a) ReAct trajectory fails due to a hallucinating thought (Act 17). (b) By a human simply editing two thoughts (Act 17, 23), the ReAct trajectory produces desirable reasoning traces and actions and succeeds.")。

      这张图坐实了 §7 壁垒里的第 (d) 点:因为 thought 是显式、可读、可编辑的一等公民,人只需删掉一句幻觉 thought、加两句提示,就能扭转整条失败轨迹——这在只输出动作序列的 Act/RL 里无法做到(不能改参数、改几个动作也不影响其余行为)。

      Figure 4: HotpotQA example where the gold label is outdated

      Paper's Figure 4(caption: "Another example HotpotQA question, where the original label is outdated. Only ReAct is able to obtain the up-to-date answer thanks to real-world web interaction plus reasoning.")。

      图中 Standard/CoT 因幻觉答错,Act 虽能上网却因缺推理仍失败,唯有 ReAct 用"取信息+推理"拿到最新答案——支撑 §9 关于"agent 可能比过时 benchmark label 更正确"的开放问题。