09 - ReAct 智能体:推理 + 行动

难度:高级 时长:~30 分钟 关键概念:ReAct、迭代推理、多步骤智能体

什么是 ReAct?

ReAct(Reasoning + Acting,推理与行动)是一个将以下能力结合的框架:

  • 推理(Reasoning):逐步思考问题
  • 行动(Acting):使用工具完成子任务
  • 观察(Observing):从工具结果中学习

这使得智能体能够可靠地解决复杂的多步骤问题。

核心模式

为什么 ReAct 很重要

传统大语言模型的困难

  1. 复杂计算 — 算术错误
  2. 多步骤问题 — 容易丢失进度
  3. 使用工具 — 不知道何时使用、如何使用
  4. 解释决策 — 黑盒推理

ReAct 解决了这些问题

  1. 可靠的计算 — 委托给工具执行
  2. 结构化的进度 — 显式的步骤
  3. 工具编排 — 知道何时使用哪个工具
  4. 透明的推理 — 可见的思考过程

三大组件

1. 思考(Thought,推理)

智能体推理需要什么信息、使用哪个工具、结果是否合理、下一步该做什么。

Thought: 我需要计算 15 × 8 来得出收入

2. 行动(Action,工具使用)

智能体使用特定参数调用工具。

Action: multiply(15, 8)

3. 观察(Observation,学习)

智能体接收并解读工具结果。

Observation: 120

完整示例

与其他方法的比较

零样本提示(Zero-Shot)

用户:"计算 15×8 + 20×8"
LLM:"答案是 279"  ❌ 错误!

思维链(Chain-of-Thought)

用户:"计算 15×8 + 20×8"
LLM:"让我逐步思考:
     15×8 = 120
     20×8 = 160
     120+160 = 279"  ❌ 还是错了!

ReAct(本实现)

用户:"计算 15×8 + 20×8"
智能体:
  Thought: 计算 15×8
  Action: multiply(15, 8)
  Observation: 120
  Thought: 计算 20×8
  Action: multiply(20, 8)
  Observation: 160
  Thought: 将结果相加
  Action: add(120, 160)
  Observation: 280
  Answer: 280  ✅ 正确!

架构图

实现策略

1. 强制执行显式模式

systemPrompt: `CRITICAL: Follow this EXACT pattern:
Thought: [reasoning]
Action: [tool call]
Observation: [result]
...
Answer: [final answer]`

2. 迭代控制

maxIterations = 10  // 安全限制

3. 答案检测

if (response.includes("Answer:")) {
    return fullResponse;  // 完成!
}

高级模式

自我纠错

元推理(Meta-Reasoning)

研究起源

ReAct 由以下论文提出:

"ReAct: Synergizing Reasoning and Acting in Language Models"
Yao et al., 2022
论文链接:https://arxiv.org/abs/2210.03629

核心发现:将推理轨迹与特定任务的行动相结合,能创造出比单独使用任一方法都更强大的智能体。

总结

ReAct 将大语言模型从:

  • 脆弱的计算器 → 可靠的问题解决者
  • 黑盒 → 透明的推理者
  • 一次性回答者 → 迭代式思考者
  • 孤立的模型 → 使用工具的智能体

它是连接语言模型与能够可靠完成复杂任务的自主智能体之间的桥梁。