自适应对话式团队构建,提升语言模型代理的复杂任务解决能力

人工智能咨询培训老师叶梓 转载标明出处

如何有效利用多个大模型(LLM)代理解决复杂任务一直是一个研究热点。由美国南加州大学、宾夕法尼亚州立大学、华盛顿大学、早稻田大学和谷歌DeepMind的研究人员联合提出了一种新的解决方案——自适应团队构建(Adaptive In-conversation Team Building),旨在通过动态管理和组建团队来提高问题解决的效率和准确性。

Figure1展示了两种团队构建范式,即“静态构建”和“自适应构建”。传统的静态构建是根据任务指令和构建蓝图通过固定流程构建团队,而自适应构建则是在任务解决过程中由自适应构建代理(Captain Agent)动态形成不同团队,无需额外指令。在面对任务需求变化时静态构建方法缺乏灵活性,而自适应构建方法则可以根据任务解决过程中的需求动态调整团队成员,以适应任务的动态变化。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具(限时免费)。

1小时实战课程,您将学习到如何轻松上手并有效利用 Llama Factory 来微调您的模型,以发挥其最大潜力。

CSDN教学平台录播地址:https://edu.csdn.net/course/detail/39987

方法

该方法通过Captain Agent实现,包含两个关键组件:(1) 自适应多代理团队构建,涉及代理和工具的检索、选择和生成;(2) 嵌套群组对话及反思机制。

Captain Agent的工作流程在Figure 2中进行了说明。给定一个任务,Captain Agent会首先制定计划,然后重复以下两个步骤,直到认为任务完成并输出结果:

Step 1,Captain Agent识别由提示指导的子任务,列出所需的几个角色,并据此通过检索、选择和生成创建相应的代理团队。每个代理都会配备从工具库中检索到的预定义工具;

Step 2,这些代理将尝试通过与自由形式工具的对话来解决子任务。完成后,一个反思型大模型(LLM)将为Captain Agent提供反思报告,以决定是否调整团队或子任务指令,或终止并输出结果。

在Step 1中,Captain Agent根据相应的提示识别子任务后,会列出几个角色。这些角色将进入由检索增强生成(Retrieval-Augmented Generation, RAG)引导的检索、选择和生成过程。创建的代理将配备设计良好的个人资料(系统消息1)和高质量的工具。整个流程在Figure 3中进行了说明。包括根据Captain Agent提示的角色描述检索候选代理和工具,将候选代理与角色绑定,选择最合适的代理,并在没有合适代理的情况下生成新代理。

代理和工具检索:Captain Agent会提示n个所需的角色{ri|i ∈ 1, · · · , n},包括所需的技能和可能的角色名称。然后根据角色描述和代理/工具库中记录的代理/工具描述之间的句嵌入相似度,检索top-k1代理和top-k2工具。使用Sentence Transformer计算角色和库代理/工具之间的描述嵌入,并使用余弦相似度作为衡量两个句子相似度的指标,如下所示:

其中k1和k2分别是从代理库alib和工具库tlib中检索的代理和工具的数量,f(·)表示从Sentence Transformer提取的句子嵌入。检索后,每个角色将被分配k1个代理候选和k2个有价值的工具。通过将工具使用指令注入到相应代理的系统消息中,将代理候选与检索到的工具绑定。

代理选择:提示一个基于LLM的代理选择器,根据Captain Agent给出的角色描述和检索到的代理描述,选择最合适的代理。设计了一个JSON模板以确保格式正确。特别地,为代理选择器设计了一个弃权机制,如果top-k1检索候选列表中没有适合某个角色的代理,代理选择器可以输出"None"。这可以防止不相关或多余的代理被强制选入当前任务。标记为"None"的角色将进入下一步的生成过程。

代理生成:为上一步中没有链接代理的角色设计了一个代理生成过程。具体来说,根据Captain Agent给出的角色描述生成代理的名称和所需技能。这些指令将与一般任务和编码指令以及群聊指令结合,作为最终的系统消息。手动设计了一般任务和编码指令,受到思维链(Chain-of-thought, CoT)和反思(Reflexion)的启发。最终的系统消息也将被压缩成单句描述,供嵌套群聊使用。然后根据描述从工具库中检索工具,并将工具使用指令注入到生成的系统消息中。

