写点什么

ToolLLM:能够使用 16000 种真实 API 的 LLM

作者:Zilliz
  • 2023-08-10
    北京
  • 本文字数:1137 字

    阅读完需:约 4 分钟

随着对 LLM(大语言模型)的了解与使用越来越多,大家开始偏向于探索 LLM 的 agent 能力。尤其是让 LLM 学习理解 API,使用工具进行对用户的 instruction(指令)进行处理。然而,目前的开源大模型并不擅长使用工具,最善于使用工具的 ChatGPT 是闭源的模型。研究人员设计了一个评测 LLM 使用工具能力的 Benchmark(基准)—— LLMBench,以及一个针对该场景的数据构建、模型训练、评测的框架—— ToolLLM。

这张图展示了构建 ToolBench 的三个阶段,以及如何训练 API 检索器和 ToolLLaMA。在执行指令时,API 检索器会向 ToolLLaMA 推荐相关的 API,ToolLLaMA 通过多轮 API 调用得出最终答案。整个推理过程由 ToolEval 评估。 研究人员主要是从 RapidAPI 来收集 API,所有的 API 都可以分为 49 个粗粒度类别,例如体育、金融和天气。研究人员评测了这些 API,最后经过筛选,留下了 16,464 个 API。LLM 的 prompt(提示)中包括了这些 API 相关的文档和使用用例。

作者根据 API,使用 ChatGPT 生成可能用到的指令,利用 {INST,API} 的格式训练 API retriever。最后得到的 prompt 包含了任务的描述、API 的文档、3 个 API 的使用例。

作者通过序列来对执行路径进行探索{a1,r1,a2,r2.....}a 为采取的 function call,r 为返回的 response,为了避免一直错误的路径上探索,作者设计了一个基于深度优先的决策树,并将放弃执行也作为一个节点,返回到之前的路径重新选择,从而节省了对于 chatgpt 的调用。最后收集到了 12, 657 个 instruction solution pairs 用来训练 ToolLLaMA。

首先训练 API 检索器的目标是与指令检索相关的 API,采用了 Sentence-BERT 训练基于 BERT-BASE 的密集检索器。该模型分别将指令和 API 文档编码为两个嵌入向量,并通过这两个向量的相似性确定它们之间的相关性。在训练过程中,作者将之前生成的每个指令的相关 API 视为正样本,并采样一些其他 API 作为负样本进行对比学习。

然后,作者使用了指令-解决方案对对 LLaMA 7B 模型进行微调。因为工具的响应通常会非常长,原始的 LLaMA 模型的序列长度 2048 或许不能够满足本次场景。为此,作者使用 positional interpolation 将上下文长度扩展到 8192,最后以多轮对话模式训练模型。在训练数据格式方面,作者保持输入和输出与 ChatGPT 的相同。

ToolLLM 介绍了如何在 LLMs 中引入使用工具的能力,提出了一个指令调优的数据集 ToolBench,涵盖了 16k+真实世界的 API 和各种实际的用例场景,包括单一工具和多工具任务。ToolBench 的构建只使用 ChatGPT,并且最小限度的使用人工监督。此外,ToolLLM 还提出了 DFSDT 来加强 LLMs 的规划和推理能力,使它们能够有策略地在推理路径中导航。并且实验结果也显示出了使用经过训练的开源模型 ToolLLaMA 极大的提高了使用工具能力。

相关资料:

用户头像

Zilliz

关注

Data Infrastructure for AI Made Easy 2021-10-09 加入

还未添加个人简介

评论

发布
暂无评论
ToolLLM:能够使用 16000 种真实 API 的 LLM_AIGC_Zilliz_InfoQ写作社区