在构建 AI Agent 的过程中,拥有强大的大脑(LLM)、记忆模块和工具库固然重要,但如何编排这些组件协同工作才是决定 Agent 智能程度的关键。如果说 LLM 是发动机,那么“执行逻辑”就是变速箱和传动系统,决定了动力如何转化为实际的行动。

本文将深入剖析当前 AI Agent 领域最主流的两种执行逻辑:ReAct(推理与行动)与 Plan-and-Execute(规划与执行)。我们将从原理、优劣势、实战对比等维度,带你彻底理解 Agent 是如何“思考”与“做事”的。


一、 ReAct 框架:像人类一样“边想边做”

ReAct (Reasoning + Acting) 由 Yao 等人提出,是目前应用最广泛的 Agent 执行框架。它的核心理念是模仿人类解决复杂问题时的直觉——一边推理,一边行动,根据行动的反馈调整下一步计划。

1. 核心机制:Thought-Action-Observation 循环

ReAct Agent 并不试图一次性规划所有步骤,而是通过一个紧密的迭代循环来推进任务:

  1. Thought (思考):Agent 基于当前目标和已有的上下文,进行内部独白。它会分析现状、拆解问题,并决定下一步该做什么(例如:“为了回答这个问题,我需要先查询 X 的信息”)。

  2. Action (行动):基于思考的结果,Agent 决定执行具体的动作。这通常意味着调用某个工具(如搜索引擎、计算器、API)或向用户提问。

  3. Observation (观察):工具执行后返回的结果(如搜索到的网页摘要、API 返回的 JSON 数据、代码报错信息)。

  4. Loop (循环)最关键的一步。Agent 将“观察”到的新信息纳入大脑,再次进入“思考”阶段。它会评估刚才的行动是否有用,是否解决了部分问题,并据此规划下一步,直到任务完成。

2. Prompt 设计技巧

ReAct 的魔力很大程度上源于 Prompt 的引导。一个优秀的 ReAct Prompt 通常包含:

  • 思维链引导:指令包含 Think step-by-step,强迫 LLM 展示推理过程。

  • 工具协议:明确告诉 LLM 如何以特定格式(如 JSON)输出要调用的工具和参数。

  • Few-shot Examples:提供几个“思考-行动-观察”的完整对话示例,让 LLM 模仿这种模式。

3. 优缺点分析

  • ✅ 优点(灵活性与透明度)

    • 高适应性:能处理动态环境。如果第一步搜索失败,Agent 会在下一步思考中尝试更换关键词,而不是卡死。

    • 解决知识密集型任务:擅长通过多次搜索“顺藤摸瓜”获取信息。

    • 可解释性:Thought 步骤留下了详细的决策日志,便于开发者调试。

  • ❌ 缺点(效率与成本)

    • Token 消耗大:每一步行动都需要完整的 LLM 推理,对于长流程任务,成本高昂。

    • 循环陷阱:如果模型不够聪明,可能会在两个步骤间反复横跳,陷入死循环。

    • 错误累积:前一步的错误思考可能误导后续所有步骤。


二、 Plan-and-Execute 框架:运筹帷幄的“战略家”

与 ReAct 的“摸着石头过河”不同,Plan-and-Execute (P-a-E) 采取了一种更结构化、工程化的思路:先制定完美计划,再严格按计划执行。

1. 核心机制:两阶段分离

P-a-E 将任务拆解为两个截然不同的阶段,通常由不同的模块(甚至不同的 LLM)负责:

  1. Planning (规划阶段)

    • Planner (规划器):接收用户目标,利用 LLM 的推理能力生成一个完整的、分步骤的执行清单(Plan)。

    • 特点:这个阶段只动嘴(生成文本),不动手(不调用工具)。

  2. Execution (执行阶段)

    • Executor (执行器):解析上述计划,按顺序一步步调度工具执行。

    • 特点:严格遵守清单,上一步完成才进行下一步,通常涉及状态在步骤间的传递。

