Toolformer — 工具塑成模型

From Systems analysis wiki
Jump to navigation Jump to search

Toolformer 是一种构建大语言模型LLM)的方法,使其能够通过调用API自主使用外部工具[1]。该方法由 Meta AI Research 和庞培法布拉大学(西班牙)的一组研究人员于2023年提出。在其论文《Toolformer: Language Models Can Teach Themselves to Use Tools》(Timo Schick et al., 2023)中,作者指出了一个悖论:现代 LLM 在通过文本示例解决复杂新任务方面表现出惊人的能力,但常常无法可靠地执行基本操作,例如计算或事实查找[1]。为了克服这些限制,该团队开发了 Toolformer 模型,该模型能够自学习选择和调用外部工具(如搜索引擎、计算器或翻译服务),以提高完成各种任务的质量[1]。2023年2月,该模型以预印本形式在 arXiv 上发布,随后获得认可并被 NeurIPS 2023 会议接收[2]

模型的核心思想与能力

Toolformer 是一个经过微调的语言模型,能够决定调用哪个工具、何时调用、传递什么参数,以及如何将返回结果整合到生成文本中[3]。其训练过程采用自监督模式self-supervised)——模型自行生成并评估 API 使用示例,每个工具仅需少量(通常只有几个)演示样本[3]。与以往的方法不同,该模型无需大量标注数据或面向人类的模板来集成工具;模型能够自行学习何时以及如何应用某个 API,同时保留其通用的语言能力,且不局限于特定任务[1]

作者为 Toolformer 集成了多种可通过简单 API 调用访问的工具。在实验版本中,使用了以下实用工具[3]

  • 计算器 – 用于执行算术计算。
  • 问答(Q&A)系统 – 用于在知识库中查找事实性问题的答案。
  • 搜索引擎(2种不同类型)– 用于在互联网上搜索最新信息。
  • 机器翻译系统 – 用于在不同语言之间翻译文本。
  • 日历 – 用于获取日期和时间信息。

每个工具都以文本片段(一种特殊的文本标签)的形式表示,这使得模型能够将 API 调用直接嵌入其生成的文本中[4]。例如,模型可以在当前上下文中插入类似 `[Calculator(...)]` 或 `[Search("查询")]` 的结构,表示需要进行外部调用。在生成响应时,Toolformer 会生成一个特殊符号(箭头 →),系统据此暂停生成并执行相应的 API 调用;获取的结果被替换到文本中,然后继续生成后续内容[4]。这种机制使模型能够在不改变其架构的情况下,动态地利用外部服务的能力,同时保持其作为单一语言模块的完整性。

模型训练(方法论)

开发者将 Toolformer 的训练过程描述为几个阶段[4],利用上下文学习(in-context learning)技术生成合成数据[1]

  1. 生成候选 API 调用。首先,从大型语料库(如文章或网页)中提取文本,并人为地插入可能有助于延续或补充文本的工具调用。这些插入是由模型基于每个 API 的少数手动指定的使用范例,通过少样本提示(few-shot prompting)自行生成的[1]。例如,模型可能会收到一个片段:“2024年,该市人口为 [QA("该市人口是多少?") → ...] 人”,其中 QA() 是对问答系统的调用,旨在返回缺失的数据。模型会为每个工具选择合适的上下文;例如,对于计算器,模型会选择包含多个数字和“等于”或“总计”等词语的句子[4]——即那些确实需要算术结果的地方。
  2. 执行 API 调用并扩充数据。接下来,所有由模型生成的调用都将被实际执行——例如,向搜索引擎发送查询或用计算器计算表达式。返回的答案被插回文本中,形成带有 `{答案}` 插入的完整句子变体[4][4]。同时,也会保留“空”版本(未插入答案的版本)以及没有任何调用的原始文本,以供后续比较。
  3. 过滤与效用自评估。在此阶段,Toolformer 自行评估哪些生成的 API 插入对于预测文本后续内容确实有用[4]。模型会比较在三种情况下继续生成文本的概率:(a)不进行任何调用,(b)进行工具调用但未插入结果,(c)进行调用并插入结果[4]。如果添加某个 API 响应能增加模型正确续写短语的概率(即确实有助于模型预测后续词语),那么该样本就被认为是有用的。只有那些能带来概率增益的插入才会被保留在样本集中。通过这种方式,可以筛除那些工具调用多余或未提供新信息的情况。最后,模型在经过筛选的数据集上进行微调fine-tuning),该数据集包含带有优化插入的 API 调用真实文本示例[1]。训练遵循标准的语言建模目标——预测序列中的下一个词元(token),包括表示工具调用结果的词元。

