一句话定义
ReAct = Reason + Act:让模型在"思考(Thought)"与"行动(Action)"之间交替——先想清楚为什么要做这一步,行动后把观察(Observation)纳入再想下一步,是 2022 年提出、至今仍是 Agent 循环默认推理结构的模式。
为什么重要
它是 kp-006 那个循环的"灵魂填充"。在 ReAct 之前,两条路线各有致命伤:只推理(Chain-of-Thought)不与外界交互,错了没法纠;只行动不显式推理(Act-only),模型乱试一气。ReAct 用一个简单到不可思议的格式——Thought/Action/Observation 三行循环——把两者缝在一起,在 HotpotQA 等基准上同时提升准确率、可解释性与错误收敛速度。今天几乎所有 Agent 的系统提示里都活着 ReAct 的基因,哪怕形式已变成原生工具调用。
前置知识
kp-006(循环)、kp-004(提示工程)。
核心概念
原始 ReAct 轨迹(论文格式)
Question: 特斯拉创始人出生在哪个国家?
Thought 1: 我需要先查特斯拉创始人是谁。
Action 1: search[特斯拉 创始人]
Observation 1: 特斯拉由马斯克等人创立……马斯克出生于南非比勒陀利亚。
Thought 2: 题目问国家,观察说南非比勒陀利亚,比勒陀利亚在南非。
Action 2: finish[南非]
三个组成部分的分工:
- Thought:显式暴露的推理——为什么选这个行动、期望得到什么。它同时服务三个目的:提高下一步质量(中间结果可条件依赖)、给人看可解释性、失败时给人调试线索(kp-025)
- Action:结构化的行动指令(原论文是文本模板,今天 = 函数调用 kp-009)
- Observation:环境返回,无条件进入下一轮 Thought 的条件——这就是"用事实纠偏推理"的机制
现代形态:从文本模板到原生调用
2022 年的 search[...] 靠正则解析;今天等效写法就是 kp-006 的消息流——模型在 tool_use 前后产出文本推理。区别只在协议层,"想→做→看→再想"的结构没变。推理模型时代(o 系列、extended thinking)把 Thought 藏进了内部推理通道,但它仍在做 ReAct:思考通道里的推理 + 工具调用 + 观察,只是 Thought 不再占用可见输出。
原理与机制
为什么"写出来 Thought"能提升效果?三个机制叠加:
- 条件的中间产物:kp-004 讲过,模型是续写器——写下的推理成为后续 token 的条件,等价于把计算摊到上下文里,降低了"一步跳到答案"的错误率
- 观察锚定:Observation 是外部事实,推理被定期"拉回"现实,幻觉被截断(纯 CoT 会在自己的推理里越滚越远)
- 结构化先验:Thought→Action 的固定次序约束了输出分布,减少"跳步"与"该查不查"
论文的关键消融结论:去掉 Thought(只 Act)准确率大跌;去掉 Observation(闭眼推理)错误无法纠正。两者交织才是完整结构。
直观类比
两种坏员工:一种是想太多派(CoT)——在工位上推演一切,从不打电话核实,错了也不知道;一种是蛮干派(Act-only)——接到任务立刻乱打十个电话,说不清为什么打。ReAct 是靠谱员工:先说"我打算先查 A,因为…",查完看着结果说"哦,A 不对,那 B 的可能性更大",每一步都有据可查——事后复盘(trace,kp-025)你还能看出他哪一步想错了。
实例与案例
用 ReAct 诊断一个失败任务(这就是 trace 阅读法):
Thought 3: 用户要"最近的"政策,我应该搜索最新政策。
Action 3: web_search["跨境电商 税收政策 最新"]
Observation 3: [返回 2023 年旧政策文章若干,无日期标注]
Thought 4: 这些就是相关政策,我可以总结了。 ← ★ 错误在这里
问题定位:Observation 3 里没有"最新"的事实锚(文章无日期),Thought 4 却直接采信。修复方式不是骂模型,而是改工具:让搜索工具返回 publish_date 字段,并在描述里写"结果含发布日期,引用时必须核对时效"。ReAct 的价值就是把"哪一步想错"变成可见的。
常见误区
- 误区一:"ReAct 已经过时了"。文本模板形式过时了;其结构(显式推理+行动+观察锚定)是所有现代 Agent 的默认骨架。
- 误区二:Thought 越长越好。冗长的自我絮叨消耗 token 且稀释重点;现代实践偏好简洁的定向思考(或交给推理模型的内部通道)。
- 误区三:把 ReAct 当万能格式。对于步骤完全确定的任务,plan-then-execute(kp-013)更高效;ReAct 的优势场景是"边做边发现"的探索型任务。
自测题
- Thought 与 Observation 各自的机制作用是什么?
- 论文消融中去掉 Thought 会发生什么?
- ReAct 相比 plan-then-execute 适合什么任务?
(参考答案:1. Thought 提供可条件的中间推理产物、提升可解释性;Observation 提供外部事实锚定、截断幻觉漂移;2. 准确率显著下降、行动选择变得盲目;3. 步骤不可预知、需根据中间发现调整路线的探索型任务。)
与其他知识点的关系
- 前置结构 → kp-006;先规划后执行的对偶 → kp-013
- 失败重试与自我批评 → kp-014;trace 阅读 → kp-025
- 历史定位 → kp-008
延伸阅读
- Yao et al., ReAct: Synergizing Reasoning and Acting in Language Models(2022, ICLR 2023)——本领域必读论文,篇幅短