第三章:主流 Agent 执行逻辑:ReAct 与 Plan-and-Execute

在上一章中,我们详细解构了构成 AI Agent 的核心组件——大脑(LLM)、记忆、规划和行动模块。我们理解了它们各自的功能和潜在的交互方式。然而,仅仅拥有这些组件是不够的,Agent 需要一个清晰的执行策略工作流来有效地编排这些组件,驱动它们协同工作以完成任务。

本章,我们将聚焦于两种当前最主流且具代表性的 Agent 执行逻辑:ReActPlan-and-Execute (P-a-E)。我们将深入探讨它们各自的内部运作机制、核心思想、优劣势,并通过一个实战对比案例,直观地理解它们是如何指挥 Agent 进行思考与行动的循环或流程的。掌握这两种基础模式,是理解更复杂 Agent 行为和设计更高级 Agent 系统的关键一步。

3.1 ReAct 框架深度解析:推理与行动的迭代循环

ReAct [1](其名称是 Reasoning + Acting 的结合)是一种极具影响力的 Agent 执行框架,由 Yao 等人明确提出。它的核心思想是模仿人类解决问题时边想边做、边观察边调整的模式。在这里插入图片描述

  • 工作原理详解:迭代循环机制
    ReAct Agent 在一个紧密的迭代循环中运行,这个循环通常包含以下步骤:

    1. Thought (思考): Agent 首先基于当前目标和之前的观察进行内部“思考”。这通常是利用 LLM 生成一段描述当前状态、分析问题、制定下一步行动策略或分解任务的文本。
    2. Action (行动): 基于思考的结果,Agent 决定执行一个具体的行动。这通常是调用一个工具(如搜索引擎、计算器、API)并附带必要的参数,或者是向用户请求更多信息,甚至是判断任务已经完成并生成最终答案。
    3. Observation (观察): 执行行动后,Agent 会从环境或工具那里获得一个结果或反馈,这就是“观察”。例如,搜索引擎返回的搜索结果、API 调用的输出、代码执行的错误信息等。
    4. 回到 Thought: Agent 将这个观察结果纳入考量,开始新一轮的思考,评估上一步行动的效果,判断是否需要调整策略,并规划下一步的行动。这个循环不断重复,直到 Agent 判断任务目标已经达成。
  • 核心流程图
    ReAct 循环流程图

  • 关键 Prompt 设计技巧
    ReAct 的效果在很大程度上依赖于精心设计的 Prompt。这个 Prompt 需要引导 LLM 在每一步:

    • 有效思考 (Thought): 指示 LLM 分析当前状况、回顾目标、评估已有信息、识别知识差距、制定行动计划。常常包含 “Think step-by-step” 或类似的指令。
    • 做出行动决策 (Action): 指示 LLM 以特定格式(如 JSON)输出要调用的工具名称和参数,或者输出最终答案。
    • 解读观察结果 (Observation): 帮助 LLM 理解工具返回的信息,并将其融入下一步的思考中。
      Prompt 还需要包含可用工具的描述以及一些示例(Few-shot examples),来帮助 LLM 更好地理解如何在这个循环中工作。
  • 优点分析

    • 灵活性高: ReAct 能够根据每一步的观察结果动态调整策略,对预料之外的情况或工具执行失败具有较强的适应性。
    • 处理知识密集型任务: 通过迭代地使用工具(如搜索)获取信息,ReAct 能较好地处理需要外部知识的任务。
    • 透明度: “Thought”步骤提供了 Agent 决策过程的中间记录,便于理解和调试。
  • 缺点分析

    • 可能陷入无效循环: 如果 Agent 的思考或工具使用出现偏差,可能会导致在几个步骤之间重复循环而无法取得进展。
    • 效率较低: 每一步都需要 LLM 进行思考和决策,对于长流程任务,LLM 调用次数多,可能导致较高的延迟和成本。
    • 错误累积: 前一步的错误(如错误的思考或工具调用失败)可能会影响后续步骤,导致最终结果偏差。
  • 代码实现分析 (以 LangChain/LlamaIndex 为例)
    主流的 Agent 开发框架如 LangChain 和 LlamaIndex 都对 ReAct 提供了良好的支持,极大地简化了其实现。它们通常会提供一个核心的执行器模块,例如 LangChain 中的 AgentExecutor,负责管理整个 ReAct 循环。

    开发者可以通过简单的配置来快速启用 ReAct 逻辑。例如,在 LangChain 中,开发者常常可以通过 initialize_agent 函数并选用特定的 agent_type(如 zero-shot-react-descriptionreact-docstore 等预置类型)来便捷地构建 ReAct Agent类似地,LlamaIndex 也通过其 AgentRunner 或相关类(如 ReActAgent)提供了对 ReAct 模式的支持,允许开发者将 LLM、工具集和 ReAct 的循环机制方便地组合起来。

    这些框架的执行器(Executor/Runner)内部封装了 ReAct 的核心流程:

    • 格式化并发送包含思考、行动指令的 Prompt 给 LLM。
    • 解析 LLM 输出的 Thought 和 Action。
    • 根据 Action 查找并调用相应的工具。
    • 将工具返回的 Observation 格式化并反馈给 LLM,开始下一轮循环。
    • 处理循环的终止条件(如达到最大迭代次数、Agent 判断任务完成并输出 Final Answer 等)。

    这意味着开发者通常只需要定义好 LLM 实例、准备好工具列表(Tool)以及可能定制化的基础 Prompt,就可以利用这些框架快速搭建并运行一个 ReAct Agent,而无需手动编写复杂的循环控制和解析逻辑。具体的实现细节和代码演练将在后续的框架实战章节(如第六、七章)中深入探讨。