值得强调的是,为集成每个新工具,仅需几个手动创建的示例——此后训练数据的生成便自动进行[3]。因此,Toolformer 方法几乎不依赖于专门的标注语料库,并最大限度地减少了数据标注的人工成本。模型自行学习 API 调用的格式和适用性,并在此过程中保持其通用性:它仅在确实需要解决特定任务时才使用工具[1]

实验结果

为了对该方法进行实验验证,研究人员采用了一个现有的语言模型GPT-J(67亿参数)——这是一个在 The Pile 语料库上训练的开源 LLM[4]。他们按照上述流程对该模型进行了微调,从而得到了基于 GPT-J 的 Toolformer。新方法的性能在一系列标准任务上以零样本zero-shot)模式进行评估,这些任务包括数学应用题求解、事实查找、知识问答(QA),以及翻译和文本填空。测试数据采用了多个公开数据集,例如 Natural Questions、TriviaQA(用于评估事实知识),ASDiv、MAWPS、SVAMP(算术应用题),以及多语言 QA 基准 MLQA、LAMA[5]

结果显示,Toolformer 在许多任务上显著优于同等规模的原始模型[1]。此外,通过接入工具,这个相对较小的模型(67亿参数)在多项指标上超越了规模大得多的 GPT-3 模型(1750亿参数)[1][6]。例如,在需要精确计算的数学应用题中,Toolformer 展现了相较于普通 LLM 的显著进步,它能借助计算器精确求解这类问题,而即使是 GPT-3 也可能出错[1]。在事实性问答(QA)测试中,基于 GPT-J 的 Toolformer 同样表现出与 GPT-3 相当甚至更优的回答质量,因为它能够通过互联网搜索获取最新信息[1]。同时,重要的是,新方法并未损害语言模型的通用能力,例如在普通数据上连贯地续写文本:Toolformer 在不使用工具的情况下,其自然语言生成水平与原始的 GPT-J 相当[3]。换言之,添加 API 调用功能并未“剥夺”模型的基础技能,而是在其之上扩展了额外的能力。

研究意义与未来方向

Toolformer 的开发证明了在几乎没有人工标注的情况下,训练模型使用外部工具的根本可能性,这主要得益于合成数据的生成和效用的自我评估。这一成就为构建更高效、更可靠的大语言模型开辟了道路:一个相对紧凑的模型可以动态调用外部资源(如知识库、计算器、各种服务)来弥补自身的不足,而不是通过增加数十亿参数来记忆事实或数学规则[1]。这种方法有助于减少“幻觉”(即模型捏造不存在的信息),提高答案的准确性和知识的时效性,而无需对整个模型进行彻底的重新训练。本质上,Toolformer 实现了“两全其美”——将大型模型的语言能力与专用工具的精确性相结合[3]

