第6章:规划 Planning

智能行为往往不仅仅是对即时输入的反应。它需要前瞻性思维,将复杂任务分解为更小、更易管理的步骤,并制定实现目标的策略。这就是规划模式的作用所在。规划的核心是使一个智能体或一组智能体能够制定一系列行动,从初始状态转移到目标状态。

规划模式概述

在人工智能的背景下,可以将规划智能体视为一个专家,负责处理复杂目标。当你要求它“组织一次团队外出活动”时,你定义了“是什么”——目标及其约束条件——而不是“如何做”。智能体的核心任务是自主制定通往目标的路径。它首先需要理解初始状态(例如预算、参与人数、预期日期)和目标状态(成功预订的外出活动),然后发现连接两者的最佳行动序列。计划并非事先确定,而是根据请求动态生成的。

这一过程的一个显著特点是适应性。初始计划仅仅是一个起点,而不是一个固定的脚本。智能体的真正能力在于能够整合新的信息,并在遇到障碍时调整项目方向。例如,如果首选场地不可用或选定的餐饮服务商已被预订,一个有能力的智能体不会简单地失败。它会适应,记录新的约束条件,重新评估选项,并制定新的计划,例如建议替代场地或日期。

然而,必须认识到灵活性和可预测性之间的权衡。动态规划是一种特定的工具,而非万能的解决方案。当问题的解决方案已经被充分理解并且可以重复执行时,将智能体约束在预定的固定工作流程中会更有效。这种方法限制了智能体的自主性,以减少不确定性和不可预测行为的风险,从而保证可靠且一致的结果。因此,决定使用规划智能体还是简单任务执行智能体的关键问题是:是否需要发现“如何做”,还是已经知道“如何做”。

实际应用与使用场景

规划模式是自主系统中的核心计算过程,使智能体能够在动态或复杂环境中合成一系列行动以实现指定目标。该过程将高层次目标转化为由离散、可执行步骤组成的结构化计划。

在程序化任务自动化领域,规划用于协调复杂的工作流程。例如,像新员工入职这样的业务流程可以分解为一系列有向的子任务,如创建系统账户、分配培训模块以及与不同部门协调。智能体生成一个计划,以逻辑顺序执行这些步骤,调用必要的工具或与各种系统交互以管理依赖关系。

在机器人技术和自主导航领域,规划是状态空间遍历的基础。系统(无论是物理机器人还是虚拟实体)必须生成路径或行动序列,以从初始状态过渡到目标状态。这需要优化时间或能耗等指标,同时遵守环境约束,例如避开障碍物或遵守交通规则。

这一模式在结构化信息综合方面也至关重要。当被要求生成复杂的输出(如研究报告)时,智能体可以制定一个计划,包括信息收集、数据总结、内容结构化和迭代优化等不同阶段。同样,在涉及多步骤问题解决的客户支持场景中,智能体可以创建并遵循系统化的计划,包括诊断、解决方案实施和问题升级。

从本质上讲,规划模式使得智能体能够超越简单的反应性行为,转向目标导向的行为。它提供了解决需要一系列相互依赖操作的问题所需的逻辑框架。

实践代码(Crew AI)

以下部分将演示使用 Crew AI 框架实现规划模式的代码示例。该模式涉及一个智能体,首先制定一个多步骤计划以解决复杂查询,然后按顺序执行该计划。

import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

## 从 .env 文件加载环境变量以确保安全
load_dotenv()

## 1. 明确定义语言模型
llm = ChatOpenAI(model="gpt-4-turbo")

## 2. 定义一个清晰且专注的智能体
planner_writer_agent = Agent(
   role='文章规划与写作',
   goal='规划并撰写一个简洁、有吸引力的指定主题摘要。',
   backstory=(
       '你是一名专业的技术写作者和内容策略专家。'
       '你的优势在于在写作之前制定一个清晰、可操作的计划,'
       '确保最终的摘要既信息丰富又易于理解。'
   ),
   verbose=True,
   allow_delegation=False,
   llm=llm # 为智能体分配特定的语言模型
)

## 3. 定义一个结构化且具体的任务
topic = "强化学习在人工智能中的重要性"
high_level_task = Task(
   description=(
       f"1. 为主题 '{topic}' 创建一个摘要的要点计划。\n"
       f"2. 根据计划撰写摘要,字数控制在 200 字左右。"
   ),
   expected_output=(
       "最终报告包含两个明确的部分:\n\n"
       "### 计划\n"
       "- 一个列出摘要主要内容的要点列表。\n\n"
       "### 摘要\n"
       "- 一个简洁且结构良好的主题摘要。"
   ),
   agent=planner_writer_agent,
)