3.2 Plan-and-Execute 框架:结构化规划与顺序执行

与 ReAct 的迭代试错不同,Plan-and-Execute (P-a-E) 采取了一种更结构化、更线性的方法。这种“先规划后执行”的模式是 AI Agent 领域中另一种常见的架构范式 [2]。顾名思义,它包含两个截然不同的阶段:

  • 工作原理详解

    1. Planning (规划) 阶段: 首先,Agent(通常通过一次或少数几次 LLM 调用)基于用户给定的初始目标,生成一个完整的、通常是分步骤的执行计划。这个计划列出了为达成目标所需执行的所有步骤及其顺序。
    2. Execution (执行) 阶段: 然后,Agent 严格按照预先制定的计划,一步一步地顺序执行。通常每一步会涉及调用一个或多个工具。只有当前步骤成功完成后,才会进入下一步。
  • 核心流程图
    Plan-and-Execute 流程图

  • 实现模式与关键点
    构建 P-a-E Agent 通常涉及两个核心组件:

    • 规划器 (Planner): 负责理解初始目标并生成结构化的执行计划。这通常是一个专门的 LLM 调用,其 Prompt 旨在输出一个清晰的步骤列表或带有依赖关系的计划。计划的质量直接决定了 Agent 的最终表现。
    • 执行器 (Executor): 负责解析计划,并按顺序调度工具执行每个步骤。它需要管理步骤间的状态传递(如上一步的输出作为下一步的输入),但不负责重新规划(除非设计了非常复杂的错误处理逻辑)。
  • 与 ReAct 的对比分析

    对比维度ReAct (Reasoning + Acting) [1]Plan-and-Execute (P-a-E) [cf. 2]
    核心机制思考-行动-观察 的迭代循环先生成完整计划,再按顺序执行
    适应性 (Adaptability),能根据实时观察调整策略,严格按预定计划执行,对意外情况脆弱
    鲁棒性 (Robustness)中等,易受单步错误影响,可能循环较高(如果计划合理),流程更可预测
    复杂任务处理适合探索性、信息不全、需实时调整的任务适合长流程、步骤明确、依赖关系清晰的任务
    效率与成本LLM 调用次数多,可能较慢,成本较高规划阶段可能复杂,但执行阶段 LLM 调用少
    可控性/可预测性较低,行为更像“涌现”较高,行为基本由初始计划决定

3.3 实操对比:构建并观察两种 Agent 的行为

理论讲解和对比之后,最好的理解方式是动手实践。我们将通过一个简单的任务来直观感受 ReAct 和 P-a-E 的差异。

  • 任务设定
    选择一个需要结合信息查询和简单处理的任务,例如:“查询中国北京市今天的天气怎么样?如果温度低于 10 摄氏度,提醒我穿件外套。” 这个任务包含:① 信息查询(天气 API 或搜索),② 信息处理(提取温度),③ 条件判断,④ 可能的最终行动(发送提醒)。

  • 构建实现
    我们将使用同一个框架(例如 LangChain)和相同的可用工具(如搜索 API、最终回答工具),分别构建一个 ReAct Agent 和一个 Plan-and-Execute Agent 来完成上述任务。

  • 对比观察重点
    在运行这两个 Agent 时,我们需要仔细观察并记录以下方面:

    1. 执行轨迹: ReAct Agent 的完整 Thought-Action-Observation 序列 vs. P-a-E Agent 生成的初始 Plan 和后续的执行步骤记录。
    2. 中间步骤差异: ReAct 可能需要多次思考和尝试(比如第一次搜索没找到温度,第二次换关键词),而 P-a-E 的计划一旦生成,执行步骤通常是固定的。
    3. 错误处理(若模拟): 如果模拟天气查询失败的情况,ReAct Agent 是否会尝试重新查询或报告错误?P-a-E Agent 很可能会在失败的步骤卡住(除非有特定的重试逻辑)。
    4. 效率与资源消耗: 比较两者完成任务所需的 LLM 调用次数和大致时间。通常 ReAct 的调用次数会更多。
    5. 最终结果: 检查两者是否都准确完成了任务(正确查询天气、判断温度并给出合适的提醒或结论)。
  • 结论总结
    通过这个简单的实操对比,我们期望能直观地看到:ReAct 的灵活性和试错过程,以及 P-a-E 的结构性和可预测性。我们会发现,对于这个相对直接的任务,P-a-E 可能会更直接高效(如果规划得当),但如果天气查询接口不稳定,ReAct 则有潜力表现出更强的适应性。最终的选择取决于具体任务的性质、对可靠性和灵活性的不同要求,以及可接受的成本。

