AI代理架构的发展:从单一到多代理系统的演进及其影响分析

  每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/

代理人的转变


自从ChatGPT推出以来,初代的生成性AI应用主要围绕着使用检索增强生成(RAG)模式的聊天机器人,以响应用户提示。尽管有持续的工作来增强这些基于RAG的系统的健壮性,研究社区现在正在探索下一代AI应用 —— 其中一个共同的主题是发展自主AI代理人。

代理系统整合了如规划、迭代和反思等高级能力,这些能力利用模型固有的推理能力来完成端到端的任务。配合使用工具、插件和函数调用的能力 —— 代理能够处理更广泛的通用工作。

代理人的推理、规划和有效工具调用的重要性


推理是人类思维的基础构件。没有推理,人们无法做决策、解决问题或在学到新信息时完善计划 —— 本质上是误解了我们周围的世界。如果代理人没有强大的推理技能,他们可能会误解其任务,生成无意义的答案,或未能考虑多步骤的影响。

我们发现大多数代理实现包含一个规划阶段,该阶段采用以下技术之一来创建计划:任务分解、多计划选择、外部模块辅助规划、反思和完善以及记忆增强规划。

相较于仅使用基础语言模型,利用代理实现的另一个好处是,代理人可以通过调用工具解决复杂问题。工具可以使代理执行诸如与API交互、写入第三方应用程序等操作。推理和工具调用紧密相连,有效的工具调用依赖于充分的推理。简而言之,不能期望一个推理能力差的代理人知道何时是调用其工具的合适时机。

单一代理与多代理架构


研究强调,无论是单一代理还是多代理架构,都可以通过采用推理和工具调用步骤来解决具有挑战性的任务。

对于单一代理实现,我们发现成功的目标执行依赖于适当的规划和自我修正。如果没有自我评估和创建有效计划的能力,单一代理可能会陷入无休止的执行循环,永远无法完成既定任务或返回不符合用户期望的结果。我们发现,当任务需要直接函数调用且不需要来自另一代理的反馈时,单一代理架构特别有用。

然而,我们注意到单一代理模式通常难以完成一长串子任务或工具调用。多代理模式可以解决并行任务和鲁棒性问题,因为架构中的多个代理可以分别处理各个子问题。许多多代理模式首先将复杂问题分解为若干个较小的任务。然后,每个代理使用其独立的工具集独立解决各个任务。

涉及多个代理的架构提供了基于能力进行智能劳动分配的机会,以及来自不同代理人格的宝贵反馈。许多多代理架构在规划、执行和评估阶段以阶段方式运作,其中代理团队被动态

组建和重组。这种重组因为利用了专门的代理来完成特定任务,并在不再需要时将其移除,从而产生了优越的结果。通过匹配代理角色和技能以适应手头的任务,代理团队可以提高准确性并缩短完成目标所需的时间。有效的多代理架构的关键特性包括在代理团队中明确的领导、动态团队构建和团队成员之间的有效信息分享,以防重要信息在无关紧要的通信中丢失。

研究突出了诸如ReAct、RAISE、Reflexion、AutoGPT + P、LATS以及多代理实现如DyLAN、AgentVerse和MetaGPT等著名的单一代理方法,这些在全文中有更深入的解释。

我们的关键发现


单一代理模式:

单一代理模式通常最适合工具列表明确且流程明确定义的任务。它们不会受到来自其他代理的不良反馈或来自其他团队成员的分散和无关的闲聊的影响。然而,如果单一代理的推理和完善能力不健全,它们可能会陷入执行循环,并且无法朝着其目标取得进展。

多代理模式:

多代理模式非常适合需要来自多个人格的反馈以完成任务的情况。当需要跨不同任务或工作流的并行处理时,它们很有用,允许各个代理继续进行下一步操作,而不受其他代理处理的任务状态的影响。

反馈和人在循环中

语言模型倾向于在其响应中更早地承诺一个答案,这可能导致与其目标状态日益偏离的“滚雪球效应”。通过实施反馈,代理更有可能纠正其路径并达到其目标。人类的监督通过使代理的回应更贴近人类的期望,改善了即时结果,产生了更可靠和更值得信赖的结果。代理可能会受到来自其他代理的反馈的影响,即使这些反馈并不可靠。这可能会导致代理团队产生一个错误的计划,使他们偏离目标。

