Agent来了0x04:Plan & Execute 范式

0 阅读3分钟

前言

前面学了 Agent 中的第一个范式 ReAct。今天继续学习另一个比较常用的开发范式:Plan-and-Execute。

定义

计划与执行 (Plan-and-Execute) 范式侧重于先规划一系列的行动, 然后执行。 这个框架可以使大模型能够先综合考虑任务的多个方面, 然后按照计划进行行动。通常应用在比较复杂的项目管理中或者需要多步决策的场景。

  • Plan(规划) :Agent 接收用户指令后,并非立即行动,而是先进行“思考”,将一个模糊的、复杂的高层目标,分解成一个具体的、可线性或并行执行的步骤列表(Plan)。

  • Execute(执行) :专门的执行单元(Executor)严格地、逐步地运行规划阶段输出的步骤列表。

这种设计通常只专注于“如何做好当前这一步”,而无需再思考整体目标。规划与执行的分离,使得系统更模块化,也更容易对规划过程进行审视和优化。其实他和我们过往互联网开发中”职责分离“的设计模式不谋而合,或者可以说就是。

优势

传统 ReAct 范式每执行一步,都要 重新“思考” 下一步,由于下一步的不确定性,容易导致在长任务中迷失方向、重复操作或陷入死循环,可预测性和效率较低。而 Plan & Execute 范式:一次性完成高层策略制定,后续执行是确定性的。

  • 效率更高:避免每一步的冗余“宏观思考”,尤其适合步骤已知或可推测的任务。

  • 可解释性强:规划过程产生清晰的任务树,便于人类审查和调试。

  • 资源分配更优:可以在规划阶段就识别出可以并行执行的步骤。

一个🌰

  • Query:MiniMax 和 Deepseek 这两家公司最近的竞争动态
  • ReAct:
      1. 搜索“MiniMax”,读几段;
      1. 思考,再搜索“蓝色起源”,读几段;
      1. 又思考,搜索“竞争”;
      1. 中途可能忘记比较,又回头搜索… 过程迂回、低效。
  • Plan-and-Execute:
    1. 搜索并获取 MiniMax 公司的最新动态(如应用用户量、Token调用量等)。

    2. 搜索并获取 Deepseek 公司的最新动态(如最新Model发布等)。

    3. 基于前两步获取的信息,撰写一份关于两者竞争态势的分析简报。

Coding

langchain_experimental

langchain_experimental 是LangChain官方设立的“技术前沿试验田”和“功能孵化器”。主要是在保证主框架稳定、可靠的同时,能快速集成和验证社区涌现的最新想法与激进技术。

Langchain 中实现 Plan-and-Execute 范式的接口 PlanAndExecute 就是在这个模块中。

核心

Plan-and-Execute:PlanAndExecute返回对象

  • Plan:planner
  • Execute:executor
# 规划器
planner = load_chat_planner(llm)
# 执行器
executor = load_agent_executor(
    llm,
    tools,
    verbose=True
)
# 整体计划 Agent
agent = PlanAndExecute(
    planner=planner,
    executor=executor,
    verbose=True)

Running

# 运行代理解决实际问题
print(agent.invoke({"input": "在中国,100人民币能买几束玫瑰花?请用中文回答问题"}))

image.png

image.png

源码

github