规划 (Planning)
规划 (Planning) 是 Agent 智能的核心体现。它指的是 Agent 在执行行动之前,根据目标将复杂任务分解为可管理的子步骤序列的能力。如果没有规划,Agent 只能进行简单的刺激-反应式(Stimulus-Response)操作;有了规划,Agent 才能解决长程、复杂的任务。
为什么需要规划?
LLM 虽然具备强大的知识,但本质上是概率模型,擅长单步推理。面对 "创建一个贪吃蛇游戏" 这样的复杂指令,直接生成所有代码往往会出错。规划模块的作用就是让 Agent "慢下来思考"(System 2 Thinking),先制定蓝图,再逐个击破。
常见的规划方法
1. Chain of Thought (CoT)
最基础的规划形式。通过 Prompt 引导模型 "Let's think step by step",让模型显式地生成中间推理步骤。
- 特点: 线性思维,适合逻辑清晰的数学或推理问题。
- 局限: 一旦中间某一步出错,后续步骤会累积错误(Error Propagation)。
2. Tree of Thoughts (ToT)
CoT 的进阶版。它允许模型在每一步生成多个可能的"想法"(分支),并对这些想法进行自我评估,保留有希望的分支,剪掉死胡同。
- 结构: 树状搜索(Tree Search),可以是 BFS(广度优先)或 DFS(深度优先)。
- 优势: 能够进行探索和回溯,解决需要前瞻性思考的问题(如 24 点游戏、创意写作)。
3. ReAct (Reason + Act)
专为 Agent 设计的规划模式。它将 推理(Reasoning) 和 行动(Acting) 结合起来。
- 流程:
- Thought: 思考当前情况,决定下一步做什么。
- Action: 调用工具(如搜索、计算器)。
- Observation: 获取工具执行的结果。
- Loop: 根据观察结果,进入下一轮思考。
- 意义: 解决了纯推理产生的幻觉问题(通过 Action 获取真实世界反馈),也解决了纯行动缺乏目标感的问题。
4. LLM+P (LLM + Classical Planner)
利用 LLM 将自然语言问题转化为 PDDL (Planning Domain Definition Language) 等形式化语言,然后利用传统的经典规划器(Solver)来求解最优路径,最后再由 LLM 解释回自然语言。
- 场景: 适用于规则明确、容错率低的机器人控制或物流调度场景。
挑战
- 幻觉 (Hallucination): 模型可能会规划出不存在的工具或不可行的步骤。
- 循环 (Infinite Loops): Agent 可能会陷入 "思考-行动-失败-思考" 的死循环中。
- 上下文限制: 长期的规划需要消耗大量 Context Window,且容易遗忘早期目标。