当前位置: 首页 > news >正文

论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools

论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools

  • 1. 文章简介
  • 2. 文章概括
  • 3 文章重点技术
    • 3.1 Toolformer
    • 3.2 APIs
  • 4. 文章亮点
  • 5. 原文传送门

1. 文章简介

  • 标题:Toolformer: Language Models Can Teach Themselves to Use Tools
  • 作者:Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, Thomas Scialom
  • 日期:2023
  • 期刊:arxiv preprint

2. 文章概括

  文章给出了一种可以自动调用API的LLM方法“Toolformer”,该工具可以自行决定是否调用API,何时调用API以及调用什么API,从而达到通过API检索增强增加LLM回答的可靠性。

3 文章重点技术

3.1 Toolformer

  给定语言模型 M M M,给定一系列可供调用的API接口 c = ( a c , i c ) c=(a_c, i_c) c=(ac,ic),其中 a c a_c ac为API的名称, i c i_c ic为API的输入,API会返回结果 r r r,记 e ( c , r ) = < A P I > a c ( i c ) → r < / A P I > ) e(c, r) = <API> a_c(i_c) \to r</API>) e(c,r)=<API>ac(ic)r</API>),其中 < A P I > , < / A P I > , → <API>, </API>, \to <API>,</API>,表示特殊token,用于区分API的输入和输出。给定数据集 C = { x 1 , … , x ∣ C ∣ } \mathcal{C} = \{x^1, \dots, x^{|\mathcal{C}|}\} C={x1,,xC},其中 x i x^i xi表示输入的文本。则Toolformer按照如下的步骤进行训练、推理:

  • Sampling API Calls:首先,对每个API接口,我们设计一个对应的prompt“ P ( x ) P(x) P(x)"让模型自动改写原始输入为调用API的输入。如下图所示,对一个原始输入文本 x x x,对任意位置 i ∈ { 1 , … , n } i\in\{1, \dots, n\} i{1,,n},我们基于 x 1 , … , x i − 1 , P ( x ) x_1, \dots, x_{i-1}, P(x) x1,,xi1,P(x)预测下一个token是 < A P I > <API> <API>的概率 p i = p M ( < A P I > ∣ P ( x ) , x 1 : i − 1 ) p_i = p_M (<API>|P(x) , x_{1:i-1}) pi=pM(<API>P(x),x1:i1),如果条件概率值高于给定阈值 τ s \tau_s τs,则认为模型应该在该位置调用API,如果存在高于 k k k个位置的概率值大于 τ s \tau_s τs,则只保留top k k k个位置。最终得到需要调用API的位置集合 I = { i ∣ p i > τ s } I=\{i|p_i > \tau_s\} I={ipi>τs}(不超过k个)。接下来,对每个 i ∈ I i\in I iI,我们基于 [ P ( x ) , x 1 , … , x i − 1 , < A P I > ] [P(x), x_1, \dots, x_{i-1}, <API>] [P(x),x1,,xi1,<API>]调用API接口得到接下来的预测结果。
    pm
  • Executing API Calls: 接下来执行上述语言模型自动生成的API调用文本 c i c_i ci,得到对应的结果 r i r_i ri
  • Filtering API Calls:令 L i ( z ) = − ∑ j = i n w j − i log ⁡ p M ( x j ∣ z , x 1 : j − 1 ) L i + = L i ( e ( c i , r i ) ) L i − = min ⁡ ( L i ( ϵ ) , L i ( e ( c i , ϵ ) ) ) L_i(z) = -\sum_{j=i}^n w_{j-i} \log p_M(x_j | z, x_{1:j-1})\\L_i^+ = L_i(e(c_i, r_i))\\L_i^- = \min (L_i(\epsilon), L_i(e(c_i, \epsilon))) Li(z)=j=inwjilogpM(xjz,x1:j1)Li+=Li(e(ci,ri))Li=min(Li(ϵ),Li(e(ci,ϵ))),其中 ϵ \epsilon ϵ表示空序列。上述 L i + L_i^+ Li+实际表示给定 x 1 , … , x j − 1 x_1, \dots, x_{j-1} x1,,xj1和API返回结果 r i r_i ri,模型预测得到 x j x_j xj的加权概率的负数, L i − L_i^- Li表示不进行API访问,或者只进行API访问但是不返回结果的情况下,模型得到 x j x_j xj的最小损失。如果 L i + L_i^+ Li+ L i − L_i^- Li小很多,则可以认为访问API确实带来了收益。从而我们可以通过设置阈值 τ f \tau_f τf,当 L i − − L i + ≥ τ f L_i^- - L_i^+ \ge \tau_f LiLi+τf时,认为模型应该在 i i i位置访问API
  • Model Finetuning:给定文本 x x x和位置 i i i处的API访问结果 ( c i , r i ) (c_i, r_i) (ci,ri),我们可重写输入文本为 x 1 : i − 1 , e ( c i , r i ) , x i : n x_{1:i-1}, e(c_i, r_i), x_{i:n} x1:i1,e(ci,ri),xi:n,最后基于数据集 C \mathcal{C} C生成SFT数据集 C ∗ \mathcal{C}^* C。在 C ∗ \mathcal{C}^* C上对模型进行微调,得到我们的toolformer工具。
  • Inference:推理阶段,我们进行正常的解码,直至模型生成 → \to 特殊token,此时我们将 < A P I > , → <API>, \to <API>,之间的文本输入待调用的API,得到结果 r r r,然后我们将该结果拼接到模型的解码结果中,并插入 < / A P I > </API> </API>特殊token进行标记,然后继续解码直至结束。
    toolformer步骤

