banner
约 3,300 字
11 分钟

ReAct: Synergizing Reasoning and Acting in Language Models论文阅读

摘要

本文解读 ICLR 2023 论文 ReAct: Synergizing Reasoning and Acting in Language Models。论文提出 ReAct prompting,将语言模型的推理轨迹与环境行动交替生成,使模型能够一边思考、一边查询外部信息或操作环境,从而提升知识密集型问答、事实验证和交互式决策任务的表现。

ReAct: Synergizing Reasoning and Acting in Language Models论文阅读

写在前面

ReAct 是今天很多 Agent 系统的基础范式。它把大语言模型的输出拆成三类信号:ThoughtActionObservation

这篇论文的重要性不在于提出复杂模型结构,而在于给出了一个简单但影响深远的交互模式:模型不再只是在内部生成推理链,也不再只是机械调用工具,而是在推理和行动之间循环。

如果用一句工程化语言概括,ReAct 是早期 LLM Agent 的核心控制循环雏形。


速读卡片

项目

内容

论文

ReAct: Synergizing Reasoning and Acting in Language Models

作者

Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, Yuan Cao

会议/版本

ICLR 2023;arXiv v3 为 camera-ready version

论文主页

https://react-lm.github.io/

arXiv

https://arxiv.org/abs/2210.03629

代码

https://github.com/ysymyth/ReAct

核心问题

如何让语言模型同时具备显式推理和外部行动能力

方法

在 prompt 中交替生成 ThoughtActionObservation

任务

HotpotQA、FEVER、ALFWorld、WebShop

主要结论

推理帮助行动更有计划,行动帮助推理更接地

适合读者

想理解 Agent、Tool Use、Reasoning-Acting loop 的读者


一句话概括

ReAct 让语言模型在任务执行过程中交替生成推理轨迹和环境行动:推理用于规划、记忆和纠错,行动用于检索外部信息或改变环境状态,两者结合后比单独推理或单独行动更可靠。


研究问题

论文关注两个原本相对分离的方向。

第一类是 reasoning。典型代表是 Chain-of-Thought,模型通过中间推理步骤解决问题。但 CoT 主要依赖模型内部知识,无法主动访问外部环境,因此容易产生事实幻觉,也难以及时修正错误。

第二类是 acting。模型可以生成行动,例如搜索网页、点击按钮、执行环境操作。但如果缺少显式推理,行动往往缺少目标分解、状态跟踪和异常处理能力。

ReAct 的问题定义正是在这两者之间建立闭环:语言模型能否一边推理,一边行动,并根据外部反馈更新后续推理。


核心方法

ReAct 的方法非常直接:把语言模型的动作空间扩展为两部分。

纯文本
原始动作空间:Action
扩展动作空间:Action + Thought

其中 Thought 是语言形式的内部推理,不直接改变外部环境;Action 是对环境的操作,例如搜索、查找、点击、移动、拿取物体或提交答案;Observation 是环境返回给模型的新信息。

一个典型 ReAct 循环如下:

纯文本
Thought: 当前需要解决什么子问题
Action: 执行搜索、查询或环境操作
Observation: 获得外部反馈
Thought: 根据反馈更新计划
Action: 继续执行
...
Finish: 输出答案或完成任务

论文用 HotpotQA 和 ALFWorld 展示了 ReAct 与 Standard、CoT、Act-only 的差异。

ReAct 与 Standard、CoT、Act-only 的对比
ReAct 与 Standard、CoT、Act-only 的对比

图中可以看到,CoT 只有推理,没有外部反馈;Act-only 有行动,但缺少显式计划;ReAct 则在搜索、观察和推理之间交替进行。这个结构使模型能够根据检索结果调整下一步行动。


为什么 ReAct 有效

ReAct 的有效性来自推理与行动的互补。

推理的作用包括:

  • 分解任务目标;

  • 记录当前进度;

  • 提取观察结果中的关键信息;

  • 发现搜索失败或行动失败;

  • 重新规划下一步行动。

行动的作用包括:

  • 查询外部知识;

  • 获取实时或更准确的信息;

  • 改变交互环境状态;

  • 验证模型内部推理是否成立。

因此,ReAct 不是单纯让模型“想得更久”,而是让推理过程被外部观察不断校正。


实验设置

论文在两类任务上评估 ReAct。

第一类是知识密集型推理任务:

  • HotpotQA:多跳问答;

  • FEVER:事实验证。

这类任务中,模型可以使用一个简化 Wikipedia API,包括 search[entity]lookup[string]finish[answer]

