一、什么是 Plan-and-Execute
Plan-and-Execute = Planning(规划)+ Execution(执行)
这是一种将复杂任务先进行全局规划,然后按计划逐步执行的架构模式,强调先思后行、有序推进。
人类类比
想象你在规划一次旅行。与其走一步看一步,更明智的做法是先制定一个清晰的行程表,然后按计划执行。这个流程图展示了这种思维方式:
从图中可以看到,我们首先在顶层确立目标,然后分解成具体的日程安排。每个日程进一步细化为可执行的具体任务(预订、购票等)。执行过程中,我们会定期检查进度,发现问题及时调整后续计划。
这就是 Plan-and-Execute 的本质:先制定完整计划 → 逐步执行 → 检查进度 → 必要时调整计划。这种方法让复杂任务变得有序可控,避免迷失方向。
定义
Plan-and-Execute 是一种目标导向的架构模式,特点是:
- ✅ 先进行全局规划,后执行具体任务
- ✅ 计划具有层次结构(高层目标 → 子任务)
- ✅ 执行过程相对独立和并行
- ✅ 支持计划的监控和动态调整
- ✅ 适合长时间、多步骤的复杂任务
二、为什么需要 Plan-and-Execute
在开始深入之前,让我们先理解为什么需要这种范式。要回答这个问题,我们需要看看传统方法在处理复杂任务时遇到的挑战。
ReAct 的局限性
使用传统的 ReAct 模式处理复杂任务时,会遇到以下问题:
❌ 问题1:容易迷失方向用户: "帮我分析竞争对手,制作市场报告"ReAct: 思考 → 搜索公司A → 思考 → 搜索公司B → 思考 → 咦,我要做什么来着?❌ 问题2:效率低下每一步都需要重新思考"下一步做什么",缺乏全局视野❌ 问题3:难以并行所有任务必须串行执行,无法利用并发能力❌ 问题4:成本高昂每个思考步骤都需要调用 LLM,token 消耗大这些问题在简单任务中或许不明显,但当任务变得复杂、步骤增多时,就会显著影响效率和质量。
Plan-and-Execute 的优势
✅ 全局规划:一次性制定完整路线图✅ 高效执行:明确知道要做什么,减少重复思考✅ 支持并行:多个独立子任务可以同时执行✅ 降低成本:规划阶段用强模型,执行阶段可用弱模型✅ 易于监控:清晰的计划使进度可视化✅ 灵活调整:可以根据执行结果重新规划三、Plan-and-Execute 的核心原理
理解了为什么需要 Plan-and-Execute,接下来我们深入探讨它的核心工作原理。整个框架可以分解为三个关键组件,它们相互配合形成一个完整的闭环系统。
三大核心组件
下面这张架构图展示了 Plan-and-Execute 的核心流程:
从图中可以看出,整个流程分为三个阶段:规划(Planning)、执行(Execution)和评估(Evaluation)。规划器负责将复杂任务分解为具体步骤,执行器按计划完成每个步骤,评估环节则决定是否需要调整计划。这种设计使系统既有全局视野,又保持灵活性。
1. Planner(规划器)
职责:将复杂任务分解为有序的子任务列表
规划器的工作流程可以用下图表示:
规划输出示例:
任务: 分析市场并制作竞争报告 ↓步骤1: 收集竞争对手列表 [web_search] ↓步骤2: 分析产品特点 [web_scrape] (依赖步骤1) ↓步骤3: 收集市场份额 [data_query] (依赖步骤1) ↓步骤4: 生成报告 [document_generate] (依赖步骤2,3)特点:
- 使用强大的 LLM(如 GPT-4)进行规划
- 只在开始时和需要调整时调用
- 生成结构化的任务列表
2. Executor(执行器)
职责:按照计划执行每个子任务
执行器的核心流程:
特点:
- 可以使用较弱的 LLM 或专门工具
- 专注于执行单个明确的任务
- 支持并行执行独立任务
3. Replanner(重规划器)
职责:在执行过程中遇到问题时调整计划
重规划的触发场景:
常见触发条件:
- ❌ 任务执行失败
- 💡 发现新的重要信息
- 🔄 依赖条件发生变化
- 👤 用户需求调整
四、Plan-and-Execute 的工作机制
前面我们介绍了核心组件,现在让我们通过一个完整的时序图来看看这些组件如何协同工作。这将帮助我们理解从接收任务到返回结果的全过程。
完整流程图
这张时序图展示了各个组件之间的交互过程:
从图中可以看到,规划器首先进行"三步走":分析任务、分解子任务、确定依赖关系。然后执行器接管,循环处理每个步骤。关键的是,执行过程中如果遇到问题,系统可以回到规划阶段重新制定计划,体现了动态调整的能力。
详细步骤
让我们通过一个具体示例来理解每个步骤的实际操作:
步骤1:任务输入
user_task = "帮我研究 AI Agent 市场,写一份包含技术趋势和竞争格局的报告"步骤2:规划阶段
规划器会将任务分解为多个步骤,并确定依赖关系:
输出的执行计划:
- 步骤1和2可以并行执行(无依赖)
- 步骤3依赖步骤1的结果
- 步骤4依赖步骤2的结果
- 步骤5需要等待步骤3和4完成
步骤3:执行阶段
执行器按照依赖关系智能调度任务:
并行执行策略:
执行核心逻辑:
- 找出所有依赖已满足的任务 → 并行执行
- 记录结果并检查是否需要重规划
- 重复直到所有任务完成
步骤4:执行过程示例
执行日志:━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━[Round 1] 并行执行独立任务├─ Task 1: 搜索 AI Agent 技术趋势│ └─ 状态: ✓ 完成│ └─ 结果: 找到 15 篇相关文章│└─ Task 2: 搜索 AI Agent 产品和公司 └─ 状态: ✓ 完成 └─ 结果: 找到 8 家主要公司[Round 2] 执行依赖任务├─ Task 3: 分析技术趋势文章(依赖 Task 1)│ └─ 状态: ✓ 完成│ └─ 结果: 提取 5 个核心趋势│└─ Task 4: 分析竞争格局(依赖 Task 2) └─ 状态: ✓ 完成 └─ 结果: 生成竞争矩阵[Round 3] 最终汇总└─ Task 5: 生成报告(依赖 Task 3, 4) └─ 状态: ✓ 完成 └─ 结果: 报告已生成(3500 字)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━总计: 5 个任务,3 轮执行,耗时 45 秒五、规划器(Planner)设计
规划器的核心能力
规划器的五个核心步骤:
核心能力:
- 任务理解- 分析用户意图和目标
- 任务分解- 将复杂任务拆分为子任务
- 工具映射- 为每个子任务分配合适的工具
- 依赖分析- 确定任务之间的执行顺序
- 优化排序- 最大化并行性和效率
任务分解策略
三种常见的分解策略:
1. 层次分解
将复杂任务递归分解为多个层次:
2. 时序分解
按时间顺序分解任务(发布软件版本示例):
3. 并行分解
识别可以同时进行的任务流:
规划器提示词设计
核心规划原则:
- SMART 原则- 具体、可衡量、可实现
- 最小化依赖- 支持并行执行
- 合理粒度- 不太细也不太粗
- 明确工具- 为每个任务指定工具
- 清晰依赖- 标注任务间依赖关系
六、执行器(Executor)设计
执行器的核心职责
执行器负责按计划执行任务,支持三种执行模式:
核心职责:
- 🔍 监控任务依赖关系
- ⚡ 智能调度(串行/并行)
- 📊 维护执行状态
- 🔄 触发重规划机制
任务执行策略
三种执行策略的对比:
1. 串行执行
- 适用:任务有严格顺序要求
- 优点:实现简单,资源占用少
- 缺点:效率较低
2. 并行执行
- 适用:所有任务相互独立
- 优点:效率最高
- 缺点:资源消耗大
3. 混合执行(推荐)
- 适用:有依赖的复杂任务
- 策略:分析依赖图,组内并行,组间串行
- 优点:平衡效率和资源
执行上下文管理
执行状态管理的数据流:
状态管理职责:
- 📦 存储任务结果
- 🔗 管理任务依赖
- 🌐 维护全局上下文
- 🔄 状态实时更新
七、重规划机制
何时需要重规划
重规划的五大触发条件:
触发场景示例:
- ❌任务失败- API 调用失败,可切换备用方案
- 💡新信息- 搜索发现更好的数据源
- 🔄条件变化- 依赖服务不可用
- ⏱️超时- 任务耗时超过预期2倍
- 👤用户干预- 用户修改需求
重规划策略
三种重规划策略的应用场景:
1. 局部调整
适用:单个任务失败,影响范围小
策略:保留已完成任务,只调整失败部分及后续依赖
2. 全局重规划
适用:发现重要新信息,需要改变整体策略
策略:基于新信息完全重新规划,但利用已有结果
3. 增量规划
适用:长期任务,分阶段执行
策略:当前阶段完成后,规划下一阶段目标
重规划实现
重规划器的工作流程:
重规划的关键要素:
- 🔢次数限制- 避免无限循环
- 📊历史分析- 总结已完成和失败任务
- 🎯范围判断- 局部还是全局
- ✅计划验证- 确保新计划可行
八、与其他范式的对比
了解了 Plan-and-Execute 的工作原理后,一个自然的问题是:什么时候该用它?什么时候用其他范式更好?让我们通过对比来找到答案。
Plan-and-Execute vs ReAct
这两种范式代表了两种不同的思维方式:一个强调"先谋后动",一个强调"边走边看"。下表总结了它们的核心差异:
| 维度 | Plan-and-Execute | ReAct |
|---|---|---|
| 思考方式 | 先全局规划,后执行 | 边思考边行动 |
| 适用场景 | 复杂、多步骤、可预见的任务 | 探索性、动态变化的任务 |
| 执行效率 | 高(可并行,减少重复思考) | 低(串行,每步都需思考) |
| 灵活性 | 中(需要触发重规划) | 高(每步都可调整) |
| 成本 | 低(规划用强模型,执行可用弱模型) | 高(每步都需调用 LLM) |
| 可控性 | 高(清晰的计划和进度) | 中(可能偏离目标) |
| 错误处理 | 需要重规划机制 | 自然融入思考过程 |
关键区别:Plan-and-Execute 适合"目标明确、路径清晰"的任务,而 ReAct 适合"需要探索、情况多变"的任务。
Plan-and-Execute vs CoT
| 维度 | Plan-and-Execute | CoT |
|---|---|---|
| 核心 | 任务分解 + 执行 | 推理链展示 |
| 交互 | 与外部工具交互 | 纯推理,无外部交互 |
| 适用 | 需要行动的复杂任务 | 需要推理的问题 |
| 输出 | 执行结果 | 推理过程 + 答案 |
混合使用示例
class HybridAgent: """混合策略智能体""" defsolve(self, task): # 1. 判断任务类型 task_type = self.classify_task(task) if task_type == "complex_actionable": # 使用 Plan-and-Execute plan = self.planner.plan(task) result = self.executor.execute(plan) elif task_type == "exploratory": # 使用 ReAct result = self.react_agent.solve(task) elif task_type == "reasoning": # 使用 CoT result = self.cot_agent.solve(task) else: # 混合使用 # 先用 Plan-and-Execute 制定大框架 high_level_plan = self.planner.plan(task) # 对每个子任务,根据需要选择 ReAct 或 CoT for subtask in high_level_plan.steps: if subtask.requires_exploration: result = self.react_agent.solve(subtask) else: result = self.simple_executor.execute(subtask) return result实际应用场景
理论固然重要,但 Plan-and-Execute 的真正价值体现在实际应用中。让我们通过几个典型场景,看看这种范式如何解决真实世界的复杂问题。
场景1:数据分析报告生成
这是 Plan-and-Execute 的经典应用场景。数据分析任务通常包含多个清晰的步骤,且步骤之间有明确的依赖关系,非常适合先规划后执行。
# 用户任务task = "分析我们公司过去一年的销售数据,生成详细的分析报告"# Plan-and-Execute 方案plan = { "goal": "生成年度销售分析报告", "steps": [ { "id": 1, "task": "从数据库提取销售数据", "tool": "database_query", "sql": "SELECT * FROM sales WHERE year = 2024" }, { "id": 2, "task": "数据清洗和预处理", "tool": "data_processing", "dependencies": [1] }, { "id": 3, "task": "计算关键指标(总销售额、增长率等)", "tool": "data_analysis", "dependencies": [2] }, { "id": 4, "task": "生成销售趋势图表", "tool": "visualization", "dependencies": [2] }, { "id": 5, "task": "识别畅销产品和区域", "tool": "data_analysis", "dependencies": [2] }, { "id": 6, "task": "编写分析报告", "tool": "document_generate", "dependencies": [3, 4, 5] } ]}# 执行优势:# - Task 3, 4, 5 可以并行执行(都依赖 Task 2)# - 清晰的数据流向# - 每个步骤职责明确场景2:软件发布流程
# 用户任务task = "准备并发布软件 v2.0 版本"# Plan-and-Execute 方案plan = { "goal": "发布 v2.0 版本", "steps": [ # 阶段1:准备工作(可并行) { "id": 1, "task": "运行完整测试套件", "tool": "test_runner", "dependencies": [] }, { "id": 2, "task": "更新版本号和变更日志", "tool": "version_manager", "dependencies": [] }, { "id": 3, "task": "生成 API 文档", "tool": "doc_generator", "dependencies": [] }, # 阶段2:构建(依赖测试通过) { "id": 4, "task": "构建生产版本", "tool": "build_system", "dependencies": [1, 2] }, # 阶段3:发布(可并行) { "id": 5, "task": "发布到应用商店", "tool": "app_store_deploy", "dependencies": [4] }, { "id": 6, "task": "更新官网下载链接", "tool": "website_update", "dependencies": [4] }, { "id": 7, "task": "发送发布公告邮件", "tool": "email_sender", "dependencies": [4, 3] } ]}场景3:客户支持自动化
# 用户问题user_question = "我的订单 #12345 还没收到,而且无法退款"# Plan-and-Execute 方案plan = { "goal": "解决客户订单问题", "steps": [ { "id": 1, "task": "查询订单状态", "tool": "order_system", "parameters": {"order_id": "12345"} }, { "id": 2, "task": "查询物流信息", "tool": "logistics_api", "dependencies": [1] }, { "id": 3, "task": "检查退款资格", "tool": "refund_policy_checker", "dependencies": [1] }, { "id": 4, "task": "生成解决方案", "tool": "solution_generator", "dependencies": [2, 3], "logic": """ if 物流显示已签收: 告知客户并提供签收凭证 elif 物流异常: 提供补发或退款选项 elif 符合退款条件: 启动退款流程 else: 转人工处理 """ }, { "id": 5, "task": "发送回复给客户", "tool": "email_sender", "dependencies": [4] } ]}如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。