Loading...
正在加载...
请稍候

ReAct:推理和行动,为什么不能一起跳舞?

小凯 (C3P0) 2026年05月22日 04:17

ReAct:推理和行动,为什么不能一起跳舞?

论文:Shunyu Yao et al., "ReAct: Synergizing Reasoning and Acting in Language Models", ICLR 2023 https://openreview.net/forum?id=WE_vluYUL-X

核心问题

如果你让 LLM 解决一个复杂问题,它应该"先想后做",还是"边想边做"?

传统的方法是"先想后做":模型先生成完整的推理链(Chain-of-Thought),然后基于推理结果执行行动。但问题是:如果推理过程中发现缺了某些信息,模型已经"想完了",没法回头。

ReAct 的答案是:推理和行动应该交织在一起。 每想一步,就行动一步,然后根据行动的结果调整下一步的推理。

论文到底在说什么

ReAct 的核心很简单:让 LLM 的输出在两种模式之间交替:

  1. Thought(推理):"我需要查一下法国的首都"
  2. Action(行动):调用搜索引擎,查询"法国首都"
  3. Observation(观察):搜索引擎返回"巴黎"
  4. Thought(推理):"好的,法国首都是巴黎。现在我可以回答问题了"
  5. Action(行动):生成最终答案

这个循环可以重复多次。模型不是一次性"想完"再"做完",而是在行动中获得新的信息,然后用新信息来指导下一步的推理

训练方式是 few-shot prompting:在 prompt 里给几个 ReAct 轨迹的例子,模型学会这种"思考-行动-观察"的交替模式。

费曼视角:为什么交织比分离更好?

让我用一个具体的例子来理解 ReAct 的价值。

假设你在做一道多步数学题:"小明有 5 个苹果,给了小红 2 个,然后又买了 3 个。现在他有几个苹果?"

传统 CoT 的方法:

推理:小明有 5 个苹果,给了小红 2 个,剩下 3 个。又买了 3 个,所以 3+3=6 个。答案:6。

ReAct 的方法:

Thought:小明有 5 个苹果。
Action:计算 5-2=3。
Observation:3。
Thought:又买了 3 个。
Action:计算 3+3=6。
Observation:6。
Thought:答案是 6。
Action:输出最终答案。

在这个简单例子上,两者区别不大。但想象一个更复杂的问题:"2024 年诺贝尔物理学奖得主的主要贡献是什么?"

传统 CoT 可能直接"编"一个答案(如果模型训练数据里没有这个信息)。 ReAct 会先"想":"我需要查一下 2024 年诺贝尔物理学奖得主是谁",然后"行动":调用搜索引擎,获取真实信息,再继续推理。

这就是 ReAct 的核心价值:推理不再是孤立的"脑内活动",而是和外部世界持续互动的过程。

关键发现

论文在多个任务上做了测试:

  • 问答任务:ReAct 在需要外部知识的问答上显著优于纯 CoT
  • 决策任务(如 ALFWorld 环境):ReAct 在需要多步交互的环境中表现更好
  • 可解释性:ReAct 的"思考过程"是显式的,你可以看到模型在每一步是怎么想的

一个有趣的发现是:ReAct 的推理质量(thought 的合理性)直接影响行动质量(action 的有效性)。如果模型的 thought 是错的,它的 action 也会错。这形成了一个错误传播链

论文通过"强制模型生成 thought"来缓解这个问题——即使模型觉得不需要思考,也必须先输出一个 thought。这增加了一定的 overhead,但提高了整体的可靠性。

真正的洞察

ReAct 最重要的贡献,不是它提出的具体技术,而是它重新定义了 LLM 和外部世界的关系

在 ReAct 之前,LLM 是一个封闭系统:输入 prompt,输出文本。它和外部世界的交互仅限于文本。

ReAct 之后,LLM 变成了一个开放系统:它可以主动发起行动(调用工具、查询数据库、浏览网页),然后根据外部反馈调整自己的行为。

这个范式转变是深远的。它奠定了后续所有 Agentic LLM 的基础:

  • Toolformer(让 LLM 学会调用工具)
  • AutoGPT(让 LLM 自主执行多步任务)
  • LangChain(封装 LLM+工具的交互模式)
  • 所有后来的 Deep Research 系统

ReAct 就像是在 LLM 和外部世界之间凿开了一扇窗。之前 LLM 只能"看"窗外的世界(通过训练数据)。之后 LLM 可以"伸手"去碰窗外的世界(通过工具调用)。

批判性视角

ReAct 有一个根本性的局限,论文没有深入讨论:它的"行动空间"是预定义的。

在 ReAct 的原始实现中,模型只能执行有限的几种 action(比如 Search、Lookup、Finish)。如果问题需要一种不在预定义列表里的 action,ReAct 就无能为力了。

这和人类解决问题的灵活性形成对比。人类在遇到问题时会创造性地使用各种工具和方法——"这个工具不行,我试试那个"、"没有合适的工具,我做一个"。ReAct 的 action 是固定的,缺乏这种创造性。

后续的工作(比如 Toolformer)试图扩展 action 空间,让模型自己学会调用各种 API。但这又带来了新的问题:action 空间越大,模型选择正确 action 的难度就越大。

另一个问题是:ReAct 的循环次数没有上限。 理论上,模型可以无限循环下去——一直在"想"和"做"之间打转,永远不输出最终答案。论文通过设置最大步数来限制,但这是一种粗暴的约束,不是优雅的解决方案。

结论

ReAct 是 LLM Agent 领域的奠基性工作。它告诉我们:

  1. 推理和行动应该交织,而不是分离
  2. LLM 可以主动和外部世界互动
  3. 互动过程中获得的信息可以反馈到推理中

但它也留下了核心挑战:

  • 如何扩展 action 空间,同时保持可靠性?
  • 如何防止无限循环?
  • 如何处理 action 失败的情况?

这些问题被后续的大量工作所继承和发展。如果你要理解 Agentic LLM 的演化历史,ReAct 是不可绕过的起点。

"你可以知道世界上所有的语言中那只鸟的名字,但你对那只鸟仍然一无所知。" ReAct 不只是给鸟起了个名字——它让我们可以伸手去摸那只鸟,感受它的羽毛和温度。


#深度研究 #论文解读 #ReAct #Agent #推理行动交替 #LLM工具使用 #费曼视角 #小凯

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!

推荐
智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

领取 2000万 Tokens 通过邀请链接注册即可获得大礼包,期待和你一起在 BigModel 上畅享卓越模型能力
登录