Sibyl:提升复杂现实世界推理能力的LLM智能体框架

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

大模型(LLMs)以其卓越的问题解决能力而闻名,这主要归功于它们内在的知识储备、强大的上下文学习能力以及零样本(zero-shot)能力。然而,这些基于LLM的智能体在长期推理和工具潜力的充分利用方面仍存在不足,尤其在处理复杂的现实世界推理场景时显得力不从心。为了克服这些限制,Baichuan Inc.的研究者们提出了一个名为Sibyl的LLM基础智能体框架,旨在通过高效利用最少的工具集来解决复杂的推理任务。

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

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

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

框架

设计哲学

Sibyl框架的核心设计哲学是减少复杂性,同时提升大模型智能体的功能能力。这一哲学通过几种战略性的方法实现,以重构大模型的操作。图1展示了Sibyl框架的整体流程。从用户查询开始,通过工具规划器、外部信息获取通道、全局工作空间,最终到达基于多智能体辩论的陪审团,生成响应。

传统的大模型智能体设置中,检索增强生成(RAG)常常因为检索过程的限制而导致信息丢失,这种限制可能会丢失长文本中块的顺序信息和连接,并且必须在信息精度和召回率之间进行权衡。Sibyl通过采用用户导向的浏览器界面来解决这个问题,从而摆脱了RAG的约束,转向更直观、类似人类的信息检索方法。这种信息收集形式至关重要,因为它保留了文本的关系动态,为智能体访问的数据保留了更多的上下文和深度。

最近的智能体框架,如AutoGen,使用对话作为不同模块之间的主要通信模式。这种设计旨在模仿人类的对话模式,使交互更加自然和用户友好。然而,对话是状态性的,可能会在会话中创建复杂的依赖关系,显著增加调试和提示工程的复杂性。Sibyl用无状态的、可重入的问答(QA)功能取代了这种对话,解耦了单个大模型推理请求。这种转变显著简化了系统的架构,便于维护和修改,同时允许每个组件独立操作,不受之前交互的遗留约束。

Sibyl将其功能集中在两个主要工具上:Web浏览器和Python环境。它使浏览器的界面更接近人类的交互模式,例如使用页面导航命令(页面上下滚动)、点击和搜索快捷方式(ctrl+f, ctrl+g)。这种方法摒弃了仅依赖于网络爬虫和全页面内容解析,旨在实现更选择性和相关的数据交互方法,模仿人类使用网络的模式。

Sibyl框架强调增强长期记忆、规划和错误纠正的能力——这些对于复杂的长距离推理至关重要。

Sibyl整合了一个全局工作空间,所有模块都共享这个空间,它从底层设计,存储信息时使用增量状态的表示语言。这种语言有选择地压缩过去的事件,只添加与解决问题相关的信息增量,而不是简单地附加所有传入的数据。

Sibyl总结了其工具的结果,并根据当前进度的评估来计划后续步骤。这涉及到战略性思考哪些信息是必要的,以及它们应该如何被处理。此外,Sibyl引入了一个“陪审团”机制,使用多智能体辩论格式进行自我批评和纠正。这个过程允许模型有效地利用存储在全局工作空间中的信息,以完善响应并确保准确的问题解决。

工具规划器 Sibyl中的工具规划器是一个专门设计的模块,用于选择最适合的(工具、功能、参数)三元组和参数来逐步解决传入的查询。给定规划提示,它评估给定的查询和任何相关的步骤历史,以确定最有效的工具、功能和参数以供执行。如果查询可以直截了当地解决,并且不需要额外的工具,规划器也可以选择“None”,表示该特定步骤不需要额外的工具。

外部信息获取通道 外部信息获取通道在增强智能体处理和利用信息的能力方面发挥着关键作用。它首先获得工具规划器的输出,指定要使用的工具、功能和参数。在接收到这些指令后,激活相应的工具来收集并返回所需的信息。

然后,该通道执行分析,提取和验证查询的相关信息。这包括:

分析工具结果,提取直接有助于回答问题的相关数据。 验证提取的信息是否准确和相关。 仅在它们提供独特且必要的信息时记录新事实。 决定工具结果是否足以回答问题,或者是否需要进一步收集数据。 如果当前步骤的信息不足,该通道计划后续步骤以收集更多数据,选择下一个工具和查询,有效地引导至最终目标。这个计划是详细的,专注于最小化不必要的步骤,并强调直接和高效的方法来收集所需信息。