总结

本章深入探讨了 ReAct [1] 和 Plan-and-Execute [cf. 2] 这两种主流的 AI Agent 执行逻辑。ReAct 通过迭代的“思考-行动-观察”循环赋予了 Agent 灵活性和适应性,而 Plan-and-Execute 则通过“先规划后执行”的模式提供了更高的结构性和可预测性。

理解这两种基础框架的工作原理、优缺点和适用场景,是后续学习和构建更复杂、更专用 Agent 的重要基石。在下一章,我们将聚焦于如何为 Agent 配备更强大的“武器库”——探索高级工具的使用,包括代码执行、Web 浏览,以及我们专栏特别关注的知识图谱查询工具。


参考文献

[1] Yao, S., Zhao, J., Yu, D., Du, N., Shafran, I., Narasimhan, K., & Cao, Y. (2022). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv preprint arXiv:2210.03629. (https://arxiv.org/abs/2210.03629)

[2] Wang, L., Ma, C., Feng, X., Zhang, Z., Yang, H., Zhang, J., … & Wang, X. (2023). A Survey on Large Language Model based Autonomous Agents. arXiv preprint arXiv:2308.11432. (https://arxiv.org/abs/2308.11432) (注:此文献作为代表,讨论了包括类似 Plan-and-Execute 在内的多种 Agent 架构范式)

内容同步在gzh:智语Bot

<think>好的,我现在需要回答用户关于Agent ReAct框架的问题。首先,我需要确认用户提到的“Agent ReAct”具体指的是什么。根据我的知识库,ReAct可能是一个结合推理(Reasoning)和行动(Acting)的AI代理框架。接下来,我要查找相关的引用资料来支持我的回答。 用户提供的引用中有[^1]提到AI代理通过感知、推理和行动环境交互,这符合ReAct的基本概念。另外,引用[^3]关于跨模态对比学习可能多模态环境中的代理行动相关,但不确定是否直接相关。引用[^4]提到的机器学习在拥塞控制中的应用可能不直接相关,但可以忽略。 接下来,我需要构建回答的结构。首先解释ReAct框架的定义和核心思想,然后分点详细说明其三个核心要素:推理、行动和交互。接着可以讨论其应用场景,并引用相关文献。最后生成相关问题。 需要确保使用正确的LaTeX格式,比如行内公式用$...$,独立公式用$$...$$。例如,在提到强化学习的目标函数时可能需要公式。同时,注意引用标识的位置,例如在描述应用场景时引用和。 检查是否有遗漏的信息或可能的误解。例如,ReAct是否特定论文或作者相关?根据现有引用,可能无法确定,但可以结合一般知识进行解释。最后,生成的相关问题需要主题相关,帮助用户深入理解。</think>### Agent ReAct框架解析 Agent ReAct(Reasoning and Acting)是人工智能领域中一种结合推理行动的智能代理框架,通过结构化思维链提升任务处理能力。其核心思想是将逻辑推理环境交互动态结合,适用于需要复杂决策的AI系统。 #### 核心要素 1. **推理层(Reasoning)** 通过语言模型生成思维链(Chain-of-Thought),建立任务分解路径。例如处理数学问题时: $$P = \frac{n!}{k!(n-k)!}$$ 系统会先推导阶乘计算步骤,再执行具体运算。 2. **行动层(Acting)** 调用API、数据库查询等外部工具获取实时信息,如: `weather_api.get("Beijing")` 通过强化学习目标函数$Q(s,a) = \mathbb{E}[r+\gamma \max Q(s',a')]$优化行动策略。 3. **交互迭代** 采用"感知-规划-执行"循环结构: ```text [观察]当前室温25℃ [推理]需降温至22℃ [行动]发送空调控制指令 ``` #### 应用场景 1. 多模态任务处理(如结合视觉文本的机器人导航) 2. 复杂系统控制(网络拥塞的动态调节) 3. 虚拟助手的多轮对话决策 ```python class ReActAgent: def __init__(self, llm, tools): self.llm = llm # 语言模型 self.tools = tools # 外部工具集 def execute(self, prompt): thought_process = self.llm.generate_plan(prompt) for step in thought_process: if needs_action(step): return self.tools.execute(step) else: continue ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

(initial)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值