多Agent框架及协作机制详解

文章目录

  • 一、多智能体系统介绍
    • 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具体的工作原理包括以下六个环节:

  1. 角色定义与分工:MetaGPT首先定义了一系列Agent角色,每个角色都有特定的职责和任务。这些角色模拟了真实世界中的工作流程,使得每个Agent都能专注于其擅长的领域。
  2. 标准化操作程序(SOPs):MetaGPT将SOPs编码成提示序列,用于指导Agent如何执行任务。SOP确保了任务执行的一致性和质量,类似于人类团队中的工作指南。
  3. 结构化通信:为了提高通信效率,MetaGPT采用了结构化的通信方式。Agent通过共享消息池发布和订阅信息,这样每个Agent都能获取到完成任务所需的必要信息。
  4. 可执行反馈机制:在代码生成过程中,MetaGPT引入了可执行反馈机制。这意味着Agent在编写代码后,会执行代码并检查其正确性。如果发现错误,Agent会根据反馈进行调试,然后再次执行,直到代码满足要求。这个过程类似于人类开发者在开发过程中的迭代过程。
  5. 任务分解与协作:MetaGPT将复杂任务分解为多个子任务,每个子任务由一个或多个Agent负责,这种分解策略使得复杂项目可以被有效地管理和执行。同时,Agent之间的协作是通过角色间的信息交换和任务依赖来实现的,确保了整个项目按计划推进。
  6. 持续学习与优化: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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79732.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI Agent破局:智能化与生态系统标准化的颠覆性融合!

Hi!好久不见 云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 一、引言 二、AI Agent的基本概念 2.1 定义与分类 2.2 AI Agent的工作原理 2.3 示例代码:AI Agent的基本实现 三、AI Agent在企业数字化转型中的应用 …

在阿里云和树莓派上编写一个守护进程程序

目录 一、阿里云邮件守护进程 1. 安装必要库 2. 创建邮件发送脚本 mail_daemon.py 3. 设置后台运行 二、树莓派串口守护进程 1. 启用树莓派串口 2. 安装依赖库 3. 创建串口输出脚本 serial_daemon.py 4. 设置开机自启 5. 使用串口助手接收 一、阿里云邮件守护进程 1.…

Python----深度学习(全连接与链式求导法则)

一、机器学习和深度学习的区别 机器学习:利用计算机、概率论、统计学等知识,输入数据,让计算机学会新知 识。机器学习的过程,就是训练数据去优化目标函数。 深度学习:是一种特殊的机器学习,具有强大的能力和…

Python爬虫实战:获取网易新闻数据

一、引言 随着互联网的飞速发展,网络上蕴含着海量的信息资源。新闻数据作为其中的重要组成部分,对于舆情分析、市场研究、信息传播等多个领域具有重要价值。网易新闻作为国内知名的新闻平台,拥有丰富多样的新闻内容。使用 Python 的 Scrapy 框架进行网易新闻数据的爬取,可…

matlab论文图一的地形区域图的球形展示Version_1

