规划(Planning)

Categories:AI
Tags:Agent / Planning
目录

这一章讲的是 规划(Planning)。它和上一章 工具使用(Tool Use)/ 函数调用(Function Calling) 的关系很紧:上一章解决的是“智能体怎么调用外部工具”,这一章解决的是“面对复杂任务时,智能体怎么先想清楚步骤,再按步骤执行”。

核心一句话:

规划(Planning)就是让智能体把一个复杂目标拆成一系列有顺序、有依赖关系、可执行的小步骤,然后根据执行结果动态调整。


1. 为什么需要规划?

普通问答是:

1
用户问一个问题 → 模型直接回答

但很多真实任务不是一步能完成的。比如:

帮我做一个竞品分析报告。 帮我组织一次团队团建。 帮我研究某个行业趋势。 帮我写一份结构化研究报告。

这些任务都不是单一动作,而是多步骤任务(Multi-step Task)。

比如“做竞品分析报告”至少包括:

1
2
3
4
5
6
7
1. 明确分析对象
2. 确定分析维度
3. 搜集竞品资料
4. 对比产品功能
5. 分析市场定位
6. 总结机会和风险
7. 写成报告

如果没有规划,智能体可能直接生成一篇看似完整但很空泛的回答。

有规划之后,它会先拆任务,再执行。

所以规划的本质是让 Agent 从:

1
被动回答者

变成:

1
目标导向执行者(Goal-directed Executor)

PDF 里也说,规划让智能体具备前瞻性思考,可以将复杂任务拆解为可管理的小步骤,并制定实现目标的策略。


2. 规划到底在规划什么?

规划不是“随便列个待办清单”,而是在三个东西之间建立路径。

初始状态(Initial State)

现在有什么条件。

比如组织团建:

1
2
3
4
预算:5000 元
人数:20 人
日期:下周五
地点:上海

目标状态(Goal State)

最终要达成什么结果。

比如:

1
成功预订一个适合 20 人的团建活动,并通知所有成员。

行动序列(Action Sequence)

从当前状态到目标状态,需要做哪些动作。

比如:

1
2
3
4
5
6
查可用场地
→ 比较价格
→ 确认预算
→ 联系供应商
→ 预订
→ 发送通知

所以规划解决的是:

从“现在在哪里”到“想要达到哪里”,中间该走哪些步骤。


3. 规划不是死流程,它要能调整

PDF 里强调了一个重点:计划不是死板剧本,而是可以根据新信息调整。

比如 Agent 原计划是:

1
2
3
1. 预订 A 场地
2. 订餐
3. 通知成员

但执行时发现:

1
A 场地已满

一个比较好的规划 Agent 不应该直接失败,而是应该重新规划:

1
2
3
4
1. 搜索替代场地
2. 比较 B/C/D 场地
3. 重新确认预算和日期
4. 预订替代方案

这就是 动态调整(Dynamic Replanning)。

所以规划模式里有两个层次:

1
2
先制定计划 Planning
执行过程中根据结果修正计划 Replanning

4. 什么时候需要规划?什么时候不需要?

这一章有一个很重要的判断标准:

如果“怎么做”已经非常明确,就不一定需要规划 Agent;如果“怎么做”需要探索,就适合规划 Agent。

比如:

不太需要规划的任务

1
2
3
4
把这句话翻译成英文
计算 123 + 456
查询某个订单状态
把这段文字总结成三句话

这些任务路径很明确,一步或少数固定步骤就能完成。

适合规划的任务

1
2
3
4
5
6
写一份行业研究报告
做竞品分析
完成一个数据分析项目
规划一次旅行
自动处理新员工入职流程
构建一个 RAG 项目

这些任务需要多个步骤,而且步骤之间有依赖关系。

比如数据分析项目:

1
2
3
4
5
6
先理解数据
→ 再清洗数据
→ 再做 EDA
→ 再设计指标
→ 再建模或分析
→ 再写结论

这就很适合规划。


5. 规划模式的应用场景

PDF 里讲了几个典型应用。

场景一:流程自动化(Workflow Automation)

比如企业新员工入职:

1
2
3
4
5
创建账号
→ 分配权限
→ 安排培训
→ 通知主管
→ 录入 HR 系统

这里每一步都可能依赖前一步。

比如没有创建账号,就不能分配权限。


场景二:机器人与自主导航(Robotics and Autonomous Navigation)

比如机器人从 A 点走到 B 点。

它需要规划路径:

1
2
3
4
当前位置
→ 避开障碍物
→ 选择路径
→ 到达目标位置

