文章目录
- 一、多智能体系统介绍
- 1.1 多智能体系统定义
- 1.2 多智能体协作
- 1.3 协作类型
- 1.4 协作策略
- 1.5 通信结构
- 1.6 协调与编排
- 1.3 多智能体与单智能体对比
- 1.4 应用场景
- 二、多Agent开发框架
- AutoGen
- MetaGPT
- LangGraph
- Swarm
- CrewAI
- 三、多智能体协作方式
- 3.1 MetaGPT:SOP驱动Agent的代表
- 3.2 AutoGen:LLM驱动Agent的代表
- 3.3 XAgent:Agent 并行计算, LLM 汇总
- 四、多Agent实战样例
- 参考资料
一、多智能体系统介绍
参考资料:多智能体协作机制:大语言模型综述
1.1 多智能体系统定义
多智能体系统(Multi-Agent System, MAS)是由多个相互作用的智能体组成的计算机化系统。这些智能体具有自主性,能够感知环境、与其他智能体交互,并通过协作解决复杂的任务。MAS 的关键组成部分包括:
- 智能体:系统中的核心参与者,具有角色、能力、行为模式和知识模型。智能体的能力包括学习、规划、推理和决策制定,这些能力赋予了智能体和整个系统智能。
- 环境:智能体所处的外部世界,智能体可以感知并作用于环境。环境可以是模拟的或物理空间,如工厂、道路、电网等。
- 交互:智能体之间通过标准的智能体通信语言进行通信。智能体的交互包括合作、协调、协商等,具体取决于系统的需求。
- 组织:智能体可以按照层次结构进行控制,或基于涌现行为进行组织。
MAS 的显著特征包括灵活性、可靠性、自组织和实时操作,使其成为解决复杂任务的有效解决方案。通过将复杂任务分解为多个子任务,每个子任务由不同的智能体处理,MAS 能够以较低的成本和较高的可靠性完成任务。
1.2 多智能体协作
在 LLM 驱动的 MAS 中,智能体之间的协作至关重要。每个协作都有一个通信通道 c c c,协作包括:
- 任务分配:根据智能体的独特专业知识和资源,将任务分配给多个智能体。
- 协作机制:定义智能体之间的协作机制,使它们能够共同工作。
- 决策制定:智能体之间的决策制定,以达到最终目标。
协作通道通过特定的属性进行表征,包括参与者(涉及的智能体)、类型(如合作、竞争或竞合)、结构(如点对点、集中式或分布式)和策略(如基于角色、基于规则或基于模型)。任何属性的差异都会导致不同的协作通道。
1.3 协作类型
(1)合作
合作是 LLM 多智能体系统中最常见的协作类型。当智能体将其个体目标 oi与共享的集体目标 Ocollab对齐时,它们会共同努力实现互利的结果。合作在需要协作问题解决、集体决策和互补技能的任务中尤为重要。
(2)竞争
竞争发生在智能体的个体目标 oi与其他智能体的目标冲突或资源有限的情况下。竞争可以推动智能体发展更高级的推理能力和创造性问题解决能力,增强系统的适应性。
(3)竞争与合作
竞合是合作与竞争的结合,智能体在某些任务上合作,而在其他任务上竞争。竞合机制在需要权衡和妥协的场景中尤为有效。
1.4 协作策略
(1)基于规则的协议
基于规则的协议通过预定义的规则严格控制智能体之间的交互,确保智能体按照系统范围内的约束协调行动。这种策略在任务程序明确且变化有限的情况下非常有效,但在面对意外情况时缺乏适应性。
(2)基于角色的协议
基于角色的协议通过为每个智能体分配特定的角色或分工,使智能体能够专注于其专业领域内的子任务。这种策略提高了系统的效率和结构,但在角色定义不明确时可能导致冲突或功能缺陷。
(3)基于模型的协议
基于模型的协议在输入感知存在不确定性的环境中提供了决策制定的灵活性。智能体根据对环境的感知、共同目标和固有的不确定性做出概率性决策。这种策略在动态环境中表现出色,但设计和部署复杂,计算成本较高。
1.5 通信结构
(1)集中式结构
集中式结构中,所有智能体都连接到一个中央智能体,中央智能体负责管理和协调智能体之间的交互。集中式结构在资源分配和任务协调方面具有优势,但中央节点的故障可能导致整个系统崩溃。
(2)分布式结构
分布式结构中,控制权和决策权分布在多个智能体之间,每个智能体基于本地信息和有限的通信进行操作。分布式结构在系统容错性和可扩展性方面具有优势,但资源分配效率较低,通信开销较大。
(3)分层结构
分层结构中,智能体按层次组织,每个层次的智能体具有不同的功能和权限。分层结构在任务分配和资源管理方面具有优势,但边缘设备的故障可能导致系统失效。
1.6 协调与编排
(1)静态架构
静态架构依赖于领域知识和预定义的规则来建立协作通道。这种架构在任务执行一致性和利用领域知识方面具有优势,但在面对动态环境时缺乏灵活性。
(2)动态架构
动态架构能够适应变化的环境和任务需求,通过管理智能体或自适应机制实时分配角色和定义协作通道。动态架构在处理复杂和动态任务时表现出色,但资源使用较高,动态调整可能失败。
1.3 多智能体与单智能体对比
MAS的核心思想是通过多个Agent的协作与协调,共同完成一个复杂任务,从而实现单个Agent无法完成的复杂目标。相比单Agent系统,Multi-Agent系统具备以下优势:
- 分布式处理:MAS支持分布式应用,可以将大型复杂系统分解为多个小型、易于管理的子系统。这使得MAS具有良好的模块性、易于扩展性和设计灵活性,降低了系统的总成本和维护难度。
- 协同工作:MAS中的Agent可以相互通信、协商和协作,共同完成一个任务。通过这种协同工作方式,MAS能够处理单个Agent无法解决的问题,从而提高系统的整体性能和鲁棒性。
- 自适应性:MAS中的Agent可以根据环境变化自主调整行为和策略,这种自适应性使得MAS具有优秀的稳定性和灵活性,能够应对各种复杂场景。
1.4 应用场景
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可以实现多个传感器、控制器和执行器之间的协同工作,实现对电网的实时监控、预测和优化调度,提高电网的稳定性和可靠性。
二、多Agent开发框架
AutoGen
MetaGPT
LangGraph
Swarm
CrewAI
三、多智能体协作方式
参考资料:一文读懂Multi-Agent System的概念、场景和实现框架
3.1 MetaGPT:SOP驱动Agent的代表
SOP驱动Agent是一种非常易于理解的多智能体设计模式,SOP(Standardized Operating Procedures, 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从过去的经验中学习,通过自我修正和迭代来优化其行为,这种自我改进机制可以让系统随着时间推移越来越智能。
3.2 AutoGen:LLM驱动Agent的代表
重磅上线!AiDocZh.com发布全新AutoGen中文文档,带你解锁大模型多Agent对话新时代
Autogen 是一个由 Microsoft 推出的框架,支持创建和管理多个自主Agent,协同完成复杂的任务。这个框架的灵活性极高,我们可以根据自己的需求定义不同的Agent和对应的角色,特别是在编程、规划和创意写作等领域。
- AutoGen 官方文档:https://microsoft.github.io/autogen/stable/
- AutoGen 中文文档:https://www.aidoczh.com/autogen/stable/
Autogen框架分为非常简单的三步,开发人员要做的就是明确任务,创建Agent,把这些Agent融合到一起。
第一步,创建Agent:
- 支持创建和管理不同类型的 Agent,包括特定任务的专家、通用助手、策略制定者等。
- 能够为每个 Agent 指定不同的角色、任务和权限,以确保分工明确。
- 提供 Agent 定制选项,以满足不同任务的特定需求。
第二步,提供对话环境:
- 提供一个虚拟的对话空间,让 Agent 之间可以相互沟通和协作。
- 支持多方对话和协作,包括文本、音频或视频形式。
- 自动记录对话内容和决策过程,以便回顾和审查。
第三步,对话内容管理:
- 引导 Agent 的讨论方向,以确保讨论围绕目标进行。
- 提供实时监控工具,帮助发现潜在问题,并及时给予纠正和调整。
- 设置规则和约束条件,以保持对话和协作的质量和效率。
- 提供对对话内容的搜索和过滤功能,以便快速查找相关信息。
AutoGen设计了一个通用ConversableAgent类,它们能够通过交换消息来相互对话以共同完成任务。Agent可以与其他Agent进行通信并执行操作,不同的Agent在收到消息后执行的操作可能有所不同。
AutoGen中包含两种Agent(AssitantAgent、UserProxyAgent)和一种Manager(GroupChatManager),通过相互协作,一起处理问题。
- AssistantAgent 的主要作用是作为中枢大脑提供理解、分析;
- UserProxyAgent 主要处理由中枢大脑给出的决策。
- GroupChatManager 是能够让多个Agent进行分组的管理者,类似于把团队拆分为多个Team进行管理。
3.3 XAgent:Agent 并行计算, LLM 汇总
XAgent 是一个开源、基于大型语言模型(LLM)的通用自主Agent,可以自动解决各种复杂任务。该框架采用双环机制,外循环用于高层任务管理,起到规划(Planning)的作用,内循环用于底层任务执行,起到执行(Execution)的作用。
(1)外循环
外循环作为高层规划器和整个问题解决序列的主要协调者,充当整个问题解决序列的管理,它的职责可以分解如下。
-
初始计划生成: PlanAgent首先生成一个初始计划,为任务执行制定基本策略。该部分会将给定的复杂任务分解为更小、更易管理的子任务,其表现为一个任务队列,可以直接地执行。
-
迭代式计划优化: 在初始规划之后,PlanAgent通过从任务队列中释放出第一个任务,然后将该子任务传递给内循环,PlanAgent持续监视任务的进展和状态。在每个子任务执行后,内循环会返回来自ToolAgent的反馈。根据反馈,PlanAgent触发适当的处理机制,如优化计划或继续执行后续子任务。直到队列中没有剩余的子任务为止,外循环结束。
(2)内循环
内循环负责执行外循环分配的各个子任务。基于外循环给定的子任务,内循环会指定一个合适的ToolAgent,确保任务达到预期的结果。内循环的主要职责包括:
-
Agent调度和工具获取: 根据子任务的性质,派遣合适的ToolAgent,该Agent具备完成任务所需的能力。
-
工具执行: ToolAgent首先从外部系统中获取工具以帮助完成任务。然后,Agent使用ReACT来解决子任务,寻找最佳的一系列工具调用来完成子任务。
-
反馈和反思: 在一系列动作之后,ToolAgent可以发出一个名为“subtask_submit”的特定动作,以完成当前子任务的处理,并将反馈和反思传递给PlanAgent。这个反馈可以指示子任务是否成功完成,或者强调潜在的改进。
(3)PlanAgent
PlanAgent赋予Agent不断制定和修订计划的能力,以适应多变的环境和突发需求。这些能力对于确保灵活性、弹性和效率以应对未预见的挑战至关重要。PlanAgent专用于外循环,其通过生成初始计划和不断修订计划来实现这一目标。PlanAgent包含四个函数来优化计划:
-
子任务拆分: 使系统能够将特定的子任务分解为粒度更细、更易管理的单元。只有当前正在执行或尚未启动的子任务才有资格进行此操作。
-
子任务删除: 删除尚未开始的子任务。已经在进行中或已完成的子任务不具备删除资格。这确保了一定的灵活性,可以修剪多余或不相关的任务,以优化整体执行。
-
子任务修改: 修改子任务的内容。要修改的子任务不能是已经开始或已经完成,以保持整体计划的完整性。
-
子任务添加: 在特定子任务之后插入新的子任务。只能在当前处理的子任务或其后继任务之后添加子任务。这确保了新任务按顺序编排,简化了执行流程,并保持了一致性。
(4)ToolAgent
ToolAgent使用ReACT寻找最佳的一系列工具来完成子任务。在每一轮中,Agent根据先前的交互生成一个动作,对于每个动作,在同一个函数调用中将智能体的推理和行动协同起来,即推理跟踪和将要执行的动作都被视为特定函数的参数。具体而言,每个函数调用具有以下组件:
- 思考:Agent关于任务的洞察力的概括。
- 推理:跟踪Agent通过的逻辑轨迹,以得出其思考。
- 批评:捕捉Agent对其行动的自我反思,作为一个反馈回路。它强调潜在的疏忽或改进的领域。
- 指令:根据推理决定Agent下一步要采取的动作。
- 参数:列举要执行的动作的具体参数或细节。
四、多Agent实战样例
- Multi Agents协作机制设计及实践
参考资料
- 多智能体协作机制:大语言模型综述
- 一文读懂Multi-Agent System的概念、场景和实现框架
- CSDN-July-智能体AI Agent的极速入门:从ReAct、AutoGPT到AutoGen、QwenAgent、XAgent、MetaGPT