北大提出RestGPT框架,通过RESTful API控制真实应用的Agent

news2024/11/16 13:41:19

867d7e6814b31a9158db766339493c6c.gif

©PaperWeekly 原创 · 作者 | 宋一帆

单位 | 北京大学计算语言学研究所博士生

研究方向 | 自然语言处理

382b1af942e1a56687dd770446fd9a58.png

论文题目:

RestGPT: Connecting Large Language Models with Real-World RESTful APIs

论文链接:

https://arxiv.org/abs/2306.06624

代码链接:

https://github.com/Yifan-Song793/RestGPT

4b8929c6b522a440e9f7c624abb3d4fa.png

研究背景

诸如 ChatGPT 和 GPT-4 这样的大语言模型(LLM)已经涌现出包括思维链、推理、规划在内许多强大的能力。为了让 LLM 能够在现实应用中实现更大的价值,目前一个热门的研究方向就是将 LLM 与外部的工具或 API 相连接,以拓展 LLM 的能力范围。

e99a1cbec8a55323a2074c9f7b2e3908.png

本文我们尝试将 LLM 与 RESTful API 相连接,构建名为 RestGPT 的 agent 以控制诸如音乐播放器、电影数据库这类的真实应用,完成用户的复杂指令。

RESTful API 是现代网络应用的基础规范,通过 HTTP 方法(如 GET、POST)来访问和控制网络资源,许多互联网应用,诸如 Spotify、Gmail、Twitter、Slack都提供了公开的 RESTful API。而只要提供 API 对应的描述文件 OAS,我们设计的框架 RestGPT 可以“即插即用”地与任何已有 RESTful 应用连接,具有极强的可拓展性。

然而,现实 API 也会为我们带来诸多挑战:1)真实 API 的调用可能会遇到各种错误、异常,需要框架具有较强的规划能力和鲁棒性;2)真实 API 返回的结果往往是复杂的 JSON 文档,需要设计机制来对其进行解析。

7ebe9a9bda3c67a00d5ea29c51494b72.gif

23ecd55c5f0d5db2fd0d482bde990b1a.png

方法简述

294533301eed87161901fdbae06225d9.png

为了构建具有较强鲁棒性的 agent 以及解决 RESTful API 带来的现实挑战,我们提出 RestGPT 框架。如图所示,RestGPT 主要由三个模块组成:规划器(Planner)、API 选择器(API Selector)、执行器(Executor),其中执行器又包括调用器(Caller)和解析器(Parser),每一个模块的核心都是 LLM 和描述了其功能的 prompt。

为了在有限的上下文范围内充分理解 API 的功能,在 RestGPT 中,我们让不同模块读取 OpenAPI Specification 文档中的不同部分。RestGPT 遵循“规划-执行”的模式,每次对下一步的 API 调用进行规划,调用 API 后根据反馈结果进行下一次规划。

在规划阶段,规划器和 API 选择器协同合作,完成由粗至细的在线规划(coarse-to-fine online planning)。首先规划器根据用户指令和上一步执行的结果,以自然语言的形式生成当前步较粗粒度的子任务,接下来 API 选择器根据子任务选择具体的 API 构成细粒度的 API 调用规划,最后由执行器执行 API 调用规划,再将结果返回规划器,进行下一次规划。

当规划器评估当前子任务没有被完成,会发出 “Continue” 指令,并指示 API 选择器重新选择新的 API 执行。当规划器评估用户指令已经完成,则发出 “End” 指令,并返回最终执行结果。

e7798669839a5b7ce33e90c92a842b09.png

在执行阶段,调用器根据 API 调用规划和 API 文档生成调用参数,调用 RESTful API,而解析器则根据 OAS 中定义的 response schema,利用 LLM 的代码生成能力,生成解析代码,从复杂的 JSON response 中抽取需要的信息

2abf0546f980a7a93c7c0570bd5a6abf.png

新评测数据集

为了更好地评估 RestGPT 解决真实用户指令的性能,我们引入了一个高质量人工标注的测试集 RestBench。该数据集包含两个场景:LLM 访问 TMDB 电影数据库,LLM 控制 Spotify 音乐播放器。数据集中包含真实用户指令和对应的标准 API 调用路径,最终得到 TMDB 场景下覆盖 54 个 API 的 100 条指令,Spotify 场景下覆盖 40 个 API 的 57 条指令。

RestBench 中的样例数据如下:

67b56538a1a96f308cc2d00833ba8526.png

我们使用人工检查的成功率(Success)、API 调用路径正确率(Correct Path,CP)和调用路径长度(Solution Length)来评估模型的性能和执行效率。

3bb26ce26a98be36252900933b4e33cf.png

实验结果

2f0aa222b4d8462e122b60679f943c26.png