这里的重点是状态空间(State Space)和约束条件(Constraints)。


场景三:结构化信息合成(Structured Information Synthesis)

比如生成复杂报告。

Agent 可以先计划:

1
2
3
4
5
1. 搜集资料
2. 摘要信息
3. 对比观点
4. 组织结构
5. 输出报告

这和 Deep Research 很相关。


场景四:多步骤客户支持(Multi-step Customer Support)

比如用户说:

我的账号登录不了。

Agent 不能马上乱答,而是应该按诊断流程来:

1
2
3
4
5
6
确认账号状态
→ 检查密码错误次数
→ 检查是否被封禁
→ 检查验证码问题
→ 给出解决方案
→ 必要时升级人工客服

6. CrewAI 代码示例在做什么?

这一章的 CrewAI 示例很简单,它创建了一个“文章规划与写作专家”。任务是:

1
2
1. 先针对主题制定摘要计划
2. 再根据计划写 200 字摘要

主题是:

1
强化学习在 AI 中的重要性

代码中的 Agent 是:

1
2
3
4
5
planner_writer_agent = Agent(
    role='文章规划与写作专家',
    goal='规划并撰写指定主题的简明、吸引人的摘要。',
    ...
)

这里的重点不是写作,而是这个任务要求 Agent 先规划再执行。

也就是输出结构被设计成:

1
2
3
4
5
6
7
### 计划
- 要点 1
- 要点 2
- 要点 3

### 摘要
正式摘要内容

这个例子说明了一件事:

规划能力不一定要写复杂代码才能实现,有时候你只要在任务描述里明确要求“先计划,再执行”,Agent 就会表现出规划行为。


7. Google Deep Research 是规划模式的高级例子

这一章后面讲了 Google Deep Research。它是规划模式非常典型的产品级应用。

普通搜索是:

1
用户问问题 → 搜索 → 返回网页

Deep Research 是:

1
2
3
4
5
6
7
8
9
用户提出复杂研究问题
→ Agent 生成研究计划
→ 用户确认或修改计划
→ Agent 多轮搜索
→ 发现信息缺口
→ 继续搜索
→ 整合资料
→ 生成结构化报告
→ 给出引用来源

这不是一次性问答,而是一个长流程研究任务。,Deep Research 会把用户请求拆解成多点研究计划,并展示给用户审核和修改;计划确认后,智能体会进入迭代搜索与分析循环。

也就是说,它至少包含这些能力:

1
2
3
4
5
6
规划 Planning
搜索 Search
反思 Reflection
信息筛选 Information Filtering
信息综合 Synthesis
引用 Attribution

第 4 页图 1 展示的是 Deep Research 生成执行计划的界面:它会先给出一个研究计划,而不是直接开始写报告。

第 5 页图 2 展示的是 Deep Research 在执行计划时会检索大量网络资源。

第 6 页图 3 展示的是最终输出,它会把通过 Google 搜索得到的信息整理成分析报告,并附带来源。


8. OpenAI Deep Research API 这部分在讲什么?

这里讲的是 OpenAI 的 Deep Research API,它也是规划模式的例子。

PDF 说它适合自动化复杂研究任务,会自主推理、规划,并从真实世界来源合成信息。它不是简单问答模型,而是会把高层查询拆成子问题,再使用网络搜索等工具,最后生成带引用的结构化报告。

它的几个关键词:

结构化带引用输出(Structured Output with Citations)

不是随便生成一段话,而是生成结构化报告,并且附来源。


透明性(Transparency)

API 可以暴露中间步骤,比如:

1
2
3
4
智能体推理
搜索查询
代码执行
引用位置

这对于调试 Agent 很重要。


可扩展性(Scalability)

它支持 MCP(Model Context Protocol,模型上下文协议),可以连接私有知识库和内部数据。

这和你前面学的 RAG、工具调用也连起来了:

1
2
3
4
规划:决定研究步骤
工具调用:执行搜索/代码/数据库查询
RAG:检索私有知识库
引用:保证结论可追溯

9. OpenAI Deep Research API 示例代码怎么理解?

代码大概做了几件事。

第一,初始化客户端:

1
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")

第二,定义系统消息:

1
2
3
4
system_message = """
你是一名专业研究员,需撰写结构化、数据驱动的报告。
关注数据洞见,使用可靠来源,并在正文中插入引用。
"""

这个 system message 是在规定 Agent 的角色和输出标准。

第三,定义用户问题:

1
user_query = "研究司美格鲁肽对全球医疗体系的经济影响。"

第四,调用模型:

1
2
3
4
5
6
response = client.responses.create(
    model="o3-deep-research-2025-06-26",
    input=[...],
    reasoning={"summary": "auto"},
    tools=[{"type": "web_search_preview"}]
)

这里最关键的是:

1
tools=[{"type": "web_search_preview"}]

也就是允许模型使用网页搜索工具。

第五,提取最终报告:

1
final_report = response.output[-1].content[0].text

第六,读取引用:

1
annotations = response.output[-1].content[0].annotations

它可以拿到:

1
2
3
4
被引用文本
标题
链接
引用在正文中的位置

第七,检查中间步骤:

1
2
3
reasoning
web_search_call
code_interpreter_call

这说明 Deep Research 不只是输出结果,它还可以让开发者看到它中间做了什么。


10. 第 9 页图 4 怎么理解?

图 4 是规划设计模式。

结构大概是:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
User 用户
  ↓
Prompt 提示词
  ↓
Agent 智能体
  ↔
Plan 1 / Plan 2 / Plan 3...
  ↓
Output 输出
  ↓
User 用户

图的意思是:

Agent 收到用户目标后,不是马上输出,而是先生成一个或多个计划。

然后它根据计划执行,最后给用户结果。

这里最重要的是 Agent 和 Plan 之间的关系:

1
2
3
Agent 负责理解目标
Plan 负责组织步骤
Output 是执行计划后的结果

11. 规划和工具调用的关系

你可以把前两章连起来理解:

工具调用解决的是:

1
我能用什么外部能力?

例如:

1
2
3
4
5
搜索
查数据库
发邮件
运行代码
调用 API

规划解决的是:

1
我应该按什么顺序使用这些能力?

比如做研究报告:

1
2
3
4
5
先搜索背景资料
→ 再搜索市场数据
→ 再搜索竞品信息
→ 再用代码整理数据
→ 再生成报告

所以更完整的 Agent 通常是:

1
2
3
4
5
规划 Planning
+ 工具调用 Tool Calling
+ 反思 Reflection
+ 记忆 Memory
+ 检索 RAG

规划决定路径,工具负责执行。


12. 你需要掌握到什么程度?

这章你不需要纠结每段代码都手敲。

你真正要掌握的是这个判断:

1
2
3
简单任务:直接回答或直接调用工具
复杂任务:先规划,再执行
执行失败:重新规划

例如:

用户问:

1
今天北京天气如何?

这不需要复杂规划,直接调用天气工具。

用户问:

1
帮我做一份新能源汽车行业研究报告。

这就需要规划:

1
2
3
4
5
6
7
1. 明确研究范围
2. 搜集行业规模
3. 搜集政策信息
4. 分析主要公司
5. 对比竞争格局
6. 总结趋势
7. 输出报告

用户问:

1
帮我做一个 Netflix 用户行为分析项目。

这也需要规划:

1
2
3
4
5
6
7
1. 检查数据字段
2. 做数据质量检查
3. 做用户画像
4. 设计核心指标
5. SQL 分析
6. 可视化
7. 写 README

这个和你之前做的数据分析项目直接相关。


13. 一段师生对话理解

学生:老师,规划是不是就是让 Agent 先列个大纲?

老师:不完全是。列大纲只是规划的一种表现。真正的规划是把目标拆成可执行步骤,而且步骤之间有顺序和依赖。

学生:那比如写文章,规划就是先列标题和小标题?

老师:对,这是简单规划。但如果是做研究报告,规划就不只是列标题,还包括要查什么资料、先查什么、后查什么、如何验证来源、如何整合信息。

学生:那它和工具调用有什么关系?

老师:工具调用是“做某个动作”的能力。规划是“决定先做哪个动作、后做哪个动作”的能力。

学生:比如 Deep Research?

老师:对。Deep Research 不是直接回答复杂问题,而是先制定研究计划,然后多轮搜索、分析、补充,再生成报告。

学生:所以规划让 Agent 更像一个执行项目的人?

老师:对。没有规划的 Agent 更像即时问答模型;有规划的 Agent 才能处理复杂项目型任务。


14. 最直观总结

这一章的重点可以压缩成三句话:

第一,规划(Planning) 是让 Agent 面对复杂目标时,先拆解任务,再按步骤执行。

第二,规划适合多步骤、有依赖、需要动态调整的任务,比如研究报告、竞品分析、工作流自动化、数据分析项目。

第三,规划和工具调用是配套的:规划决定执行路线,工具调用负责完成具体动作。

章节插图

推荐阅读

上一篇:

工具使用(Tool Use)/ 函数调用(Function Calling)

下一篇:

多智能体协作(Multi-Agent Collaboration)