ToolLLM:能够使用 16000 种真实 API 的 LLM

news2024/11/25 10:42:42

随着对 LLM(大语言模型)的了解与使用越来越多,大家开始偏向于探索 LLM 的 agent 能力。尤其是让 LLM 学习理解 API,使用工具进行对用户的 instruction(指令)进行处理。然而,目前的开源大模型并不擅长使用工具,最善于使用工具的 ChatGPT 是闭源的模型。研究人员设计了一个评测 LLM 使用工具能力的 Benchmark(基准)—— LLMBench,以及一个针对该场景的数据构建、模型训练、评测的框架—— ToolLLM。

alt

这张图展示了构建ToolBench的三个阶段,以及如何训练API检索器和ToolLLaMA。在执行指令时,API检索器会向ToolLLaMA推荐相关的API,ToolLLaMA通过多轮API调用得出最终答案。整个推理过程由ToolEval评估。 研究人员主要是从RapidAPI来收集API,所有的API都可以分为49个粗粒度类别,例如体育、金融和天气。研究人员评测了这些API,最后经过筛选,留下了16,464个API。LLM的prompt(提示)中包括了这些API相关的文档和使用用例。

作者根据API,使用ChatGPT生成可能用到的指令,利用 {INST,API} 的格式训练API retriever。最后得到的prompt包含了任务的描述、API的文档、3个API的使用例。

alt

作者通过序列来对执行路径进行探索{a1,r1,a2,r2.....}a为采取的function call,r为返回的response,为了避免一直错误的路径上探索,作者设计了一个基于深度优先的决策树,并将放弃执行也作为一个节点,返回到之前的路径重新选择,从而节省了对于chatgpt的调用。最后收集到了12, 657 个instruction solution pairs用来训练ToolLLaMA。

首先训练API检索器的目标是与指令检索相关的API,采用了Sentence-BERT 训练基于BERT-BASE的密集检索器。该模型分别将指令和API文档编码为两个嵌入向量,并通过这两个向量的相似性确定它们之间的相关性。在训练过程中,作者将之前生成的每个指令的相关API视为正样本,并采样一些其他API作为负样本进行对比学习。

然后,作者使用了指令-解决方案对对LLaMA 7B模型进行微调。因为工具的响应通常会非常长,原始的LLaMA模型的序列长度2048 或许不能够满足本次场景。为此,作者使用positional interpolation将上下文长度扩展到8192,最后以多轮对话模式训练模型。在训练数据格式方面,作者保持输入和输出与ChatGPT的相同。

alt

ToolLLM 介绍了如何在LLMs中引入使用工具的能力,提出了一个指令调优的数据集ToolBench,涵盖了16k+真实世界的API和各种实际的用例场景,包括单一工具和多工具任务。ToolBench的构建只使用ChatGPT,并且最小限度的使用人工监督。此外,ToolLLM还提出了DFSDT来加强LLMs的规划和推理能力,使它们能够有策略地在推理路径中导航。并且实验结果也显示出了使用经过训练的开源模型ToolLLaMA极大的提高了使用工具能力。

相关资料:

  • 论文: https://arxiv.org/pdf/2304.01662.pdf
  • Github: https://github.com/OpenBMB/ToolBench

本文由 mdnice 多平台发布

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

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

相关文章

Oracle连接数据库提示 ORA-12638:身份证明检索失败

ORA-12638 是一个 Oracle 数据库的错误代码,它表示身份验证(认证)检索失败。这通常与数据库连接相关,可能由于以下几个原因之一引起: 错误的用户名或密码: 提供的数据库用户名或密码不正确,导致…

开源数据库Mysql_DBA运维实战 (DDL语句)

