姚顺雨力作精读:ReAct Synergizing Reasoning and Acting

【姚顺雨力作精读】ReAct: Synergizing Reasoning and Acting inLanguageModel
在探索AI Agent的道路上,我们是不是经常遇到这样的“猪队友”:
- 1. “满嘴跑火车”型(CoT): 你让它推理个复杂问题,它用Chain-of-Thought(CoT)洋洋洒洒写了一堆,看似逻辑严密,结果事实全靠“编”(幻觉)。
- 2. “闷头莽干”型(Act-Only): 你让它执行个任务,它二话不说就是干,撞了南墙也不回头,不知道规划、不懂得变通。
LLM做Agent,难道就只能在“瞎说”(幻觉)和“瞎做”(无效行动)之间反复横跳吗?
今天,咱们挖到一篇堪称“上古神器”的ICLR 2023杰出论文—— ReAct !它真正教会了LLM如何像人一样“三思而后行”。
这篇论文不仅在当时技惊四座,更是直接奠定了当今主流Agent框架(比如LangChain)的基石。读懂了ReAct,你就抓住了现代Agent架构的灵魂。
论文速览:ReAct是做什么的?
论文标题: ReAct: Synergizing Reasoning and Acting in Language Models
作者: Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik
Narasimhan, Yuan Cao (来自普林斯顿大学和谷歌大脑团队)
GitHub: https://github.com/ysymyth/ReAct
ReAct提出了一种全新的范式,其核心思想是: 协同(Synergizing)推理(Reasoning)和行动(Acting) 。
它不再让LLM“要么只思考”(CoT),“要么只行动”(Act-Only),而是让LLM交错(Interleaved)地生成这两者。
简单来说,LLM的工作流变成了:
- 1. 推理(Reasoning): LLM先生成一个“Thought”(思考轨迹),分析当前情况、制定计划、更新策略。
- 2. 行动(Acting): LLM再根据这个“Thought”,生成一个“Action”(具体行动),比如调用API、搜索知识库或在环境中执行操作。
这种方式实现了完美的协同:
- • 推理指导行动: 思考帮助模型规划复杂的行动步骤,处理异常情况。
- • 行动反哺推理: 行动从外部环境(如维基百科、网页)获取到新信息(Observation),这些信息又被送回LLM,用于下一轮的推理和修正。
这就是ReAct的魔力: Thought -> Action -> Observation -> Thought … 循环往复,直到任务完成。
核心技术深度解析:ReAct的“三思而后行”循环
光说不练假把式。ReAct的威力在论文的图1中展现得淋漓尽致。