3.2 APIs

  我们选择了多种API对语言模型进行加强:

  • 针对问答类型的文本,文章采用问答大模型Atlas作为API进行加强
  • 针对数学计算,文章采用一个简单的python工具作为API进行加强
  • 针对维基百科搜索,文章采用BM25作为API进行加强
  • 针对多语言,文章采用fast-text进行语言检测,然后通过NLLB作为API统一翻译成英文进行加强
  • 针对日期类问题,文章直接返回系统当前日期作为API进行加强

4. 文章亮点

  文章提出了Toolformer工具,可通过对数据集进行采样、过滤生成SFT数据集,从而对LM进行微调,得到一个通过访问不同API来对LM能力进行加强对工具。实验表明,文章提出的Toolformer在多个API相关的下游任务上有明显提升,且ppl结果表示模型在自然语言生成任务上的能力并没有降级。

5. 原文传送门

Toolformer: Language Models Can Teach Themselves to Use Tools

相关文章:

论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools

论文笔记--Toolformer: Language Models Can Teach Themselves to Use Tools 1. 文章简介2. 文章概括3 文章重点技术3.1 Toolformer3.2 APIs 4. 文章亮点5. 原文传送门 1. 文章简介 标题&#xff1a;Toolformer: Language Models Can Teach Themselves to Use Tools作者&#…...

stm32实现0.96oled图片显示,菜单功能

stm32实现0.96oled图片显示&#xff0c;菜单功能 功能展示简介代码介绍oled.coled.holedfont.h&#xff08;字库文件&#xff09;main函数 代码思路讲解 本期内容&#xff0c;我们将学习0.96寸oled的进阶使用&#xff0c;展示图片&#xff0c;实现菜单切换等功能&#xff0c;关…...

sqlite外键约束 保证数据一致性

1. 外键约束 在SQLite中&#xff0c;可以通过使用外键&#xff08;Foreign Key&#xff09;约束和CASCADE选项来实现通过外键删除相关信息。 CASCADE选项是指在主键表中删除记录时&#xff0c;相应的外键表中的相关记录也将被自动删除。 -- 创建主键表 CREATE TABLE Persons…...

Vue轻松入门,附带学习笔记和相关案例

目录 案例 一Vue基础 什么是Vue&#xff1f; 补充&#xff1a;mvvm框架 mvvm的组成 详解 Vue的使用方法 1.直接下载并引入 2.通过 CDN 使用 Vue 3.通过npm安装 4.使用Vue CLI创建项目 二插值表达式 什么是插值表达式&#xff1f; 插值表达式的缺点 解决方法 …...

【青蛙跳台阶问题 —— (三种算法)】