## 创建包含清晰流程的团队
crew = Crew(
   agents=[planner_writer_agent],
   tasks=[high_level_task],
   process=Process.sequential,
)

## 执行任务
print("## 开始执行规划与写作任务 ##")
result = crew.kickoff()
print("\n\n---\n## 任务结果 ##\n---")
print(result)

此代码使用 CrewAI 库创建一个 AI 智能体,用于规划和撰写指定主题的摘要。代码首先导入必要的库,包括 Crew.ai 和 langchain_openai,并从 .env 文件加载环境变量。明确定义了一个 ChatOpenAI 语言模型供智能体使用。创建了一个名为 planner_writer_agent 的智能体,其角色和目标是规划并撰写简洁摘要。智能体的背景故事强调了其在规划和技术写作方面的专业能力。定义了一个任务,其描述要求先创建计划,然后撰写关于主题“强化学习在人工智能中的重要性”的摘要,并规定了预期输出的具体格式。组建了一个团队(Crew),包含智能体和任务,并设置为按顺序处理任务。最后,调用 crew.kickoff() 方法执行定义的任务,并打印结果。

Google DeepResearch

Google Gemini DeepResearch(见图 1)是一个专为自主信息检索和综合设计的基于智能体的系统。它通过一个动态迭代的多步骤智能体管道运行,该管道系统地查询 Google 搜索以深入探索复杂主题。该系统旨在处理大量基于网络的资源,评估收集的数据的相关性和知识空白,并进行后续搜索以解决这些问题。最终输出将经过验证的信息整合成一个结构化的多页摘要,并附上原始来源的引用。

扩展说明,系统的运行并非单一的查询-响应事件,而是一个经过管理的长期运行过程。它首先将用户的提示分解为一个多点研究计划(见图 1),然后将该计划呈现给用户进行审查和修改。这种方式允许用户在执行之前协同塑造研究的方向。一旦计划获得批准,智能体管道便会启动其迭代的搜索和分析循环。这不仅仅是执行一系列预定义的搜索;智能体会根据收集到的信息动态制定和优化查询,主动识别知识空白、验证数据点并解决矛盾。

图 1:Google 深度研究智能体生成执行计划,使用 Google 搜索作为工具。

图 1:Google 深度研究智能体生成执行计划,使用 Google 搜索作为工具。

一个关键的架构组件是系统能够异步管理这一过程。这种设计确保了调查过程的韧性,即使涉及分析数百个来源,也能避免单点故障,并允许用户在过程中暂时脱离,待完成后接收通知。系统还可以整合用户提供的文档,将私人来源的信息与基于网络的研究相结合。最终输出不仅仅是发现的简单列表,而是一个结构化的多页报告。在综合阶段,模型对收集的信息进行关键评估,识别主要主题,并将内容组织成具有逻辑分区的连贯叙述。报告设计为交互式,通常包括音频概述、图表以及原始引用来源的链接,便于用户验证和进一步探索。除了综合结果外,模型还会明确返回其搜索和咨询的完整来源列表(见图 2)。这些来源以引用的形式呈现,提供完全透明性和直接访问主要信息的途径。整个过程将简单的查询转化为全面综合的知识体系。

图 2:深度研究计划执行示例,展示使用 Google 搜索作为工具搜索各种网络来源的过程。

图 2:深度研究计划执行示例,展示使用 Google 搜索作为工具搜索各种网络来源的过程。

通过减少手动数据获取和综合所需的大量时间和资源投入,Gemini DeepResearch 提供了一种更为结构化和详尽的信息发现方法。该系统的价值在于其在各种领域中复杂、多方面的研究任务中的显著作用。

例如,在竞争分析中,智能体可以被指示系统性地收集和整理关于市场趋势、竞争对手产品规格、来自多样化在线来源的公众情绪以及营销策略的数据。这一自动化过程取代了手动追踪多个竞争对手的繁琐任务,使分析师能够专注于更高层次的战略性解读,而不是数据收集(见图 3)。

图 3:Google 深度研究智能体生成的最终输出,分析通过 Google 搜索工具获取的来源。

图 3:Google 深度研究智能体生成的最终输出,分析通过 Google 搜索工具获取的来源。