(图1说明:这张图是ReAct的核心,它对比了(1) HotpotQA和(2) ALFWorld两个任务下,Standard, CoT, Act-Only, ReAct四种方法的具体轨迹。)
场景一:知识问答 (HotpotQA) —— 终结幻觉
问题: 除了Apple Remote,还有什么设备可以控制Apple Remote最初设计用于交互的程序?
我们来看看不同方法的表现(参考上方的Figure 1 (1)区):
- • (a) Standard (标准提问): 瞎猜
iPod。(错误) - • (b) CoT (仅推理): 产生幻觉。它“编造”出Apple Remote是为Apple TV设计的,然后又“编造”出Apple TV可以被iPhone、iPad控制。(错误)
- • (c) Act-Only (仅行动): 迷失了。它搜索了Apple Remote,又搜索了Front Row,但无法将信息综合起来得出最终答案。(错误)
- • (d) ReAct (推理+行动): 这才是人类的解题思路!
- • Thought 1: 我需要搜索Apple Remote,找到它最初设计的程序。
- • Act 1:
Search[Apple Remote] - • Obs 1: 观察到Apple Remote最初是为
Front Row media center program设计的。 - • Thought 2: OK,现在我知道程序是Front Row了。我需要搜索Front Row,看还有什么能控制它。
- • Act 2:
Search[Front Row] - • Obs 2: 没找到”Front Row”。
- • Thought 3: 搜索失败了。我换个关键词,试试
Front Row software。 - • Act 3:
Search[Front Row software] - • Obs 3: 观察到Front Row是一个媒体中心软件。
- • Thought 4: 观察到Front Row软件可以被
keyboard function keys(键盘功能键)控制。 - • Act 4:
Finish[keyboard function keys](得出答案)
看明白了吗? ReAct通过与外部Wikipedia API的真实交互,一步步验证和获取信息,彻底避免了CoT的“闭门造车”式幻觉。
场景二:决策制定 (ALFWorld) —— 智能规划
任务: 把胡椒研磨器(pepper shaker)放到抽屉里。
我们来看看不同方法的表现(参考上方的Figure 1 (2)区):
- • (a) Act-Only (仅行动): 像个无头苍蝇。它去抽屉1,打开,没找到。又去水槽,还是没找到。然后就卡住了,开始重复无效动作。(失败)
- • (b) ReAct (推理+行动): 展现了强大的规划能力!
- • Thought 1 (Act 1): 任务是放胡椒粉。我得先找到它。它可能在橱柜(1-6)或台面(1-3)。
- • Act 2:
go to cabinet 1 - • … (省略搜索其他橱柜) …
- • Act 6:
go to countertop 3 - • Obs 6: 在台面3上看到了胡椒研磨器(pepper shaker 1)。
- • Act 7:
take pepper shaker 1 from countertop 3 - • Obs 7: 拿起了胡椒研磨器。
- • Thought 2 (Act 8): 很好,我拿到胡椒研磨器了。下一步,我需要把它放到抽屉1里。
- • Act 9:
go to drawer 1 - • …
- • Act 11:
put pepper shaker 1 in/on drawer 1
ReAct的“Thought”清晰地展示了它的 任务分解能力 (先找、再拿、再放)和 状态跟踪能力 (我知道我拿到东西了,该进行下一步了)。
实验验证:狂“秀”肌肉的ReAct
ReAct在两大类任务上都取得了SOTA(或接近SOTA)的成绩。
1. 知识密集型任务 (HotpotQA, Fever)
在这类任务上,ReAct最大的敌人是CoT的“幻觉”。

(Table 1说明:展示了在HotpotQA和Fever任务上,ReAct与Standard、CoT、Act等方法的性能对比。)

(Figure 2说明:展示了ReAct + CoT-SC组合方法相比CoT-SC的巨大优势。)
- • ReAct > Act: ReAct始终优于Act-Only,证明了“思考”对于指导“行动”的价值。
- • ReAct vs. CoT (幻觉分析): 论文(Table 2)做了一个精彩的错误分析。在HotpotQA上,CoT的失败案例中,有56%是源于“事实幻觉”(Hallucinated reasoning trace or facts)。而ReAct呢? 0% !因为ReAct的所有信息都来自外部API的真实反馈。

(Table 2说明:详细分析了ReAct和CoT在HotpotQA上的成功和失败模式,ReAct在“幻觉”一项上为0%。)
- • ReAct + CoT (强强联合): 论文还发现,将ReAct(擅长获取外部事实)和CoT-SC(擅长利用内部知识推理)结合起来,能达到最佳效果(见Figure 2)。

(Figure 4说明:这是一个HotpotQA的补充例子,显示了CoT等方法受限于“过时”的知识,而ReAct通过API交互获取了“最新”的正确答案。)
2. 决策制定任务 (ALFWorld, WebShop)
在这类任务上,ReAct要挑战的是需要大量数据训练的模仿学习(IL)和强化学习(RL)方法。

(Table 3说明:展示了在ALFWorld任务上,ReAct (71%) 远超 Act-Only (45%) 和 SOTA的BUTLER (37%)。)

