跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
编程语言AI算法

ToolkenGPT:利用工具嵌入增强大型语言模型

ToolkenGPT 提出一种通过工具嵌入增强大型语言模型的方法。该方法将每个工具表示为新增 token,结合微调与上下文学习优势,无需微调即可掌握大量工具。实验表明在数值推理、知识库问答及具身智能体规划任务中,ToolkenGPT 优于传统提示技术和微调方法,尤其在工具数量增加时表现更稳定。

星河入梦发布于 2025/2/7更新于 2026/10/2582 浏览
ToolkenGPT:利用工具嵌入增强大型语言模型

深度学习自然语言处理

用外部工具增强大型语言模型 (LLM) 已经成为解决复杂问题的一种方法。然而,用样例数据对 LLM 进行微调的传统方法,可能既昂贵又局限于一组预定义的工具。最近的上下文学习范式缓解了这一问题,但有限的上下文长度局限于少样本样例,导致不能完全挖掘工具的潜力。此外,当有许多工具可供选择时,上下文学习可能完全不起作用。因此本文提出了一种替代方法 ToolkenGPT,它结合了双方的优势。

论文:ToolkenGPT: Augmenting Frozen Language Models with Massive Tools via Tool Embeddings 地址:https://arxiv.org/abs/2305.11054

LLM 已经成为各种现实世界应用程序的强大工具。随着这些模型的不断发展,人们对其与现实世界交互的潜力越来越感兴趣,并通过与其他工具集成来增强其功能,如计算器、数据库等。这些模型掌握和控制各种工具的能力不仅是其智能的标志,还标志着一条有希望的克服其部分基本弱点的道路。包括更新最新的世界知识,减少其幻觉,以及执行符号操作等。

然而,新工具的迅速出现,如高级软件库、新颖的 API 或特定领域的实用程序,为 LLM 的工具学习任务带来了额外的丰富和复杂性。这种不断的演变强调了赋予 LLM 快速适应和掌握大量新工具的能力的重要性。

表 1 展示了与 LLM 的工具集成的两种主要研究方法。第一种方法涉及微调以学习特定工具。虽然这种方法可以产生很好的结果,但它的计算成本很高,并且缺乏对新工具的适应性。第二种方法依赖于上下文学习,LLM 通过提示中提供的上下文样例来学习如何使用工具。这种方法允许 LLM 处理新引入的工具。然而,上下文学习有其独特的局限性,使它不可能在上下文中使用大量的工具。此外,仅通过少量样本掌握新工具可能具有挑战性。

图 1

本文提出 ToolkenGPT,一种使 LLM 能够掌握大量的工具,而不需要任何微调,同时允许 LLM 快速适应新工具。ToolkenGPT 的关键思想是将每个工具表示为一个新 token('toolken'),以增加词汇表。具体来说,每个工具都与插入到 LLM 头部的嵌入相关联,就像常规的单词 tokens 嵌入一样。在生成过程中,一旦预测到 toolken, LLM 临时切换到特殊模式 (通过提示) 以产生工具要执行的输入参数,并将输出注入到生成中 (参见图 1)。这种方法为 LLM 提供了一种有效的方法,只需学习轻量级 toolken 嵌入即可掌握工具。

图 2

因此,ToolkenGPT 结合了微调和上下文学习范式的优势,同时避免了它们的局限性:与只能容纳少量工具和少量样例的上下文学习相比,ToolkenGPT 允许大量工具 (通过简单地在词汇表中插入各自的工具),并可以使用广泛的样例数据来学习 toolken 嵌入;与微调相比,不仅需要最小的训练成本,而且还提供了一种方便的方法,通过扩展 toolken 词汇表来动态插入任意新工具。

首先介绍一下工具使用语言建模的背景和符号表示。通常,LLMs 对单词标记序列为 $x_{1:T}$,其中每个单词 token 来自 LLM 的词汇,即 $x_{1:t}$ 表示第 t 步之前的部分词 token 序列。在实践中,通常设置序列的前缀 (称为提示),以引导 LLM 生成所需的内容。进一步深入,下一个 token 的分布被预测为 $P(x_t|x_{1:t-1})$,其中 $h_{t-1}$ 是当前上下文的最后一个隐藏状态,$W$ 是单词 token 的嵌入矩阵 (也称为语言模型头)。

给定工具集 $ au$,我们的目标是使 LLM 能够调用这些工具的子集来解决复杂的问题。所提出的灵活公式允许工具通过返回一些可以帮助 LLM 进行文本生成 (例如计算) 或影响现实世界环境 (例如机器人动作) 的结果来发挥作用。要在生成过程中调用工具,LLM 首先需要选择工具,然后输入参数。在图 1 所示的运行示例中,在答案生成过程 ('Reasoning model') 中,选择数学运算符 square 作为工具,并在 '工具模式' 中生成一个操作数 16 作为参数。一旦外部工具收到调用,它就会执行工具并返回结果 256,返回 Reasoning model。

