07|ReAct:让推理与行动交替发生
从论文模式到提示实现,理解推理与外部观察如何闭环。
从论文模式到提示实现,理解推理与外部观察如何闭环。
ReAct 像夜间导航:先根据当前地图走一步,看到封路后更新路线;计划和环境反馈交替。

本课交付物
给研究问题设计 Thought/Action/Observation 轨迹,注入一次搜索失败并要求恢复。
核心讲解
提示:
本节将深入探讨 AI 智能体的内部运作机制——其推理与规划能力。我们将解析智能体如何通过内部对话分析信息,将复杂问题分解为可管理的步骤,并决策下一步行动。同时介绍 ReAct 方法,是一种鼓励模型在行动前"逐步思考"的提示技术。
思维(Thought)代表着智能体解决任务的内部推理与规划过程。
这利用了智能体的大型语言模型 (LLM) 能力来分析其 prompt 中的信息。
可将其视为智能体的内部对话,在此过程中它会考量当前任务并制定应对策略。
智能体的思维负责获取当前观察结果,并决定下一步应采取的行动。
通过这一过程,智能体能够将复杂问题分解为更小、更易管理的步骤,反思过往经验,并根据新信息持续调整计划。
以下是常见思维模式的示例:
| 思维类型 | 示例 |
|---|---|
| Planning(规划) | “I need to break this task into three steps: 1) gather data, 2) analyze trends, 3) generate report”(“我需要将任务分解为三步:1)收集数据 2)分析趋势 3)生成报告”) |
| Analysis(分析) | “Based on the error message, the issue appears to be with the database connection parameters”(“根据错误信息,问题似乎出在数据库连接参数”) |
| Decision Making(决策) | “Given the user’s budget constraints, I should recommend the mid-tier option”(“考虑到用户的预算限制,应推荐中端选项”) |
| Problem Solving(问题解决) | “To optimize this code, I should first profile it to identify bottlenecks”(“优化此代码需先进行性能分析定位瓶颈”) |
| Memory Integration(记忆整合) | “The user mentioned their preference for Python earlier, so I’ll provide examples in Python”(“用户先前提到偏好 Python,因此我将提供 Python 示例”) |
| Self-Reflection(自我反思) | “My last approach didn’t work well, I should try a different strategy”(“上次方法效果不佳,应尝试不同策略”) |
| Goal Setting(目标设定) | “To complete this task, I need to first establish the acceptance criteria”(“完成此任务需先确定验收标准”) |
| Prioritization(优先级排序) | “The security vulnerability should be addressed before adding new features”(“在添加新功能前应先修复安全漏洞”) |
注意: 对于专为 function-calling 微调的 LLMs,思维过程是可选的。
若您不熟悉 function-calling 概念,后续"行动"章节将提供详细说明。
ReAct 方法
核心方法是 ReAct 方法,即"推理"(Reasoning/Think)与"行动"(Acting/Act)的结合。
ReAct 是一种简单的提示技术,在让 LLM 解码后续 token 前添加"Let’s think step by step"(让我们逐步思考)的提示。
通过提示模型"逐步思考",可以引导解码过程生成计划而非直接输出最终解决方案,因为模型被鼓励将问题分解为子任务。
这种方法使模型能够更详细地考虑各个子步骤,通常比直接生成最终方案产生更少错误。
图 (d) 展示了 ReAct 方法示例,我们通过"Let’s think step by step"提示模型
提示:
近期推理策略受到广泛关注,这体现在 Deepseek R1 或 OpenAI 的 o1 等模型的开发中。这些模型经过微调,被训练为"先思考再回答"。它们通过特殊标记(
<thought>和</thought>)来界定 思考 部分。这不仅是类似 ReAct 的提示技巧,更是通过分析数千个示范案例,让模型学习生成这些思考段的训练方法。
现在我们已经深入理解了思维过程,接下来将更深入探讨流程的第二部分:行动。
本站实战工作台
先行动一步,再用现实校准
ReAct 把推理与行动交替:当前信息只足以选下一步,工具观察补充事实,策略据此更新。它避免一次性写出看似完整却建立在猜测上的长计划。
一条研究轨迹
问题是“函数调用何时进入主流模型 API”。第一步应搜索一手发布说明,而不是凭记忆回答年份。观察到官方页面后,读取发布日期与功能描述;再用另一份官方或论文来源交叉验证;最后区分事实与推断。
Thought: 需要一手发布日期
Action: search(domain=official, query=function calling release)
Observation: 2 个候选,其中 1 个官方更新页
Thought: 读取官方页面并提取事件日期
Action: open(result=official)
Observation: 页面注明 2023-06,并描述结构化参数
生产系统不应把完整隐式思维链写入日志。记录简短 decisionReason、动作、观察摘要和来源即可,既能审计又减少敏感推理暴露。
注入一次搜索失败
让 search 返回 TIMEOUT。策略只重试一次并缩小查询;第二次失败时可换备用来源或停止并说明缺证据。不要在没有观察时继续生成结论。
防止“思考很多,行动很少”
限制每轮理由长度,要求每个动作对应一个待解决未知。若连续两轮没有新增状态,触发 STALLED。ReAct 的价值是反馈,不是把长篇内心独白包装成系统能力。
何时不用 ReAct
固定表单校验和批处理不需要模型每步重决策。高延迟工具也可能更适合先批量计划。选择模式时比较反馈价值与调用成本。
验收看轨迹能否从真实观察修正路线、失败是否有限、最终结论是否引用证据。漂亮 Thought 文本本身不计分。