Skip to content

03 · ReAct 与规划:边想边做 ​

学完你能说出:

  • ReAct 的格式:Thought(思考)→ Action(行动)→ Observation(观察),循环往复。
  • 为什么「先想再做」比「直接做」好,为什么「边做边看结果」比「只想不做」好。
  • 另一种思路「先规划再执行」(Plan-and-Execute)和 ReAct 的区别。

先看地图 ​

前两篇讲了 Agent 的组成和单次工具调用。这一篇讲多步任务里,模型怎么一步步推进。

本篇讲 4 个点:① ReAct 是什么 → ② 一个多步任务的完整记录 → ③ 为什么这么设计 → ④ 先规划再执行。

一句话本质 ​

ReAct = 让模型每一步先写下「我在想什么」,再决定「做什么」,看到结果后再想下一步。 名字来自 Reasoning(推理)+ Acting(行动)。

生活类比:侦探破案 ​

  • 只推理不调查的侦探:坐在家里空想,很容易想错(只想不做)。
  • 只调查不推理的侦探:到处乱问,不知道自己在找什么(只做不想)。
  • 好侦探:「凶手可能是左撇子 → 去查谁是左撇子 → 发现管家是 → 那再查管家当晚在哪……」想和做交替推进,每一步的发现都会修正下一步的想法。

一步步看:「《三体》作者今年多大?」 ​

可用工具:search(query) 搜索、calculator(expr) 计算。

Thought 1:  要知道作者年龄,先得知道作者是谁、哪年出生。
Action 1:   search("《三体》 作者")
Observation 1: 《三体》的作者是刘慈欣。

Thought 2:  再查刘慈欣的出生年份。
Action 2:   search("刘慈欣 出生年份")
Observation 2: 刘慈欣,1963 年出生。

Thought 3:  今年是 2026 年,算一下 2026 − 1963。
Action 3:   calculator("2026 - 1963")
Observation 3: 63

Thought 4:  信息齐了,可以回答。
Final Answer: 《三体》的作者是刘慈欣,1963 年出生,今年(2026 年)63 岁(生日没过的话是 62 岁)。

注意第 2 步:「查出生年份」这个动作,是看到第 1 步的结果后才决定的。提前写死流程做不到这一点。

为什么这么设计 ​

为什么要先写 Thought(思考),而不是直接行动? ​

  • 问题:模型直接输出行动,容易「想当然」:调错工具、漏掉步骤。
  • 方案:每次行动前,先把推理写出来(类似第 04 篇讲的思维链)。
  • 好处:写出来的推理成为后续生成的上下文,行动更有针对性;开发者也能看到它「为什么这么做」,方便调试。

一句话答法

先写思考相当于打草稿,让行动有依据、更准确;同时推理过程可见,出错时容易定位原因。

为什么要交替进行,而不是先全部想完再做? ​

  • 问题:很多信息只有执行之后才知道。不知道作者是谁,就没法提前决定「查谁的出生年份」。
  • 方案:想一步、做一步、看结果,再想下一步。
  • 好处:能根据真实结果随时调整,减少凭空推理带来的幻觉。

一句话答法

因为后续步骤往往依赖前一步的结果,交替进行能用真实观察修正推理,比一次性想完更准确,也更少幻觉。

怎么知道该停下来? ​

  • 问题:模型可能一直查下去,或在两个动作之间打转。
  • 方案:三重保险:① 模型判断信息够了,输出最终答案;② 最大轮数限制;③ 检测重复调用(同样的工具、同样的参数连续出现)。
  • 好处:不会死循环,成本可控。

一句话答法

由模型判断完成并输出最终答案,同时程序设置最大轮数和重复检测兜底。

另一种思路:先规划,再执行 ​

Plan-and-Execute(规划-执行):先让模型列出完整计划,再一步步执行,必要时修改计划。

