浅入 ReAct:交互推理提示技术指南

核心洞见:ReAct 并没有赋予 LLM 真正的行动能力,它只是把"思考"和"行动"都变成文本,让模型在"生成思考 → 执行行动 → 观察结果 → 再生成思考"的循环中,逐步逼近正确答案。


一、什么是 ReAct?

ReAct(Reason + Act)是 2023 年 Princeton University 等在论文《ReAct: Synergizing Reasoning and Acting in Language Models》中首次提出的技术。

核心思想

通过让大模型交替进行推理(Reasoning)行动(Acting),可以显著提升大模型在需要与外部环境交互的任务上的性能。

  • 推理(Reasoning):模型生成思考内容,分析当前情况、制定计划、反思结果
  • 行动(Acting):模型生成行动指令,如调用 API、搜索网络、执行代码等

本质揭示

ReAct 没有赋予模型真正的"行动能力"。它只是利用了 Transformer 架构的自回归特性,把行动也变成文本格式输出,然后由外部系统解析并执行,再把结果喂回给模型,形成一个思考 - 行动 - 观察的循环。


二、ReAct 与 CoT 的关系

CoT 的局限性

CoT(思维链)擅长纯推理任务,如数学题、逻辑题。但遇到需要外部信息的任务就无能为力了:

问题:2025 年诺贝尔文学奖得主是谁?
CoT 模型:让我一步步思考...(但内部没有 2025 年的数据,只能瞎猜)

ReAct 的突破

ReAct 在 CoT 的基础上增加了行动环节,让模型可以主动获取外部信息:

问题:2025 年诺贝尔文学奖得主是谁?
ReAct 模型:
  思考:我需要查询 2025 年诺贝尔文学奖的信息
  行动:搜索"2025 诺贝尔文学奖"
  观察:[搜索引擎返回结果:2025 年诺贝尔文学奖得主是...]
  思考:根据搜索结果,我可以回答问题了
  答案:...

三者对比

技术 核心能力 适用场景
CoT 纯推理(思考) 数学题、逻辑题、代码生成
ReAct 推理 + 行动 需要查询信息、调用工具的任务
Plan-and-Solve 先规划再执行 复杂多步骤任务

三、ReAct Prompt 的组成

一个完整的 ReAct Prompt 通常包含以下部分:

组成部分 英文名称 作用
任务描述 Task 描述问题目标和可用工具
工具说明 Tool Description 告诉模型有哪些工具可用,每个工具的输入输出格式
示例轨迹 Example Trace 展示完整的"思考 - 行动 - 观察"循环示例
当前问题 Question 需要解决的具体问题

完整示例结构

【任务】请回答用户的问题。你可以使用以下工具:

【工具】
- Search[查询词]:搜索网络获取最新信息
- Calculate[算式]:执行数学计算
- Lookup[实体,属性]:查询特定实体的属性信息

【示例】
问题:珠穆朗玛峰的高度除以 2 是多少?
思考:我需要先知道珠穆朗玛峰的高度,然后进行除法计算
行动:Lookup[珠穆朗玛峰,高度]
观察:珠穆朗玛峰海拔 8848.86 米
思考:现在我知道了高度是 8848.86 米,需要除以 2
行动:Calculate[8848.86 / 2]
观察:4424.43
思考:我已经得到了答案
答案:4424.43 米

【现在请解决】
问题:2025 年世界杯足球赛在哪里举办?

四、ReAct 的工作流程

标准循环

┌─────────────────────────────────────────────────────────┐
│                    ReAct 循环                            │
│                                                         │
│  输入问题 → 思考 → 行动 → 观察 → 思考 → 行动 → 观察 → ... │
│                                              ↓          │
│                                          得出答案        │
└─────────────────────────────────────────────────────────┘

详细步骤解析

步骤 1:思考(Thought/Reason)

模型分析问题,决定需要什么信息或采取什么行动。

思考:要回答这个问题,我需要先查询...
思考:根据上一步的结果,下一步我应该...
思考:我已经收集了足够的信息,可以回答问题了
步骤 2:行动(Act)

模型生成工具调用指令。

行动:Search[关键词]
行动:Calculate[算式]
行动:API 调用 [参数]
步骤 3:观察(Observe)

外部系统执行行动,并将结果返回给模型。

观察:[搜索结果/计算结果/API 响应]
步骤 4:循环或终结

模型根据观察结果决定:

  • 继续下一轮思考 - 行动
  • 或者给出最终答案

五、实战示例

示例 1:简单查询任务

问题:现在北京时间是几点?

提示词

你可以使用以下工具:
- GetCurrentTime[时区]:获取指定时区的当前时间

问题:现在北京时间是几点?

模型输出

