AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


AI应用开发范式-Agent设计模式综述
发布日期:2024-09-08 08:30:17 浏览次数: 1703 来源:AI应用研究Lab


1、引言
在当今的技术革新浪潮中,基于大型语言模型(Large Language Model, LLM)的AI Agent正逐步成为智能化解决方案的核心。AI Agent不仅在处理复杂任务和提供个性化服务方面展现出巨大潜力,而且它们的自主性和交互能力正在重新定义人机协作的模式。然而,设计这些高度复杂的智能体并非易事,开发者在构建目标导向、可协作互动、高效高可靠运行的Agent系统时面临着前所未有的挑战。目前,缺乏成熟的设计模式来指导这一过程,这不仅增加了开发难度,也限制了AI Agent应用的广泛性和有效性。


有鉴于此,我们的系列文章将深入探讨基于LLM的Agent应用的设计模式,旨在解决当前LLM Agent开发过程中遇到的难题,为LLM Agent的设计和开发提供清晰的框架和实用的指导。此外,我们还将通过多Agent的协作模式探讨如何确保这些Agent的自主性和协作能力,以满足日益增长的复杂场景需求。


2、为什么需要设计模式?


设计模式是软件开发中的一种高效沟通和解决问题的工具。它们源自于经验丰富的开发者在面对重复出现的设计难题时所采用的解决方案。正如“微服务架构之父”Martin Fowler在《Patterns》文章1中曾指出的:“设计模式的价值在于它们提供了一种格式来封装设计建议,使我们能够集中讨论与特定问题紧密相关的解决方案。这些模式帮助我们避免在大量不相关信息中迷失方向,而是直接针对问题核心进行思考。”


设计模式曾被广泛应用于诸多领域,例如以传统编程语言开发的应用中的设计模式,(工厂模式、单例模式等),主要解决了对象如何创建、管理和协作的问题,它们通过提供一种标准化的方法来增强代码的可维护性和可扩展性。


在企业架构领域,Martin Fowler在《企业应用架构模式》一书2中提出了40多种模式,这些模式覆盖了数据访问、事务管理、并发控制、系统集成等多个方面。这些架构模式为解决企业级应用开发中的常见问题提供了经过验证的解决方案,帮助架构师和开发者构建更加灵活、可维护和可扩展的微服务架构系统。


Chris Richardson在其著作《微服务架构设计模式》3中收录了44种架构设计模式:API Gateway、服务注册与发现、Saga、事件溯源等,用于解决微服务架构中的服务拆分、事务管理、服务发现、部署和测试等问题,从而帮助开发者构建可靠、可扩展和可维护的微服务系统。


那么设计模式是如何在各个领域中发挥作用的?其本质又是什么?正如Martin Fowler在《Patterns》中曾强调,每个设计模式都应当包含两个关键部分:如何实现(how)以及何时使用(when)。因此抽象出良好的、面向特定问题的通用化解决方案,正是设计模式在领域中发挥作用、帮助解决领域问题的关键所在。另一方面,了解何时不使用某个模式也同样重要,因为设计本质上是关于选择和权衡。因此本文也将延续这个思路,针对“问题场景”关注如何实现和使用Agent,提供系统化的设计模式,作为解决方案指导。


3、AI Agent应用开发的挑战


目前,Agent的设计领域缺乏统一的设计模式和架构原则,主要是因为LLM领域的新兴特性导致缺少足够的经验和实践积累来提炼和验证有效的设计模式。此外,个性化需求的多样性使得通用模式难以适应所有场景。 


在传统的软件开发中,设计模式一直扮演着指导设计决策和确保系统质量的关键角色。而在AI Agent领域,目前设计模式的缺失导致了多个问题:


1. 可复用性差:开发者在创建Agent时往往需要从头开始,缺乏可复用的解决方案。这种情况不仅增加了开发成本和时间,也增加了出现失败和错误的概率,导致效率低下。


2. 稳定性差:缺乏统一的设计标准也意味着难以确保Agent的质量和一致性,使得不同Agent之间的质量和性能参差不齐。


3. 创新难度大:在没有成熟模式作为基础的情况下,开发者可能会对尝试新的设计方法持谨慎态度,限制了创新的步伐。


4. 风险管理:在复杂系统中,未经验证的设计可能导致不可预见的风险,影响系统的稳定性和可靠性。


为了解决这些问题,我们必须对现有的Agent设计方法进行深入分析,并探索新的设计模式。通过系统性地收集和分析现有的Agent设计实践,我们可以识别出常见的设计问题和解决方案,并将它们抽象为可复用的模式。这些模式将为开发者提供一个共同的语言和一组最佳实践,帮助他们更高效、更可靠地设计和实现AI Agent。


4、Agent设计模式全景视图


在本研究中,我们提出了一个包含19个设计模式(其中3类协作模式下又包含共计10个子模式)的全景视图,这些模式涵盖了从Agent画像、规划、反思到模型调用、工具/行动、编排,以及多Agent协作等多个方面。这些模式一部分来源于澳大利亚的数据与数字化国家级研究团队CSIRO's Data61发表了一篇针对Agent设计模式的目录研究整理4,另一部分(带有*号的模式)则是笔者在实践过程中发掘到的Agent设计模式。


