温馨提醒
如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢
本文最后更新于2023年8月17日,已超过 180天没有更新
ToolLLM 框架包括如何获取高质量工具学习训练数据、模型训练代码和模型自动评测的全流程。作者构建了 ToolBench 数据集,该数据集囊括 16464 个真实世界 API。
ToolLLM 框架的推出,有助于促进开源语言模型更好地使用各种工具,增强其复杂场景下推理能力。该创新将有助于研究人员更深入地探索 LLMs 的能力边界,也为更广泛的应用场景敞开了大门。
ToolLLM 论文链接:https://arxiv.org/pdf/2307.16789.pdf
ToolLLM 数据与代码链接:https://github.com/OpenBMB/ToolBench
ToolLLM 开源模型下载链接:https://huggingface.co/ToolBench
工具学习学术交流社群:https://discord.gg/asjtEkAA
工具学习的目标是让 LLM 能给定用户指令与各种工具(API)高效交互,从而大大扩展 LLM 的能力边界,使其成为用户与广泛应用生态系统之间的高效桥梁。尽管已经有一些工作(例如 Gorrila、APIBank 等)探索了如何让 LLM 掌握 API 调用能力,这些工作仍然存在以下局限性:
有限的 API:很多研究没有使用真实世界的 API(如 RESTful API),存在 API 范围有限、多样性不足的问题
场景受限:先前工作大多集中在单一工具的使用,而实际场景中可能需要多个工具协同工作来完成复杂任务;此外,现有研究通常假设用户提供与指令相关的 API,但现实中可供选择的API可能非常多,用户难以从中高效选择
模型规划和推理能力不足:现有模型推理方法如 CoT、ReACT 过于简单,无法充分利用 LLM 的潜力来处理复杂指令,因而难以处理复杂任务
ToolLLM 研究框
为了激发开源 LLM 的工具使用能力,该研究提出了 ToolLLM,一个包括数据构建、模型训练和评估过程的通用工具学习框架。
作者首先收集高质量的工具学习指令微调数据集 ToolBench,随后对 LLaMA 进行微调得到 ToolLLaMA,最后通过 ToolEval 评估 ToolLLaMA 的工具使用能力。
ToolBench 数据集
ToolBench 的构建完全由最新的 ChatGPT(gpt-3.5-turbo-16k)自动化完成,无需人工标注。在 ToolBench 上训练出来的模型具备极强的泛化能力,能够直接被应用到新的 API 上,无须额外训练。
ToolBench 的构建包括三个阶段:API 收集,指令生成和解路径标注:
01. API 收集
API 收集分为 API 爬取、筛选和响应压缩三个步骤。
API 爬取:作者从 RapidAPI Hub 上收集了大量真实多样的 API。RapidAPI 是一个行业领先的 API 提供商,开发者可以通过注册一个 RapidAPI 密钥来连接各种现有 API。所有 RapidAPI 中的 API 可以分为 49 个类别,例如体育、金融和天气等;每个类别下面有若干工具,每个工具由一个或多个 API 组成
API 筛选:作者对在 RapidAPI 收集到的 10,853 个工具(53,190 个 API)基于能否正常运行和响应时间、质量等因素进行了筛选,最终保留了 3,451 个高质量工具(16,464 个 API)
API 响应压缩:某些 API 返回的内容可能包含冗余信息导致长度太长无法输入 LLM,因此作者对返回内容进行压缩以减少其长度并同时保留关键信息。基于每个 API 的固定返回格式,作者使用 ChatGPT 自动分析并删除其中不重要信息,大大减少了 API 返回内容的长度
02. 指令生成
为了兼顾生成高质量的指令和保证指令能用 API 完成,作者采用自底向上的方法进行工具指令生成,即从收集的 API 入手,反向构造涵盖各种 API 的指令。具体而言,作者首先从整个 API 集合中采样各种各样的 API 组合,接着通过 prompt engineering 让 ChatGPT 构思可能调用这些 API 的指令。
其中 prompt 包括了每个 API 的详细文档,这样 ChatGPT 能够理解不同 API 的功能和 API 之间的依赖关系,从而生成符合要求的人类指令。具体的采样方式分为单工具指令(指令涉及单工具下的多个 API)和多工具指令(指令涉及同类或跨不同类的工具的多个 API)。通过该方法,作者最终自动构造逾 20 万条合格的指令。
03. 解路径标注
给定一条指令 ,作者调用 ChatGPT 来搜索(标注)一条有效的解路径(动作序列):{,...,} 。这是一个多步决策过程,由 ChatGPT 的多轮对话来完成。在每个时间步 t,模型根据先前的行为历史和 API 响应预测下一步动作 ,即:
其中 表示真实的 API 响应。每个动作包括了调用的 API 名称,传递的参数和为什么这么做的 “思维过程”。为了利用 ChatGPT 新增的函数调用(function call)功能,作者将每个 API 视为一个特殊函数,并将其 API 文档放入 ChatGPT 的函数字段来让模型理解如何调用 API。
此外,作者也定义了 "Give Up" 和 "Final Answer" 两种函数标识行为序列的结束。
在实际应用中,作者发现传统的 CoT 或 ReACT 算法在决策过程中存在错误累加传播和搜索空间有限的问题,这导致即使是最先进的 GPT-4 在很多情况下也很难成功找到一条解路径,从而对数据标注形成了一定的障碍。
为解决这个问题,作者采用构建决策树的方式扩展搜索空间增加找到有效路径的概率。作者提出 DFSDT 算法,让模型评估不同的推理路径并沿着有希望的路径继续前进,或者放弃当前节点并扩展一个新的节点。
为验证 DFSDT 的效果,作者基于 ChatGPT 比较了 DFSDT 与 ReACT 的差异。此外,作者还引入了更强的 baseline (ReACT@N),它进行多次 ReACT 推理直到找到一条合理的解路径。
如上图所示,DFSDT 在所有场景下的通过率(pass rate)显著更高,超越了两种 baseline。此外,DFSDT 在更复杂场景下(I2,I3)的效果提升更大,这说明扩大搜索空间更加有助于解决复杂的工具调用任务。
总而言之,DFSDT 算法显著提升了模型推理能力,增加了解路径标注的成功率。最终,作者生成了 12000+ 条指令 - 解路径数据对用于训练模型。
在应用方面,ChatGPT Plugins 的出现补充了 ChatGPT 最后的短板,使其可以支持连网、解决数学计算,被称为 OpenAI 的 “App Store” 时刻。然而直到现在,它仅支持部分 OpenAI Plus 用户,大多数开发者仍然无法使用。
为此,面壁智能之前也推出了工具学习引擎 BMTools,一个基于语言模型的开源可扩展工具学习平台,它将是面壁智能在大模型体系布局中的又一重要模块。研发团队将各种各样的工具(例如文生图模型、搜索引擎、股票查询等)调用流程都统一到一个框架上,使整个工具调用流程标准化、自动化。
开发者可以通过 BMTools,使用给定的模型(ChatGPT、GPT-4)调用多种多样的工具接口,实现特定功能。此外,BMTools 工具包也已集成最近爆火的 Auto-GPT 与 BabyAGI。未来,团队还将围绕大模型工具学习有更多发布,敬请大家期待!
BMTools 工具包 :https://github.com/OpenBMB/BMTools
工具学习综述链接 :https://arxiv.org/abs/2304.08354
工具学习论文列表 :https://github.com/thunlp/ToolLearnirgPapers
大模型使用搜索引擎实践 :https://github.com/thunlp/WebCPM
评论0+