第二类是交互式决策任务:

  • ALFWorld:文本形式的家庭环境任务;

  • WebShop:在线购物网页导航任务。

这类任务中,模型需要在长时序环境里完成目标,例如寻找物品、移动物品、筛选商品、选择选项并提交购买。

论文主要使用 PaLM-540B 进行 few-shot prompting,并在附录中补充 GPT-3 实验。


结果一:知识问答中,ReAct 更接地

HotpotQA 和 FEVER 的结果如下。

HotpotQA 与 FEVER 上的 prompting 结果
HotpotQA 与 FEVER 上的 prompting 结果

单独看 ReAct,它在 FEVER 上达到 60.9% accuracy,高于 CoT 的 56.3% 和 Act-only 的 58.9%。在 HotpotQA 上,ReAct 的 27.4 EM 略低于 CoT 的 29.4 EM。

这说明 ReAct 并不是在所有知识问答指标上直接超过 CoT。它的优势在于让推理更接地,尤其适合需要外部事实验证的任务。

论文进一步提出 ReAct 与 CoT-SC 结合:

  • CoT-SC -> ReAct:当 CoT-SC 多数答案不够稳定时,切换到 ReAct;

  • ReAct -> CoT-SC:当 ReAct 在限定步数内没有完成时,回退到 CoT-SC。

ReAct 与 CoT-SC 结合的结果
ReAct 与 CoT-SC 结合的结果

结果显示,组合方法在 HotpotQA 和 FEVER 上都能超过单独 CoT-SC。这说明内部知识和外部知识不是替代关系,而是互补关系。


结果二:ReAct 降低幻觉,但会引入检索依赖

论文人工分析了 HotpotQA 上 ReAct 和 CoT 的成功与失败模式。

ReAct 与 CoT 的成功和失败模式
ReAct 与 CoT 的成功和失败模式

表中最重要的结论是:CoT 的失败主要来自幻觉,失败样本中 56% 与 hallucination 有关;ReAct 的失败中 hallucination 为 0%,但有 23% 来自 search result error。

这揭示了 ReAct 的取舍。

ReAct 将一部分内部幻觉风险转移成外部检索风险。它更事实驱动、更可检查,但如果搜索结果为空、检索实体错误或观察信息不足,后续推理也可能被带偏。

因此,ReAct 并没有消除错误,只是让错误来源更可见、更容易诊断。


结果三:微调后 ReAct 潜力更明显

论文还研究了少量 ReAct 轨迹微调小模型的效果。

ReAct prompting 与 finetuning 的 scaling 结果
ReAct prompting 与 finetuning 的 scaling 结果

在纯 prompting 设置下,小模型很难从少量示例中同时学会推理和行动。但用 3000 条正确 ReAct 轨迹进行微调后,ReAct 成为表现最好的方法。

论文指出,PaLM-8B 微调 ReAct 可以超过所有 PaLM-62B prompting 方法;PaLM-62B 微调 ReAct 可以超过所有 PaLM-540B prompting 方法。

这个结果说明 ReAct 不只是 prompt 技巧,也可以作为训练数据格式。后续很多 Agent trajectory training 的思路,都可以在这里看到早期雏形。


结果四:交互式任务中,ReAct 明显优于 Act-only

在 ALFWorld 中,ReAct 需要在文本家庭环境里完成任务。结果如下。

ALFWorld 任务成功率
ALFWorld 任务成功率

最佳 ReAct trial 的整体成功率为 71%,显著高于 Act-only 的 45% 和 BUTLER 的 37%。论文特别强调,即使最差的 ReAct trial 也能达到 48%,仍高于 Act-only 和 BUTLER 的最佳结果。

在 WebShop 中,ReAct 也带来明显提升。

WebShop 任务结果
WebShop 任务结果

ReAct 的成功率为 40.0%,高于 Act-only 的 30.1%、IL 的 29.1% 和 IL+RL 的 28.7%。这说明在网页导航和商品筛选任务中,显式推理可以帮助模型识别哪些产品属性与用户需求真正相关。


案例:ReAct 如何处理过期知识

论文附录中给出一个很有代表性的 HotpotQA 案例:数据集标签已经过期。

ReAct 获取更新知识的案例
ReAct 获取更新知识的案例

Standard 和 CoT 依赖内部知识,给出了错误或过期答案。Act-only 虽然可以访问网页,但缺少推理引导,无法完成有效搜索链。ReAct 则通过搜索、观察和后续推理,找到了更新后的信息。

这个案例说明 ReAct 的价值不只是提高分数。更重要的是,它把模型从静态知识库变成了可以主动验证信息的交互式系统。