ToolkenGPT 的核心思想是明确地将工具制定为 token。每个工具集被参数化为一个工具集嵌入向量,我们将一组工具集嵌入表示为一个矩阵,即 $E_ au$。假设我们已经训练了 toolken 嵌入,如图 1 所示,LLM 默认处于推理模式,以生成下一个 token。该框架允许 LLM 统一考虑单词 token 和工具 token。具体来说,工具嵌入矩阵与 $W$ 连接。因此,LLM 预测下一个 token 的概率如下:

图 3

其中下一个 token 可以是词 token,也可以是工具集,即 $v otin V ext{ or } v otin au$,且 $[;]$ 是拼接操作。我们将工具表述为 toolken 嵌入,自然允许通过扩展 toolken 嵌入矩阵来快速适应新工具。要执行工具,一旦其 toolken 被预测为下一个令牌 (如图 1 中的 'mode switch' 所示),LLM 将切换到 'tool mode',其目的是为工具生成参数。

具体来说,LLM 暂停生成并将当前生成的上下文附加到另一个提示符。工具模式下的提示由预测工具的上下文样例组成,展示如何通过引用特殊语法 [tool] 中的工具调用来生成工具参数。然后 LLM 可以在样例中遵循模式来完成当前工具调用的参数。与之前完全依赖上下文学习进行工具学习的方法相比,所提出框架只将完成论证的简单工作留给上下文学习。此外,对于单个指定工具的样例,将有丰富的上下文空间。最后,将参数发送到指定的工具执行,并将返回值发送回推理模式下的文本。

该框架冻结了原始 LLM 的参数,并使用工具嵌入引入了最小的额外训练开销。该嵌入矩阵包含唯一需要优化的参数,但与其他有效的 LLM 微调方法不同,它不需要梯度流过 LLM 参数的主体,从而导致非常稳定和高效的训练。因此,toolken 嵌入的微调与 LLM 推理使用了几乎相同的 GPU 内存。每当添加新工具时,toolken 嵌入可以方便地扩展,然后,在涉及新工具的工具样例数据上的后续训练逐渐细化其嵌入。此外,与只将少数示例消化为训练信号的上下文学习方法不同,ToolkenGPT 能够从大规模样例中调整工具嵌入。

本文主要关注通过工具样例学习工具嵌入,它可以是域内训练数据,也可以是 LLM 生成的合成数据。我们首先描述训练数据的格式和训练目标,并使用图 1 中的相同示例来展示如何将其用于训练。例如

"the area is 256 square feet …"

可以标记为 token 序列

s=("the","area","is","2","5","6","square ","feet",…)

。为了表明何时预测工具集,我们需要一个混合了词 token 和工具集的平行序列,即

s'=("the","area","is","[square]","[N/a]","[N/a]","square","feet",…)

。在 s 中 ("2","5","6") 的子序列是返回的工具结果应该填充的地方,我们选择 s' 中对应的第一个 token 作为工具调用的工具,以下 token 填充 [N/A],表示在损失计算中被忽略。因此,给定一个由配对序列 D={(s,s')} 组成的数据集,ToolkenGPT 的训练目标为:

图 4

获取配对数据的方法主要有两种。首先,一些数据集与自然语言序列一起提供了基准事实工具调用。为了将数据用于监督学习,我们对其进行预处理,以获得训练所需的成对数据,如上文所述。其次,探索了用 LLM 合成工具样例,分享了与自指导类似的想法。对这个过程的直观解释是将 LLM 中的知识提取到新的工具嵌入中。具体来说,我们可以用工具文档和一些具有特殊语法指示工具调用的样例来提示 LLM,例如,The capital of U.S. is ("U.S.")="Washington D.C."。在此基础上,LLM 可以生成一些新的用例,这些用例利用给定的工具并使用相同的语法引用工具调用。然后,我们可以轻松地定位工具调用,并将数据处理为用于训练的成对数据。

作者将 ToolkenGPT 应用于三个不同的应用:用于数值推理的算术工具、用于基于知识的问答的数据库 API、用于具具计划生成的机器人动作。重点关注方法如何准确地调用工具,以及它们如何成功地解决任务。实验表明,ToolkenGPT 可以有效地掌握大量工具,同时利用它们来解决复杂问题,性能有所提高,始终优于先进的提示技术。