matlab论文图一的地形区域图的球形展示Version_1 图片 此图来源于: ![Jieqiong Zhou, Ziyin Wu, Dineng Zhao, Weibing Guan, Chao Zhu, Burg Flemming, Giant sand waves on the Taiwan Banks, southern Taiwan Strait: Distribution, morphometric relationship…

蓝桥杯:连连看

本题大意要我们在一个给定的nxm的矩形数组中找出符合条件的格子 条件如下: 1.数值相同 2.两个横坐标和纵坐标的差值相等(由此可得是一个对角线上的格子) 那么根据以上条件我们可以用HashMap来解决这个问题,统计对角线上数值相同…

PHP中的ReflectionClass讲解【详细版】

快餐: ReflectionClass精简版 在PHP中,ReflectionClass是一个功能强大的反射类,它就像是一个类的“X光透视镜”,能让我们在程序运行时深入了解类的内部结构和各种细节。 一、反射类的基本概念和重要性 反射是指在程序运行期间获…

微信小程序中,将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现

将搜索组件获取的值传递给父页面(如 index 页面)可以通过 自定义事件 或 页面引用 实现 方法 1:自定义事件(推荐) 步骤 1:搜索组件内触发事件 在搜索组件的 JS 中,当获取到搜索值时&#xff0c…

Django 实现服务器主动给客户端发送消息的几种常见方式及其区别

Django Channels 原理 :Django Channels 是 Django 的一个扩展,它通过使用 WebSockets 等协议来处理长连接,使服务器能够与客户端建立持久连接,从而实现双向通信。一旦连接建立,服务器可以随时主动向客户端发送消息。…

PHP最新好看UI个人引导页网页源码

PHP最新好看UI个人引导页网页源码 采用PHP、HTML、CSS及JavaScript等前端技术,构建了一个既美观又实用的个人主页解决方案。 源码设计初衷在于提供一个高度可定制、跨平台兼容的模板,让用户无需深厚的编程基础,即可快速搭建出专业且富有创意的…

HarmonyOS学习 实验九:@State和@Prop装饰器的使用方法

HarmonyOS应用开发:父子组件状态管理实验报告 引言 在HarmonyOS应用开发领域,组件之间的状态管理是一个至关重要的概念。通过有效的状态管理,我们可以确保应用的数据流动清晰、可预测,从而提升应用的稳定性和可维护性。本次实验…

12.第二阶段x64游戏实战-远程调试

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 本次游戏没法给 内容参考于:微尘网络安全 上一个内容:11.第二阶段x64游戏实战-框架代码细节优化 本次写的内容是关于调试、排错相关的…

c++基础三

1.继承 继承表示,子类可以获取父类的属性和方法,然后可以写子类独有的属性和方法,或者修改父类的方法。类可以继承父类的公共成员(public),但不能继承私有成员(private),私有成员只能在父类内部访问。 1.1 案例一单继承 #include <iostream>using namespace …

JSON学习笔记

文章目录 1. JSON是什么2. JSON的特点与结构3. JSON的使用4. JSON文件读取 1. JSON是什么 JSON&#xff08;JavaScript Object Notation&#xff0c;JavaScript对象表示法&#xff09;是一种轻量级的数据交换格式&#xff0c;易于人阅读和编写&#xff0c;同时也易于机器解析和…

王牌学院,25西电通信工程学院(考研录取情况)

1、通信工程学院各个方向 2、通信工程学院近三年复试分数线对比 学长、学姐分析 由表可看出&#xff1a; 1、信息与通信工程25年相较于24年上升5分、军队指挥学25年相较于24年上升30分 2、新一代电子信息技术&#xff08;专硕&#xff09;25年相较于24年下降25分、通信工程&…

WPF依赖注入IHostApplicationLifetime关闭程序

WPF依赖注入IHostApplicationLifetime关闭程序 使用Application.Current.Shutdown();退出会报异常 应该使用 app.Dispatcher.InvokeShutdown(); Application.Current.Shutdown();app.Dispatcher.InvokeShutdown();static App app new();[STAThread]public static void Main(…

Jenkins 代理自动化-dotnet程序

两种方式 容器部署 本地部署 容器部署 可自动实现&#xff0c;服务器重启&#xff0c;容器自动运行 主要将dockerfile 写好 本地部署 1.服务器重启自动运行代理 参考下面的链接&#xff0c;只是把程序换成 java程序&#xff0c;提前确认好需要的jdk版本 Ubuntu20.04 设置开机…

从Archery到NineData:积加科技驱动数据库研发效能与数据安全双升级

积加科技作为国内领先的企业级数字化解决方案服务商&#xff0c;依托自研的 A4X 数字化平台&#xff08;https://a4x.io/&#xff09;&#xff0c;专注于为全球范围内的视觉物联网&#xff08;IoT&#xff09;设备提供 PaaS/SaaS 服务。致力于运用 AI 技术赋能物联网世界的各类…

SpringBoot整合Logback日志框架深度实践

一、依赖与默认集成机制 SpringBoot从2.x版本开始默认集成Logback日志框架,无需手动添加额外依赖。当项目引入spring-boot-starter-web时,该组件已包含spring-boot-starter-logging,其底层实现基于Logback+SLF4J组合。这种设计使得开发者只需关注业务日志的输出规则,无需处…

自由学习记录(56)

从贴图空间&#xff08;texture space&#xff09;将值还原到切线空间&#xff08;tangent space&#xff09;向量 tangentNormal.xy (packedNormal.xy * 2 - 1) * _BumpScale; 背后的知识点&#xff1a;法线贴图中的 RGB 是在 0~1 范围内编码的向量 所以贴图法线是怎么“压…