这些模式不仅提供了对现有设计实践的深入理解,而且为未来的Agent设计提供了指导和灵感。上图展示了基于LLM的Agent应用系统的设计模式全景,我们将AI Agent应用设计模式分为如下几类:


1. 在画像类模式中,面临的问题是用户目标的准确识别和形成,包括直接表达和隐含的用户需求。其相关的设计模式包含被动目标创建者和主动目标创建者


a) 被动目标创建者通过角色/任务相关的prompt分析用户表达的目标,以保持交互性、目标寻求和直观性。


b) 主动目标创建者通过理解人际交互并通过相关工具捕获上下文来预测用户的目标。


2. 在规划类模式中,面临的问题是如何将用户的最终目标有效分解为一系列可执行的步骤。相关设计模式则包含了单路径计划生成器和多路径计划生成器实现任务规划,将最终目标分解为可执行的多步骤任务。在此过程中,可能会执行一次性模型查询和增量模型查询


a) 单路径计划生成器通过生成单路径的计划步骤以实现用户目标。


b) 多路径计划生成器在每个中间步骤中创建多个选择,以实现用户目标。


c) 一次性模型查询在单一实例中访问基础模型以生成计划的所有必要步骤。


d) 增量模型查询在计划生成过程的每一步都去访问基础模型。


3. 反思类模式中,针对的问题是Agent如何通过自我和外部反馈识别回答中的谬误并进行修正优化。自我反思、交叉反思人类反思可以帮助Agent从不同的反思实体收集反馈,并相应地完善计划和推理步骤。


a) 自我反思使Agent能够生成对计划和推理过程的反馈,并提供自身改进指导。


b) 交叉反思使用不同的Agent或基础模型提供反馈,以改进生成的计划和相应的推理过程。


c) 人类反思收集人类反馈以改进计划,有效与人类偏好对齐。


4. 在模型调用类模式中,处理的问题是确保Agent与基础模型的交互既高效又符合预设标准。相关设计模式包含prompt/响应优化器、多模态护栏


a) prompt/响应优化器根据期望的输入/输出内容并优化prompt/响应的格式,根据预定义的模板对其他Agent/工具的提示或指令进行优化,以满足特定格式或内容要求。


b) 多模态护栏则是在模型的输入输出外侧进行一个处理,处理标准主要是基于法律法规、道德伦理等准则进行一个过滤处理


5. 工具类模式中,关注的问题是如何提高外部信息检索能力,以及Agent对工具的调用准确性和整体操作的安全性。包含检索生成增强、插件参数修正、安全隔离沙箱


a) 检索增强生成可以提升Agent的知识更新能力,同时维护本地基础模型Agent/系统实现的数据隐私。


b) 工具参数修正会针对大模型在生成工具调用命令时,存在工具名错误、参数错误的问题进行修复校验


c) 安全隔离沙箱用于利用虚拟化技术创建隔离的执行环境,确保LLM Agent的操作被限制在沙箱内,从而保证安全。


6. 编排类模式中,面临的问题是如何简化Agent功能的集成和部署过程,降低技术门槛。相关模式包含多语言SDK编排、workflow高效编排


a) 多语言SDK以支持Agent开发涉及设计一套统一的API规范,针对每种目标语言开发相应的语言绑定和封装,以帮助开发者在他们选择的语言环境中快速集成和部署Agent功能。


b) Workflow高效编排提供了基于界面的拖拽、编辑节点的方式编排生成Agent的能力,降低了Agent编排实现门槛。


7. 多Agent协作类模式中,关注的问题是多个Agent如何在不同场景下,协调、一致地共同处理复杂的任务或作出决策。相关模式分为互动类、分治类、决策类三类协作模式:


a) 互动类是指多个Agent之间通过交流进行信息共享和协调,共同参与讨论来完成任务。互动类下面分为四个设计模式


i.双Agent聊天模式:使用两个Agent,通过互相聊天的方式讨论用户输入的问题


ii.顺序聊天模式:由一系列串行的“双Agent聊天”组成,每一组双Agent的聊天摘要会被带到后续各组双Agent聊天的上下文中


iii.群组聊天模式:由多个互相协作的Agent组成,所有Agent围绕同一个主题对话


iv.嵌套聊天模式:由一个用户Agent和一个嵌套的聊天过程组成


b) 分治类是指将复杂任务分解为多个子任务,然后分配给不同的Agent进行处理。其包含四个设计模式:


i.路由分发模式:通过路由Agent将任务分发到对应Agent进行处理


ii.分治串行模式:将任务分解为多个子任务,串行执行,最终聚合


iii.分治并行模式:将任务分解为多个子任务,并行执行,最终聚合


iv.Agent组合模式:根据特定问题或任务的需求,从一组Agent中选取最合适的一个或多个Agent来执行任务,最终聚合


c) 决策类是多个Agent通过投票或辩论方式,作出集体决策。其包含两个设计模式:


i.路由分发模式:通过路由Agent将任务分发到对应Agent进行处理


ii.分治串行模式:将任务分解为多个子任务,串行执行,最终聚合


本文通过对这些设计模式的初步了解,我们可以看到AI Agent的潜力和挑战。在未来的文章中,我们将深入分析每种模式的具体应用和优化策略,以期为AI Agent的发展提供更加清晰的方向和思路。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询