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

随着对 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.mzph.cn/news/30933.shtml

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

相关文章

大麦订单截图 一键生成订单截图

新版付款图样式展示 这个样式图就是在大麦刚付款完的一个订单截图,它的状态是等待卖家发货 下滑下载源码 下载源码:https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

Linux-PG+postgres安装

一、PG数据库安装 1. 获取所需依赖包 wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-devel-5.0.1-7.el7.x86_64.rpm wget https://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/llvm5.0-5.0.1-7.el7.x86_64.rpm wge…

linux系统虚拟主机开启支持Swoole Loader扩展

特别说明:只是安装支持Swoole扩展,主机并没有安装服务端。目前支持版本php5.4-php7.2。 1、登陆主机控制面板,找到【远程文件下载】这个功能。 2、远程下载文件填写http://download.myhostadmin.net/vps/SwooleLoader_linux.zip 下载保存的路…

Ctfshow web入门 XXE 模板注入篇 web373-web378 详细题解 全

CTFshow XXE web373 学习资料: (梭哈~) https://www.cnblogs.com/20175211lyz/p/11413335.html https://www.cnblogs.com/zhaijiahui/p/9147595.html https://www.cnblogs.com/r00tuser/p/7255939.html https://mp.weixin.qq.com/s?__bizMz…

Python爬虫的学习day02 requests 模块post 函数, lmxl 模块的 etree 模块

1. requests 模块post 函数 1.1 post 函数的参数 (简单版) 参数1: url 网络地址 参数2: data 请求数据 (一般数据是 账号,密码) 参数3: headers 头请求 &#xff08…

【团队协作开发】IDEA中Git从远程其他分支拉取代码并同步更新到自己的分支中更新不全问题解决

出现这个问题往往是因为没有先拉取远程分支的最新变化到本地导致的,具体操作流程和解决方法如下: 1、首先,先确保本地有一个和远程要拉取分支(比如dev_z)相关联的分支,如果没有:选择远程要拉取的分支,点击C…

Unity开发笔记:将Texture2D裁剪出指定圆角用来输出png等图片

学习记录整理,自用,也希望能帮助到有相同需求的人。 圆角原理见大佬的博客: 圆角原理 简单来说就是将图片分成四个区域,找出拐角处的拐子的设置为透明 ![](https://img-blog.csdnimg.cn/a788825545614816895a9cca42ddc4a9.png 如…

pc端与flutter通信失效, Method not found

报错情况描述:pc端与flutter通信,ios端能实现通信,安卓端通信报错 报错通信代码: //app消息通知window.callbackName function (res) {window?.jsBridge && window.jsBridge?.postMessage(JSON.stringify(res), "…

创建Springboot+vue3项目

项目概述创建springboot项目加入mybatis-plus支持1.加入依赖代码2.创建数据库实例3.yml文件的配置4.编写测试代码5.测试结果 创建vue项目报错错误一错误二错误三 项目概述 后端:Springboot、mybatis-plus、java 前端:nodejs、vue脚手架、element-ui 数据…

逆向破解学习-雷电星海战歌

apk 雷电星海战歌 https://download.csdn.net/download/AdrianAndroid/88200826 安装apk,并试玩 # 通过关键字搜索jad 找到统一支付接口 找到匿名内部类的名称 Hook代码 public class HookComAstPlane extends HookImpl {Overridepublic String packageNam…

安防监控小程序商城开发攻略

在当今信息化的时代,安防监控已经成为了人们生活中的重要一环。为了更好地满足人们对于安全的需求,许多企业都开始利用小程序来开展安防监控业务。那么,如何搭建一个安防监控小程序呢?下面我们将一步步来进行介绍。 首先&#xff…

yolov5的报错

【定期水一期】 (这个问题很抓马,可以看一下这篇文章:Git Bash 教程!【不是所有人都会用Git】) 一:没有cv2这个模块 解决方案: pip install opencv-python -i http://pypi.douban.com/simple/…

机器学习中训练数据的重要性

人工智能技术发展至今,训练数据的重要性已经是我们老生常谈的问题。在重声训练数据为什么重要之前,我们先重新回顾下AI技术大爆炸的三大初始概念:机器学习是什么?人工智能是什么?训练数据又是什么? 机器学…

DB-Engines 排名调查

目录 一、理论 1.DB-Engines排名 一、理论 1.DB-Engines排名 (1)概念 DB-Engines排名是数据库领域的流行度榜单,它对全球范围内的419款数据库(截至2023年8月)进行排名,每月更新一次,排名越靠…

如何使用Mac终端给树莓派pico构建C/C++程序进行开发,以及遇到各种问题该怎么处理,不使用任何IDE或编辑器(例如VS Code)

写本文的原因是官方的教程已经过时了,如果你现在按照官方教程来在 Mac 上进行配置,那么会遇到一堆问题,比如我几乎把能踩的“雷”都踩了。所以这里记录了完整过程,以及各种错误的原因和处理方法,不然以后换 Mac 了或者…

07-3_Qt 5.9 C++开发指南_文件目录操作

文章目录 1. 文件目录操作相关的类2. 实例概述2.1 实例功能2.2 信号发射信息的获取 3. QCoreApplication 类4. QFile类5. QFileInfo类6. QDir类7. QTemporaryDir 和QTemporaryFile8. QFileSystemWatcher 类9. 框架和源码9.1 可视化UI设计9.2 dialog.cpp 1. 文件目录操作相关的类…

HttpRunner搭建接口自动化测试项目

前言:前面写过一篇PytestAllure接口自动化测试框架搭建的博客,这篇博客学习另外一款优秀的开源的接口自动化测试框架:HttpRunner,本博客主要学习如何搭建基于HttpRunner的接口自动化测试项目 PytestAllure接口自动化测试框架搭建…

【刷题笔记8.9】LeetCode题目:两数相加

LeetCode题目2:两数相加 题目及描述 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。 请你将两个数相加,并以相同形式返回一个表示和的链表。 你可以假设…

Linux 常用操作命令

Linux简介及Ubuntu安装 Linux,免费开源,多用户多任务系统。基于Linux有多个版本的衍生。RedHat、Ubuntu、Debian 安装VMware或VirtualBox虚拟机。具体安装步骤,找百度。 再安装Ubuntu。具体安装步骤,找百度。 常用指令 ls  …

国际货币汇率 API 数据接口

国际货币汇率 API 数据接口 支持多种货币对,每日精准汇率,多币种支持。 1. 产品功能 支持多种货币汇率查询;支持部分加密货币汇率查询;数据为每日更新汇率数据;可一次查询源货币代码对应所有目标货币汇率&#xff1b…