同样,在学术研究中,该系统是进行广泛文献综述的强大工具。它能够识别并总结基础论文,追踪概念在众多出版物中的发展,并绘制特定领域内新兴研究前沿的地图,从而加速学术研究初期最耗时的阶段。

这种方法的效率来源于迭代搜索和过滤循环的自动化,这一过程是人工研究中的核心瓶颈。系统通过处理比人类研究者在相同时间内通常能够处理的更大规模和更多样化的信息源,实现了全面性。这种更广泛的分析范围有助于减少选择偏差的可能性,并提高发现不太明显但可能至关重要的信息的概率,从而形成对主题更为稳健且有充分支持的理解。

OpenAI 深度研究 API

OpenAI 深度研究 API 是一个专门设计用于自动化复杂研究任务的工具。它采用先进的智能体模型,能够独立进行推理、规划,并从现实世界的来源中综合信息。与简单的问答模型不同,它可以将高级查询自主分解为子问题,使用内置工具执行网络搜索,并生成结构化、带有引用的最终报告。该 API 提供了对整个过程的直接编程访问,目前使用的模型包括 o3-deep-research-2025-06-26(用于高质量综合)和 o4-mini-deep-research-2025-06-26(用于对延迟敏感的应用)。

深度研究 API 的优势在于它将原本需要数小时的人工研究自动化,生成专业级别、数据驱动的报告,可用于制定商业战略、投资决策或政策建议。其主要优点包括:

  • 结构化、带引用的输出: 它生成组织良好的报告,包含内联引用并链接到源元数据,确保声明可验证且数据有据可依。
  • 透明性: 与 ChatGPT 中抽象化的过程不同,API 公开所有中间步骤,包括智能体的推理过程、执行的具体网络搜索查询以及运行的任何代码。这使得详细调试、分析以及更深入地理解最终答案的构建过程成为可能。
  • 可扩展性: 它支持模型上下文协议(MCP),使开发者能够将智能体连接到私有知识库和内部数据源,将公共网络研究与专有信息相结合。

使用该 API 时,您需要向 client.responses.create 端点发送请求,指定模型、输入提示以及智能体可使用的工具。输入通常包括定义智能体角色和期望输出格式的 system_message,以及用户的查询 user_query。您还必须包括 web_search_preview 工具,并可以选择添加其他工具,例如 code_interpreter 或自定义 MCP 工具(参见第 10 章)以访问内部数据。

from openai import OpenAI

## 使用您的 API 密钥初始化客户端
client = OpenAI(api_key="YOUR_OPENAI_API_KEY")

## 定义智能体的角色和用户的研究问题
system_message = """您是一位专业研究人员,正在准备一份结构化、数据驱动的报告。专注于数据丰富的洞察,使用可靠来源,并包含内联引用。"""
user_query = "研究司美格鲁肽对全球医疗系统的经济影响。"

## 创建深度研究 API 调用
response = client.responses.create(
 model="o3-deep-research-2025-06-26",
 input=[
   {
     "role": "developer",
     "content": [{"type": "input_text", "text": system_message}]
   },
   {
     "role": "user",
     "content": [{"type": "input_text", "text": user_query}]
   }
 ],
 reasoning={"summary": "auto"},
 tools=[{"type": "web_search_preview"}]
)

## 从响应中访问并打印最终报告
final_report = response.output[-1].content[0].text
print(final_report)

## --- 内嵌引用和元数据访问 ---
print("--- 引用 ---")
annotations = response.output[-1].content[0].annotations
if not annotations:
   print("报告中未找到任何引用。")
else:
   for i, citation in enumerate(annotations):
       # 引用所指的文本范围
       cited_text = final_report[citation.start_index:citation.end_index]
       print(f"引用 {i+1}:")
       print(f"  引用文本: {cited_text}")
       print(f"  标题: {citation.title}")
       print(f"  URL: {citation.url}")
       print(f"  位置: 字符 {citation.start_index}{citation.end_index}")

print("\n" + "="*50 + "\n")

## --- 检查中间步骤 ---
print("--- 中间步骤 ---")

## 1. 推理步骤:模型生成的内部计划和摘要。
try:
   reasoning_step = next(item for item in response.output if item.type == "reasoning")
   print("\n[找到推理步骤]")
   for summary_part in reasoning_step.summary:
       print(f"  - {summary_part.text}")
except StopIteration:
   print("\n未找到推理步骤。")

