智能体互联网IoA架构核心思想解读

news2025/1/11 2:24:04

零、常用概念

  • 智能体:融合了大模型能力,具有感知记忆、自主规划、调用工具、执行任务能力的Agent
  • Internet of Agents (IoA)—— “智能体互联网”:Agent 之间互相发现,大规模连接、协作。

一、现状问题

  • 生态不开放:只允许接入框架内部定义的智能体。

  • 单设备架构:大多数多智能体系统在一个设备上模拟多个智能体。现实场景更迫切的需求,是分布在多个设备和位置的智能体通过“网络”进行协作。

  • 协同不灵活:大多数多智能体系统的沟通机制单一,或者需要用户进行指定。沟通和多轮的信息交换,非常的不灵活。

二、解决方案

两大组件,三层设计

1.一个本质

通过引入一个能够集成不同第三方智能体的协议,以及类似即时通讯应用的框架来促进智能体在平台上发现其他智能体并动态组队。

2.两大组件

服务器:作为中心枢纽,管理智能体注册、发现和消息路由,确保具备不同能力的智能体能够互相发现并发起通信。

客户端:则作为单个智能体的包装,提供必要的通信功能,并适应指定的沟通协议。

3.三项突破

(1)Agent 互联载体:从单设备到多设备

大多数多智能体系统在一个设备上模拟多个智能体,这与现实场景相悖。IoA 支持分布在多个设备和位置的智能体通过网络进行协作。

(2)开放性:从限定框架的“局域网”到自由身份注册的“互联网”

大多数多智能体系统只允许接入框架内部定义的智能体,而 IoA 允许开发者通过为现有智能体实现一个 adapter 接入到 IoA 的客户端中并注册到 IoA 服务端,扩展系统内智能体的能力多样性。

(3)沟通、协作、组队:从固定计划到灵活高效

大多数多智能体系统的沟通机制单一,或者需要用户进行指定。IoA 将沟通阶段抽象为 5 个阶段:讨论、同步任务分配、异步任务分配、暂停等待任务完成、总结,通过有限状态自动机实现了自主会话流程控制机制,允许智能体根据任务需求和进展自适应调整协作策略。

4.四大机制

(1)机制一:智能体注册与发现

为了实现分布式的异构智能体协作,我们借鉴了即时通信软件中用户可以进行注册并被其他用户通过关键词搜索到的机制,提出了智能体注册与发现机制。

  • 智能体注册:当一个新智能体加入 IoA 时,他所属的客户端需要向服务器发送注册请求。在注册中,我们要求智能体应提供其能力、技能和专长领域的详细描述。这些描述被存储在服务器的数据层中的智能体仓库模块中。

  • 智能体发现:智能体发现功能利用存储在智能体仓库模块中的信息,使智能体可以为特定任务找到合适的协作者。当一个智能体需要组建团队或寻求帮助时,它可以使用服务器的智能体查询模块进行搜索。通过匹配搜索条件和智能体描述,确保相关能力的智能体能够被发现。

(2)机制二:自主嵌套团队组建

自主嵌套团队组建机制实现了根据任务需求动态灵活地组合合适的智能体。该机制允许智能体根据任务需求自适应地组建团队,并为复杂、多方面的任务创建嵌套子团队。

  • 团队组建过程:当一个智能体被分配任务时,它可以使用服务器提供的智能体查询功能寻找合适的协作者。一旦找到合适的智能体,它会发起一个新的群组聊天,形成团队。

  • 嵌套组队:嵌套组队允许形成团队和子团队的层级结构。在任务执行过程中,如果智能体被分配了任务,且他识别到需要额外的专长,它可以再次搜索合适的智能体,并发起一个新的子群组聊天,从而形成树状的团队结构。如下图所示

嵌套组队机制

(3)机制三:自主会话流程控制

有效的通信对于成功的协作至关重要。受言语行为理论(Speech Act Theory)启发,我们在 IoA 中引入了自主会话流程控制机制。该机制使智能体能够协调其通信,并保持结构化对话,提升协作的效率和效果。

  • 顺序发言机制:为管理潜在的冲突并确保清晰的沟通,IoA 采用了基本的顺序发言机制。在任何给定时间内,只有一个智能体可以发言,防止混乱并保持通信顺序。尽管简单,但当搭配上下面的有限状态机,仍可以构成灵活但相对可控的自主对话流程。

  • 群组聊天状态的有限状态机:如下图所示,我们将会话流程形式化为一个有限状态机,每个状态对应协作过程的不同阶段。通过状态转换,智能体能够根据任务需求和进展灵活调整会话状态。