思考:用户问的是北京时间,我需要调用时间查询工具,时区参数是 Asia/Shanghai 或 CST
行动:GetCurrentTime[Asia/Shanghai]
观察:2026-03-24 15:30:45
思考:我已经获取到了北京时间
答案:现在北京时间是 2026 年 3 月 24 日 15:30:45

示例 2:多步骤推理任务

问题:特斯拉的 CEO 是谁?他出生的那年发生了什么重大科技事件?

提示词

你可以使用以下工具:
- Search[查询词]:搜索网络信息
- Lookup[实体,属性]:查询特定信息

问题:特斯拉的 CEO 是谁?他出生的那年发生了什么重大科技事件?

模型输出

思考:这是一个多步骤问题。第一步需要找出特斯拉的 CEO 是谁,第二步需要知道他
     的出生年份,第三步需要查询那年的重大科技事件
行动:Lookup[特斯拉,CEO]
观察:特斯拉的 CEO 是埃隆·马斯克(Elon Musk)
思考:现在我知道了 CEO 是埃隆·马斯克,接下来需要查他的出生年份
行动:Lookup[埃隆·马斯克,出生年份]
观察:埃隆·马斯克出生于 1971 年 6 月 28 日
思考:现在我知道了出生年份是 1971 年,需要查询 1971 年发生的重大科技事件
行动:Search[1971 年 重大科技事件]
观察:1971 年的重大科技事件包括:英特尔推出第一款商用微处理器 4004、
     电子邮件系统诞生、纳斯达克证券交易所成立
思考:我已经收集了所有需要的信息,可以组织答案了
答案:特斯拉的 CEO 是埃隆·马斯克(Elon Musk)。他出生于 1971 年,
     那年发生的重大科技事件包括:英特尔推出第一款商用微处理器 4004、
     电子邮件系统诞生、纳斯达克证券交易所成立。

示例 3:计算 + 查询混合任务

问题:中国人口数除以美国人口数,结果保留两位小数

提示词

你可以使用以下工具:
- Search[查询词]:搜索最新数据
- Calculate[算式]:执行计算

问题:中国人口数除以美国人口数,结果保留两位小数

模型输出

思考:需要先获取中国和美国的最新人口数据,然后进行除法计算
行动:Search[2025 年中国人口]
观察:根据统计数据,2025 年中国人口约为 14.1 亿
思考:获取到了中国人口,现在需要美国人口数据
行动:Search[2025 年美国人口]
观察:根据统计数据,2025 年美国人口约为 3.4 亿
思考:现在有了两个数据:中国 14.1 亿,美国 3.4 亿。需要计算 14.1 / 3.4
行动:Calculate[14.1 / 3.4]
观察:4.147058823529412
思考:计算结果是 4.147...,题目要求保留两位小数,即 4.15
答案:4.15

六、ReAct 的两种变体

1. Standard ReAct(标准版)

特点:严格按照 思考→行动→观察 循环,每步都清晰输出

适用场景

  • ✅ 需要调用外部工具的任务
  • ✅ 多步骤复杂问题
  • ✅ 需要可追溯决策过程的场景

2. ReAct + Plan(带规划的 ReAct)

特点:在开始执行前,先生成一个完整的计划,然后按计划逐步执行

提示词结构

问题:xxx

请先制定一个解决这个问题的计划,列出需要执行的步骤,然后逐步执行。

模型输出

计划:
1. 第一步:查询 A 信息
2. 第二步:查询 B 信息
3. 第三步:整合 A 和 B,计算结果
4. 第四步:给出最终答案

执行:
思考:按照计划,第一步需要查询 A 信息
行动:Search[A]
观察:...
...

七、深度对比:CoT vs ReAct

特性 CoT ReAct
核心能力 纯推理(思考) 推理 + 行动
是否需要工具 ❌ 不需要 ✅ 需要外部工具支持
信息源 模型内部知识(可能过时/缺失) 可获取实时外部信息
输出格式 思考过程 → 答案 思考 → 行动 → 观察 → … → 答案
适用任务 数学题、逻辑推理、代码生成 问答、搜索、API 调用、多步骤任务
Token 消耗 中等 较高(多轮循环)
执行时间 快(一次性生成) 较慢(等待工具响应)

形象比喻

技术 比喻
CoT 学霸在考场里闭卷答题,全靠自己的知识和逻辑
ReAct 研究员做课题,可以查文献、做实验、问专家,最终得出结论

八、ReAct 为什么有效?

1. 知识更新(Knowledge Updating)

模型内部知识可能过时,ReAct 允许实时获取最新信息。

模型知识截止:2024 年
问题:2025 年奥运会在哪举办?
ReAct:通过搜索获取最新信息 → 正确答案

2. 可追溯性(Traceability)

每一步决策都有记录,便于调试和验证。

