AI 学习资料 · AI 智能体入门(精选 9 课)
第 7 课 规划设计模式
介绍
本课将涵盖:
- 定义清晰的总体目标,把复杂任务拆成便于管理的子任务。
- 利用结构化输出,得到更可靠、机器可读的回复。
- 用事件驱动的方法处理动态任务和意外输入。
学习目标
学完本课,你将理解如何:
- 为 AI 智能体识别并设定总体目标,确保它清楚要达成什么。
- 把复杂任务拆成便于管理的子任务,并按合理的顺序组织起来。
- 为智能体配备合适的工具(例如搜索工具或数据分析工具),决定何时、如何使用它们,并处理出现的意外情况。
- 评估子任务的结果,衡量表现,反复调整行动,改进最终产出。
定义总体目标并拆解任务
编者注:图中“结束目标”是机器翻译的误译,原意是“最终目标”。
现实中的大多数任务都太复杂,没法一步完成。AI 智能体需要一个简明的目标来指导规划和行动。比如这个目标:
“生成一份三天的旅行行程。”
这个目标说起来简单,但仍需细化。目标越清晰,智能体(以及参与协作的人)就越能集中精力得到正确的结果,比如一份完整的行程,包括航班选择、酒店推荐和活动建议。
任务拆解
把大型或复杂的任务拆成较小的、各有目标的子任务,就更容易管理。以旅行行程为例,可以把目标拆成:
- 订机票
- 订酒店
- 租车
- 个性化安排
每个子任务可以交给专门的智能体或流程处理。一个智能体专门搜索最划算的机票,另一个专注于订酒店,以此类推。再由一个负责协调的“下游”智能体,把这些结果汇总成一份连贯的行程,交给最终用户。
这种模块化的做法也便于逐步增强。比如,可以再加上专门推荐美食或本地活动的智能体,随着时间推移不断完善行程。
结构化输出
大语言模型(LLM)可以生成结构化输出(例如 JSON),让下游的智能体或服务更容易解析和处理。这在多智能体的场景中特别有用:拿到规划结果后,就可以据此执行各项任务。
原文用下面一段 Python 代码,演示一个简单的规划智能体如何把目标拆成子任务,并生成结构化的计划:
代码略:先列出可用的专职智能体(订机票、订酒店、租车、订活动、目的地介绍、默认智能体、群聊管理),定义“旅行计划”的数据结构(主任务、若干子任务及各自分配的智能体、是否只是打招呼),再用一段要求模型充当规划者并按 JSON 格式回复的系统提示词,把用户请求“为一个有两个孩子的家庭制定从新加坡到墨尔本的旅行计划”发给模型,打印解析后的结果。
用于多智能体编排的规划智能体
在这个例子里,一个语义路由智能体接收用户的请求(例如“我需要一份旅行的酒店计划”)。
然后,规划者会:
- 接收酒店计划:规划者拿到用户的消息,根据系统提示词(其中包含可用智能体的详细信息),生成一份结构化的旅行计划。
- 列出智能体及其工具:智能体注册表里记录着各个智能体(例如负责机票、酒店、租车和活动的智能体),以及它们各自提供的函数或工具。
- 把计划分派给相应的智能体:视子任务的数量而定,规划者要么把消息直接发给某个专职智能体(单任务的情况),要么通过群聊管理器协调多个智能体协作。
- 总结结果:最后,规划者把生成的计划总结一下,让结果一目了然。
原文用下面的 Python 代码示例演示了这些步骤:
代码略:与上一段代码基本相同,定义可用智能体和旅行计划的数据结构,让模型以规划者的身份处理同一个家庭旅行请求,并打印返回的 JSON。
下面是上述代码的输出。你可以根据这份结构化输出,把任务分派给 assigned_agent 字段指定的智能体,并向最终用户汇总旅行计划。
代码略:输出的 JSON 写明主任务是“规划一次从新加坡到墨尔本的家庭旅行”,并列出五个子任务:由 flight_booking 预订往返机票,由 hotel_booking 寻找适合家庭的酒店,由 car_rental 安排适合四口之家的租车,由 activities_booking 列出适合家庭的活动,由 destination_info 介绍墨尔本这个目的地。
迭代规划
有些任务需要来回调整或重新规划,一个子任务的结果会影响下一个。比如,智能体在订机票时发现数据格式出乎意料,可能需要先调整策略,再去订酒店。
另外,用户的反馈(例如用户决定改订更早的航班)也可能触发局部的重新规划。这种动态、迭代的做法,能确保最终方案符合现实约束,也跟得上用户不断变化的偏好。
代码略:示例代码沿用前面的规划者,但在请求中附带上一版旅行计划作为上下文,让规划者据此重新规划,再把任务分派给相应的智能体。
想做更全面的规划,可以看看介绍 Magentic-One 的博文,了解如何解决复杂任务。
小结
本课通过一个例子,介绍了如何创建一个能动态挑选已定义智能体的规划者。规划者的输出会拆解任务,并为每项任务指定负责的智能体,以便交给它们执行。这里假定各个智能体都能使用完成任务所需的函数或工具。除了这些智能体,你还可以加入反思、总结、轮流发言的群聊(round robin)等其他模式,做进一步定制。
补充资源
Magentic-One 是一个解决复杂任务的通用多智能体系统,在多项有难度的智能体基准测试中取得了出色成绩。参考:Magentic-One。在它的实现中,编排者会为具体任务制定计划,把任务委派给可用的智能体。除了规划之外,编排者还用一套跟踪机制监控任务进度,并在需要时重新规划。
编者注:英文原文有一处、中文机器翻译版两处把 Magentic-One 写成了“Magnetic One”,本库已按原文链接中的名称统一改正。
免责声明:本课中文最初由 AI 翻译工具 Co-op Translator 自动翻译,本库对照英文原文做了校订和删节。译文仍可能有错漏,与英文原版不一致之处,以英文原版为准。
