ReAct(Reasoning + Acting,来自 2022 年的论文 ReAct: Synergizing Reasoning and Acting in Language Models)解决的,是当时两条路各自的缺陷——它把「推理」和「行动」拧成一个循环,也成了现代 Agent 的大脑原型。
要讲清它解决什么,先看它之前的两个半成品。
一、它之前的两个孤立方案
① 只会「想」:思维链(Chain-of-Thought)
让模型一步步推理再回答。但推理是闭卷的——全凭模型脑子里的参数知识,接触不到外部世界。后果:
- 幻觉:它能一本正经地推出错误事实,因为没法跟现实核对;
- 错误传播:中间某步搞错,整条链一路歪到底,没机会纠正;
- 知识静态:拿不到最新信息、私有数据。
② 只会「做」:盲目调工具
让模型调 API / 搜索,但没有显式推理去规划「为什么调、现在该调哪个、上一步结果说明了什么」。后果:多步任务接不住,出了岔子不会自我调整,像没头苍蝇。
一句话:光想不做 = 容易瞎编;光做不想 = 没有章法。
二、ReAct 的解法:想—做—看,循环起来
ReAct 让模型交替进行推理和行动,每一轮三件事:
1 | Thought(想) :分析现在的状态、缺什么、下一步该干嘛 |
一个例子(问「某公司现任 CEO 的家乡在哪」):
1 | Thought: 我不确定现任 CEO 是谁,先查。 |
三、所以它到底解决了什么
把这个循环拆开看,它一次性补上了前面两个方案的短板:
- 推理被现实「锚定」→ 治幻觉:推理过程能吸收真实观察(搜索 / 工具结果),不再只靠脑内记忆,事实错误大幅下降。
- 行动被推理「引导」→ 有章法:每个动作前都先想清楚「为什么调、调什么」,能拆解复杂任务、动态决定下一步。
- 能自我纠错 → 抗意外:每步都看结果再重新想——搜索没返回有用的?那就换个关键词重查。出了岔子能调整,而不是一条道走到黑。
- 过程可解释 → 好调试:那串 Thought 把决策链摆出来了,你能看懂它为什么这么干、在哪一步想歪了。
四、从 ReAct 到 Agent
ReAct 基本就是现代 Agent 的「大脑循环」原型。回头看 MCP 那篇里「模型决定调哪个工具 → 调用 → 结果塞回上下文 → 继续」的流程,内核正是 Thought → Action → Observation。
可以这样理解一个 Agent 的分工:
1 | ┌─────────────── ReAct 循环(脑子)───────────────┐ |
MCP / 工具解决「手能伸多远」(能调什么),ReAct 解决「脑子怎么用这些手」(什么时候调、调完怎么办)。两者合起来,才是一个能干活的 Agent。
在 ReAct 之上,工程实践又叠了很多东西,让 Agent 更稳更强:
- 记忆:短期靠上下文,长期常接 向量数据库 做检索式记忆;
- 规划:先拆解任务再逐步执行(plan-and-execute),应对更长的任务链;
- 反思 / 自检:让模型回看自己的轨迹、发现错误再重试(Reflexion 这类思路);
- 多 Agent 协作:把角色拆开(规划者、执行者、审查者)分工配合。
但这些都是在「想—做—看」这个核心循环上的加法。
一句话总结
ReAct 解决的是「推理」和「行动」分家的问题——让模型边想边做、用真实观察校正推理,从而既少瞎编、又能有条理地完成多步任务,还能出错自纠。它是从「会聊天的模型」走向「会干活的 Agent」的关键一步。