鉴于获得的信息通常是冗长且嘈杂的,提出了一种表示语言来有选择地压缩信息,灵感来自Lee等人(2024)。与简单的数据附加不同,选择性压缩涉及仅整合那些直接有助于解决手头查询的信息。这与任务导向对话系统中的对话状态跟踪模块的目标完全一致,该模块旨在有选择地压缩与完成任务相关的过去信息。这种方法不仅最小化了数据冗余,还增强了系统记忆中信息的相关性和质量。具体来说,设计了一个结构化的输出,包括记录与历史相比的增量事实信息的部分,解释为什么选择下一步以及它如何有助于回答问题,以及下一步的详细计划。

多智能体辩论基础的陪审团 社会心智理论,由Marvin Minsky提出,为Sibyl框架中陪审团系统的设计理念提供了基础。它认为心智由许多半自治的智能体组成,每个智能体负责不同的智力操作方面,使复杂的认知过程从更简单、专门的进程之间的交互和协商中出现。这些智能体协同工作,尽管通过一个分散的协商和合作过程,很像一个社会。这启发了Sibyl框架中的多智能体辩论基础的陪审团机制,多个智能体可以讨论和分析问题,模仿Minsky心智智能体的合作但独立的交互。

在这里使用AutoGen(Wu等人,2023)的最小实现来实例化陪审团,定义了两个主要角色:

行动者:这个智能体试图回答问题,详细解释他们的思维过程,并批判性地考虑他人的反馈。 批评者:这个智能体的角色是识别行动者推理中的逻辑或智力错误。 这些角色允许结构化但灵活的互动,并在确保所提供响应的逻辑连贯性和智力完整性方面发挥着至关重要的作用。探索大模型智能体的不同组织形式的工作留待未来的工作,包括像咨询委员会这样的协作模型。

此外,Sibyl框架采用多数投票集成方法来增强输出答案的稳定性和质量。这种方法汇总了多个推理的决策或建议,使用它们的共识来最终确定答案。这种方法特别有效,可以减少智能体响应中的个别错误,从而实现更可靠和准确的问题解决。

全局工作空间 Sibyl中的全局工作空间概念深受全球工作空间理论的影响,该理论认为大脑由许多专业过程或模块同时运行,其中很大一部分在无意识中运作。注意力作为一个聚光灯,将这些无意识活动的一部分提升到全局工作空间中的意识觉知中。这个工作空间作为广播和整合信息的关键枢纽,允许其分布在各个模块中。这一理论背景激发了Sibyl框架中全局工作空间的设计,作为一个整合平台,促进了各种模块之间的无缝信息共享和对复杂问题的全面理解。

全局工作空间作为一个中心枢纽,不同的模块可以在这里广播它们的输出和见解。这种机制确保了尽管系统具有模块化特性,但在解决问题时仍能保持一致和统一的方法。此外,全局工作空间中的信息结构良好且去噪,这不仅确保了数据易于访问和操作,也简化了人类开发人员的调试和案例分析过程。

通过实施这个全局工作空间,框架支持复杂的信息处理和长推理序列,促进了从快速、反射性响应(系统1思考)到更深思熟虑和结构化的问题解决(系统2思考)的演变。

实验

Sibyl框架在GAIA数据集上的实验评估显示了其在处理复杂推理任务方面的能力。GAIA数据集专为通用AI助手设计,覆盖了与人类感知能力相关的任务,包括视觉、听觉和文本模式。这个数据集考验了智能体解决复杂推理任务的能力,这些任务往往需要多个步骤才能解决,与人类在现实世界中遇到的问题类似。这种设计突出了错误传播的影响,为基于大模型的智能体的问题解决和错误处理能力提供了有力的评估。

在Sibyl框架的实验设置中,使用了两个主要工具:一个Web浏览器和一个基于Python的代码解释器。为了平衡预算和时间成本,实验中仅使用了文本模式下的GPT-4o API,并将模型的最大推理步数限制为20。

表1和表2展示了Sibyl在GAIA测试集和验证集上的性能。Sibyl在更具挑战性的Level 2和Level 3场景中表现优于其他模型。这一改进尤为显著,因为这些问题需要更多的步骤来解决,证明了Sibyl在复杂推理过程中减轻错误传播的能力。此外,测试集和验证集之间的性能比较显示,Sibyl展现出了卓越的泛化能力。与AutoGen和FRIDAY相比,Sibyl从验证集到测试集的准确率下降较小,显示了Sibyl在不同操作环境中的鲁棒性。