团队记忆:一旦团队建立,Captain Agent会将其缓存到本地内存中,包括团队名称和每个代理的详细信息,如名称、系统消息和分配的工具。Captain Agent可以在与用户代理的对话中随时调用缓存的团队。调用缓存的团队不会引入任何API调用,因此不会引入额外的成本。

Step 2中,在自适应多代理团队构建过程中选出和创建的代理将加入一个嵌套群组聊天室。他们将被提示从用户任务中收集信息,并通过嵌套对话解决Captain Agent的子任务。然后提示一个反思型LLM检索和审查对话历史,并在预设计模板中填写结论、结论原因、可能的矛盾和问题,并标记结果是否需要双重检查。

嵌套群组对话:通过利用AutoGen框架和新设计的工具使用范式,将所有代理放入一个聊天室,并由群聊管理器LLM根据对话历史和每个代理的身份选择每个回合的发言人。从代理的个人资料中生成一个简短的描述,供群聊管理器使用。代理的代码和工具调用将被执行并立即反馈到对话中。将工具的描述、Python模块路径和响应案例注入到相关代理的系统消息中。然后代理可以按照工具的描述和路径自由编写代码,自然地将工具融入到更大的程序中。所有代理编写的程序将由用户代理代理在一个共享代码执行环境中执行,并将结果实时反馈到对话中。

对话反思:代理在对话中的输出可能不一致,包括事实错误、幻觉和刻板印象。尽管其他代理有机会在对话中进行调整和纠正,但有时也可能陷入困境,导致问题解决失败。因此,提出了通过提示一个反思型LLM与精心设计的对话总结提示模板来检测对话中的矛盾和问题。反思器在检测到这种不一致内容时会标记“需要双重检查”为“Yes”,并提供详细理由。这将触发Captain Agent启动一个验证过程,通过构建一个新的嵌套对话来双重检查先前的结果,在收到“Yes”关于“需要双重检查”后。

静态团队由于成员数量有限,可能无法全面覆盖所需能力。尽管构建大量具备全面人物设定或技能的代理可以扩展能力范围,但LLM智能体介绍所有参与者的长上下文存在难度,这会降低对话质量。同时,功能重叠的智能体也可能参与到问题解决中。与之相对,Captain Agent能够根据当前任务的具体情况,自适应地选择和构建更加优化的智能体团队,既减轻了LLM的提示负担,也减少了不相关智能体的冗余输出,同时保证了团队的多样性。

评估

Table 1 展示了进行主要实验选择的场景和对应的数据集。除了数学问题(MATH)外,对整个数据集进行了主要比较实验。对于MATH,根据每种问题类型的原始分布抽取了一个小样本子集。

  • 数学问题:MATH数据集包含196个问题,例如求解方程中m不能取的实数值。
  • 编程问题:HumanEval数据集包含164个编程问题,例如定义一个函数truncate_number,将一个正浮点数分解为整数部分和小于1的小数部分。
  • 数据分析:DABench数据集包含257个数据分析问题,例如通过求和“SibSp”和“Parch”列生成一个新特征“FamilySize”,然后计算“FamilySize”和“Fare”列之间的皮尔逊相关系数。
  • 世界信息检索:GAIA数据集包含165个问题,例如BBC Earth YouTube视频中“Top 5 Silliest Animal Moments”中出现了哪种鸟类。
  • 科学问题(化学和物理):SciBench数据集包含41个化学问题和34个物理问题,例如计算1.25克氮气在250立方厘米的烧瓶中在20°C时产生的压力,以及计算在静态摩擦系数为0.4时,块体开始滑动的角度θ。

这些场景和数据集的选择旨在全面评估Captain Agent与基线模型的性能,覆盖计算和认知技能的关键维度。由于成本限制,对MATH数据集进行了样本抽取。

