ReAct 机制是 Agent 框架的基础

ReAct 机制

ReAct是一种将推理(Reasoning)和行动(Acting)与语言模型相结合的通用范式,通过交错生成推理轨迹和特定任务行动来解决复杂问题,是现代大部分框架构建 Agent 的基础理论。

理论基础

核心思想

  • 语言空间中的动作(思想/推理痕迹)不影响外部环境,但更新上下文以支持未来推理
  • 推理轨迹帮助模型归纳、跟踪和更新行动计划,处理异常
  • 行动允许与外部环境交互并收集额外信息

工作机制

1. Reasoning - 通过语言推理制定高级计划,确定下一步行动

大模型推理引擎可以解析 prompt 中的 toolcalls 作为行动计划 sglang function_calling

output parser

tools_are_structured_output
另一种方案是从大模型的结构化输出中解析工具调用,而非依赖 toolcalls 能力,这种方式提供了更大的灵活性 Tools are just structured outputs

例如 ADK 的实现就采用模型的结构化输出来识别行动 ADK Planer

2. Acting - 通过外部交互获取信息,验证推理假设,更新上下文

通常使用工具(tools)进行交互,handoffs 机制可以将其他 Agent 作为可执行工具。是否定义独立 Agent 来执行 Acting 取决于任务复杂度及其价值(因为 Agent 运行成本较高)。此外,Agent 的异常恢复机制相对脆弱,可能需要 human-in-the-loop 介入,需要权衡考虑 Prompting for Agents | Code w/ Claude

plan and execute

plan_and_execute.png
当一次产生多个 Acting 时,会演进为 Plan-And-Execute 机制 Plan-and-Execute
相对ReAct机制,plan-and-execute机制具备前瞻性,每个任务的执行比较自由,可以灵活调度并行或串行执行。

3. Reasoning Loop - 重新规划,直到收敛

Agent 进行多轮循环,不断执行 Reasoning 过程。在多次循环中,Memory 会记录执行历史,Agent 基于历史不断调整策略直到问题收敛 Memory

replan

在 Plan-and-Execute 机制中称为 Re-Plan,但不同之处在于 Re-Plan 需要上下文记录 step 历史 Plan-and-Execute

适用场景

  • 知识密集型推理任务(问答、事实验证)
  • 交互式决策任务(文本游戏、网页导航)
  • 需要动态调整的复杂任务

LangGraph 中构建 ReAct Agent 的要素

react_run.png

核心运行流程

  1. 初始化阶段:用户查询 → 初始化Agent → 生成系统提示词 → 初始化上下文
  2. 多轮循环:开始ReAct循环,直到达到最大轮数或获得最终答案
  3. 推理阶段:调用LLM获取响应 → 解析LLM响应
  4. 决策分支
    • 包含Final Answer → 返回最终答案
    • 不包含Final Answer → 解析Thought和Action → 提取工具名称和参数 → 执行工具调用 → 将工具结果添加到历史 → 继续下一轮循环

构建要素

  1. 上下文管理:定义 AgentState 管理记忆和对话上下文,构建与大模型交互的 prompt schema,进行压缩、剪枝、卸载等优化
  2. 工具:提供与外部知识库、环境交互的手段,决定 Agent 的能力范围
  3. 模型选择:模型能力影响结果质量
  4. 节点编排:设计 Agent 推理节点和工具执行节点的交互流程
  5. 终止机制:防止 ReAct 无限轮询,避免死循环和资源浪费
  6. 响应解析:解析LLM输出中的Thought、Action和Final Answer