一文读懂Multi-Agent System的概念、场景和实现框架
在《AI大模型实战篇 – Agent设计模式系列》中,风叔详细介绍了AI Agent的概念和八种非常有效的设计模式。
但是,之前介绍的Agent都是单Agent系统,只能执行相对比较简单的任务,当面对复杂任务时,单Agent系统的稳定性会存在问题。这点和人类似,当一个人的大脑装载了太多信息之后,反而会影响其工作质量。正所谓“术业有专攻”,一个人的力量,永远抵不过一个专业的团队。
这就是Multi-agent system,即多智能体系统设计的初衷。
一、Multi-Agent的概念和应用场景
Multi-Agent系统,简称MAS,是由多个智能体组成的集合。这些Agent可以是不同的软件程序、机器人、传感器等,它们各自具备一定的智能和自主性,并处理各自擅长的领域和事情。MAS的核心思想是通过多个Agent的协作与协调,共同完成一个复杂任务,从而实现单个Agent无法完成的复杂目标。
相比单Agent系统,Multi-Agent系统具备以下优势:
- 分布式处理:MAS支持分布式应用,可以将大型复杂系统分解为多个小型、易于管理的子系统。这使得MAS具有良好的模块性、易于扩展性和设计灵活性,降低了系统的总成本和维护难度。
- 协同工作:MAS中的Agent可以相互通信、协商和协作,共同完成一个任务。通过这种协同工作方式,MAS能够处理单个Agent无法解决的问题,从而提高系统的整体性能和鲁棒性。
- 自适应性:MAS中的Agent可以根据环境变化自主调整行为和策略,这种自适应性使得MAS具有优秀的稳定性和灵活性,能够应对各种复杂场景。
Multi-Agent System 主要的应用场景包括:
- 软件编写:在软件项目中,由多个Agents分别扮演项目经理、产品经理、UI设计师、开发人员、测试人员等等,从而将一个复杂的软件项目拆解成多个子任务,更高效地完成软件的编写。
- 智能营销:在消费者营销场景中,可以构建多个Agents,比如营销计划Agent、内容生产Agent、人群管理Agent、营销触达Agent和效果分析Agent。
- 智慧供应链:在供应链场景中,通过Multi-Agent提升上下游协同效率,包括销售计划Agent、采购计划Agent、仓储计划Agent、采购订单Agent等等,从销量预测、安全库存、供应链响应等环节,构筑供应链的多道防线。
- 智能客服:在智能客服领域,针对不同的产品和服务领域,构建不同的专属Agent,比如处理产品售后投诉的Agent、解答用户产品疑问的Agent、处理营销活动咨询的Agent、追踪物流进度的Agent等。同时在最上层构建一个Top Agent,用Top Agent统一对客,再根据消费者的问题自动路由到最匹配的专属Agent。
- 智能电网:在智能电网领域,MAS可以实现多个传感器、控制器和执行器之间的协同工作,实现对电网的实时监控、预测和优化调度,提高电网的稳定性和可靠性。
类似的场景还能列出很多,风叔就不一一赘述了,大家也可以结合自己的行业经验,仔细思考是否有适合MAS的场景。接下来,风叔详细介绍一下三种比较热门的多智能体系统的实现框架。
二、MetaGPT – SOP驱动Agent的代表
SOP驱动Agent是一种非常易于理解的多智能体设计模式,SOP即代表了在现实世界中标准的业务流程和分工,流程中的各个环节都有相应的角色进行处理。MetaGPT就是将这一理念搬到了AI Agent领域,由AI Agent来扮演业务流中的各个角色。
比如在软件开发过程中,设计到的角色包括产品经理、架构师、项目经理、工程师和质量保证工程师等,每个角色都有其独特的职责和专业知识。这些Agent遵循SOP来分解任务,确保每个步骤都能高效且准确地完成,产品经理负责分析需求并创建产品需求文档,架构师负责将需求转化为系统设计,项目经理负责任务分配,工程师负责编写代码,而质量保证工程师则负责测试和确保代码质量。
MetaGPT具体的工作原理包括以下六个环节:
- 角色定义与分工:MetaGPT首先定义了一系列Agent角色,每个角色都有特定的职责和任务。这些角色模拟了真实世界中的工作流程,使得每个Agent都能专注于其擅长的领域。
- 标准化操作程序(SOPs):MetaGPT将SOPs编码成提示序列,用于指导Agent如何执行任务。SOP确保了任务执行的一致性和质量,类似于人类团队中的工作指南。
- 结构化通信:为了提高通信效率,MetaGPT采用了结构化的通信方式。Agent通过共享消息池发布和订阅信息,这样每个Agent都能获取到完成任务所需的必要信息。
- 可执行反馈机制:在代码生成过程中,MetaGPT引入了可执行反馈机制。这意味着Agent在编写代码后,会执行代码并检查其正确性。如果发现错误,Agent会根据反馈进行调试,然后再次执行,直到代码满足要求。这个过程类似于人类开发者在开发过程中的迭代过程。
- 任务分解与协作:MetaGPT将复杂任务分解为多个子任务,每个子任务由一个或多个Agent负责,这种分解策略使得复杂项目可以被有效地管理和执行。同时,Agent之间的协作是通过角色间的信息交换和任务依赖来实现的,确保了整个项目按计划推进。
- 持续学习与优化:MetaGPT支持Agent从过去的经验中学习,通过自我修正和迭代来优化其行为,这种自我改进机制可以让系统随着时间推移越来越智能。
三、AutoGen – LLM驱动Agent的代表
Autogen 是一个由 Microsoft 推出的框架,支持创建和管理多个自主Agent,协同完成复杂的任务。这个框架的灵活性极高,我们可以根据自己的需求定义不同的Agent和对应的角色,特别是在编程、规划和创意写作等领域。
Autogen框架分为非常简单的三步,开发人员要做的就是明确任务,创建Agent,把这些Agent融合到一起。
第一步,创建Agent:
- 支持创建和管理不同类型的 Agent,包括特定任务的专家、通用助手、策略制定者等。
- 能够为每个 Agent 指定不同的角色、任务和权限,以确保分工明确。
- 提供 Agent 定制选项,以满足不同任务的特定需求。
第二步,提供对话环境:
- 提供一个虚拟的对话空间,让 Agent 之间可以相互沟通和协作。
- 支持多方对话和协作,包括文本、音频或视频形式。
- 自动记录对话内容和决策过程,以便回顾和审查。
第三步,对话内容管理:
- 引导 Agent 的讨论方向,以确保讨论围绕目标进行。
- 提供实时监控工具,帮助发现潜在问题,并及时给予纠正和调整。
- 设置规则和约束条件,以保持对话和协作的质量和效率。
- 提供对对话内容的搜索和过滤功能,以便快速查找相关信息。
AutoGen设计了一个通用ConversableAgent类,它们能够通过交换消息来相互对话以共同完成任务。Agent可以与其他Agent进行通信并执行操作,不同的Agent在收到消息后执行的操作可能有所不同。
AutoGen中包含两种Agent和一种Manager,通过相互协作,一起处理问题。AssistantAgent的主要作用是作为中枢大脑提供理解、分析;UserProxyAgent主要处理由中枢大脑给出的决策。GroupChatManager是能够让多个Agent进行分组的管理者,类似于把团队拆分为多个Team进行管理。
四、XAgent – Agent 并行计算, LLM 汇总
XAgent 是一个开源、基于大型语言模型(LLM)的通用自主Agent,可以自动解决各种复杂任务。该框架采用双环机制,外循环用于高层任务管理,起到规划(Planning)的作用,内循环用于底层任务执行,起到执行(Execution)的作用。
外循环
外循环作为高层规划器和整个问题解决序列的主要协调者,充当整个问题解决序列的管理,它的职责可以分解如下。
- 初始计划生成:PlanAgent首先生成一个初始计划,为任务执行制定基本策略。该部分会将给定的复杂任务分解为更小、更易管理的子任务,其表现为一个任务队列,可以直接地执行。
- 迭代式计划优化:在初始规划之后,PlanAgent通过从任务队列中释放出第一个任务,然后将该子任务传递给内循环,PlanAgent持续监视任务的进展和状态。在每个子任务执行后,内循环会返回来自ToolAgent的反馈。根据反馈,PlanAgent触发适当的处理机制,如优化计划或继续执行后续子任务。直到队列中没有剩余的子任务为止,外循环结束。
内循环
内循环负责执行外循环分配的各个子任务。基于外循环给定的子任务,内循环会指定一个合适的ToolAgent,确保任务达到预期的结果。内循环的主要职责包括:
- Agent调度和工具获取:根据子任务的性质,派遣合适的ToolAgent,该Agent具备完成任务所需的能力。
- 工具执行:ToolAgent首先从外部系统中获取工具以帮助完成任务。然后,Agent使用ReACT来解决子任务,寻找最佳的一系列工具调用来完成子任务。
- 反馈和反思:在一系列动作之后,ToolAgent可以发出一个名为“subtask_submit”的特定动作,以完成当前子任务的处理,并将反馈和反思传递给PlanAgent。这个反馈可以指示子任务是否成功完成,或者强调潜在的改进。
PlanAgent
PlanAgent赋予Agent不断制定和修订计划的能力,以适应多变的环境和突发需求。这些能力对于确保灵活性、弹性和效率以应对未预见的挑战至关重要。PlanAgent专用于外循环,其通过生成初始计划和不断修订计划来实现这一目标。PlanAgent包含四个函数来优化计划:
- 子任务拆分:使系统能够将特定的子任务分解为粒度更细、更易管理的单元。只有当前正在执行或尚未启动的子任务才有资格进行此操作。
- 子任务删除:删除尚未开始的子任务。已经在进行中或已完成的子任务不具备删除资格。这确保了一定的灵活性,可以修剪多余或不相关的任务,以优化整体执行。
- 子任务修改:修改子任务的内容。要修改的子任务不能是已经开始或已经完成,以保持整体计划的完整性。
- 子任务添加:在特定子任务之后插入新的子任务。只能在当前处理的子任务或其后继任务之后添加子任务。这确保了新任务按顺序编排,简化了执行流程,并保持了一致性。
ToolAgent
ToolAgent使用ReACT寻找最佳的一系列工具来完成子任务。在每一轮中,Agent根据先前的交互生成一个动作,对于每个动作,在同一个函数调用中将智能体的推理和行动协同起来,即推理跟踪和将要执行的动作都被视为特定函数的参数。具体而言,每个函数调用具有以下组件:
- 思考:Agent关于任务的洞察力的概括。
- 推理:跟踪Agent通过的逻辑轨迹,以得出其思考。
- 批评:捕捉Agent对其行动的自我反思,作为一个反馈回路。它强调潜在的疏忽或改进的领域。
- 指令:根据推理决定Agent下一步要采取的动作。
- 参数:列举要执行的动作的具体参数或细节。
五、总结
在这篇文章中,风叔介绍了多智能体系统的意义和价值,并详细介绍了MetaGPT、AutoGen、XAgent这三种著名的多智能体设计框架。
从协作设计实现上来说,风叔更倾向选择 LLM驱动的Multi-Agent设计方向,减少工程化的侵入。因为LLM能力在成长,随着时间的推移,现在的瓶颈可能会被突破,而 SOP驱动是工程化的,无法随着时间自我迭代。
作者:风叔产品总监,公众号:风叔云
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!