夕小瑶科技说 原创
作者 | 智商掉了一地、ZenMoore
港大的研究团队最近发布了一个新的开源 Agent 框架,名为 OpenAgents. 它可以用于实际用户场景,特别是在使用自然语言执行复杂任务的情况下。先前的语言智能体框架主要关注概念验证或者供开发人员使用,而 OpenAgents 则更注重非专家用户的使用体验和应用设计。它提供了一个开放的平台,让更多人可以在日常生活中使用和部署语言智能体。
这个平台包括数据智能体、插件智能体和 Web 智能体,用户可以通过一个优化的 Web 界面与智能体进行交互。
论文题目:
OpenAgents: An Open Platform For Languageagents In The Wild
论文链接:
https://arxiv.org/abs/2310.10634
项目地址:
https://github.com/xlang-ai/OpenAgents
Demo 地址:
https://chat.xlang.ai/
文章速览
目前,OpenAgents 平台主要包括 3 个智能体:
-
数据智能体,使用 Python、SQL 和其他数据工具进行数据分析;
-
插件智能体,配备了 200 多种日常 API 工具;
-
Web智能体,可以自主浏览网页。
OpenAgents 通过一个针对快速响应和常见故障进行优化的 Web 用户界面,让普通用户可以与智能体的功能进行交互。
同时,它也为开发人员和研究人员提供了在本地环境中无缝部署的体验,为创新的语言智能体的构建和实际评估提供了基础。
为充分发挥 LLM 的潜力,需要从纯理论或以开发者为中心的工具转变为面向各种用户的动态互动系统,成为一个现实且全面的人机协同智能体评估平台。在该平台上,用户根据实际需求与智能体互动来完成任务。整个人机互动过程和用户反馈都会被记录下来,以便进一步评估。
如图1所示,OpenAgents 能够实现:
-
面向普通用户:通过在线 Web 界面与智能体交互,无需任何编程知识。
-
面向开发人员:利用代码,轻松部署前端和后端进行进一步开发。
-
面向研究人员:根据示例和共享组件,构建新的语言智能体或相关方法,并通过 Web 界面查看其性能。
▲图1:OpenAgents 平台,面向普通用户、开发人员和研究人员,旨在成为简单、多功能的平台,用于使用、开发和评估语言智能体
语言智能体的比较
关于语言智能体,目前已经建立了许多框架和代码库,表 1 展示了这些框架和代码库的总体比较。
-
一部分构建了概念验证和引人注目的原型实现。这些原型主要是通过提示 LLM,然后在特定情况下展示出惊人的结果。基于这些原型,又有人提出了一些改进和更新的概念框架。
-
另一部分则强调对语言智能体的评估。这些评估通常在完全模拟的环境中进行,比如自托管的网页。也有在半真实环境中进行的,比如利用真实工具 API 调用。当然,也有同时使用两种环境的。
-
还有一些专注于研究多智能体及其行为。
▲表1:OpenAgents 与其他关于构建原型和基准的工作在智能体概念上的比较
OpenAgents 设计与实现
系统设计
如图 2 所示,OpenAgents 架构主要包含两部分:
-
用户界面,这是用户与智能体交流和管理后端操作的平台;
-
语言智能体,它由语言模型、工具和环境组成,推动智能体做出决策。
OpenAgents 提供了方便用户和智能体进行交流的接口。通常,交互流程从用户需求出发,通过用户界面进行,最后由语言智能体利用各种组件执行特定操作。当智能体接收到用户的指令后,会利用工具在环境中进行规划和行动。
▲图2:OpenAgents 架构的系统概述
用户界面
作者计划打造一个既用户友好又功能强大的用户界面。使其解决许多可高度复用的业务逻辑问题,以便使用和托管智能体,为后端服务器操作、错误处理、数据流传输等各种技术方面提供强大的支持。
语言智能体
这里有 3 个关键组件:语言模型、工具界面和环境,当前采用了 ReAct 中介绍的方法作为提示方法。
在每次交互中,智能体通常按照观察、思考、行动的顺序进行操作。
-
语言模型会生成易于解析的文本。
-
工具界面包含解释器,它可以将这些文本转换为可执行操作,例如生成代码或发起 API 调用。
-
这些操作之后会在相应的环境中执行。
实现中的挑战
对于用户界面的实现,有以下挑战和解决方案:
-
自适应数据映射: 引入数据模型的概念,借鉴数据库术语,以有效地将各种原始数据类型(如文本、代码、图像和表格)转换成适合人类阅读、适合 LLM 上下文,以及适合持久存储的格式。这提高了系统组件与外部实体之间的通信流畅性。
-
战略性数据存储: 采用了一种适应 OpenAgents 多用户特性的数据存储策略。
-
以用户为中心的界面: 设计了一个自适应用户界面,以减小用户与系统之间的交互差距。其能适应各种操作环境,展示丰富的媒体和交互内容,提高用户的参与度和任务效率。
-
实时回复流: 采用流式处理方法,以减少接收长文本补全时的延迟。通过流式 API 和推动自动机,实现了生成标记的实时解析和渲染,提高了用户反馈的即时性。
-
系统的稳健性: 强调提升智能体的稳健性,处理了有效的故障,及时的回复生成以及标记溢出管理等问题,以确保系统在各种真实场景下可靠运行。
-
通过 Chrome 扩展程序控制浏览器: 开发了一个 Chrome 扩展程序,使 Web 智能体能够直接控制浏览器。这种设置实现了实时监控和干预用户在 Web 交互过程中的操作,增强用户对系统的控制和信任。
对于语言智能体,作者提供了以下挑战的解决方案:
-
数据接地: 系统允许用户上传文件,这些文件需要智能体进行编程处理。为了有效存储这些用户上传的数据,建立了一个接地源池。通过使用 DataModel,每种文件类型被线性化并以其名称进行索引,使得智能体能够按照用户的指示检索和使用文件内容。
-
自动工具选择: 以往,用户需要手动选择插件来执行命令,如 OpenAI 插件。为了解决手动选择插件的困难,系统集成了一个名为“自动选择”的功能。该功能可根据用户的指示自动检测最相关的工具,从而简化了整个过程。
-
自动工具扩展: 虽然创建工具在 LLM 基础设施中使用智能体方面存在独特挑战,但他们从平台如 RapidAPI 和 OpenAI 插件商店获取了API提供者的信息。这一方法能产生 200 多个高质量的插件,尽管偶尔需要人工监督。系统还需要进一步探索,以实现高效的扩展。
-
可执行环境: 将语言模型的输出转化为特定上下文中的可执行任务。构建一个应用级的、多用户的可执行环境需要考虑到安全性、稳健性和功能性的挑战。成功实现了针对代码执行、API 交互和网页导航的沙盒环境。这些环境作为智能体的全面测试平台,方便代码生成、插件交互和网页操作等任务。
开放式智能体
如文章开头所述,OpenAgents 有三种特殊的智能体。它们在各自领域都是专家,类似于 OpenAI 的 ChatGPT 插件,它们的实现依赖于开放语言 API,也可以使用其他开源的 LLM(如 GPT-4 和 Claude)。
数据智能体
该智能体可以处理用户日常遇到的各种数据相关任务,支持在 Python 和 SQL 两种编程语言中生成和执行代码。
作者还为智能体集成了几种数据工具,包括:
-
Kaggle 数据搜索,通过 API 在 Kaggle 上搜索数据集;
-
数据概要,提供基本数据信息;
-
ECharts 工具,用于交互式绘图。
Python、SQL 和 ECharts 等工具将生成代码,这样可以充分利用语言模型的编程能力,同时减轻智能体的负担。
它不仅限于生成文本和代码,还能熟练地进行数据查询、可视化和操作等任务。
图 3 给出了一个示例,用户可以上传自定义文件,比如表格和图片,然后对上传的数据进行连续查询。
▲图3:数据智能体的流程图(左)和演示(中和右)
插件智能体
该智能体满足用户在购物、搜索、阅读新闻、预测天气和创建网站等日常任务中的多样化需求。为此,作者整合了来自各方的 200 多个插件。其中,一些知名的插件包括:Google搜索、Wolfram Alpha、Zapier、Klarna、Coursera、Show Me、Speak、AskYourPDF、BizToc 和 Klook。
作者特别关注了 API 的响应时间、函数调用接口以及 API 的响应长度,以便让基于 LLM 的智能体能最大限度地利用这些插件。
用户可根据自己的需求,选择一个或多个插件,以便让他们的智能体使用。具体示例参见图 4。这里添加了一个功能,可以根据用户的指示自动选择最相关的插件。
▲图4:插件智能体的流程图(左)和演示(中和右)
Web 智能体
Web 智能体是一种专门用来提升聊天智能体能力的工具。如图 5 所示,聊天智能体仍然是主要的交互界面,但会无缝地调用 Web 智能体。然后,Web 智能体会把最后的回复交给用户。
▲图5:Web智能体的流程图(左)和演示(中间和右侧)
其优势在于,聊天智能体会在将用户查询或起始 URL 交给 Web 智能体之前,对重要参数进行系统处理,可确保与用户意图的高度一致性,从而促进更清晰的沟通。
当处理模糊或有多个方面的复杂任务时,聊天智能体会采用分解的方法,用户的总体指令被分割成更易理解的子任务。聊天智能体接着使用这些子指令,按顺序与 Web 智能体交互,以确保更精细和高效的问题解决。
此外,配置支持多轮网络导航与聊天对话的动态交互,从而适应更多层次和可调整的用户查询。这里明确划分了 Web 智能体和聊天智能体的角色和职责,为每个模块的独立发展和持续改进铺平了道路。
实际部署中的关键挑战
将 LLM 转化为面向现实世界的应用的挑战——通过提示
在为真实用户构建基于 LLM 提示的应用程序时,使用提示中的指令来设定特定要求。这些指令有不同目的:
-
为了确保 LLM 的输出符合我们后端逻辑处理的特定格式(以特定键的字典形式输出)
-
旨在提升输出的美观度(尽可能单独列出项目)
-
用于防止潜在的攻击(拒绝用户恶意构造的无限循环程序)
它们的累积通常会产生几百个 token,对 LLM 的指令跟踪能力和支持的上下文长度提出要求。
而当前的开源模型在这些方面已经取得了显著的改进。此外,需要更加重视智能体模型的基础开发和研究,以及针对特定领域和要求训练专用的智能体模型。这种方法可能比仅依赖于提示一个通用强大但固定模型更有效,也更可控。
无法控制的现实因素
这些因素包括用户行为、互联网基础设施和业务逻辑等,它们在过去的研究中并未得到充分建模。这就需要重新评估,甚至推翻许多过去研究中的假设和方法。
必须考虑到,调用的 API 所在的服务器可能会崩溃。这种情况需要监控并稳定地完成用户命令,而不是像过去的工具使用研究中所假设的那样。
在生成回复的过程中,用户可能会感到不满意,这可能导致语言模型在生成过程中被中断。此外,像 CAPTCHA 弹出或广告改变网页这样的不可预测事件,可能会在相对稳定的网页结构中引入一定程度的随机性。这在以前的自动浏览网页的工作中未曾考虑过。
来自真实场景的额外指标
研究通常过于强调性能指标,而忽视了现实场景中的基本需求。例如,让用户能够快速感知系统的反馈,而无需等待长篇大论的文本生成。特意设计的提示可以让智能体的回复格式更加美观,这对用户体验有着显著影响。
然而,现有的方法并未充分考虑这些影响。尽管在准确性上的性能指标优秀,但在实际应用中,它们可能导致响应时间过长,用户体验不佳。此外,还需要考虑性能和用户体验之间的权衡问题。
评估由系统问题引起的复杂性
构建直接针对应用程序的智能体可以满足更多用户需求,同时也能揭示更多评估挑战。但基于 LLM 的应用程序构建会带来额外的复杂性,使得难以判断失败案例是来源于 LLM 应用的限制还是逻辑代码的不足。
因此,对智能体设计和操作逻辑的系统进行改进,简化流程,是有前景且必要的。
未来方向
智能体应用:OpenAgents 构建了一套完整的应用级语言智能体开发流程。这为其他创新应用与终端用户提供了可能。这些应用不仅各具优势,还共同营造了一个更丰富、更以用户为中心的智能体应用环境。
工具和组件集成:OpenAgents 致力于探索和解决构建实用级智能体应用的基本需求。这为社区提供了一个强大的基础,使得社区可以轻松地通过集成其他组件进行水平扩展。同时,还可以扩展更多的基础模型,比如最近的大型多模态模型,以及适应新的UI设计等。
人机交互:我们的平台能轻松构建基于 LLM 的新智能体应用程序。我们相信,OpenAgents因此能帮助构建应用程序演示,供人机交互(HCI)研究人员深入研究更直观、更用户友好的界面设计。这将提升用户的参与度和满意度。
LLM 的实际环境评估:为 LLM 建立公正且稳健的评估方法,对于公平评价其能力和性能至关重要。目前,通过使用预先收集的数据和受控环境,对智能体进行基准测试。虽然这些评估非常关键,但它们往往无法全面反映真实世界中的动态挑战。鼓励社区对这些评估指标和平台进行扩展或完善,这将显著推动该领域的发展,并为 LLM 的实际性能和能力提供更准确的洞察。
自适应用户界面生成:自动创建用户界面是一个有趣且具有挑战性的领域。这些界面能根据特定标准,如用户的设备、偏好或上下文,进行自我调整或定制。研究人员可以深入研究在基于 OpenAgents 的自适应UI中,如何应用 LLM,以及它们对用户体验的影响。
结论
近期,来自港大的研究团队在这项工作中推出了 OpenAgents——一个开源平台,旨在将 LLM 的最新进展与实际的用户导向应用相融合。OpenAgents 已为数据分析、工具使用和网页浏览这三种典型应用构建了智能体。
作者在开发 OpenAgents 的过程中,遇到了许多构建实际应用的独特挑战。这些挑战让我们看到了从理论设计到满足实际用户需求和交互的全功能智能体的转变究竟有多复杂。
他们提供了一个全面、透明且可部署的平台,不仅为了让更多的人(包括开发人员和普通用户)能利用 LLM 的强大能力,也希望通过接触真实场景来推动研究,使社区能够利用和完善最先进的语言智能体的能力。
让我们拭目以待,期待着 OpenAgents 能够激发更多的应用和平台,简化人类与智能语言智能体之间的交互,希望这项研究能够为未来语言智能体的研究和开发奠定基础,能够引领强大的现实世界语言智能体的普及化~