Schick 及其同事的这项工作是首批展示 LLM 自主掌握外部 API 的研究之一,并在学术界引起了广泛关注。此后出现了许多发展这一理念的后续研究。例如,2023年提出的Graph-ToolFormer模型,将 Toolformer 的原理应用于处理图数据。Graph-ToolFormer 借助 ChatGPT 生成的提示,教会语言模型调用外部工具来解决图分析任务(如获取图属性、处理知识网络等)[7]。另一项值得注意的进展是Gorilla模型(加州大学伯克利分校,2023年),它专注于精确使用大量第三方软件 API[8]。Gorilla 是一个在大量带文档的函数上进行微调的 LLaMA 模型;它能根据任务描述生成正确的 API 调用,其表现非常成功,在实验中,其生成库和服务调用的准确性甚至超过了 GPT-4[8]。Gorilla 还集成了文档检索机制,使其能够更新有关 API 变更的信息,从而显著减少使用工具时的错误和幻觉[8]。这些研究证实了 Toolformer 所开创方向的重要性:将 LLM 与外部工具相结合,被视为创建更强大、更可靠 AI 系统的一条有前景的路径。

值得注意的是,将工具集成到语言模型中的理念不仅在研究领域发展,也已进入工业界。例如,2023年3月,OpenAI 公司推出了ChatGPT 插件系统——一个特殊的接口,允许将模型连接到外部服务(如网络浏览器、知识库、计算引擎等),以获取最新信息并执行计算[9]。用户长期以来一直期待这样的功能,而插件的出现实际上是将与 Toolformer 相似的概念付诸实践:通过添加“工具”来扩展模型的能力,以解决各种用户请求[9]。因此,Toolformer 契合了人工智能发展的总体趋势,即大语言模型正在成为一个能够按需调用外部知识和计算能力的平台。Meta AI 和 UPF 团队的这项研究为该方向奠定了重要基础,展示了 LLM 如何在几乎无需人工指导的情况下学会使用工具,从而向着更通用、更安全的智能助手迈进[1][3]

链接

参考文献

  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. arXiv:2302.04761.
  • Schick, T. et al. (2023). Toolformer: Language Models Can Teach Themselves to Use Tools. NeurIPS 2023. OpenReview.
  • Li, M. et al. (2023). API-Bank: A Comprehensive Benchmark for Tool-Augmented LLMs. arXiv:2304.08244.
  • Zhang, T. et al. (2023). Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT. arXiv:2304.11116.
  • Patil, S. G. et al. (2023). Gorilla: Large Language Model Connected with Massive APIs. arXiv:2305.15334.
  • Qin, Y. et al. (2023). ToolLLM: Facilitating Large Language Models to Master 16 000+ Real-World APIs. arXiv:2307.16789.
  • Li, Y. et al. (2024). Tool Learning with Large Language Models: A Survey. arXiv:2405.17935.
  • OpenAI (2023). ChatGPT Plugins. OpenAI Blog.
  • Brown, T. B. et al. (2020). Language Models Are Few-Shot Learners. arXiv:2005.14165.
  • Schick, T. et al. (2023). Meta AI & UPF’s Toolformer: Enabling Language Models to Teach Themselves to Use External Tools. Synced Review.


注释

  1. 1.00 1.01 1.02 1.03 1.04 1.05 1.06 1.07 1.08 1.09 1.10 1.11 1.12 1.13 Schick, T. et al. «Meta AI & UPF's Toolformer: Enabling Language Models to Teach Themselves to Use External Tools». Synced. [1]
  2. Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». OpenReview. [2]
  3. 3.0 3.1 3.2 3.3 3.4 3.5 3.6 Schick, T. et al. «Toolformer: Language Models Can Teach Themselves to Use Tools». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 OXEN AI. «Arxiv Dives Toolformer: Language models can teach themselves to use tools». Medium. [4]
  5. «Toolformer: Language Models Can Teach Themselves to Use Tools». Papers With Code. [5]
  6. Brown, Tom B. et al. «Language Models are Few-Shot Learners». arXiv. [6]
  7. Zhang, Tingkai et al. «Graph-ToolFormer: To Empower LLMs with Graph Reasoning Ability via Prompt Augmented by ChatGPT». arXiv. [7]
  8. 8.0 8.1 8.2 Patil, Shishir G. et al. «Gorilla: Large Language Model Connected with Massive APIs». arXiv. [8]
  9. 9.0 9.1 «ChatGPT plugins». OpenAI. [9]