进阶篇08Agent认知框架之Plan-and-Execute

AI Agent技术框架解析:Plan & Execute 深度剖析

在这里插入图片描述

目录

  1. 主流技术框架概览
  2. Plan and Execute 框架详解
  3. 核心流程拆解
  4. 代码实现与实战
  5. 常见问题分析
  6. 框架对比建议

1. 主流技术框架概览

四大核心框架对比

框架名称适用场景核心特点GitHub Stars趋势
Plan and Execute复杂项目管理分步规划+执行反馈机制⭐⭐️⭐️⭐
Self Ask知识推理任务自问自答式知识验证⭐⭐️⭐
Thinking and Sacrifici资源优化场景成本效益分析优先⭐⭐
ReAct交互式任务处理推理+行动实时结合⭐⭐️⭐️⭐️

框架选择建议:根据任务复杂度选择框架,简单任务推荐ReAct,多步骤复杂任务优先Plan and Execute


2. Plan & Execute 框架详解

Plan-and-Execute这个方法的本质是先计划再执行,即先把用户的问题分解成一个个的子任务,然后再执行各个子任务,并根据执行情况调整计划。Plan-and-Execute相比ReWOO,最大的不同就是加入了Replan机制,其架构上包含规划器、执行器和重规划器:

  • 规划器Planner负责让 LLM 生成一个多步计划来完成一个大任务,在书籍运行中,Planner负责第一次生成计划;
  • 执行器接收规划中的步骤,并调用一个或多个工具来完成该任务;
  • 重规划器Replanner负责根据实际的执行情况和信息反馈来调整计划

下图是Plan-and-Execute的原理:

  • Planner接收来自用户的输入,输出具体的任务清单;
  • 将任务清单给到Single-Task Agent,即执行器,执行器会在循环中逐个处理任务;
  • 执行器每处理一个任务,就将处理结果和状态同步给Replanner,Replanner一方面会输出反馈给用户,另一方面会更新任务清单;
  • 任务清单再次给到执行器进行执行。

在这里插入图片描述

核心组件架构

Plan-and-Execute的实现过程

未完成
已完成
用户请求
LM大脑
任务规划器
子任务列表
执行引擎
工具调用?
外部工具
内部处理
状态更新
完成校验
最终响应

关键特性解析

  1. 双阶段处理:严格区分规划(Planning)和执行(Execution)阶段
  2. 动态调整机制:通过State Update实现任务流动态修正
  3. 工具兼容性:支持无缝集成外部API/数据库等工具
  4. 记忆持久化:自动保存任务执行上下文

3. 核心流程拆解

五步执行流程图

  1. 构建执行器,请求接收:User → LM的原始输入
  2. 定义系统状态,任务分解:生成有序子任务列表(Task List)
    为什么要定义系统状态?因为在处理复杂的不确定性问题时,一个非常有效的方法是将执行阶段拆分为状态机和执行器的循环。
    执行器将外部事件输入状态机,状态机告诉执行器必须采取的操作,而原始计划则成为状态机起始状态的初始化程序。这样做的优点在于状态机不依赖于混乱的执行细节,因此我们可以对其进行详尽而彻底的测试。
    在这里插入图片描述
    首先,我们需要跟踪当前计划,将其表示为字符串列表;然后跟踪先前执行的步骤,将其表示为元组列表;最后,还需要状态来表示最终响应以及原始输入。
  3. 定义Planner,逐项执行
    Planner的主要任务就是接收输入,并输出初始的Task List。
    相比ReWOO的Planner,这里的Planner的Prompt会有所不同,“对于给定的目标,制定一个简单的分步计划。该计划涉及单个任务,如果正确执行,将产生正确的答案,不要添加任何多余的步骤,最后一步的结果应该是最终答案。确保每一步都包含所需的所有信息,不要跳过步骤。”
    • 工具选择判断
    • 状态更新(成功/失败标记)
  4. 循环校验,定义Replanner
    Replanner的主要任务是根据子任务的执行结果,更新计划。
    Replanner和Planner的prompt模板非常相似,但是约束了Replanner的目标任务、原始Plan、已执行的步骤、以及更新计划。
    比如更新计划,我们要求“根据执行的步骤更新计划。如果不需要更多步骤,直接可以返回给用户;否则就填写计划,并向计划中添加仍需完成的步骤,不要将之前完成的步骤作为计划的一部分返回”
    while not all(task.status == 'done' for task in task_list):
        replanning()
        execute_retry()
    
  5. 构建流程图,结果聚合:整合各子任务结果生成最终响应
    下面,我们构建流程图,将Planner、Replanner、执行器等节点添加进来,执行并输出结果。

异常处理机制

  • 三级重试策略
    1. 即时重试(3秒内)
    2. 工具替换重试
    3. 人工干预兜底

4. 代码实现与实战

环境配置

# 推荐使用Conda环境
conda create -n agent_env python=3.9
conda activate agent_env
pip install langchain==0.2.1 wikipedia requests

核心代码实现

from langchain.agents import PlanAndExecute, load_tools
from langchain.llms import OpenAI

# 初始化组件
llm = OpenAI(temperature=0.5)
tools = load_tools(["serpapi", "wikipedia"], llm=llm)

# 构建Agent
agent = PlanAndExecute(
    planner=llm,
    executer=llm,
    tools=tools,
    verbose=True
)

# 执行示例
question = "在纽约用100美元能买多少束玫瑰?分步骤说明价格计算过程"
result = agent.run(question)
print(f"\n最终答案:{result}")

执行结果示例

[规划阶段]
1. 查询纽约玫瑰单束均价
2. 获取美元汇率数据
3. 计算可购买数量

[执行阶段]
• 通过SerpAPI获取当前价格:$18.5/束
• 查询实时汇率:1美元=6.9人民币
• 计算:100/(18.5*1) ≈ 5.4束

最终答案:在纽约用100美元约可购买5束标准玫瑰(取整计算)

5. 常见问题分析

典型报错处理

错误现象解决方案预防措施
无限循环设置max_iterations参数添加循环终止条件
工具调用超时增加timeout阈值使用异步调用
结果精度异常添加数据校验层限制数值范围

结果优化技巧

  1. 价格精确处理
    def format_price(value):
        return round(value, 2)  # 保留两位小数
    
  2. 多源验证:交叉比对Wikipedia和电商平台数据
  3. 单位换算增强
    CURRENCY_CONVERTER = {
        'CNY': 6.9,
        'EUR': 0.95,
        # ...其他货币
    }
    

6. 框架对比建议

四大框架适用场景对比

场景特征Plan and ExecuteReActSelf AskThinking and Sacrifici
多步骤任务✓✓✓✓✓✓✓✓✓
实时交互需求✓✓✓✓✓✓
资源成本敏感✓✓✓✓✓✓✓✓✓✓
知识推理需求✓✓✓✓✓✓✓✓✓✓✓✓

选型矩阵:当遇到需要处理超过3个步骤的复杂任务时,Plan and Execute的架构优势将显著体现


最佳实践提示

  1. 始终添加执行超时限制
  2. 对数值计算结果进行合理性校验
  3. 定期清理记忆存储防止内存泄漏
  4. 使用版本锁定保证环境一致性:
    # requirements.txt
    langchain==0.2.1
    openai==0.27.8
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

monday_CN

72小时打磨,值得1元认可

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

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

打赏作者

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

抵扣说明:

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

余额充值