对于数学、编程、数据分析和科学场景,比较了Captain Agent和四种不同的方法,包括Vanilla LLM、AutoAgents、Meta-prompting、AgentVerse和DyLAN。所有这些方法都使用gpt-4-0125-preview作为底层模型,并使用相同的任务特定提示。

对于世界信息检索场景,将Captain Agent与GAIA验证排行榜上的前五个基线进行比较,所有基线都使用gpt-4-1106-preview作为底层模型。

对于数学、数据分析和科学场景,通过比较每种方法的最终结果和真实情况来报告准确性。为确保评估的公平性,将不同的结果格式转换为统一格式。对于编程场景,运行每种方法提供的代码,并在代码成功通过所有测试时输出一个唯一标记。

Table 2 和 Table 3 报告了Captain Agent和八个不同的基线在六个真实场景中的比较结果。

  • 发现1:多样化的代理可以帮助触发解决问题所需的专业知识输出。通过比较Captain Agent、AutoAgents和AutoGen助手+执行者的结果,观察到Captain Agent和AutoAgents平均性能优于AutoGen助手+执行者。这些场景需要专业知识,而AutoGen助手由于固定系统消息的限制,难以完成。

  • 发现2:自适应团队构建在没有任务偏好的情况下提高了性能。Captain Agent在所有场景中的出色表现表明其不受任务类型的限制。适时引入不同的代理,使Captain Agent能够逐步解决复杂问题。

在Table 1的子集上进行消融研究。具体来说,根据AutoGenBench随机选择了MATH的17个问题和HumanEval的25个问题,这些问题是从GPT-4失败集中随机选择的。对于DABench,随机选择了25个问题,对于SciBench,根据教科书的数量随机选择了化学和物理的19个问题。评估协议与前面相同。

  • 静态与自适应团队构建:为了进一步探索自适应团队构建的力量,比较了自适应团队构建与静态团队构建。具体来说,通过在每个任务开始时以与Captain Agent相同的方式构建代理团队,并让它们解决每个问题。Table 4中总结的结果表明,自适应团队构建范式全面优于静态团队构建范式。

  • 工具库和代理库的消融研究:对工具库和代理库的效用进行了消融研究。轮流移除工具库、代理库以及两个库,并评估在世界信息检索任务上的性能,即GAIA数据集。Table 5显示,移除代理库和工具库都会显著损害系统的性能。虽然工具库和代理库可以独立提高性能,但只有在两个库同时使用时才能获得最佳结果。处理1级任务需要适度的网络浏览和推理步骤,这可以通过几次单轮次工具调用或专家编写和迭代执行代码来实现。引入代理库和工具库可以使系统在网络交互中更稳定、更健壮,从而提高性能。值得注意的是,如果没有代理库,Captain Agent在2级任务上的表现要差得多。这些任务更加复杂,主要涉及大量的网络导航和推理步骤。网络浏览涉及复杂且动态的交互,这不适合静态工具库。这些任务要求代理协调多个工具来解决问题,这是一个在充满不确定性的网络场景中容易出错的过程。

  • LLM主干的消融研究:探索了LLM主干选择对Captain Agent性能的影响。进行了两种实验设置:Captain Agent和团队成员使用弱LLM,Captain Agent使用强主干,嵌套聊天成员使用弱LLM。首先为Captain Agent及其嵌套专家配备了四种不同的主干,即gpt-4-0125-preview、gpt-4o-mini、LLaMA-3-70B-Instruct和LLaMA-3-8BInstruct,并与所有使用gpt-4-0125-preview作为基线的基线进行比较。Table 6显示,使用gpt-4o-mini的Captain Agent超越了所有其他基线。然后,将Captain Agent的主干固定为gpt-4-0125-preview,并为嵌套聊天的专家使用不同的主干LLM,包括gpt-3.5-turbo、claude-3-sonnet、gemini-1.5-pro以及开放权重模型如LLaMA-3-70B和Mixtral-8x22B。Table 7记录了结果。带有gemini-1.5-pro的聊天成员在大多数场景中表现第二好。比较这两种设置的结果,可以观察到通过在Captain Agent中使用更强的LLM主干来指导嵌套对话,系统的性能得到了显著提升。

  •  成本分析:与LLM相关的高令牌成本一直是实际部署代理的一个重大障碍,使其在经济上不可行。计算了Captain Agent工作流程的总成本,包括生成Captain Agent输出、执行代理和工具选择、专家生成和嵌套聊天对话。成本在Table 6中报告。通过利用更小、成本效益更高的gpt-4o-mini,该方法在保持强大性能的同时显著降低了成本,每项任务的平均成本低至0.33美元。