我们使用 text-davinci-003 作为基础模型实现了 RestGPT 和若干基线模型,并测试了使用 ChatGPT、Llama2 和 Vicuna 作为基础模型的性能。实验结果显示,在两个场景上,RestGPT 都能达到超过 70% 的执行成功率,并且在调用路径长度所代表的执行效率上优于基线模型。

ff4c8092caefaa196b38298700ca9f1e.png

错误分析显示,规划阶段,即规划器和 API 选择器的错误占据了主导,显示出现有 LLM 在规划和推理能力上仍有提升空间。此外 ChatGPT 的规划能力明显差于 text-davinci-003。

d60abdb0d02c3d9be6e4152a008d2f3c.png

我们对指令复杂度和 API 数量进行了规模缩放实验,得到如下结论:RestGPT 的强大规划能力使得其可以解决更为复杂的用户指令(标准 API 调用路径更长的问题);RestGPT 可以扩展到 API 数量更多的场景。

0ef64ada6a10b3569048ccf6c17caf05.png

更多例子

RestGPT 可以解决较为复杂的用户指令,如音乐播放器场景“帮我创建一个包含周杰伦歌曲的歌单,并且将其命名为 ‘Love Jay’”,电影数据库场景“请给我一张泰坦尼克号主演的照片”等。

0dc682caa68e0f1f0f5afc8478b02a2e.png

d150d38161b628897f576a7826d3a338.png

dce1216f18303a5d65a3fbaad5409c92.png

3b8508bebaee38517a8e30e24b1d2071.png

总结

本文介绍了 RestGPT 框架,探索将 LLM 与 RESTful API 相连接,以构建自动化 agnet 控制诸如 TMDB 和 Spotify 这样的真实应用,在高质量测试集 RestBench 上的实验充分证明了 RestGPT 能够解决现实中复杂的用户指令。我们相信 RestGPT 的提出将推动 LLM 在实际场景中的应用,并在学术和工业领域展现出更大的潜力和价值。

更多阅读

3acea94a76d08bb6b9d5826a1491e550.png

9aef9021978c6a55664bc17f2f15189c.png

2fabbf952ea6edc6a2e44f62cc9fa9fb.png

4d4c836a3b9dcdba33751635fea30c1d.gif

#投 稿 通 道#

 让你的文字被更多人看到 

如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。

总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 

PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。

📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算

📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿

55a84277a6a60590ddf8829989c5fa73.png

△长按添加PaperWeekly小编

🔍

现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧

·

·

02093cb4f760395d4a47ad448c2ab1a9.jpeg

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

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

相关文章

【哈希数组】【字符串 转化为 字符数组】Leetcode 383 赎金信

【哈希表】【字符串 转化为 字符数组】Leetcode 383 赎金信 解法1 【哈希数组】 String 转化为 字符数组char[ ] .toCharArray ⭐️String 转化为 字符数组char[ ] .toCharArray 解法1 【哈希数组】 String 转化为 字符数组char[ ] .toCharArray 时间复杂度O(N) 这个解决方案…

自学(黑客技术)方法——网络安全

如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…

CouchDB简单入门

CouchDB 1.curl命令 RESTful 新增:POST请求修改:PUT请求删除:DELETE请求查找:GET请求 查看数据库有哪些 curl -X GET http://admin:123456localhost:5984/_all_dbsadmin: 用户名 123456:改成自己密码 创建数据库 curl -X PU…

unity脚本_Mathf和Math c#

首先创建一个脚本 当我们要做一个值趋近于一个值变化时 可以用Mathf.Lerp(start,end,time);方法实现 比如物体跟随

Docker:创建主从复制的Redis集群

一、Redis集群 在实际项目里,一般不会简单地只在一台服务器上部署Redis服务器,因为单台Redis服务器不能满足高并发的压力,另外如果该服务器或Redis服务器失效,整个系统就可能崩溃。项目里一般会用主从复制的模式来提升性能&#x…

基于数字电路交通灯信号灯控制系统设计-单片机设计

