规划与任务分解

复杂任务一步到位很难,拆成小步骤逐个解决就容易得多。规划(Planning)就是让智能体先想清楚"分几步、每步做什么",再动手执行。它是从"单轮问答"走向"自主完成多步任务"的关键能力。

任务分解:把大目标拆成小步骤

分解是规划的基础动作:目标 → 子任务 → 每步的输入输出。例如"写一篇周报"可拆成收集数据、分析亮点、起草正文、排版发送四步,每步都能独立执行与检查。

思维链、ReAct 与规划的关系

  • 思维链(CoT):提示模型"一步步思考",是隐式的临时规划,藏在一次回答里;
  • ReAct:思考与行动交替进行(想一步 → 调工具 → 看结果 → 再想),规划随行动逐步展开;
  • 显式规划:先输出完整计划,再按计划执行,计划可保存、可修改、可审查。

三者的区别:CoT 只在脑子里规划,ReAct 边想边做,显式规划把计划写出来先于执行。

Plan-and-Execute 模式

Plan-and-Execute 把"制定计划"与"执行步骤"分成两个阶段,先用规划模型产出计划,再逐条执行:

plan = planner.generate("帮我把一份销售数据整理成汇报材料")
# 计划输出(示例):1.读取CSV 2.计算月度汇总 3.生成图表 4.撰写结论
for step in plan.steps:
    result = executor.run(step)      # 每步可调用工具

规划器与执行器分离

生产中常把规划器和执行器用不同模型承担:规划器用推理强的模型保证计划质量,执行器用便宜快速的模型逐条落地,成本与质量兼顾。执行器的反馈(失败、缺数据)应能传回给规划器触发再规划。

常见问题与再规划

问题表现对策
计划过时执行中情况变化,旧计划失效中断并让规划器基于新情况重新规划
计划过长步骤太多,中途跑偏分层规划:粗计划先定大阶段,再逐阶段细化
步骤粒度不当一步过大失败难定位拆到"一步一个可验证结果"
规划与执行脱节执行器不按计划走执行器每步回报状态,规划器检查进度
# 再规划片段:执行失败即触发
if step.status == "failed":
    plan = planner.replan(original_goal, history, error=step.error)

何时需要规划

规划也有成本(多一次模型调用、更长的响应时间),不必事事规划:

任务特征是否规划
单轮问答、查一次资料直接回答,不规划
需要调 2~3 个工具走 ReAct 边想边做即可
多步骤、有依赖、要产出文档显式 Plan-and-Execute
长任务且中途常变化规划 + 分层 + 再规划机制

小结

规划的本质是"先想后做":CoT 隐式思考,ReAct 边想边做,Plan-and-Execute 先出计划再执行,适合长任务。规划器与执行器分离可优化成本,而"计划会过时、需要再规划"是必须内置的容错机制。

笔记加载中…