青蛙跳台阶问题 —— (三种算法&#xff09; 一.题目介绍1.1.题目1.2.图示 二.解题思路三.题解及其相关算法3.1.递归分治法3.2.动态规划算法&#xff08;Dynamic Programming&#xff09;3.3.斐波那契数列法 四.注意细节 一.题目介绍 1.1.题目 一只青蛙一次可以跳上1级台阶&am…...

联想yoga AMD处理器 转接头无法电量外接显示器

第一次买AMD的处理器&#xff0c;当时就是为了yogaAMD这款的接口要比英特尔的接口多&#xff0c;没想到AMD处理器真的问题多。经常蓝屏不说&#xff0c;偶尔还点不亮外接显示器。遇到这种问题&#xff0c;不是什么驱动问题&#xff0c;可能你按照网上各种方法打开设备管理器→显…...

OSG粒子系统与阴影 - ​​​​​​​阴影shadow(7)

OSG阴影 在虚拟现实仿真中&#xff0c;为了真实地模拟自然效果&#xff0c;阴影效果是不可缺少的&#xff0c;它对一个场景的真实性是非常重要的。在游戏或仿真中&#xff0c;一个高效的阴影往往能够提供非常强悍的视觉真实感。 osgShadow库 在OSG中专门定义了一个名字空间osg…...

vue3项目中使用富文本编辑器

前言 适配 Vue3 的富文本插件不多&#xff0c;我看了很多插件官网&#xff0c;也有很多写的非常棒的&#xff0c;有UI非常优雅让人耳目一新的&#xff0c;也有功能非常全面的。 如&#xff1a; Quill&#xff0c;简单易用&#xff0c;功能全面。editorjs&#xff0c;UI极其优…...

Java EE 进程线程

JavaEE 进程&线程 文章目录 JavaEE 进程&线程1. 进程1.1 概念1.2 进程管理1.3 PCB (Process Control Block) 2. 线程2.1 概念2.1 线程与进程的区别2.3 创建线程 1. 进程 1.1 概念 什么是进程&#xff1f; 进程是操作系统对一个正在执行的程序的一种抽象 我们可以打开…...

GPT写SQL的模版

表&#xff1a;profit_loss_sum_m_snapshot 计算字段&#xff1a;成本cost_whole求和&#xff0c;收入income_whole求和&#xff0c;收入求和-成本求和&#xff0c;成本目标cost_target求和&#xff0c;收入求和-成本目标求和 条件&#xff1a;日期statis_date在2023-11-01&…...

蓝桥杯官网练习题(平均)

问题描述 有一个长度为 n 的数组&#xff08; n 是 10 的倍数&#xff09;&#xff0c;每个数 ai 都是区间 [0,9] 中的整数。小明发现数组里每种数出现的次数不太平均&#xff0c;而更改第 i 个数的代价为 bi&#xff0c;他想更改若干个数的值使得这 10 种数出现的次数相等…...

【无标题】动手学深度学习_现代神经网络_未完

这里写目录标题 深度学习之前的网络 AlexNetAlexNet得到了竞赛冠军AlexNet架构Alex net更多细节数据增强 VGGNiN知识补充flop暂退法 drop_out 深度学习之前的网络 1、核方法 机器学习 SVM现在还是很广泛的使用&#xff0c;因为对调参的需求不那么大&#xff0c;对调参不太敏感…...

Java王者荣耀

GameFrame 图片 package 王者荣耀;import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.io.File; import java.util.ArrayList;import javax.soun…...

【理解ARM架构】操作寄存器实现UART | 段的概念 | IDE背后的命令

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《理解ARM架构》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 目录 &#x1f360;操作寄存器实现UART&#x1f35f;UART原理&#x1f35f;编程 &#x1f360;…...

python 左值查找 右值查找

左值查找 在一组数据中查找出 数字x 在这组数据中第一次出现的索引并输出&#xff0c;没有找到则输出-1查找方式&#xff1a;二分查找 数据前提&#xff1a;一组数据要有序一组数据&#xff1a; arr [2, 3, 3, 3, 5, 7, 9, 11, 13, 15, 17]测试&#xff1a; 示例1&#xff…...

机器学习之自监督学习(四)MoCo系列翻译与总结(二)

MoCo中相关工作的对比分析 去噪自动编码器&#xff08;Denoising Autoencoder&#xff09;是一种用于学习数据表示的神经网络模型。它的主要目标是通过去除输入数据中的噪声&#xff0c;学习到输入数据的有用表示&#xff0c;从而提高模型对干净数据的鲁棒性。下面是对去噪自动…...

元宇宙企业3d数字展厅轻松低本搭建更全面、多元、趣味化的展览

对所有企业来说&#xff0c;拥有一个3D线上展厅是互联网营销必不可少的部分&#xff0c;但是3D线上展厅定制周期长费用高&#xff0c;让很多企业公司望而却步&#xff0c;web3d开发公司制作的3D线上企业展厅制作平台备导览地图、语音解说、交互热点、全景漫游、自主行走、链接跳…...

华为OD机试真题-开源项目热榜-2023年OD统一考试(C卷)

题目描述: 某个开源社区希望将最近热度比较高的开源项目出一个榜单,推荐给社区里面的开发者。对于每个开源项目,开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue、MR的数量,开源项目的热…...

深入探索Maven:优雅构建Java项目的新方式(一)

Maven高级 1&#xff0c;分模块开发1.1 分模块开发设计1.2 分模块开发实现 2&#xff0c;依赖管理2.1 依赖传递与冲突问题2.2 可选依赖和排除依赖方案一:可选依赖方案二:排除依赖 3&#xff0c;聚合和继承3.1 聚合步骤1:创建一个空的maven项目步骤2:将项目的打包方式改为pom步骤…...

Shopee如何入驻?如何防封?

Shopee作为东南亚领航电商平台&#xff0c;面向东南亚蓝海市场&#xff0c;近年来随着东南亚市场蒸蒸日上&#xff0c;虾皮也吸引了大批量的跨境商家入驻。那么接下来就给想要入驻的虾皮小白一个详细的安全入驻教程。 一、商家如何入驻 虾皮与LAZADA最大的区别就是商家即卖家&…...

从零开始:SDXL 1.0电影级绘图工坊Docker环境搭建与测试

从零开始&#xff1a;SDXL 1.0电影级绘图工坊Docker环境搭建与测试 1. 为什么选择SDXL 1.0与Docker组合 SDXL 1.0作为Stable Diffusion系列的最新升级版本&#xff0c;在图像生成质量上实现了质的飞跃。相比前代产品&#xff0c;它原生支持1024x1024高清分辨率&#xff0c;生…...

Phi-4-reasoning-vision-15B入门必看:视觉推理模型prompt工程要点

Phi-4-reasoning-vision-15B入门必看&#xff1a;视觉推理模型prompt工程要点 如果你刚接触Phi-4-reasoning-vision-15B&#xff0c;可能会发现一个奇怪的现象&#xff1a;有时候它像个博学的学者&#xff0c;能精准分析复杂的图表&#xff1b;有时候却像个固执的程序员&#…...

Git-RSCLIP快速上手教程:Jupyter替换端口+7860界面双功能实测

Git-RSCLIP快速上手教程&#xff1a;Jupyter替换端口7860界面双功能实测 想试试用一句话就让AI看懂卫星图吗&#xff1f;比如&#xff0c;你上传一张城市航拍图&#xff0c;告诉它“找找看哪里有新建的住宅区”&#xff0c;它就能帮你把相关的区域圈出来。听起来像科幻片&…...

LangGraph应用:设计MusicGen的自动化工作流

LangGraph应用&#xff1a;设计MusicGen的自动化工作流 1. 引言 想象一下这样的场景&#xff1a;你有一个绝佳的音乐创意&#xff0c;想要创作一首完整的歌曲&#xff0c;但面对复杂的音乐制作流程却无从下手。传统的音乐制作需要经历作词、编曲、混音、母带处理等多个环节&a…...

SpringBoot的生命周期原理分析之一SpringBoot准备容器与环境

目录 1.SpringBootApplication准备 1.1SpringApplication创建 1.2.1保存主配置源 1.2.2推断Web环境 1.2.3设置初始化器 1.2.4设置监听器 1.2.5确定主启动类 1.2.6扩展了解&#xff1a;SpringBoot的发展 1.2SpringBootApplication启动 1.2.1启动计时与全局异常处理机制…...

Phi-4-mini-reasoning助力C语言项目:代码逻辑分析与缺陷检测

Phi-4-mini-reasoning助力C语言项目&#xff1a;代码逻辑分析与缺陷检测 1. 为什么C语言开发者需要AI辅助 在嵌入式系统、操作系统内核等对性能要求极高的领域&#xff0c;C语言依然是无可替代的选择。但随之而来的是复杂的内存管理、指针操作和并发控制带来的挑战。一个看似…...

霜儿-汉服-造相Z-Turbo镜像5分钟上手:零基础生成古风汉服少女图

霜儿-汉服-造相Z-Turbo镜像5分钟上手&#xff1a;零基础生成古风汉服少女图 1. 镜像简介&#xff1a;一键生成古风汉服少女 想快速生成唯美的古风汉服少女图片&#xff0c;却苦于复杂的AI模型部署&#xff1f;霜儿-汉服-造相Z-Turbo镜像为你提供了开箱即用的解决方案。这个预…...

03-Open code MCP 与工具调用

03-MCP 与工具调用 掌握 OpenCode 中 MCP&#xff08;Model Context Protocol&#xff09;服务器的配置和使用&#xff0c;扩展 AI 的工具能力。 一、MCP 概述 1.1 什么是 MCP MCP&#xff08;Model Context Protocol&#xff09;是一种标准化协议&#xff0c;允许 AI 模型与…...

Qwen3-VL:30B系统部署:U盘启动盘制作与安装

Qwen3-VL:30B系统部署&#xff1a;U盘启动盘制作与安装 1. 引言 在AI大模型快速发展的今天&#xff0c;本地化部署多模态模型成为许多开发者和企业的迫切需求。Qwen3-VL:30B作为强大的视觉语言模型&#xff0c;能够在离线环境下提供出色的多模态理解能力。但在开始模型部署之…...

PVE中使用SPICE功能遇到的10个高频率问题和解答方法

SPICE(Simple Protocol for Independent Computing Environments)是PVE(Proxmox VE)虚拟机中一款高效的远程桌面协议&#xff0c;相比默认的VNC&#xff0c;它具备更高的画面流畅度、更低的延迟&#xff0c;还支持文件夹共享、音频传输、USB设备重定向等增强功能&#xff0c;是…...