完成任务过程的有限状态转移示意图

通过实现这些关键机制,IoA 实现了智能体之间的结构化、高效的通信和协作。这种方法允许智能体根据协作需求动态调整,促进在复杂多智能体场景中的更有效的问题解决和决策。

(4)机制四:任务分配与执行

任务分配与执行机制旨在高效地在智能体之间分配工作,并管理简单和复杂任务的执行。该机制与团队组建和会话流程控制机制协同工作,确保协作和任务完成。

  • 任务分配:任务分配在群组沟通中进行,分为同步任务分配和异步任务分配两种类型。同步任务分配暂停群组聊天直到分配的任务完成,而异步任务分配不打断正在进行的讨论,允许任务并行执行。

  • 任务执行:任务分配后,负责的智能体开始执行。执行过程取决于任务的性质和智能体的能力。集成的第三方智能体通过客户端的智能体集成模块处理任务执行。

通过集成任务分配与执行与团队组建和会话流程控制机制,IoA 提供了一种灵活和高效的方法来管理复杂的多智能体协作。该方法允许动态任务分解、专门智能体分配和协调执行,使系统能够有效地解决各种问题。

5.流程实例

三、效果对比

IoA 与其他智能体协作“工作流”关键特性对比

四、附件资料

IoA 论文地址:https://arxiv.org/abs/2407.07061 | 中英文对照阅读

IoA 开源地址:https://github.com/OpenBMB/IoA

IoA开放文档:IoA 0.0.1 documentation

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

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

相关文章

hadoop学习笔记4-mapreduce

5.MapReduce 5.1Linux中安装IDEA IDEA官网:https://www.jetbrains.com.cn/idea/ 点击右上角的下载 选择Linux进行下载压缩包 下载完成后找到压缩包并解压压缩包到当前目录下 tar -zxvf ideaIC-2024.1.4.tar.gz 运行idea ./idea.sh 5.2配置开发环境 1.mapreduce简…

公司运营数据分析大屏,非专业者也能轻松上手

在这个数据洪流的时代,企业的每一步发展都深深刻画在数字的轨迹之中。如何精准捕捉这些瞬息万变的信息,将其转化为推动企业前行的智慧力量?答案,或许就藏在一面高效、直观的公司运营数据分析大屏之中。 想象一下,当晨光…

软件工程-期末考试

目录 1.数据流图例题 2.工程网络 3.详细设计阶段图形工具 程序流程图,盒图 PAD图(冒泡排序) 判定树、判定表 4.合理地设计测试方案 5.能用jackson图表达问题的数据结构 6.能建立问题的对象模型--->(类图) …

shell脚本自动化部署

1、自动化部署DNS [rootweb ~]# vim dns.sh [roottomcat ~]# yum -y install bind-utils [roottomcat ~]# echo "nameserver 192.168.8.132" > /etc/resolv.conf [roottomcat ~]# nslookup www.a.com 2、自动化部署rsync [rootweb ~]# vim rsync.sh [rootweb ~]# …

Git安装流程以及如何将本地代码推送到新建的git仓库(IDEA操作简单易学)

Windows版本下载地址 Git - Downloading Package (git-scm.com) 根据自己电脑系统选择响应的版本 安装流程 1. 我安装的是 2.46.0 的版本, 点击next 2. 选择安装的文件夹,点击browse..进行选择,选择完点击next 3. 自定义组件,一…

系统架构师考点--软件架构的演化和维护

大家好。今天来总结一下软件架构的 演化和维护。这部分内容属于新增内容,之前未曾考过,可能会在论文中出现,在上午场客观题出现几率不大,可能会占分。 一、软件架构演化和定义 软件架构的演化和维护就是对架构进行修改和完善的过…

jmeter-beanshell学习15-输入日期,计算前后几天的日期

又遇到新问题了,想要根据获取的日期,计算出前面两天的日期。网上找了半天,全都是写获取当天日期,然后计算昨天的日期,照葫芦画瓢也没改出来想要的,最后求助了开发同学。 先放上网上获取当天,计…

使用Canal监听Binlog将数据发送到RocketMQ

文章目录 一、部署RocketMQ二、部署MySQL1、开启mysql的binlog写入功能2、创建一个有相关权限的mysql slave账号 三、部署 Canal1、修改conf/canal.properties配置文件2、修改conf/example/instance.properties配置文件 四、实际操作 一、部署RocketMQ win11 部署RocketMQ 和可…