信息共享和沟通

多代理模式更倾向于陷入礼节性的交流,代理们可能会互相询问诸如“你好吗”,而单一代理模式则倾向于专注于手头的任务,因为没有团队动态需要管理。这可以通过强有力的提示来减轻。在垂直架构中,代理可能会失败于将关键信息发送给他们的支持代理,没有意识到其他代理不知道完成其任务所需的必要信息。这种失败可能导致团队混乱或结果出现幻觉。解决这个问题的一种方法是在系统提示中明确包括关于访问权的信息,以便代理进行上下文适当的交互。

角色定义和动态团队的影响

对于单一代理和多代理架构而言,清晰的角色定义都至关重要。角色定义确保代理理解其指派的角色,专注于提供的任务,执行适当的工具,并最小化其他能力的幻觉。建立明确的团队领导可以提高多代理团队的整体表现,通过简化任务

分配。动态团队,根据需要将代理引入和移出系统,也被证明是有效的。这确保参与任务的所有代理都是强有力的贡献者。

关键见解摘要

讨论的关键见解表明,最佳的代理架构根据用例的不同而有所不同。无论选择哪种架构,表现最好的代理系统倾向于至少采用以下一种方法:明确定义的系统提示、清晰的领导和任务分配、专门的推理/规划-执行—评估阶段、动态团队结构、人类或代理反馈以及智能信息过滤。利用这些技术的架构在各种基准和问题类型中更为有效。

结论


我们的元分析旨在提供对当前AI代理景观的全面理解,并为那些使用现有代理架构或开发自定义代理架构的人提供洞见。在自主AI代理的设计和开发中存在显著的限制和未来改进的领域,例如缺乏全面的代理基准、现实世界的适用性以及减轻有害语言模型偏见的措施。这些领域将需要在近期内得到解决,以实现可靠的代理。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python中无法pip的解决办法和pip的介绍

