Agent · 推理模式

Agent 推理模式有哪些?ReAct 又是啥、怎么实现?

用一张地图、一个真实循环演示和三段交互,把"Agent 怎么思考、怎么行动"彻底讲透。

一、一句话答案

Agent 推理模式,指的是「大模型智能体在完成任务时,决定下一步做什么」的一套控制流策略:是闷头推理、边想边干、先规划后执行,还是干完再反思、多人协作?

其中 ReAct 是最经典、最常用的一类:它让模型把「思考」和「行动」交错进行 —— 想一步、做一次工具调用、看一眼结果、再想下一步,直到给出答案。

二、先建立认知:什么是「推理模式」

普通一次性的对话,模型「想一下就回答」。但 Agent 要干活(查资料、跑代码、调 API),它得有一个反复决策的过程

当前状态 / 问题 模型决定下一步 执行(回答 or 调工具) 获得反馈

下一步怎么决定」这套规则,就是推理模式。不同模式 = 不同的决策节奏与结构。它决定了 Agent 聪不聪明、稳不稳、贵不贵。

类比:推理模式就像「干活的方法」。同样修一台电脑,有人边拆边想(ReAct),有人先列清单再动手(Plan-and-Execute),有人修完再复盘(Reflexion),有人拉一队人分工(Multi-Agent)。

三、主流推理模式总览

把常见模式按「是否调用工具」「是否先做计划 / 反思」排成一张地图:

横轴:是否调用外部工具行动 | 纵轴:思考的「深度/结构」 只用脑子(不调工具) ←→ 边想边调工具 单线思考 → 结构化/多线思考 CoT链式思考 ReAct想+做交错 Act-only只做不想 Plan-Execute先规划后做 ToT树状探索 Reflexion干完再反思 Multi-Agent多体协作

四、六种模式逐一讲

① CoT 链式思考

把问题拆成一步步推理,只在脑子里走,不调工具。适合纯知识题。缺点是「想当然」,易幻觉。

② ReAct 想+做交错 ⭐

边推理边行动:Thought → Action → Observation 循环。能用工具获取真实信息,又能思考。最常用。

③ Plan-and-Execute

先让模型产出完整计划,再逐条执行。适合步骤多、需全局把控的任务;缺点是计划可能脱离实际。

④ Reflexion 反思

执行后让模型自我批评(哪错了、怎么改),把反思写回记忆,下一轮改进。擅长试错型任务。

⑤ ToT 树状思考

像下棋一样分叉探索多条思路,评估后回溯选最优。质量高但 token 消耗大。

⑥ Multi-Agent 协作

多个角色(规划者/执行者/批评者)分工辩论。适合大型复杂项目,但协调和成本复杂。

本文重点讲 ReAct(最基础也最常用);其余模式给出「是什么 + 何时用」,便于选型。

五、ReAct 是啥

ReAct = Reasoning(推理) + Acting(行动)。由 Yao 等人在 2022 年论文《ReAct: Synergizing Reasoning and Acting in Language Models》提出。

核心思想:让大模型在生成回答的过程中,交替产生两种内容——

  • Thought(想法):模型用自然语言「小声嘀咕」自己的推理、计划、判断;不展示给用户,但写进上下文引导下一步。
  • Action(行动):模型决定调用某个工具,并给出参数。
  • Observation(观察):工具返回的结果,再喂回给模型。

三者循环:Thought → Action → Observation → Thought → … → Finish(答案)

Thought 想法我该查什么 Action 行动调用工具 Observation 观察工具返回 循环直到 Action = Finish(给出最终答案)

六、为什么需要 ReAct(对比就懂)

只有 CoT(纯想)

模型凭记忆推理,拿不到实时/外部事实,容易自信地胡说(幻觉)。

只有 Act(纯做)

直接调工具但不思考,不会规划、不会根据结果调整,步骤乱。

ReAct(想+做)

想法指导行动、行动反馈校正想法,既接地气又不乱,还能追溯过程。

CoT 给了「推理痕迹」,Act 给了「行动能力」;ReAct = 两者协同 → 更准、更可控、可解释

七、ReAct 的格式长这样

Prompt 约定一种固定格式,让模型按套路输出。典型格式:

Thought: 我需要先查出特斯拉的股票代码。
Action: search[特斯拉 股票代码]
Observation: 特斯拉在纳斯达克上市,代码 TSLA。
Thought: 已知代码 TSLA,现在查今日涨跌。
Action: get_stock[TSLA]
Observation: TSLA 今日 +2.3%(上涨)。
Thought: 信息齐全,可以总结了。
Action: Finish[特斯拉代码 TSLA,今日上涨 2.3%。]
关键是:Thought 不调工具、只用于推理Action 必须能被程序解析(决定调哪个工具、参数是什么);Observation 是程序塞回的真相。三者都累积进上下文,作为下一轮输入。

八、ReAct 具体怎么实现(六部件 + 主循环)

ReAct 不是模型自带的魔法,而是 「Prompt + 一段运行时代码」 拼出来的。需要 6 个部件:

1. Prompt 模板

系统提示 + 少量 few-shot 示例,明确 Thought/Action/Observation 格式与可用工具清单。

2. 工具注册表

每个工具有 name / description / 参数 schema(如 JSON Schema),供模型选 & 程序校验。

3. 解析器

用正则或结构化输出,从模型文本里抠出 Action 和参数;抠不出则让模型重试。

4. 执行器

按 Action 调用对应工具,捕获异常,拿到 Observation(超时/报错也写回)。

5. 记忆/草稿本

把每轮 Thought/Action/Observation 依次追加到上下文,作为后续输入(scratchpad)。

6. 终止条件

出现 Finish 动作,或达到最大步数(防死循环)。

主循环(伪代码)

# 初始化
scratchpad = system_prompt + few_shot_examples + "Question: " + question

# 主循环
for step in range(max_steps):
    response = llm(scratchpad)              # 模型继续往下写
    thought, action, args = parse(response) # 解析 Thought / Action
    scratchpad += thought                    # 想法写回上下文

    if action == "Finish":
        return args                       # 给出最终答案

    observation = run_tool(action, args)     # 执行工具
    scratchpad += f"Action: {action}[{args}]\nObservation: {observation}\n"

return "超过最大步数,未完成"
就这么简单:ReAct 的本质就是一个 while 循环 + 一个「把模型输出解析成工具调用」的胶水层。理解这层胶水,你就理解了 90% 的 Agent 框架(LangChain 的 AgentExecutor、LlamaIndex 的 ReActAgent 都是这个骨架)。

九、交互1:ReAct 循环步进器(亲手走一遍)

下面用前面的「特斯拉股价」问题,点「下一步」逐步展开 Thought → Action → Observation,看草稿本如何一点点长大。

十、交互2:三模式对比(同一问题不同表现)

同一个问题,切换 CoT / Act-only / ReAct,看它们各自会怎样应对「需要查实时数据」的任务。

问题:「特斯拉今天股价涨了还是跌了?」(模型训练数据里没有今天的数据)

👆 点击上方按钮,查看该模式下模型会怎么应对。

十一、交互3:选型决策器(该用哪种模式?)

点一个你的任务场景,直接告诉你该选哪种推理模式。

十二、ReAct 的优缺点与常见坑

✅ 优点

  • 能用工具获取真实信息,减少幻觉
  • 过程可解释、可审计(有完整轨迹)。
  • 实现简单,几乎所有 Agent 框架都支持。
  • 灵活:根据 Observation 动态调整计划。

⚠️ 缺点与坑

  • 上下文爆栈:步数多时草稿本很长,token 贵。
  • 死循环:模型反复调同一个工具 → 需 max_steps 兜底。
  • 解析失败:模型不按格式输出 → 要靠重试/纠错。
  • 错误传播:某步 Observation 错,后面全歪。
实践建议:① 工具描述写清楚(模型靠描述选工具);② 加 max_steps 防死循环;③ 解析失败就让模型「重新按格式输出」;④ 长任务优先用 Plan-and-Execute 或 Reflexion 补强。

十三、小结速记

问题答案
Agent 推理模式有哪些?CoT / ReAct / Plan-Execute / Reflexion / ToT / Multi-Agent 等
ReAct 是啥?Reasoning + Acting:Thought→Action→Observation 循环,边想边干
为什么用它?纯想易幻觉、纯做易混乱;ReAct 让推理与行动协同
怎么实现?Prompt 模板 + 工具注册表 + 解析器 + 执行器 + 草稿本 + 终止条件,套一个 while 循环
核心难点?解析模型输出、控上下文长度、防死循环与错误传播
配套阅读:本目录 agent-tools.html(工具调用机制)、agent-paradigms-compare.html(ReAct / Plan-and-Execute / Reflection 三大范式对比与选型);Transformer 系列讲「模型本身」,Agent 系列讲「怎么让模型动手干活」。
《大模型工作原理图解系列 · Agent 篇》之一。