本页目录
L06 — 规划与任务分解
本课目标:学会让 Agent 处理复杂的多步骤任务。L03 的 ReAct 是"边想边做",这课讲另一种范式——"先规划,再执行"(Plan-and-Execute),并对比两者的适用场景。
这是 Agent 从"完成小任务"到"完成复杂任务"的关键能力。
1. 为什么复杂任务需要规划?
看一个复杂任务:
"帮我调研一下北京和上海的天气,比较哪个更热,然后算出温差,最后用一句话总结。"
如果用 ReAct(边想边做),Agent 可能: - 查北京天气 → 查上海天气 → 算温差 → 总结 - 但也可能:查北京 → 算温差(忘了还没查上海)→ 发现错了 → 重新查... 走弯路
问题在于:边想边做缺乏全局视野,走到一半才发现路线错了。
规划的思路:先把整个任务的步骤想清楚,列成清单,再按清单执行。
规划阶段:
1. 查北京天气
2. 查上海天气
3. 比较两地温度,算温差
4. 用一句话总结
执行阶段:
按清单逐个完成,每完成一个打勾
🎯 核心认知:规划的价值是全局视野——先把路线想清楚,避免边走边撞墙。
2. CoT:思维链(规划的基础)
CoT(Chain of Thought) 是让模型"分步推理"的技巧。核心就一句话:在 prompt 里要求模型"一步步想"。
普通 prompt vs CoT prompt
普通:算一下 (17+25)×3
模型可能直接给:126(可能算对也可能算错)
CoT:算一下 (17+25)×3,请一步步展示你的计算过程
模型会:先算 17+25=42,再算 42×3=126
为什么 CoT 有效?因为让模型"写出中间步骤",等于强制它一步步推理,每步都可以验证,减少了"一步到位"的出错率。
CoT 和规划的关系
CoT 是"推理层面的分步"(把思考拆开),规划是"任务层面的分步"(把任务拆成子任务)。Plan-and-Execute 就是把 CoT 思想应用到任务执行上——先列出所有步骤(计划),再逐个执行。
3. Plan-and-Execute 模式
这是本课的核心范式。两个阶段:
阶段 1:Plan(规划)
让 LLM 看完任务,输出一个结构化的任务计划(通常是 JSON 列表):
{
"steps": [
"查询北京的天气",
"查询上海的天气",
"比较两地温度,计算温差",
"用一句话总结调研结论"
]
}
阶段 2:Execute(执行)
逐个执行计划里的步骤。每个步骤可以: - 调用工具(查天气、算数) - 基于前面步骤的结果继续推理 - 完成后在计划里标记"已完成"
步骤 1: 查北京天气 → "北京:晴,25°C" ✅
步骤 2: 查上海天气 → "上海:多云,28°C" ✅
步骤 3: 比较温差 → 28-25=3°C,上海更热 ✅
步骤 4: 总结 → "上海比北京热3度" ✅
为什么用 JSON 输出计划?
因为好解析。让模型输出结构化的 JSON,你用 json.loads() 就能拿到步骤列表,程序化地逐个执行。这比让模型输出自然语言然后你正则解析可靠得多。
💡 小技巧:要求模型输出 JSON 时,可以在 prompt 里给一个格式示例,并强调"只输出 JSON,不要其他内容"。
4. ReAct vs Plan-and-Execute
| ReAct(L03) | Plan-and-Execute(本课) | |
|---|---|---|
| 思路 | 边想边做 | 先想后做 |
| 决策时机 | 每步实时决策 | 一开始就规划好全部步骤 |
| 灵活性 | 高(可根据观察调整) | 低(计划定好后较死板) |
| 适合 | 步骤不确定、需要随机应变的任务 | 步骤清晰、可预先规划的任务 |
| 风险 | 可能走弯路、遗漏步骤 | 计划错了全盘皆输 |
各自的最佳场景
用 ReAct 当: - 任务探索性强(不知道中间会发现什么) - 每步依赖上一步的观察来决定 - 例:debug(根据报错决定下一步查哪里)
用 Plan-and-Execute 当: - 任务步骤可以提前想清楚 - 有明确的子任务序列 - 例:调研报告(查数据→对比→分析→总结)
更强的:两者结合
工业界常把两者结合:先 Plan 出大致步骤,Execute 时用 ReAct 灵活执行每一步。这样既有全局视野,又能随机应变。本课先讲纯 Plan-Execute,结合版留给练习。
5. 本课代码会做什么
code.py 实现 Plan-and-Execute,并和 ReAct 对比:
① Plan-and-Execute 实现
plan():让 LLM 输出任务计划(JSON 步骤列表)execute_plan():逐步执行计划,每步可调用工具- 打印完整的规划 + 执行过程
② 实验对比
用同一个复杂任务,分别跑 Plan-Execute 和 ReAct,对比: - Plan-Execute:先看到完整计划,再逐个执行 - ReAct:边想边做,没有全局计划
③ 观察"计划的价值"
看 Plan-Execute 怎么避免 ReAct 可能的"走弯路"。
6. 跑起来
python agent-lessons/06_planning/code.py
终端会打印规划阶段(任务清单)和执行阶段(逐步完成)。重点对比 Plan-Execute 和 ReAct 的不同工作方式。
下一课 L07 — Agentic RAG 会把 Agent 和你学过的 RAG 结合起来。