DDL DDL语句 数据库定义语言:数据库、表、视图、索引、存储过程. 例如:CREATE DROP ALTER DDL库 定义库{ 创建业务数据库:CREAATE DATABASE ___数据库名___ ; 数据库名要求{ a.区分大小写 b.唯一性 c.不能使用关键字如 create select d.不能单独使用…

单片机学到什么程度可以找到工作?

STM32是意法半导体公司推出一款32位的单片机,其具有超低的价格、超多的外设、丰富的型号、优异的实时性、极低的开发成本等优势,并且stm32相关资料都非常全面和细致,所以很适合小白的学习。对于开发方式的选择,选择一种适合自己的…

MySQL索引3——Explain关键字和索引使用规则(SQL提示、索引失效、最左前缀法则)

目录 Explain关键字 索引性能分析 Id ——select的查询序列号 Select_type——select查询的类型 Table——表名称 Type——select的连接类型 Possible_key ——显示可能应用在这张表的索引 Key——实际用到的索引 Key_len——实际索引使用到的字节数 Ref ——索引命…

day1 ARM架构概述

ARM处理器架构 1、指令集: 1.1、复杂指令集(CISC):包含处理复杂操作的特定指令,指令长度不固定,执行需要多个周期; 1.2、简单指令集(RISC):指令简单而有效,格式和长度通常是固定的,…

RISC-V公测平台发布 · 使用YCSB测试SG2042上的MySQL性能

实验介绍: YCSB(全称为Yahoo! Cloud Serving Benchmark),该性能测试工具由Java语言编写(在之前的MC文章中也提到过这个,如果没看过的读者可以去看看之前MC那一期),主要用于云端或者…

WebSocket整合spring 一文全部搞定

文章声明 本文简单整合了webSocket 组件,涉及到的源码分解,原理什么的以后再说,本文只适合入门小白体验,不涉及复杂业务逻辑。 文章目录 1 引入webSocket依赖包2 声明式整合WebSocket(这是一道硬菜)2.1 webSocket 配置类2.2 webs…

Java 数据库时间返回前端显示错误(差8个小时)

文章目录 JsonFormat 与 DateTimeFormat 使用0 可能错误截图1 在属性上加自定义Json返回注释 JsonSerialize2 新建实体类 CustomDateTimeSerializer3 前端传后端格式转换(ISO 日期格式)转(Data)4 一个注释解决双端转化问题 JsonFormat 与 Dat…

Java 本地缓存之王:Caffeine 保姆级教程

一、Caffeine介绍 1、缓存介绍 缓存(Cache)在代码世界中无处不在。从底层的CPU多级缓存,到客户端的页面缓存,处处都存在着缓存的身影。缓存从本质上来说,是一种空间换时间的手段,通过对数据进行一定的空间安排,使得下…

matplotlib 为图顶部和图右部的坐标轴添加标记label

Matplotlib 中,默认情况下,只有底部和左侧的坐标轴有标记 1 设置底部坐标轴标签 通过使用ax.xaxis.set_label_position() 调整标签的位置 import matplotlib.pyplot as plt# 创建一个图表 fig, ax plt.subplots()# 生成示例数据 x [1, 2, 3, 4, 5] …

激光焊接塑料多点测试全画面穿透率测试仪

工程塑料由于其具有高比强度、电绝缘性、耐磨性、耐腐蚀性等优点,已广泛应用于各个重要领域。另一方面,工程塑料还具有良好的焊接性,是制成复合材料的基体材料的优良选择,因此目前已成为国内外新型复合材料的研究热点。 工程塑料…

网络安全 Day27-运维安全项目-iptables防火墙

iptables防火墙 1. 防火墙概述2. 防火墙2.1 防火墙种类及使用说明2.2 必须熟悉的名词2.3 iptables 执行过程※※※※※2.4 表与链※※※※※2.4.1 简介2.4.2 每个表说明2.4.2.1 filter表 :star::star::star::star::star:2.4.2.2 nat表 2.5 环境准备及命令2.6 案例01&#xff1a…

c基础扫雷

和三子棋一样,主函数先设计游戏菜单界面,这里就不做展示了。 初始化棋盘 初级扫雷大小为9*9的棋盘,但排雷是周围一圈进行排雷(8格),而边界可能会越界。数组扩大了一圈,行和列都加了2,所以我们用一个11*11的数组来初始化…

【论文阅读】基于深度学习的时序预测——Informer

系列文章链接 论文一:2020 Informer:长序列数据预测 论文二:2021 Autoformer:长序列数据预测 文章地址:https://arxiv.org/abs/2012.07436 github地址:https://github.com/zhouhaoyi/Informer2020 参考解读…

MySql之主从复制延时

MySql之主从复制延时 一、MySQL主从复制模型 一切都要从MySQL的主从复制模型开始说起,下图是最经典的MySQL主从复制模型架构图: 主从架构依赖于MySQL Binlog功能,Master节点上产生Binlog并将Binlog写入到Binlog文件中。 Slave节点上启动两…

java+springboot+mysql小区宠物管理系统

项目介绍: 使用javaspringbootmysql开发的小区宠物管理系统,系统包含超级管理员,系统管理员、用户角色,功能如下: 超级管理员:管理员管理;用户管理;宠物分类;宠物管理&…

沁恒ch32V208处理器开发(二)工程配置

概述 MounRiver Studio在进行任何项目的开发时,为了提高效率,往往需要复用芯片厂家或第三方开发的成熟模块,这些模块通过一个.wvproj文件来进行组织,主要包含: 1)MCU厂家提供的硬件接口文件,包…

20、stm32使用FMC驱动SDRAM(IS42S32800G-6BLI)

本文将使用安富莱的STM32H743XIH板子驱动SDRAM 引脚连接情况 一、CubeMx配置工程 1、开启调试口 2、开启外部高速时钟 配置时钟树 3、开启串口1 4、配置MPU 按照安富莱的例程配置: /* ********************************************************************…

用yum部署Zabbix(监控)!

目录 一、zabbix 是什么? 二、zabbix 监控原理 三、 安装 zabbix 3.1部署 zabbix 服务端 3.2 解决 zabbix-server Web页面中文乱码问题 3.2.1 解决问题 3.3 部署 zabbix 客户端 3.3.1服务端和客户端都配置时间同步 3.3.2客户端配置时区,与服务器保…

windows配置git公钥,读写远程git项目

首先Windows电脑需要下载并安装git: 从官网直接下载然后安装即可:https://git-scm.com/download/win 添加公钥 ssh-keygen -t rsa -C "xxxxxxx.com"注意:这个xxxxxxx.com与github注册的邮箱一致 然后一路回车,生成完…