## 2. 网络搜索调用:智能体执行的具体搜索查询。
try:
   search_step = next(item for item in response.output if item.type == "web_search_call")
   print("\n[找到网络搜索调用]")
   print(f"  执行的查询: '{search_step.action['query']}'")
   print(f"  状态: {search_step.status}")
except StopIteration:
   print("\n未找到网络搜索步骤。")

## 3. 代码执行:智能体使用代码解释器运行的代码。
try:
   code_step = next(item for item in response.output if item.type == "code_interpreter_call")
   print("\n[找到代码执行步骤]")
   print("  输入代码:")
   print(f"  ```python\n{code_step.input}\n  ```")
   print("  输出代码:")
   print(f"  {code_step.output}")
except StopIteration:
   print("\n未找到代码执行步骤。")

该代码片段利用 OpenAI API 执行“深度研究”任务。首先通过初始化 OpenAI 客户端并提供 API 密钥进行身份验证。接着定义 AI 智能体的角色为专业研究员,并设置用户关于司美格鲁肽经济影响的研究问题。代码构建了对 o3-deep-research-2025-06-26 模型的 API 调用,提供了定义的系统消息和用户查询作为输入,同时请求自动生成推理摘要并启用网络搜索功能。在完成 API 调用后,代码提取并打印生成的最终报告。

随后,代码尝试从报告的注释中访问并显示内嵌引用和元数据,包括引用的文本、标题、URL 和报告中的位置。最后,它检查并打印模型执行的中间步骤的详细信息,例如推理步骤、网络搜索调用(包括执行的查询)以及使用代码解释器的代码执行步骤。

概览

定义(What)

复杂问题通常无法通过单一操作解决,需要预见性来实现期望的结果。如果没有结构化的方法,具备智能体能力的系统难以处理涉及多个步骤和依赖关系的多方面请求。这使得系统难以有效地分解高层次目标为一系列可管理的可执行任务,从而在面对复杂目标时可能导致结果不完整或不正确。

设计意图(Why)

规划模式通过让智能体系统首先创建一个连贯的计划来解决目标,提供了一种标准化的解决方案。它涉及将高层次目标分解为一系列较小的、可操作的步骤或子目标。这使系统能够以逻辑顺序管理复杂的工作流程、协调各种工具并处理依赖关系。大语言模型(LLMs)特别适合这种模式,因为它们可以基于其庞大的训练数据生成合理且有效的计划。这种结构化的方法将简单的反应型智能体转变为战略执行者,使其能够主动完成复杂目标,甚至在必要时调整计划。

使用原则(Rule of Thumb)

当用户的请求过于复杂,无法通过单一操作或工具处理时,可以使用此模式。它非常适合自动化多步骤流程,例如生成详细的研究报告、员工入职培训或进行竞争分析。每当任务需要一系列相互依赖的操作以达到最终综合结果时,都可以应用规划模式。

图解 (Visual Summary)

图4:规划设计模式

图4:规划设计模式

关键要点

  • 规划使智能体能够将复杂目标分解为可操作的、顺序的步骤。
  • 它对于处理多步骤任务、工作流程自动化以及在复杂环境中导航至关重要。
  • LLMs可以通过基于任务描述生成逐步的方法来执行规划。
  • 明确提示或设计需要规划步骤的任务可以在智能体框架中鼓励这种行为。
  • Google DeepResearch是一个智能体,它利用Google搜索作为工具分析我们获取的来源,进行反思、规划和执行。

结论

综上所述,规划模式是一个基础组件,将智能体系统从简单的反应型响应者提升为战略性、目标导向的执行者。现代大语言模型提供了核心能力,能够自主将高层次目标分解为连贯的、可操作的步骤。这种模式可以扩展到从简单的顺序任务执行(如CrewAI智能体创建并遵循写作计划)到更复杂和动态的系统。Google DeepResearch智能体展示了这种高级应用,通过创建迭代的研究计划,根据持续的信息收集进行调整和演化。最终,规划为复杂问题的自动化执行提供了人类意图与解决方案之间的关键桥梁。通过构建问题解决方法,这种模式使智能体能够管理复杂的工作流程并交付全面、综合的结果。

参考文献

  1. Google DeepResearch(Gemini功能):gemini.google.com
  2. OpenAI,介绍深度研究:https://openai.com/index/introducing-deep-research/
  3. Perplexity,介绍Perplexity深度研究:https://www.perplexity.ai/hub/blog/introducing-perplexity-deep-research

results matching ""

    No results matching ""