论文中提到的相关工作和框架可以通过以下链接进一步了解:AutoGen | AutoGen

论文链接:https://arxiv.org/pdf/2405.19425

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

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

相关文章

GitHub上传自己的项目

目录 一、安装Git插件 1)下载 2)安装 二、创建Gothub的创库 三、通过Git上传本地文件到Github 四、其他 1、部分指令 2、如果已经运行过git init并设置了[user],下次可以直接用 一、安装Git插件 1)下载 下载地址&#x…

SpringBoot整合EasyExcel加Vue

EasyExcel好处是什么? EasyExcel 是一个基于 Apache POI 的 Java Excel 处理库,主要用于高效地读写 Excel 文件。它的主要好处包括: 高性能:EasyExcel 在内存管理和读取速度上进行了优化,适合处理大规模 Excel 文件。 简洁易用…

VisionPro —— CogPatInspectTool对比工具

一、CogPathInspectTool工具简介 CogPathInspectTool是VisionPro重要的工具,主要用于缺陷检测,通过将当前图像与“训练图像”对比,获取“原始差异图像”,再将“原始差异图像”与“阈值图像”进行对比,进而获取“阈值差…

css实现antd丝带效果

先上效果图&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document…

BFV/BGV全同态加密方案浅析

本文主要为翻译内容&#xff0c;原文地址&#xff1a;Introduction to the BFV encryption scheme、https://www.inferati.com/blog/fhe-schemes-bgv 之前的一篇博客我们翻译了CKKS全同态加密方案的内容&#xff0c;但该篇上下文中有一些知识要点&#xff0c;作者在BFV/BGV中已…

占地1.1万平,2亿投资的智能仓储系统:高架库、AGV、码垛机器人……

导语 大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。 我国调味料市场近年来展现出惊人的增长潜力&#xff0c;各大品牌纷纷加大投入&#xff0c;力求在竞争中脱颖而出。 广东美味鲜调味食品有限公司&#xff0c;作为行业内的佼佼者&#…

EJEAS S2滑雪对讲机全球发布会圆满举办,为滑雪市场注入新活力

时光向新&#xff0c;步履向前。站在冰雪运动与科技创新的交汇点&#xff0c;深圳爱骑仕智能科技有限公司&#xff08;以下简称“EJEAS”&#xff09;于2024年11月2日在新疆阿勒泰可可托海成功举办S2滑雪对讲机全球发布会。现场汇聚了来自全国各地的两三百名嘉宾&#xff0c;包…

个人对Numpy中transpose()函数的理解

NumPy中的transpose()函数用于对数组进行转置&#xff1a; 如果函数中不传递任何参数&#xff0c;它将进行标准的矩阵转置&#xff1b; 如果传递了一个轴序列&#xff0c;NumPy将按照这个序列重新排列轴。 二维的转置很好理解&#xff0c;就是线性代数中的矩阵转置。但高纬度…

【运动的&足球】足球运动员球守门员裁判检测系统源码&数据集全套:改进yolo11-DBBNCSPELAN

改进yolo11-FocalModulation等200全套创新点大全&#xff1a;足球运动员球守门员裁判检测系统源码&#xff06;数据集全套 1.图片效果展示 项目来源 人工智能促进会 2024.10.28 注意&#xff1a;由于项目一直在更新迭代&#xff0c;上面“1.图片效果展示”和“2.视频效果展示…