2. 优缺点分析

  • ✅ 优点(结构性与效率)

    • 执行高效:规划阶段可能很复杂,但执行阶段通常只需要简单的逻辑或轻量级模型,减少了 LLM 的频繁调用。

    • 适合长流程任务:对于步骤明确、依赖关系清晰的任务(如“写一份报告并发送邮件”),P-a-E 不容易跑偏。

    • 可预测性强:行为基本由初始计划决定,更易于控制。

  • ❌ 缺点(僵化)

    • 适应性差:一旦计划生成,如果中间某个步骤遇到意外(如 API 挂了),Agent 往往无法像 ReAct 那样灵活变通,除非设计了极其复杂的重规划(Re-planning)机制。

    • 鲁棒性依赖计划质量:如果第一步计划就漏掉了关键环节,后续执行做得再好也是徒劳。


三、 巅峰对决:ReAct vs. Plan-and-Execute

为了更直观地选择适合你场景的架构,我们将两者进行多维度对比:

对比维度 ReAct (Reasoning + Acting) Plan-and-Execute (P-a-E)
核心逻辑 迭代循环:思考 $\rightarrow$ 行动 $\rightarrow$ 观察 $\rightarrow$ 再思考 线性流程:生成完整计划 $\rightarrow$ 顺序执行
适应性 (Adaptability) :根据实时反馈动态调整策略 :严格按预定计划执行,对意外脆弱
鲁棒性 (Robustness) :易受单步错误影响,可能陷入循环 :只要计划合理,流程非常稳定
适用场景 探索性强、信息不全、需要实时调整的任务 步骤明确、流程长、依赖关系清晰的标准任务
成本与延迟 较高:LLM 调用次数多,串行等待 较低:规划一次,执行阶段可优化
行为特征 像“探索者”,行为具有涌现性 像“工程师”,行为具有确定性

四、 实战演练:以“天气查询与提醒”为例

让我们通过一个具体任务来模拟两种 Agent 的行为差异。

任务:“查询北京今天的天气,如果温度低于 10 度,提醒我穿外套。”

1. ReAct Agent 的执行轨迹

  • Thought 1: 用户想知道天气并求提醒。我需要先查北京天气。

  • Action 1: 调用 Weather_API(city="Beijing")

  • Observation 1: 返回 {"temp": 8, "condition": "Cloudy"}

  • Thought 2: 我拿到了天气,温度是 8 度。用户说低于 10 度要提醒。8 < 10,条件满足。

  • Action 2: 调用 Print_Tool("北京今天 8 度,请记得穿外套。")

  • Observation 2: 输出成功。

  • Thought 3: 任务已完成。

  • Final Answer: 北京今天 8 度,请穿外套。

观察:ReAct 根据 API 返回的“8度”这个实时信息,动态决定了下一步是“提醒”而不是“忽略”。

2. Plan-and-Execute Agent 的执行轨迹

  • Planner (规划): 生成计划列表:

    1. 调用天气工具查询北京天气。

    2. 提取温度数值。

    3. 判断温度是否小于 10 度。

    4. 如果是,生成提醒信息;否则,生成无提醒信息。

  • Executor (执行):

    • 执行步骤 1 -> 成功。

    • 执行步骤 2 -> 成功。

    • 执行步骤 3 -> 逻辑判断。

    • 执行步骤 4 -> 输出结果。

观察:P-a-E 生成了一个刚性的程序逻辑。如果 API 返回格式变了,导致步骤 2 提取失败,整个流程可能会中断,而 ReAct 可能会思考“读取失败,我尝试另一种解析方式”。


五、 总结与展望

理解 ReAct 和 Plan-and-Execute 是迈向高级 Agent 开发的第一步。

  • 如果你需要一个能处理未知错误、自我纠正的智能助手,ReAct 是首选,目前 LangChain 和 LlamaIndex 等框架的默认 Agent 多基于此模式。

  • 如果你需要处理标准化、长流程的工作流(如每日自动化报表),Plan-and-Execute 能提供更高的稳定性和效率。

在实际的复杂生产环境中,我们甚至会将两者结合:用 ReAct 来处理计划中的每一个具体步骤,从而兼顾宏观规划的结构性和微观执行的灵活性。这是构建更高级 Agent 系统的重要思路。


参考文献:

  1. Yao, S., et al. (2022). ReAct: Synergizing Reasoning and Acting in Language Models.

  2. Wang, L., et al. (2023). A Survey on Large Language Model based Autonomous Agents.

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