前言
前面学了 Agent 中的第一个范式 ReAct。今天继续学习另一个比较常用的开发范式:Plan-and-Execute。
定义
计划与执行 (Plan-and-Execute) 范式侧重于先规划一系列的行动, 然后执行。 这个框架可以使大模型能够先综合考虑任务的多个方面, 然后按照计划进行行动。通常应用在比较复杂的项目管理中或者需要多步决策的场景。
-
Plan(规划) :Agent 接收用户指令后,并非立即行动,而是先进行“思考”,将一个模糊的、复杂的高层目标,分解成一个具体的、可线性或并行执行的步骤列表(Plan)。
-
Execute(执行) :专门的执行单元(Executor)严格地、逐步地运行规划阶段输出的步骤列表。
这种设计通常只专注于“如何做好当前这一步”,而无需再思考整体目标。规划与执行的分离,使得系统更模块化,也更容易对规划过程进行审视和优化。其实他和我们过往互联网开发中”职责分离“的设计模式不谋而合,或者可以说就是。
优势
传统 ReAct 范式每执行一步,都要 重新“思考” 下一步,由于下一步的不确定性,容易导致在长任务中迷失方向、重复操作或陷入死循环,可预测性和效率较低。而 Plan & Execute 范式:一次性完成高层策略制定,后续执行是确定性的。
-
效率更高:避免每一步的冗余“宏观思考”,尤其适合步骤已知或可推测的任务。
-
可解释性强:规划过程产生清晰的任务树,便于人类审查和调试。
-
资源分配更优:可以在规划阶段就识别出可以并行执行的步骤。
一个🌰
- Query:MiniMax 和 Deepseek 这两家公司最近的竞争动态
- ReAct:
-
- 搜索“MiniMax”,读几段;
-
- 思考,再搜索“蓝色起源”,读几段;
-
- 又思考,搜索“竞争”;
-
- 中途可能忘记比较,又回头搜索… 过程迂回、低效。
-
- Plan-and-Execute:
-
搜索并获取 MiniMax 公司的最新动态(如应用用户量、Token调用量等)。
-
搜索并获取 Deepseek 公司的最新动态(如最新Model发布等)。
-
基于前两步获取的信息,撰写一份关于两者竞争态势的分析简报。
-
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人民币能买几束玫瑰花?请用中文回答问题"}))