流畅!HTMLCSS打造网格方块加载动画

效果演示 这个动画的效果是五个方块在网格中上下移动&#xff0c;模拟了一个连续的加载过程。每个方块的动画都是独立的&#xff0c;但是它们的时间间隔和路径被设计为相互协调&#xff0c;以创建出流畅的动画效果。 HTML <div class"loadingspinner"><…

面试题:JVM(二)

1. 面试题 简述 Java 类加载机制?&#xff08;百度&#xff09; JVM类加载机制 &#xff08;滴滴&#xff09; JVM中类加载机制&#xff0c;类加载过程&#xff0c;什么是双亲委派模型&#xff1f; &#xff08;腾讯&#xff09; JVM的类加载机制是什么&#xff1f; &#x…

【c++日常刷题】两个数字的交集、点击消除、最小花费爬楼梯

两个数字的交集⭐ 两个数组的交集_牛客题霸_牛客网 (nowcoder.com) 题目描述&#xff1a; 解题思路&#xff1a; 通过遍历num1&#xff0c;如果遍历到的元素如果在num2中能找到&#xff0c;则这是num1和num2的公告元素&#xff1b; 这里需要借助两个数组来实现&#xff1a;…

energy 发布 v2.4.5

更新内容 修复 energy cli install 命令安装开发环境 修复 动态库加载error未暴露 增加 JS ipc.on 监听模式&#xff0c;异步返回结果 修复 energy cli 不能强制退出问题 修复 MacOS 开发模式 debug 时不更新 helper 进程 优化 energy cli 在 MacOS 开发模式和安装包制作 link…

LeetCode 19. 删除链表的倒数第 N 个结点(java)

目录 题目描述: 代码: 第一种: 第二种: 题目描述: 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;h…

IMU应用于监测进食

最近&#xff0c;日本研究团队成功研发了一种创新的进食速度监测系统&#xff0c;巧妙融合IMU技术&#xff0c;旨在深入研究并有效评估个体在自由生活环境下的进食习惯。 实验中&#xff0c;科研团队把IMU传感器固定在受试者佩戴的腕带中&#xff0c;以监测并记录进食手腕时的运…

WSL开发--利用Git连接远程仓库(详细步骤)

这篇文章主要介绍了如何将本地项目推送到 GitLab 上&#xff0c;并且避免每次提交都需要输入用户名和密码。文中分步讲解了配置 GitLab SSH 密钥以及配置 Git 远程仓库地址的方法。以下是文章的优化和简洁版&#xff1a; 将本地项目推送到 GitLab 并配置 SSH 免密登录 为了方便…

LeetCode100之盛最多水的容器(11)--Java

1.问题描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量 注意 你不能倾斜容器 示例1 输入&…

算法实现 - 快速排序(Quick Sort) - 理解版

文章目录 算法介绍算法分析核心思想三个版本运行过程挖坑法Hoare 原版前后指针法 算法稳定性和复杂度稳定性时间复杂度平均情况O(nlogn)最差情况O( n 2 n^2 n2) 空间复杂度 算法介绍 快速排序是一种高效的排序算法&#xff0c;由英国计算机科学家C. A. R. Hoare在1960年提出&a…

设备搜索相关协议使用

一、实现原理 首先&#xff0c;Client -> Gateway : 发送 UDP 广播包&#xff08;含厂商自定义协议)这一步表示客户端开始向网络中发送一个包含厂商自定义协议的 UDP 广播包&#xff0c;目的是寻找本厂商的设备&#xff08;网关&#xff09;。客户端此时处于活动状态activa…

视频去水印怎么办?两种方法教会你

视频有水印的话确实很恼火&#xff0c;想要干净的去除视频水印&#xff0c;这里分享两种简单又实用的方法。 方法一&#xff1a;美图秀秀 大家都熟悉的修图神器&#xff0c;功能超全。不仅能把照片P得美美哒&#xff0c;还能去掉照片和视频上的水印呢&#xff01;用起来挺顺手…