案例:推理轨迹让人工纠错更容易

ReAct 的另一个优点是可编辑性。论文展示了一个 ALFWorld 中的人类介入案例。

Human-in-the-loop ReAct 行为纠正案例
Human-in-the-loop ReAct 行为纠正案例

原始 ReAct 轨迹因为一个错误 thought 失败。人类只需要修改少量 thought,就能改变后续行动轨迹,使任务最终成功。

这说明 Thought 不只是给模型看的中间文本,也是人类理解和干预模型行为的接口。相比直接修改模型参数或逐条指定行动,编辑 thought 更轻量,也更接近人类协作方式。


案例:WebShop 中的思考如何改善选择

WebShop 示例展示了 ReAct 如何避免表面匹配。

WebShop 中 Act 与 ReAct 的轨迹对比
WebShop 中 Act 与 ReAct 的轨迹对比

Act-only 直接选择了搜索结果中并不满足价格和口味要求的商品。ReAct 则显式分析候选商品是否符合“apple cinnamon”“sixteen pack”“price lower than 50.00 dollars”等约束,再点击合适选项。

这个案例体现了 ReAct 在网页环境中的作用:它把网页观察转化为可检查的条件判断。


核心贡献

论文贡献可以概括为四点。

第一,提出 ReAct prompting。它将语言模型的推理轨迹和环境行动交替生成,形成统一的任务求解轨迹。

第二,在多类任务上验证 ReAct。论文覆盖知识问答、事实验证、文本游戏和网页导航,说明该范式具有较强通用性。

第三,系统分析 reasoning 与 acting 的互补关系。推理能让行动更有计划,行动能让推理更事实驱动。

第四,展示 ReAct 的可解释性和可控性。人类可以通过阅读或编辑 thought 理解并干预模型行为。


局限性

ReAct 也有明显限制。

第一,prompt 长度限制会约束复杂任务。对于大动作空间和长轨迹任务,少量 in-context 示例可能不足以覆盖足够多的行为模式。

第二,ReAct 依赖外部行动质量。搜索失败、观察不完整或环境反馈噪声都会影响后续推理。

第三,ReAct 可能出现循环或重复行动。论文在错误分析中提到,模型有时会重复生成之前的 thought 和 action,无法跳出错误轨迹。

第四,ReAct 暴露了更强的外部行动能力,也带来安全风险。论文在 ethics statement 中提醒,如果模型连接真实网页、物理环境或敏感系统,需要严格限制行动空间。


未来工作

论文提出了几个方向。

第一,使用更多高质量人工轨迹进行微调。初步实验已经显示,ReAct 轨迹训练可以显著提升小模型表现。

第二,扩大到多任务训练。让模型在更多任务中学习通用的 thought-action-observation 结构,可能比单任务 prompt 更稳定。

第三,将 ReAct 与强化学习结合。ReAct 提供可解释轨迹,RL 可以进一步优化长时序决策。

第四,研究更系统的人类介入机制。论文只展示了 thought editing 的初步案例,后续可以发展成更完整的人机协作范式。

第五,设计更安全的行动边界。未来 Agent 接入真实工具和环境时,需要权限、沙箱、审计和回滚机制配合。


对 Agent 系统的启发

ReAct 对今天的 Agent 系统仍然有直接启发。

第一,工具调用不能脱离推理。模型需要说明为什么调用某个工具、期望获得什么信息、观察结果如何改变下一步计划。

第二,推理也不能脱离环境。只依赖模型内部知识会放大幻觉风险,尤其在知识更新快或事实要求高的场景中。

第三,Agent 轨迹应该可读。Thought -> Action -> Observation 的结构不仅服务模型,也服务调试、审计和人工接管。

第四,少样本 prompt 可以验证范式,但生产系统需要训练和工程约束。ReAct 的思想需要与权限系统、工具描述、上下文管理和失败恢复结合,才能形成可靠 Agent。

第五,ReAct 的价值不只是“让模型思考”。它真正重要的地方,是把思考放进一个可观察、可反馈、可干预的闭环中。


小结

ReAct 是一篇基础性 Agent 论文。它用非常简洁的方式回答了一个核心问题:语言模型如何同时推理和行动。

论文的结论可以浓缩为一句话:推理让行动更有目标,行动让推理更接近事实。

从今天的视角看,ReAct 已经成为许多工具调用 Agent、浏览器 Agent、代码 Agent 和多步骤任务系统的基本结构。理解 ReAct,有助于理解为什么现代 Agent 不只是一次模型调用,而是一条不断被观察结果修正的执行轨迹。

END