探索四个基本算术函数 (+、−、×、÷) 的可用性。此外,为了对更复杂数学问题中的工具处理能力进行基准测试,包括更多可用的工具,即扩展的函数集,并创建一组合成数据。结果表明,通过仅在合成数据上进行训练,ToolkenGPT 显著优于基线。

为全面评估工具学习在数值推理方面的能力,策划了两个新的测试数据集:

我们为每个可用的数学运算符训练 toolken 嵌入。在推理过程中,用 4-shot 思维链的例子来提示 LLM。为了进行比较,对以下基线进行了评估:

表 2 显示了所有方法在 GSM8K-XL 和 FuncQA 数据集上的性能。在 GSM8K-XL 数据集上,使用 CoT 的零样本 ChatGPT 和少样本学习在没有工具帮助的情况下很难计算大量的数字,而 ReAct 和 ToolkenGPT 设法以较大的幅度持续提高准确性。这两个方法都可以在必要时调用正确的工具,因为工具集只有 4 个基本操作符。

然而,对于 FuncQAone 和 FuncQAmulti 数据集,随着工具数量的增加,学习调用适用的工具变得具有挑战性。在 ReAct 中,尽管所有的工具都列在提示符的开头,但在有限的上下文中包括每个工具的样例是不可行的。因此,ReAct 很容易受到缺少工具调用、错误的工具调用和预测错误的参数的影响,特别是对于没有在上下文中样例的工具。ToolkenGPT 在单跳和多跳场景中都优于所有基线,当有许多工具时,显示出卓越的工具学习能力。

图 5

由于有限的知识限制,LLM 经常犯事实错误和幻觉。让它们能够访问知识库 (KBs) 是一个有希望的研究方向,以减少它们的幻觉。我们将对知识库的访问表述为查询数据库的 API。因此,每个关系查询都可以被视为一个工具,其输入参数是主题实体,输出是相应的尾部实体。

KAMEL 是一个基于 Wikidata 的问答数据集。参照 ToolFormer 采用 KAMEL 来评估 KB 查询工具的使用情况。KAMEL 包含了来自 Wikidata 的 243 个关系的知识,每个关系都与一个问题模板相关联,以便将 Wikidata 中的一个事实转换为一个问题。这个数据集总共有 234 个工具。为了分析不同数量工具的性能,我们从原始测试集中抽样创建了四个子集。每个子集由与不同数量关系相关的问题组成,分别对应于 30、60、100 和 234。每个子集的大小是 500。

我们设置了两个不同的框架:

本文提出以下比较基线:

所有方法的基本模型都是 LLaMA-13B。

我们在图 2 中展示了涉及不同数量关系的 4 个测试集上的实验结果。ToolkenGPT(sup) 取得了最高的结果,表明在有大量域内训练数据时,学习 toolken 嵌入是一种有效的方法。相反,即使上下文学习也会在上下文中看到域内训练数据,但它仍然不清楚要调用哪些工具。此外,当要使用的工具超过 30 个时,上下文长度限制会导致性能急剧下降。多工具场景中的失败揭示了上下文学习范式的根本局限性。ToolkenGPT(syn) 在所有子集中也优于所有其他基线。

合成训练数据通常与数据集具有非常不同的表达风格,但仍然有助于 LLM 理解这些关系。这一成功反映了该框架的灵活性,即使在没有域内训练数据可用的情况下也可以应用。上下文学习 (desc) 在这项任务中通常失败,因为 LLM 很难记忆在上下文中显示的文本描述并将其映射到关系标识符。该结果证实了 LLM 在使用不熟悉的工具时存在困难这一猜想。基于这种观察,我们有理由推测,LLM 主要是从它们的标识符中回忆工具,而不是真正从它们的描述中学习使用工具。

图 6

最近,有许多研究尝试利用 LLM 作为具身智能体的控制器。我们也探索了所提出框架如何应用于具身智能体的计划生成。与之前提示 LLM 的方法相比,ToolkenGPT 可以通过学习智能体动作和对象的 toolken 嵌入来更好地理解环境。

