ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs


TL;DR

本文提出了一个名为ToolLLM的通用工具使用框架,通过构建一个包含超过16000个真实世界API的大规模指令微调数据集ToolBench,并采用一种新颖的深度优先搜索决策树(DFSDT)方法,成功地将开源大语言模型(LLaMA)的工具使用能力提升至与ChatGPT相当的水平。

关键定义

相关工作

目前,开源的大语言模型(LLMs),如LLaMA,尽管在基础语言任务上表现出色,但在使用外部工具(API)来完成复杂指令方面能力显著不足。这与顶尖的闭源模型(如ChatGPT)强大的工具使用能力形成鲜明对比。

现有研究在为工具使用构建指令微调数据方面存在几大瓶颈:

  1. API数量和真实性有限:以往工作要么不涉及真实世界的API,要么仅覆盖极小范围且多样性差的API。
  2. 应用场景受限:大多数研究局限于仅涉及单个工具的简单指令,而真实世界任务常需要多个工具协同工作。此外,它们通常假设用户会预先指定好API,这在拥有海量API的现实场景中不切实际。
  3. 规划与推理能力不足:现有方法多采用思路链(CoT)或ReACT等单路径推理框架,这些方法在面对复杂指令时容易因单步错误导致整体失败,探索空间有限。

因此,本文旨在解决的核心问题是:如何弥补开源LLM与闭源LLM在工具使用能力上的差距,通过构建高质量的数据集和开发更优的推理策略,系统性地提升开源LLM掌握和使用大规模真实世界API的能力。

本文方法

本文提出了ToolLLM框架,其核心在于通过高质量的数据、创新的推理方法和系统的训练评估流程,来教会开源LLM使用工具。整个框架由三大部分组成:ToolBench数据集构建、ToolLLaMA模型训练与API检索器,以及ToolEval评估器。

ToolLLM框架概览

ToolBench数据集构建

ToolBench的构建过程完全自动化,使用ChatGPT作为“数据标注员”,主要分为三个阶段:

1. API收集

从一个大型API市场RapidAPI上收集了16,464个真实的RESTful API,这些API覆盖了金融、社交媒体、电商等49个不同类别。为了确保数据集的质量,对API进行了严格筛选,移除了失效或不稳定的API,最终保留了3,451个高质量工具(包含16,464个API)。

RapidAPI层级结构与指令生成流程

2. 指令生成

为了确保指令的多样性和真实性,本文并非从零开始构思指令,而是先采样API组合,再让ChatGPT围绕这些API生成合适的指令。这种方法覆盖了三种场景:

通过这种方式,共生成了近20万条高质量的(指令,相关API)数据对,用于后续训练API检索器。

3. 解决方案路径标注

这是本文方法的核心创新所在。传统的ReACT方法只探索一条执行路径,一旦出错就难以挽回。为了解决这个问题,本文提出了深度优先搜索决策树(DFSDT)方法。

DFSDT与传统方法的对比

创新点:DFSDT算法

DFSDT的优势在于,它极大地扩展了LLM的探索空间,使其能够“三思而后行”,从多个潜在解决方案中选择最优路径,或在失败后及时“改弦易辙”。这不仅显著提高了复杂指令的求解成功率,也使得为ToolBench标注高质量的“解决方案路径”成为可能。最终,本文筛选出超过12万条成功的(指令,解决方案路径)对,用于微调ToolLLaMA模型。


模型训练与推理流程

ToolLLaMA模型

使用ToolBench数据集中高质量的(指令,解决方案路径)对,对LLaMA-2 7B模型进行微调,得到ToolLLaMA。为了处理API返回的长文本,本文使用位置插值技术将模型的上下文长度从4096扩展到了8192。

API检索器

为了让模型在面对海量API时能够自动找到合适的工具,本文还训练了一个基于Sentence-BERT的神经API检索器。该检索器能够根据用户指令,从16000多个API中高效地检索出最相关的Top-K个API,供ToolLLaMA在后续的决策过程中使用。

整个推理流程如下:

  1. 用户输入一条指令。
  2. API检索器从API池中召回最相关的几个API。
  3. ToolLLaMA接收指令和候选API,利用从DFSDT学习到的决策能力,进行多轮“思考-调用API”的循环。
  4. 最终,模型整合所有API返回的信息,生成最终答案。

实验结论

本文设计了全面的实验来验证ToolLLM框架的有效性,并开发了自动评估器ToolEval来衡量模型表现。

关键组件的有效性

方法 I1   I2   I3   平均  
NDCG @1 @5 @1 @5 @1 @5 @1 @5
BM25 18.4 19.7 12.0 11.0 25.2 20.4 18.5 17.0
Ada 57.5 58.8 36.8 30.7 54.6 46.8 49.6 45.4
本文方法 84.2 89.7 68.2 77.9 81.7 87.1 78.0 84.9
表2: 本文API检索器与基线方法的性能对比
方法 I1 I2 I3 平均
ReACT 37.8 40.6 27.6 35.3
ReACT@N 49.4 49.4 34.6 44.5
DFSDT 58.0 70.6 62.8 63.8
表3: 不同推理策略在ChatGPT上的通过率对比

模型性能与泛化能力

主要实验结果对比

图2: 不同模型在工具使用评估中的通过率与胜率对比
模型 方法 I1-Inst. I1-Tool I1-Cat. I2-Inst. I2-Cat. I3-Inst. 平均
    通过率/胜率 通过率/胜率 通过率/胜率 通过率/胜率 通过率/胜率 通过率/胜率 通过率/胜率
ChatGPT ReACT 41.5 / - 44.0 / - 44.5 / - 42.5 / - 46.5 / - 22.0 / - 40.2 / -
GPT4 DFSDT 60.0 / 67.5 71.5 / 67.8 67.0 / 66.5 79.5 / 73.3 77.5 / 63.3 71.0 / 84.0 71.1 / 70.4
ToolLLaMA DFSDT 57.0 / 55.0 61.0 / 55.3 62.0 / 54.5 77.0 / 68.5 77.0 / 58.0 66.0 / 69.0 66.7 / 60.0
ToolLLaMA DFSDT-Retriever 64.0 / 62.3 64.0 / 59.0 60.5 / 55.0 81.5 / 68.5 68.5 / 60.8 65.0 / 73.0 67.3 / 63.1
表4: 主要实验结果节选,胜率是与ChatGPT-ReACT对比的结果

跨领域(OOD)泛化

在与本研究数据集完全不同的APIBench数据集上,未经任何针对性训练的ToolLLaMA表现出强大的零样本泛化能力。在HuggingFace和TorchHub两个领域,ToolLLaMA结合自研检索器,在AST准确率上甚至超过了专门为APIBench训练的Gorilla模型,证明了ToolLLM框架赋予模型的泛化能力是真实且稳健的。

方法 HuggingFace TorchHub TensorHub
  AST (↑) AST (↑) AST (↑)
ToolLLaMA + 本文检索器 16.77 51.16 40.59
Gorilla-ZS + BM25 10.51 44.62 34.31
Gorilla-RS + BM25 15.71 50.00 41.90
表5: 在APIBench上的OOD泛化实验结果节选

总结

实验结果有力地证明,ToolLLM框架能够成功地为一个开源LLM注入强大的、可泛化的工具使用能力。通过大规模、贴近现实的ToolBench数据集和创新的DFSDT推理/标注方法,得到的ToolLLaMA模型在复杂的真实API调用任务上达到了与ChatGPT相媲美的水平,为构建更强大、更开放的AI智能体铺平了道路。