计划:① 搜索三体作者  ② 搜索作者出生年份  ③ 计算年龄
执行:按步骤做 → 某一步结果出乎意料 → 回头修改计划
ReAct先规划再执行
怎么推进走一步看一步先列全盘计划,再按计划做
适合步骤少、不确定性高的任务步骤多、结构清晰的任务
优点灵活,随时调整全局视角好,不容易跑偏
缺点长任务容易迷失方向计划可能不符合实际,要能重新规划

英文术语拆解 ​

术语拆开看一句话意思
ReActReasoning 推理 + Acting 行动推理和行动交替进行的 Agent 模式(2022 年提出)
Thought思考模型写下的推理过程
Action行动调用某个工具
Observation观察工具返回的结果
Final Answerfinal 最终 + answer 答案任务完成后的最终输出
Plan-and-Executeplan 计划 + execute 执行先规划再执行的 Agent 模式
Replanningre 重新 + planning 规划根据执行情况修改计划

面试怎么问 ​

Q:介绍一下 ReAct。

ReAct 让模型交替输出推理(Thought)和行动(Action):先推理下一步需要什么,再调用工具,拿到观察结果(Observation)后继续推理,直到得出最终答案。它把思维链的推理能力和工具调用结合起来:推理指导行动,行动的结果又修正推理,比只推理更少幻觉,比只行动更有方向。

Q:ReAct 和 Plan-and-Execute 有什么区别?

ReAct 是逐步决策,每一步都根据最新观察决定下一步,灵活但长任务容易偏离目标;Plan-and-Execute 先生成全局计划再执行,适合步骤多、结构清晰的任务,但需要在执行偏离预期时重新规划。

Q:Agent 陷入循环怎么办?

设置最大迭代次数;检测重复的工具调用;在提示里要求信息足够时立即给出答案;循环被中断时,返回已有的部分结果和失败原因。

容易混的地方 ​

  • ReAct ≠ React(前端框架):名字撞了,完全无关。
  • Thought 不一定展示给用户:它主要给模型自己和开发者看。很多产品只展示最终答案。
  • 现在很多模型原生支持工具调用:不一定要严格按「Thought: / Action:」这种文本格式写,但「推理 → 行动 → 观察」的循环思想是一样的。

和其他知识的连接 ​

  • ← 来自 Prompt 与采样参数:Thought 就是思维链(CoT)用在 Agent 里。
  • ← 来自 工具调用:每个 Action 就是一次工具调用。
  • → 影响 记忆与 MCP:步骤一多,历史越来越长,就需要记忆管理。
  • 原论文:Yao 等人,ReAct: Synergizing Reasoning and Acting in Language Models(2022)。你的 E:\Desktop\1\local_materials 里有这篇 PDF。

自测 3 问 ​

Q1:ReAct 的三个环节是什么?用侦探类比说一下。

点开看答案

Thought(思考)→ Action(行动)→ Observation(观察),循环往复。像好侦探:先推理「可能是左撇子」,再去调查,看到调查结果后修正推理,再决定下一步查什么。

Q2:为什么不让模型一次把所有步骤都想好再执行?

点开看答案

后面的步骤往往依赖前面的结果:不知道作者是谁,就没法决定查谁的出生年份。交替进行能用真实结果修正推理,更准确,也更少幻觉。

Q3:Agent 怎么避免停不下来?

点开看答案

① 模型判断信息够了就输出最终答案;② 程序设置最大轮数;③ 检测重复的工具调用,出现就中断并返回原因。

✅ 验收清单 ​

  • 能写出「三体作者年龄」例子的 Thought / Action / Observation 记录
  • 能讲清「先想再做」和「交替进行」各自解决什么问题(问题 → 方案 → 好处)
  • 能说出 Agent 停止的三重保险
  • 能对比 ReAct 和 Plan-and-Execute,各说出一个适合的场景
  • 能说出 ReAct 名字的来历

下一步该懂什么 ​

  • 步骤一多,对话历史越来越长,Agent 怎么「记住」重要的事?外部工具那么多,怎么统一接入?→ 记忆与 MCP