VirtualHome:一个典型家庭活动的仿真平台,活动程序知识库由许多可在 VirtualHome 中执行的任务和计划组成。从活动程序中得出 297 个任务的子集。对于每个任务,给模型一个高级目标 (例如:'读书')、详细的指令 (例如:'我会躺在床上,打开书开始阅读',以及对环境的描述,其中包括初始状态和环境的对象列表 (例如:'我在 [家庭办公室]。我可以操作的对象是 ['邮件','冰箱','电视',…,'小说'])'。该模型被期望输出一个可执行的计划,它是一个动词 - 对象指令的有序列表。每个任务都有一个初始状态图和最终状态图,从而能够使用模拟器验证生成的计划,并将最终状态与真实状态进行比较。我们将数据集划分为包含 247 个任务的训练集和包含 50 个任务的测试集,数据集中总共使用了 25 个动词和 32 个对象。

我们认为 VirtualHome 中的所有动作和对象都是工具。加上一个额外的 [END] 函数表示计划的结束,我们总共有 58 个工具。对于这个数据集,我们不需要图 1 中描述的参数生成过程,因为这些工具不接受参数。在推理过程中,ToolkenGPT 交替生成动作工具和对象工具,并以 [END] 工具结束。toolken 嵌入在训练集上进行训练。将该方法与以下基线进行了比较:

我们在表 3 中列出了结果。尽管使用上下文学习的 LLM 在上下文中明确列出了所有有效的动作和对象,但有时它不能将其预测作为可接受的指令的基础。即使动作和对象是有效的,但在 VirtualHome 中往往违反物理规律,导致成功率较低。ToolkenGPT 不仅通过其设计自然地预测有效的动作和对象,而且还通过从更多的训练任务中学习 toolken 嵌入来实现最高的成功率。

图 7

图 3 展示了一个具体的例子来说明差异。

图 8

通过实验比较了 ToolkenGPT 和微调在计算效率和性能方面的差异。本文在 LLaMA-7B 上实现了这两种方法。结果列在表 4 中。

图 9

对 LLMs 进行微调后,在 FuncQA 上的性能略好于 ToolkenGPT。即使我们应用了以效率著称的 LoRA,但与训练工具嵌入相比,微调的时间消耗明显更长。

ToolkenGPT 的设计有利于工具选择和参数完成。为了理解它们各自对性能的贡献,我们进一步实现了一个将 ReAct-style 的提示和参数完成的子程序 (工具模式) 相结合的基线。在工具模式下,LLM 只使用所选工具对样例进行提示,这将提供比 ReAct 提示更相关的知识。

图 10

如表 5 所示,添加工具模式确实可以通过提高参数补全的准确性来改进普通的 ReAct 提示方法。然而,ToolkenGPT 仍然在很大程度上优于这个改进的基线,这表明 toolken 嵌入有效地帮助 LLM 决定何时调用以及调用哪个工具。

因为有两种不同的训练数据来源,并且很容易处理或合成更多的数据,所以在 KAMEL 上扩展实验。对每个工具的 ToolkenGPT(sup) 和 ToolkenGPT(syn) 进行了 10/20/40 的训练样本采样,并报告了在包含 30 个工具的测试集上的精度。结果汇总在表 6 中。

图 11

在相同的数据规模预算下,使用监督数据进行训练可以获得更好的性能。尽管在大多数合成数据实例中没有观察到明显的错误,但合成数据和测试集之间的分布差距可能会阻止 toolken 嵌入的良好表现。更大的训练集有利于提高两个数据源的性能。

提出了 ToolkenGPT,一种用大量外部工具来增强 LLM 的新方法。该方法为每个工具引入了 toolken 嵌入的概念,使 LLM 能够像生成单词标记一样轻松地调用和使用不同的工具。该方法克服了当前微调和上下文学习范式的限制,使 LLM 能够适应更大的工具集,并使用广泛的样例数据来学习工具嵌入。ToolkenGPT 能够快速适应和利用新工具,表明它有能力跟上不断发展的大规模工具的步伐。

图 12

更多推荐文章

查看全部
  • NASA 火星任务软件测试:利用 AIGC 模拟极端环境攻击
  • 前端文件下载实战:从原理到最佳实践
  • AI Agent 基础架构与核心组件详解
  • C++11 核心特性:列表初始化与右值引用移动语义详解
  • 5 款开源 PPT 生成大模型实测对比:从技术原理到实战效果
  • RocketMQ 5.0 延时消息架构:时间轮算法与分布式调度实践
  • AI Agent 推理架构对比:ReAct 与 Plan-and-Execute 的选择
  • AI 图像生成指南:从原理到实战
  • AI 长期记忆 8 种优化策略及 LangChain 代码实现
  • C++ 位运算详解:基础题解与思维分析
  • Node.js 安装指南(macOS 版)
  • 2024 年转行 AI 产品经理的时机与准备指南
  • Python 数据科学工具链入门:NumPy、Pandas、Matplotlib 实战指南
  • Python PyQt5 安装与配置及界面设计教程
  • 基于 ChatGLM-6B 的医疗领域大模型微调实战指南
  • 内容创作模式解析:UGC、PGC、PUGC、OGC、MGC、BGC 与 AIGC
  • 《自然语言处理:大模型理论与实践》:大模型核心技术与实战指南
  • 双指针算法专题:移动零与复写零
  • Axure 制作 AI 自动对话机器人原型教程
  • 文心一言 4.5 开源模型深度解析与部署实战

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online