【Agentic AI】规划模式学习笔记
规划模式在AI系统中的应用 规划模式是一种将复杂任务分解为可管理步骤的策略方法,使AI系统能够自主制定行动序列以实现目标。该模式具有以下特点: 自适应性强:能够根据新信息调整初始计划 适用于动态复杂环境:如任务自动化、机器人导航、信息合成等领域 结构化解决问题:通过创建逻辑框架处理多步骤任务 典型应用场景包括: 业务流程自动化(如员工入职) 自主导航系统 复杂报告生成 多步骤客户支持 代码示例展示
博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持!
博主链接
本人就职于国际知名终端厂商,负责modem芯片研发。
在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G技术研究。
博客内容主要围绕:
5G/6G协议讲解
高级C语言讲解
Rust语言讲解
规划模式学习笔记
将复杂的任务分解成更小的、可管理的步骤,并制定如何实现预期结果的战略。这就是规划模式发挥作用的地方。从本质上讲,规划是一个Agent或Agent系统制定一系列行动的能力,以便从初始状态向目标状态移动。
一、规划模式介绍
规划Agent可以视为一个专门负责执行复杂目标的专家。当你要求它“组织一次异地会议”时,你是在定义“目标及其约束条件”——即目标本身及其限制因素,但并未涉及“具体操作方式”。该Agent的核心任务是自主规划实现该目标的路径。它首先需要了解初始状态(例如预算、参与人数、期望日期)和目标状态(成功预订的异地会议),然后找出连接这两个状态的最佳行动序列。该计划事先并不确定;它是根据请求而创建的。
这一过程的一个显著特点是自适应性。最初的计划只是一个起点,而非固定的脚本。Agent真正的能力在于能够整合新信息并绕过障碍来引导项目。例如,如果首选的场地不可用或选定的餐饮商已全部订满,规划Agent不会直接失败。他会记录新的限制条件,重新评估其选项,并制定新的计划,也许会建议替代的场地或日期。
然而,必须认识到灵活性和可预测性之间的权衡。动态规划是一种特定的工具,并非通用的解决方案。当一个问题的解决方案已经清晰明确且可以重复使用时,将执行者限制在预先设定的固定工作流程中会更加有效。这种方法会限制执行者的自主性,以减少不确定性以及不可预测行为的风险,从而确保一个可靠且一致的结果。因此,决定使用规划Agent还是简单的任务执行Agent,取决于一个单一的问题:“如何完成”是否需要被发现,还是已经众所周知?
二、典型的应用场景
规划模式是自主系统中的一个核心计算过程,它使智能体能够合成一系列行动以实现特定目标,尤其是在动态或复杂的环境中。这一过程将一个高层次的目标转化为由离散且可执行的步骤组成的结构化计划。
在诸如任务自动化这样的领域中,规划模式用于协调复杂的工作流程。例如,新员工入职这样的业务流程可以分解为一个有向的子任务序列,比如创建系统账户、分配培训模块以及与不同部门协调。智能体会生成一个计划,以按逻辑顺序执行这些步骤,并调用必要的工具或与各种系统交互以管理依赖关系。
在机器人技术和自主导航中,规划模式对于状态空间的遍历至关重要。无论是物理机器人还是虚拟实体,系统都必须生成一条路径或一系列动作,以从初始状态过渡到目标状态。这包括在遵循环境限制(如避开障碍物或遵守交通规则)的同时,针对诸如时间或能耗等指标进行优化。
这种模式对于结构化信息的合成也至关重要。当需要生成像研究报告这样的复杂输出时,一个智能体可以制定一个包含信息收集、数据汇总、内容结构化以及迭代改进等不同阶段的计划。同样,在涉及多步骤问题解决的客户支持场景中,智能体可以创建并遵循一个系统的诊断、解决方案实施和升级的计划。
简而言之,规划模式使智能体能够超越简单的、反应性的行动,转向以目标为导向的行为。它提供了解决需要一系列相互依存的、连贯操作的问题所必需的逻辑框架。
三、基于CrewAI的代码示例
使用Crew AI框架的Planner模式的实现。该模式涉及一个代理,该代理首先制定一个多步骤计划来处理一个复杂的查询,然后依次执行该计划。
import os
from crewai import Agent, Task, Crew, Process, LLM
from langchain_openai import ChatOpenAI
llm=LLM(model="qqq",
api_key="None", # required, but unused
base_url="http://xxx.xxx.xxx.xxx:11434/v1")
# 2. Define a clear and focused agent
planner_writer_agent = Agent(
role='Article Planner and Writer',
goal='Plan and then write a concise, engaging summary on a specified topic.',
backstory=(
'You are an expert technical writer and content strategist. '
'Your strength lies in creating a clear, actionable plan before writing, '
'ensuring the final summary is both informative and easy to digest.'
),
verbose=True,
allow_delegation=False,
llm=llm,
function_calling_llm=llm
)
# 3. Define a task with a more structured and specific expected output
topic = "The importance of Reinforcement Learning in AI"
high_level_task = Task(
description=(
f"1. Create a bullet-point plan for a summary on the topic: '{topic}'.\n"
f"2. Write the summary based on your plan, keeping it around 200 words."
),
expected_output=(
"A final report containing two distinct sections:\n\n"
"### Plan\n"
"- A bulleted list outlining the main points of the summary.\n\n"
"### Summary\n"
"- A concise and well-structured summary of the topic."
),
agent=planner_writer_agent,
)
# Create the crew with a clear process
crew = Crew(
agents=[planner_writer_agent],
#model="qwen3-vl:4b",
tasks=[high_level_task],
process=Process.sequential,
#planning=True, # I see better results with this
#planning_llm=llm
)
# Execute the task
print("## Running the planning and writing task ##")
result = crew.kickoff()
print("\n\n---\n## Task Result ##\n---")
print(result)
这段代码使用 CrewAI 库创建了一个 AI Agent,用于就给定主题规划并撰写摘要。创建了一个名为 planner_writer_agent 的Agent,其角色和目标是先规划然后撰写简明摘要。Agent的背景故事强调了其在规划和技术写作方面的专长。定义了一个任务,其中包含清晰的描述,即首先制定计划,然后就“强化学习在人工智能中的重要性”这一主题撰写摘要,并指定了预期输出的特定格式。将Agent和任务组合成一个 Crew,设置为按顺序处理它们。最后,调用 crew.kickoff() 方法来执行定义的任务,并打印结果。
四、总结
复杂问题通常无法通过单一行动解决,需要有远见才能达成预期结果。若没有结构化的方法,Agent系统就难以处理涉及多个步骤和依赖关系的多面请求。这使得将高层次目标分解为一系列可管理的较小的可执行任务变得困难。因此,该系统无法有效地制定策略,当面对复杂目标时,会导致结果不完整或不正确。
规划模式通过让Agent系统首先创建一个连贯的计划来解决目标,提供了一个标准化的解决方案。这涉及将高层次目标分解为一系列较小的、可操作的步骤或子目标。这使系统能够管理复杂的流程,协调各种工具,并以逻辑顺序处理依赖关系。大型语言模型特别适合这一点,因为它们可以根据其庞大的训练数据生成合理且有效的计划。这种结构化的方法将一个简单的响应式Agent转变为一个战略执行者,能够主动朝着复杂目标努力,甚至在必要时调整其计划。
经验法则:当用户的请求过于复杂,无法通过单一操作或工具处理时,请使用此模式。它非常适合自动化多步骤流程,例如生成详细的调研报告、新员工入职或执行竞争分析。只要任务需要一系列相互依赖的操作才能得出最终的综合结果,就应用规划模式。


更多推荐



所有评论(0)