u盘sd卡格式化怎么恢复数据:从绝望到希望的全面指南

在数字时代,U盘和SD卡已成为我们日常生活中不可或缺的数据存储设备。然而,一不留神的格式化操作,往往会导致重要数据的瞬间消失,让人倍感焦虑与无助。那么,面对这一突如其来的数据灾难,我们是否只能束手就擒…

大模型套壳祛魅:质疑套壳,理解套壳

过去的 2023 年是大模型元年,在国产大模型数量狂飙突进的同时——已经超过 200 个,「套壳」一直是萦绕在大模型头上的舆论阴云。 从年初到年末,从百度文心一言到零一万物,从字节跳动到谷歌 Gemini,各种「涉嫌套壳」的…

案例精选 | 南大港产业园区卫生计生管理服务中心日志系统建设方案

南大港产业园区,坐落于中国河北省沧州市东南部,是一个集工业生产、科技研发、商贸物流、生态居住等多功能于一体的国内知名综合性产业园区。作为区域经济发展的重要引擎,不仅承载着产业升级的重任,还肩负着提升公共服务水平、保障…

刷题了:513.找树左下角的值|112. 路径总和| 113. 路径总和ii|106.从中序与后序遍历序列构造二叉树|105.从前序与中序遍历序列构造二叉树

513.找树左下角的值 文章讲解:https://programmercarl.com/0513.%E6%89%BE%E6%A0%91%E5%B7%A6%E4%B8%8B%E8%A7%92%E7%9A%84%E5%80%BC.html 视频讲解:https://www.bilibili.com/video/BV1424y1Z7pn/?spm_id_from333.1007.top_right_bar_window_history.content.click&vd_s…

install第三方jar中包含私服依赖,导致项目无法构建

起因:新公司项目引入了一个发短信的jar包,我使用下列命令安装到本地库。 mvn install:install-file -DfileD:\workspace\\resources\WEB-INF\lib\xxxx.sdk.sms-0.0.1-SNAPSHOT.jar -DgroupIdxxxx.sdk.sms -DartifactIdxxxx.sdk.sms-0.0.1-SNAPSHOT -Dv…

Netty 必知必会(三)—— ByteBuf

Netty ByteBuf工作原理,和NIO里ByteBuffer区别? Java NIO 提供了ByteBuffer 作为它 的字节容器,但是这个类使⽤起来过于复杂,⽽且也有些繁琐。 ByteBuf是Netty框架中的一个关键类,专门设计来处理字节数据,…

大模型笔记4 长文本滑动窗口

Extractive QA参考: https://juejin.cn/post/7180925054559977533 https://huggingface.co/learn/nlp-course/en/chapter7/7 目录 滑动窗口例子(提取开始结束点任务) 滑动窗口代码实现 tokenize() 默认添加问题 每个滑窗添加标题和摘要 训练label跨滑窗情况token匹配 …

MyBatis开发: XML配置⽂件

前言 在IDEA的yml文件注释发现乱码 1.配置文件注释中文显示乱码 退出重进,发现不是乱码就成功 一.MyBatis XML配置⽂件 学习了注解的⽅式, 接下来我们学习XML的⽅式. 使⽤Mybatis的注解⽅式,主要是来完成⼀些简单的增删改查功能. 如果需要实现复杂的SQL…

使用Langchain构建简单的数据库Agent

这篇文章我们介绍一个使用LangChain实现SQLagent的方法,LangChain直接内置了自己的SQLagent实现-—SQLDatabaseChain。这个方法使用 SQL Alchemy 与数据库交互。感兴趣的可以考虑一下这两个方案是否可以融合,这样保证SQL的准确性从而提升最终结果的准确率…

修改依赖库

修改依赖库 在开发时,当我们发现使用的依赖库有 bug,需要修改,一般都有这几种处理方式: fork 源码,修复 bug 然后提交 pr,等待作者合并,发布新版本提 issue 等待作者修复(跟方式1类…

从物理学到电气工程:如何自学PLC进入工厂担任助理工程师?

本科物理专业自学 PLC 方向,有机会进厂担任助理电气工程师,但可能会面临一些挑战。在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「PLC的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“…

reactive函数

承上启下 在上一节 ref() 函数中,我们大致理解了 ref() 函数的作用是用来将数据转化为响应式的。但是对于基本类型和引用类型,Vue3底层做的转换不一致:对于基本类型,Vue3 通过 ref() 函数将变量转化为了 RefImpl引用对象从而实现响…