如图所示,一个高质量的指令调优数据集 ToolBench。用最新的ChatGPT(gpt-3.5-turbo-16k)自动构建,该ChatGPT已通过增强的函数call功能进行了升级。给定一条指令,API 检索器推荐一组相关 API,这些 API 被发送到 ToolLLaMA 进行多轮决策,得出最终答案。尽管筛选了大量 API,但检索器表现出非凡的检索精度,返回的 API 与基本事实密切相关。
下表列出了ToolBench与先前工作之间的比较。
RapidAPI 是领先的 API 市场,将开发人员与数千个现实世界的 API 连接起来,简化了各种服务和数据源集成到应用程序的过程。
在该平台上,开发人员只需注册一个 RapidAPI key即可发现、测试和连接到各种 API。
RapidAPI 中的所有 API 都可以分为 49 个粗粒度的类别,例如体育、金融和天气。
这些类别用于将每个 API 与最相关的主题相关联。
此外,该中心还提供更细粒度的分类,称为聚集(collections),例如中文 API、基于 AI 的顶级 API 和数据库 API。
同一聚集中的 API 具有共同的特征,并且通常具有相似的功能或目标。
如图左边所示,每个工具可能由多个 API 组成。对于每个工具,会抓取以下信息:工具的名称和描述、主机的 URL 以及属于该工具的所有可用 API;对于每个 API,记录其名称、描述、HTTP 方法、必需参数、可选参数、请求主体、API 调用的可执行代码片段(snippets)以及示例 API 调用响应。这些丰富而详细的元数据是LLM理解和有效使用API的宝贵资源,即使是以零样本的方式。
最初,从 RapidAPI 收集了 10853 个工具(53190 个 API)。
但是,这些 API 的质量和可靠性可能会有很大差异。
特别是,某些 API 可能维护不佳,例如返回 404 错误或其他内部错误。
为此,执行严格的滤波过程,以确保ToolBench的最终工具集可靠且功能强大。
滤波过程如下:(1)初始测试:首先测试每个API的基本功能,以确定是否可操作。丢弃任何不符合此基本标准的 API;(2)示例响应评估:进行API调用,获得示例响应。然后,通过响应时间和质量来评估其有效性。始终表现出较长响应时间的 API 将被省略。此外,会过滤掉具有低质量响应的 API,例如 HTML格式源代码或其他错误消息。最后,只保留了 3451 个高质量工具(16464 个 API)
在检查每个 API 返回的响应时,发现某些响应可能包含冗余信息,并且太长而无法输入 LLM。由于LLM的上下文长度有限,这可能会导致问题。因此,执行响应压缩以减少 API 响应的长度,同时保留其关键信息。
由于每个 API 都有固定的响应格式,因此使用 ChatGPT 来分析一个响应示例,并删除响应中不重要的key以缩短其长度。ChatGPT 的提示包含以下每个 API 的信息:(1) 工具文档,包括工具名称、工具描述、API 名称、API 描述、参数和示例 API 响应。这给了 ChatGPT 一个关于 API 功能的提示;(2) 3 个上下文学习示例,每个示例包含一个原始 API 响应和一个由专家编写的压缩响应模式。这种方式获得了所有 API 的响应压缩策略。在推理过程中,当 API 响应长度超过 2048 个token时,删除不重要的信息压缩响应。如果压缩响应仍长于 2048,仅保留前 2048 个token。