表3显示了人类和Sibyl智能体在GAIA验证集上解决问题所需的平均步骤数。在Sibyl智能体正确的问题中,它在效率上一致超越了人类,在1至3级中使用的步骤显著减少。这显示了Sibyl有效简化决策过程的能力。图2进一步提供了洞见,它绘制了人类与Sibyl智能体在GAIA验证集中解决每个问题所需的步骤数。这些结果表明,尽管Sibyl智能体的推理步数限制为最多20步,但它展现出了高水平的推理效率,表明了强大的能力来减轻不必要的推理和抑制错误传播。

表4展示了在GAIA验证集上进行的消融研究结果,主要关注Sibyl框架中的两个主要组件:基于多智能体辩论的陪审团和基于多数投票的集成。结果显示,移除多智能体辩论组件在Level 1中导致了显著的性能下降,表明这一组件对于提高基本问题类型的准确性至关重要。然而,移除它并没有显著影响更具挑战性的Level 2和Level 3的性能。这表明,虽然多智能体辩论对于有效解决简单查询至关重要,但它并不显著影响更复杂推理任务的结果。为了评估集成组件的影响,报告了三次独立运行的平均准确率,以确保与集成配置的公平比较。个别运行的总体准确率分别为40.61、34.55和35.15,平均为36.77,与集成的总体性能40.00相比。虽然有一次运行略超过了集成结果,但集成通常提供了更稳定和一致的结果。这表明,尽管集成并不保证在每个实例中都有优越的性能,但它有效地增强了不同运行中结果的稳定性和可靠性。

从Sibyl的开发中获得的一些洞见包括:

  • 复杂推理中的挑战:由于错误传播的高风险,现实世界应用中的复杂推理本质上是具有挑战性的。即使每一步的准确率达到80%,在整个20步中保持这种准确率的概率也骤降至仅约1%。这种错误风险的指数增长凸显了在推理的每一步中保持高准确率的关键性。此外,过多的错误可能导致一系列重试,消耗大量的上下文,淹没有用信息,并妨碍问题解决过程。

  • 减轻错误传播的战略方法:将复杂推理分解为更简单、更易于管理的子步骤至关重要,因为提高每一步的成功率可以显著减轻错误传播。在这里,历史信息的选择性压缩起着关键作用,因为在Web导航和先前交互期间累积的大部分数据并不直接有助于解决问题。这种方法不仅简化了信息处理,而且还专注于维护最相关的数据,提高了整个系统的效率。

  • 面向调试的设计的重要性:一个健壮的面向调试的设计对于降低调试成本和促进系统的快速迭代至关重要。通过限制状态的引入,并努力实现组件之间乃至单个大模型推理请求之间的解耦,系统的可维护性和适应性得到了显著改善。鉴于Sibyl遵循组合器模式,它可以无缝地作为低成本增强集成到现有框架中,轻松替换原始的GPT-4 API。这种设计使其在各种大模型应用中更加灵活。

  • 优化工具使用:考虑到前面提到的复杂推理中的错误传播,优化现有工具往往比添加新工具更为关键。像Web浏览器这样的工具的潜力还远未完全实现;当前的大模型智能体在Web平台上的内容可见性和操作范围方面尚未达到人类的能力。增强这些工具以充分利用其能力可以显著提高性能和实用性,从而推动AI系统在复杂环境中的复杂性和有效性。

项目链接:https://github.com/Ag2S1/Sibyl-System

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

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

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

相关文章

Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南

开源代码:将工具库迁移到GitHub 随着项目的成熟和完善,将其开源不仅可以获得更多的用户和贡献者,还能促进项目本身的发展。GitHub作为全球最大的开源协作平台,自然成为了大多数开发者的首选。本文将引导您完成将工具库迁移至GitH…

ai面试辅助工具有哪些

目前市场上常见的AI面试辅助工具包括以下几款‌: ‌白瓜面试‌:这是一款专为在线面试和笔试场景设计的AI助手,支持实时语音识别、图片识别、智能辅助回答等功能,适用于多种岗位和面试平台‌ ‌Interview‌:这是一款基…

Redis - Zset 有序集合

一、基本认识 有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的 特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关 联,着使得有序集合中…

Linux下的WatchDog

看门狗🐕 看门狗简介 看门狗定时器(Watchdog Timer)是一种定时器,用于检测系统是否正常运行。如果系统在规定时间内没有向看门狗定时器发送复位信号,看门狗定时器就会产生复位信号,使系统复位。看门狗定时…

vue3+vite搭建脚手架项目本地运行electron桌面应用

1.搭建脚手架项目 搭建Vue3ViteTs脚手架-CSDN博客 2.创建完项目后,安装所需依赖包 npm i vite-plugin-electron electron26.1.0 3.根目录下创建electron/main.ts electron/main.ts /** electron/main.ts */import { app, BrowserWindow } from "electron&qu…

