构建AI Agent必学的4种设计模式,一文了解
构建AI Agent必学的4种设计模式,一文了解
在构建AI助手和智能体时,应该采用怎样的设计模式才能让它们更加高效、可靠?本文详细介绍了四种设计模式的特点和应用场景:Reflection Pattern通过自我评估来优化输出和决策;Tool Use Pattern让AI能够调用和整合外部工具;Planning Pattern将复杂任务分解为可管理的子任务;以及Multi-Agent Collaboration Pattern实现多个AI Agent之间的协作。
Reflection Pattern
该设计模式要求Agents能够分析和提升自身性能。Agents通过自我评估来精细化其输出和决策流程。
这是一个比较简单的设计模式,只需少量的代码即可实现。
在以下场景中,reflection设计模式的表现要优于一般的大语言模型(LLM):
- 代码优化
- 对话回复
请查看下图,您将观察到语言模型是如何在对话回复和代码优化示例中逐步完善其输出的。
Tool Use Pattern
该模式的工作流程如下:
- 功能描述:为LLM提供一套详尽的工具说明,包括各工具的功能及必要的参数。
- 工具选择:根据当前面临的任务,LLM将决定调用哪个工具。
- 函数调用:LLM生成特定的字符串来激活所选工具,通常需遵循一定的格式规范(如JSON)。
- 执行过程:在后续处理阶段,系统会识别这些函数调用,执行相应的操作,并将结果反馈给LLM。
- 整合输出:LLM将工具的执行结果融入其最终反馈中。
如果你一直关注技术动态,并使用过GPT,那你可能已经意识到,它在处理某些任务时已经能够自动完成这些步骤了。
当LLMs能够访问成百上千的工具时,它们的能力将得到极大的扩展。
比如,Gorilla使得LLMs能够通过调用API来使用工具。面对自然语言查询,Gorilla能够找到在语义和语法上都恰当的API进行调用。
借助Gorilla,我们可以执行超过1,600种(且数量不断增长)的机器学习API调用。他们提供的命令行界面(CLI)让我们能够以自然语言完成各项任务。例如,我们可以
$ gorilla generate 100 random characters into a file called test.txt
然后它就会显示CLI命令:
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 100 | head -n 1 > test.txt
Planning Pattern
该模式的工作流程如下:
- 任务拆解:LLM扮演控制器的角色,将一项任务拆分为多个细小、易于处理的子任务。
- 针对每个子任务,选取合适的特定模型来执行。
- 这些特定模型完成子任务后,将结果反馈给控制器LLM,由其整合并生成最终模型响应。
HuggingGPT就是一个运用了planning pattern的实例。它将大语言模型(LLMs)与Hugging Face平台上丰富的模型生态系统相连接。
Multi-Agent Collaboration
该模式的工作流程如下:
- 特定角色智能体:每个智能体都有其特定职责,比如担任软件工程师、产品经理或设计师等角色。
- 任务细分:将复杂任务拆分为更小的子任务,这些子任务可以由不同的智能体分别处理。
- 信息交流与行动协调:智能体之间通过互动交流信息,并协调各自行动,共同推进项目目标的实现。
- 分布式解决问题:系统通过集合多个智能体的智慧和能力,来解决单个智能体难以应对的复杂问题。
目前,由于技术尚未成熟,现实世界中多智能体系统的应用并不广泛。一个我所了解的例子是ChatDev,这是一家由虚拟角色组成的软件公司,包括CEO、CTO以及工程师等职位。
Andrew Ng将"Planning"和"Multi-Agent Collaboration"模式划分为难以预测的类型:
与"Planning"设计模式一样,我发现"Multi-Agent Collaboration"的输出质量很难预测,尤其是当智能体可以自由互动并且拥有多样的工具时。相比之下,更为成熟的"Reflection"和"Tool Use"模式则显得更为稳定可靠。
—— Andrew Ng
Andrew Ng的观点提示我们,目前来看,前两种模式更可能被现有的生产系统所采纳。