如果答案错了,可以回溯:
- 是思考环节逻辑错了?
- 是行动选错了工具?
- 是观察结果理解错了?

3. 模块化(Modularity)

思考和行动分离,可以独立优化。

- 改进思考:优化 prompt,增加示例
- 改进行动:增加新工具,改善工具描述

4. 纠错能力(Self-Correction)

模型可以根据观察结果反思并修正策略。

思考:我需要用 Search 工具查询...
行动:Search[关键词]
观察:未找到相关信息
思考:Search 没有找到结果,我换个方式,试试 Lookup 工具...
行动:Lookup[实体,属性]
观察:...

九、反面教材:没有 ReAct 的模型

问题 1:编造信息(Hallucination)

提示词

2025 年诺贝尔物理学奖得主是谁?直接回答。

模型输出(可能):

2025 年诺贝尔物理学奖得主是 XXX。❌ 纯属编造,因为训练数据里没有 2025 年的信息

问题 2:无法执行实际计算

提示词

123456789 × 987654321 = ? 直接回答。

模型输出(可能):

约等于 1.2×10^17 ❌ 模型靠概率猜的,不精确

ReAct 解决方案

思考:这是一个大数乘法,我需要精确计算
行动:Calculate[123456789 * 987654321]
观察:121932631112635269
思考:计算完成了
答案:121932631112635269 ✓

十、实践建议

设计高质量 ReAct Prompt 的要点

  1. 清晰的工具描述
好的工具描述:
- Search[查询词]:使用搜索引擎查询最新信息,返回相关网页摘要

差的工具描述:
- Search:搜索东西(太模糊,模型不知道怎么用)
  1. 提供完整示例轨迹
示例要展示完整的循环:
问题 → 思考 → 行动 → 观察 → 思考 → 行动 → 观察 → 答案
  1. 限制行动次数
在指令中说明:
- 最多使用 5 次工具调用
- 如果 3 次内无法获取信息,请说明原因
  1. 处理错误情况
当工具返回错误时,模型应该能:
- 识别错误
- 尝试替代方案
- 或者诚实告知无法完成

何时使用 ReAct?

场景 推荐技术
纯数学计算、逻辑推理 CoT
需要最新信息的问题 ReAct
需要调用 API/工具的任务 ReAct
代码生成、文本创作 CoT
复杂多步骤、需要查询的任务 ReAct + Plan

十一、核心知识点提炼

1. 思考(Reason/Thought)

是"大脑",负责分析、规划、反思。

作用

  • 分析问题需要什么信息
  • 决定使用哪个工具
  • 理解工具返回的结果
  • 反思当前策略是否有效

2. 行动(Act)

是"手脚",负责与外部世界交互。

常见行动类型

  • Search[查询词]:搜索网络
  • Calculate[算式]:执行计算
  • API 调用 [参数]:调用外部服务
  • Read[文件]:读取文件内容
  • Write[文件,内容]:写入文件

3. 观察(Observe)

是"反馈",告诉模型行动的结果。

观察来源

  • 搜索引擎返回的结果
  • API 的响应数据
  • 计算工具的输出
  • 文件读写的结果

4. 循环(Loop)

是"引擎",驱动任务逐步完成。

循环条件:
- 还未找到答案
- 还有未完成的子任务
- 行动次数未达上限

终止条件:
- 已收集足够信息
- 可以给出最终答案
- 达到最大行动次数

十二、总结

核心观点 说明
ReAct 不是魔法 只是把"行动"也变成文本输出
ReAct 是 CoT 的扩展 在思考基础上增加了行动能力
ReAct 核心是循环 思考→行动→观察,多轮迭代逼近答案
ReAct 需要外部系统支持 模型生成行动指令,外部系统解析并执行
ReAct 可追溯可调试 每一步都有记录,便于定位问题

一句话总结:ReAct 让模型把思考过程和行动计划都写出来,通过"思考 - 行动 - 观察"的循环,用外部信息补充内部知识的不足。


附录:ReAct 模板

基础模板

你可以使用以下工具:

【工具列表】
- 工具 1[参数]:功能描述
- 工具 2[参数]:功能描述

【示例】
问题:[示例问题]
思考:[示例思考]
行动:[示例行动]
观察:[示例观察]
思考:[示例思考]
答案:[示例答案]

【问题】
[实际问题]

带计划的高级模板

你可以使用以下工具:

【工具列表】
- 工具 1[参数]:功能描述
- 工具 2[参数]:功能描述

【指令】
请先分析问题,制定一个解决计划,然后逐步执行。

【问题】
[实际问题]

文档生成时间:2026-03-24
类别:AI 教学资料
参考资料:Princeton 论文《ReAct: Synergizing Reasoning and Acting in Language Models》

更多推荐