(Table 4说明:展示了在WebShop任务上,One-shot ReAct (40.0%) 显著优于IL+RL (28.7%)。)
结果令人震惊:
- • ALFWorld (文字游戏): 仅用 2个 in-context examples,ReAct (Best) 达到了 71% 的成功率,而Act-Only (Best) 只有45%,之前SOTA的BUTLER(需要 数据训练)只有37%!
- • WebShop (网页购物): 仅用 1个 in-context example,ReAct (40.0% SR) 再次击败了需要数千甚至上万数据训练的IL+RL方法 (28.7% SR)。
3. Finetuning的巨大潜力
你可能会说,ReAct这种复杂的Thought-Act提示,小模型肯定学不会。

(Figure 3说明:展示了模型规模对Prompting和Finetuning的影响。在Finetuning时,ReAct在小模型(8B, 62B)上表现最好。)
论文(图3)在PaLM-8B和62B上做了实验:
- • Prompting (提示): 在小模型上,ReAct表现确实不如CoT或Act(因为它太复杂了)。
- • Finetuning (微调): 奇迹发生了!一旦进行微调,ReAct(教模型学会“如何思考和行动”)的效果飙升,成为最佳方法,远超CoT(教模型“死记硬背知识”)。
这证明了: ReAct是一种可学习的、通用的问题解决技能!
智使解读:ReAct为何成为Agent的“标配”?
ReAct的意义远超一篇普通的学术论文,它为后来的Agent研究指明了方向。
亮点1:可解释性 & 可信赖性 (Interpretability & Trustworthiness)
CoT的推理过程是个“黑盒”,你不知道它为什么突然“灵光一闪”或者“胡说八道”。但ReAct的“Thought”日志让我们清楚地看到Agent每一步在想什么,为什么这么做,它的信息来源是哪里。这是从“黑盒推理”到“白盒推理”的巨大飞跃。
亮点2:可控性 (Human-in-the-Loop)

(Figure 5说明:展示了人类如何通过编辑Agent的Thought (Act 17, 23),将其从失败轨迹纠正为成功轨迹。)
论文(图5)展示了一个超酷的应用:如果Agent在执行任务时想错了(比如它在Act 17产生了幻觉,以为找到了钥匙),人类可以直接介入, 编辑它的Thought (比如删除幻觉,增加提示)。Agent在下一轮思考时,就会基于修正后的Thought继续执行,从而纠正错误行为。这是传统RL或IL方法难以实现的实时控制。
亮点3:强大的泛化能力与效率
ReAct是一种通用的“解决问题”的元技能(Meta-Skill),而不是针对特定任务的死板策略。它在知识问答和复杂决策上都能奏效,并且是以Few-
Shot(甚至One-Shot)的方式,极大地提高了数据效率。
ReAct的深远影响(结合GitHub)
如果你现在打开主流的Agent框架 LangChain ,你会发现,它最核心的Agent类型之一就叫 Zero-shot ReAct Agent 。
这篇2023年的论文,已经成为了当今Agent架构的事实标准和基础。
结论
ReAct通过简单的“思考-行动-观察”交错提示,完美地协同了LLM的推理能力和行动能力,是LLM Agent发展史上的里程碑。它让我们看到了构建真正智能、可控、可信的Agent的曙光。
当然,ReAct也有局限性,比如复杂的任务需要更长的Thought- Act轨迹,这可能会超出LLM的上下文窗口限制(论文也提到Finetuning是解决之道)。
读完这篇硬核解读,你有什么新的启发吗?
- • 你认为ReAct这种模式还有哪些可以改进的地方?
- • 你心目中理想的AI Agent应该是什么样的?
欢迎在评论区留下你的思考!
以上就是今天分享的全部内容。如果觉得有所收获,记得一键三连,点个 关注、分享、喜欢 , 也 欢迎将文章分享给更多有需要的同学 。
我创建了一个高质量的 「论文研读社群」,专注于大模型、AI Agent等方向。在这里,我们 每日打卡 (精读并分享最新的Agent动态和顶会论文), 定期讨论 (围绕关键技术与研究思路进行深入交流), 资源共享 (共享高质量的学习资料与科研工具)。后台私信或下方扫码” Agent ”拉你入群。