推荐一款基于Flash的交互式园林设计工具:Garden Planner

Garden Planner是一款由Artifact Interactive开发的基于Flash的交互式园林设计工具。它允许用户以拖放的方式安排植物、树木、建筑物和各种对象,使园林规划变得简单直观。此外,Garden Planner提供工具来快速创建铺路、路径和围栏,帮助用户设计…

H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)

LUA脚本的好处是用户可以根据自己注册的一批API(当前TOOL已经提供了几百个函数供大家使用),实现各种小程序,不再限制Flash里面已经下载的程序,就跟手机安装APP差不多,所以在H7-TOOL里面被广泛使用&#xff…

JAVA基础:数组 (习题笔记)

一,编码题 1,数组查找操作:定义一个长度为10 的一维字符串数组,在每一个元素存放一个单词;然后运行时从命令行输入一个单词,程序判断数组是否包含有这个单词,包含这个单词就打印出“Yes”&…

为开源 AI 模型引入激励机制?解读加密 AI 协议 Sentient 的大模型代币化解决方案

撰文:Shlok Khemani 编译:Glendon,Techub News 古时候,中国人深信「阴阳」的概念——宇宙的每一个方面都蕴含着内在的二元性,这两种相反的力量不断地相互联系,形成一个统一的整体。就好比女性代表「阴」&a…

ONES 功能上新|ONES Project 甘特图全面升级

ONES Project 甘特图全面升级,提供更加专业、灵活的工具。 项目经理往往面临项目进度难以直观把控、关键任务容易遗漏、里程碑节点缺乏明确标记、进度偏差无法及时发现等挑战。 针对这些痛点,ONES 新增了关键路径、基线对比、里程碑视图、交付物视图等 1…

windows 进程降权和提权代码示例(2) c++

强制完整性控制 - Win32 应用程序 |Microsoft 学习 一、强制完整性控制 品03/26/20217 个参与者 反馈 本文内容 诚信标签进程创建强制性政策 强制完整性控制 (MIC) 提供了一种用于控制对安全对象的访问的机制。此机制是对自主访问控制的补充&#xff…

基于Python的旅游景点推荐系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…

【C++】vector 类深度解析:探索动态数组的奥秘

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 如果你对string类还存在疑惑,欢迎阅读我之前的作品 : 👉【C】string 类深度解析:…

Hugging Face 平台轻松上手 | 书生大模型

文章目录 HF 的 Transformers 库GitHub CodeSpace 使用终端安装依赖下载 internlm2_5-7b-chat 的配置文件 参考文献 HF 的 Transformers 库 直接使用预训练模型进行推理提供了大量预训练模型可供使用使用预训练模型进行迁移学习 因此在使用 HF 前,我们需要下载 Tra…

项目升级到.Net8.0 Autofac引发诡异的问题

前两天把项目升级到.Net8.0了,把.Net框架升级了,其他一些第三方库升级了一部分,升级完以后项目跑不起来了,报如下错误: An unhandled exception occurred while processing the request. DependencyResolutionExcepti…

如何开发查找附近地点的微信小程序

我开发的是找附近卫生间的小程序。 在现代城市生活中,找到一个干净、方便的公共卫生间有时可能是一个挑战。为了解决这个问题,我们可以开发一款微信小程序,帮助用户快速找到附近的卫生间。本文将介绍如何开发这样一款小程序,包…

canfestival主站多电机对象字典配置

不要使用数组进行命名:无法运行PDO 使用各自命名的方式:

楼宇智慧公厕为用户提供清晰厕位引导,提高用厕效率

如今楼宇管理者越来越重视公共设施的优化,尤其是公厕的管理。楼宇智慧公厕系统通过先进的技术,为用户提供清晰的厕位引导,显著提高了用厕效率。本文将从两个方面介绍楼宇智慧公厕系统的功能及其带来的好处。 一、清晰厕位引导 楼宇智慧公厕系…

Ubuntu 20.04 安装 QGC v4.3 开发环境

Ubuntu 20.04 安装 QGC开发环境 1. 准备安装 Qt 5.15.2安装依赖获取源码 2. 编译参考 前言 QGC ( QGroundControl) 是一个开源地面站,基于QT开发的,有跨平台的功能。可以在Windows,Android,MacOS或Linux上运行。它可以将PX4固件加…

使用匿名管道时出现程序一直运行问题

父进程创建两个子进程,父子进程之间利用管道进行通信。要求能显示父进程、子进程各自的信息,体现通信效果。(源程序pipe_1.c) 一开始,我忘了初始化pipe,很傻*的直接把fd当管道使,出现了儿子喊爸爸"i am your father."的…