什么是pip? PIP是通用的Python包管理工具,提供了对 Python 包的查找、下载、安装、卸载、更新等功能。安装诸如Pygame、Pymysql、requests、Django等Python包时,都要用到pip。 注意:在Python3.4(一说是3.6&#xff09…

自动化滇医通

###我已经将数据爬取出来### 现在开源集合大家的思路一起研究 (请更换ip 以及 暂停时间 不然会提示违规操作) 脚本读取预约信息后开始随机抢一家的,qiang方法里面请自行修改抓包数据参数!! 现在开源大家一起讨论 pyt…

富文本编辑器 iOS

https://gitee.com/klkxxy/WGEditor-mobile#wgeditor-mobile 采用iOS系统浏览器做的一款富文本编辑器工具。 原理就是使用WKWebView加载一个本地的一个html文件,从而达到编辑器功能的效果! 由于浏览器的一些特性等,富文本编辑器手机端很难做…

【开源物联网平台】window环境下搭建调试监控设备环境

🌈 个人主页:帐篷Li 🔥 系列专栏:FastBee物联网开源项目 💪🏻 专注于简单,易用,可拓展,低成本商业化的AIOT物联网解决方案 目录 一、使用docker脚本部署zlmediakit 1.1 …

WebDriver使用带用户名密码验证的IP代理解决方案

背景,使用python3 selenium 先定义一个方法,这里主要用到了chrome插件的功能,利用这个插件来放进代理内容。 def create_proxy_auth_extension(proxy_host, proxy_port,proxy_username, proxy_password, schemehttp):manifest_json "…

【HAL库 STM32】输入捕获并实现超声波测距

文章目录 HC-SR04 超声波模块简介HC-SR04 工作原理如何使用HC-SR04模块程序效果 一、工程配置代码如果您发现文章有错误请与我留言,感谢 HC-SR04 超声波模块简介 HC-SR04 工作原理 模块有2个超声波换能器(如图所示),一个发出声波…

Spark Stream

一、Spark Streaming是什么 Spark Streaming 用于流式数据的处理。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、wind…

基于SSM SpringBoot vue教务排课系统

基于SSM SpringBoot vue教务排课系统 系统功能 登录 个人中心 学生信息管理 教师信息管理 课室信息管理 班级信息管理 系别信息管理 专业信息管理 课程信息管理 选课信息管理 课表信息管理 开发环境和技术 开发语言:Java 使用框架: SSM(Spring SpringMVC Myba…

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列(二)【创建核心类、封装数据库操作】

✔ ★Java大项目——用Java模拟RabbitMQ实现一个消息队列 四. 项⽬创建五. 创建核⼼类 ★创建 Exchange(名字、类型、持久化、自动删除、参数)创建 MSGQueue(名字、持久化、独占标识)创建 Binding(交换机名字、队列名字…

pymeshlab加载物体、创建UV映射(基于平面投影)、创建并保存UV纹理和物体模型

一、关于环境 请参考:pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。本文所给出的例子是https://download.csdn.net/download/weixin_42605076/89233917中的…

MySQL45讲(一)(40)

回顾binlog_formatstatement STATEMENT 记录SQL语句。日志文件小,节约IO,但是对一些系统函数不能准确复制或不能复制,如now()、uuid()等 在RR隔离级别下,binlog_formatstatement 如果执行insert select from 这条语句是对于一张…

uniapp 自定义相机插件(组件版、缩放、裁剪)组件 Ba-CameraView

自定义相机插件(组件版、缩放、裁剪) Ba-CameraView 简介(下载地址) Ba-CameraView 是一款自定义相机拍照组件,支持任意界面,支持裁剪 支持任意自定义界面支持手势缩放支持裁剪(手势拖动、比…

35.Docker-数据卷,目录挂载

注意:在容器内修改文件是不推荐的。 1.修改不方便,比如vi命令都无法使用。 2.容器内修改,没有日志记录的。 问题:那应该如何修改容器中的文件呢? 数据卷 volume是一个虚拟目录,指向宿主机文件系统中的…

Python量化炒股的获取数据函数—get_index_stocks()

Python量化炒股的获取数据函数—get_index_stocks() 利用get_industry_stocks()函数可以获取在给定日期一个行业的所有股票代码列表,其语法格式如下: get_industry_stocks(industry_code, dateNone)各项参数的意义 参数date和返回值,都与g…

【海博】雅思该怎么练?

文章目录 前言 备考计划 模拟考试 参考资料 前言 见《【海博】浅析海博深造》 见《【海博】雅思和托福该考哪个?》 见《【海博】雅思该怎么考?》 见《【海博】雅思考什么?》 备考计划 第一周确定你的目标考试分数。 做一套雅思模拟试题&…

头歌:RDD的创建 - Python

第1关:集合并行化创建RDD 任务描述 本关任务:编写一个集合并行化创建RDD的程序。 相关知识 为了完成本关任务,你需要掌握:1.如何使用集合并行化创建一个Spark RDD 。 什么是 RDD RDD(Resilient Distributed Dataset&…

MLP手写数字识别(1)-MNIST数据集下载与可视化(tensorflow)

1.下载与查看MNIST数据集 from keras.datasets import mnist(x_train_image,y_train_label),(x_test_image,y_test_label) mnist.load_data() print("train images:",x_train_image.shape) print("test images:",x_test_image.shape) print("train …

【how2j Vue部分】两种在Vue的Ajax框架——fetch axios

fetch.js 和 axios.js 都是 Vue 中比较常见的两种ajax框架 1. fetch.js 一般说来 Vue 不会直接使用原生的 Ajax 而是使用 ajax 框架。 而 fetch.js 就是眼下比较流行的一种 ajax 框架 1. 准备 json数据:var url "https://gitee.com/api/v5/users/liyangyf&…

深入 Django 模型层:数据库设计与 ORM 实践指南

title: 深入 Django 模型层:数据库设计与 ORM 实践指南 date: 2024/5/3 18:25:33 updated: 2024/5/3 18:25:33 categories: 后端开发 tags: Django ORM模型设计数据库关系性能优化数据安全查询操作模型继承 第一章:引言 Django是一个基于Python的开源…

Docker - 修改服务的端口

1. 测试 新建一个httpd服务 docker run -itd -p 1314:80 --name test -h test httpd 2. 先停止容器和 docke r服务 docker stop test #停止容器3. 修改配置 cd /var/lib/docker/containers ls 找到需要修改的 cd 1fc55f0d24014217cff68c9a417ca46cf50312caa5c9e6bb24085126…