**单片机设计介绍,1617基于数字电路交通灯信号灯控制系统设计(仿真电路,论文报告 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序文档 六、 文章目录 一 概要 交通灯控制系统在城市交通控制中发挥着重要的作用&#xf…

谷粒商城一

谷粒商城一 1. 项目介绍1.1 微服务架构图1.2 微服务划分图 2. 项目环境搭建2.1 虚拟机搭建环境2.2 Linux 安装 docker、配置镜像加速2.3 Docker 配置 MySQL、设置自启动2.3.1 安装 MySQL5.72.3.2 修改 mysql 配置文件 2.4 Docker 配置 Redis 并设置持久化2.5 安装 jdk Maven 镜…

接口自动化测试_L4

目录: 接口加密与解密 ​​​​​​​环境准备原理实战练习多套被测环境 ​​​​​​​多环境介绍多套被测环境切换的意义和价值实现目标实现方案-环境管理环境切换通过环境变量进行切换使用命令行进行切换多响应类型封装设计 ​​​​​​​​​​​​​​多协议…

解决LOGITECH 罗技驱动 MAC版出现的一些问题汇总!

安装前将之前的安装文件清理干净!!!!! 罗技驱动最新安装包下载 我的鼠标是G304 1. 驱动安装一直卡在99% 运行官方下载的安装程序,卡住后关掉窗口。 在终端中执行以下命令: sudo /Users/用户名…

HarmonyOS第一课运行Hello World

前言 俗话说,工欲善其事必先利其器。鸿蒙第一课,我们先从简单的Hello World运行说起。要先运行Hello World,那么我们必须搭建HarmonyOS的开发环境。 下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作&a…

FoLR:Focus on Local Regions for Query-based Object Detection论文学习笔记

论文地址:https://arxiv.org/abs/2310.06470 自从DETR问询式检测器首次亮相以来,基于查询的方法在目标检测中引起了广泛关注。然而,这些方法面临着收敛速度慢和性能亚优等挑战。值得注意的是,在目标检测中,自注意力机制…

NanoPC-T4 RK3399:DTS之io-domain,FAN

前言: 之后所有改动均是基于rk3399-evb.dts修改以满足NanoPC-T4功能正常。 NanoPC-T4开发板上有一片散热风扇,本章将讲述使风扇正常工作起来的多种方法。 一:硬件分析 GPIO4_C6/PWM1:实际控制风扇引脚,GPIO与PWM复用 输入高电平1:FAN2pin电路导通,风扇转动 输入低电…

dc8靶机攻略

dc8 扫描 渗透 先访问主页探查 该主页的url看似存在sql注入 断点注入一下看看有没有报错 发现报错,存在sql注入 使用sqlmap 爆库 sqlmap -u http://10.4.7.151 -current-db爆表 sqlmap -u http://10.4.7.151/?nid2 --tables -D "d7db"发现user表 …

【Unity3D】Unity与Android交互

1 Unity 发布 apk 1.1 安装 Android Build Support 在 Unity Hub 中打开添加模块窗口,操作如下。 选择 Android Build Support 安装,如下(笔者这里已安装过)。 创建一个 Unity 项目,依次点击【File→Build Settings→…

Office技巧(持续更新)(Word、Excel、PPT、PowerPoint、连续引用、标题、模板、论文)

1. Word 1.1 标题设置为多级列表 选住一级标题,之后进行“定义新的多级列表” 1.2 图片和表的题注自动排序 正常插入题注后就可以了。如果一级标题是 “汉字序号”,那么需要对题注进行修改: 从原来的 图 { STYLEREF 1 \s }-{ SEQ 图 \* A…

3,4,6,9,?,18

3,4,6,9,?,18 逐步变大的递增数组 分析一: 3 6 -1 4 x 2 4 9 -1 6 x 2 6 ? -1 9 x 2 ? 13 9 18 -1 ? x 2 ? 13 分析二: 4 - 3 1 6 - 4 2 9 - 6 3 ?- 9 4 …

CPU眼里的C/C++: 1.3 汇编级单步调试函数执行过程

1. 目的 2. 基于 GDB 的汇编级单步调试 原始代码 #include <stdio.h>long test() {long a 1;a 2;return a; }int main() {int ret test();printf("test return %d\n", ret);return 0; }关键 gdb 命令 si 指令执行汇编级的单步调试info registers 读取寄…

黑豹程序员-架构师学习路线图-百科:API接口测试工具Postman

文章目录 1、为什么要使用Postman&#xff1f;2、什么是Postman&#xff1f; 1、为什么要使用Postman&#xff1f; 目前我们开发项目大都是前后端分离项目&#xff0c;前端采用h5cssjsvue基于nodejs&#xff0c;后端采用java、SpringBoot、SSM&#xff0c;大型项目采用SpringC…

设计模式(五)—— 建造者模式/生成器模式

先简单记一下&#xff0c;以后再来认真写 还是造房子那个例子&#xff0c;一个房子分为①打地基 ② 砌墙 ③封顶三步&#xff0c;如果不用设计模式去写的话。就是一个超类&#xff0c;然后多个子类继承超类去重写 但是这样有两个缺点&#xff1a; &#xff08;1&#xff09;产…

centos服务器搭建安装Gitlab教程使用教程

1、更新服务器&#xff1a; sudo yum update -y && sudo yum upgrade -y 2、下载Gitlab的RPM包 https://packages.gitlab.com/gitlab/gitlab-cece表示开源el表示centos 选64位el8对应CentOS8 本教程以centos8为例&#xff0c;在服务器中&#xff0c;下载centos8的…