清华提出开源工具学习框架,接入真实世界 16000+API, 效果达 ChatGPT
近些年,开源大语言模型(LLM)进步飞快,例如LLaMA和Vicuna等模型在各种语言理解、生成任务上展现了极佳的水平。但是,当它们面对更高级别的任务,例如根据用户指令使用外部工具(API)时,仍然有些力不从心。
为了解决这个问题,清华大学研究人员近期联合耶鲁大学、中国人民大学、面壁智能、知乎、腾讯一起发布了ToolLLM工具学习框架,。ToolLLM框架包括如何获取高质量工具学习训练数据、模型训练代码和模型自动评测的全流程。作者构建了ToolBench数据集,该数据集囊括16464个真实世界API。ToolLLM框架的推出,有助于促进开源语言模型更好地使用各种工具,增强其复杂场景下推理能力。该创新将有助于研究人员更深入地探索LLMs的能力边界,也为更广泛的应用场景敞开了大门。
目前ToolLLM的所有相关代码均已开源,以下是作者训练的ToolLLaMA的与用户交互对话并实时进行推理的演示:
● ToolLLM论文链接:https://arxiv.org/pdf/2307.16789.pdf
● ToolLLM数据与代码链接:https://github.com/OpenBMB/ToolBench
工具学习的目标是让LLM能给定用户指令与各种工具(API)高效交互,从而大大扩展LLM的能力边界,使其成为用户与广泛应用生态系统之间的高效桥梁。尽管已经有一些工作(例如Gorrila、APIBank等)探索了如何让LLM掌握API调用能力,这些工作仍然存在以下局限性:
1. 有限的API:很多研究没有使用真实世界的API(如RESTful API),存在API范围有限、多样性不足的问题。
2. 场景受限:先前工作大多集中在单一工具的使用,而实际场景中可能需要多个工具协同工作来完成复杂任务;此外,现有研究通常假设用户提供与指令相关的API,但现实中可供选择的API可能非常多,用户难以从中高效选择。
3. 模型规划和推理能力不足:现有模型推理方法如CoT、ReACT过于简单,无法充分利用LLM的潜力来处理复杂指令,因而难以处理复杂任务。
为了激发开源LLM的工具使用能力,该研究提出了ToolLLM,一个包括数据构建、模型训练和评估过程的通用工具学习框架。作者首先收集高质量的工具学习指令微调数据集ToolBench,随后对LLaMA进行微调得到ToolLLaMA,最后通过ToolEval评估ToolLLaMA的工具使用能力。
ToolBench的构建完全由最新的ChatGPT(gpt-3.5-turbo-16k)自动化完成,无需人工标注。在ToolBench上训练出来的模型具备极强的泛化能力,能够直接被应用到新的API上,无须额外训练。下表列出了ToolBench与之前相关工作的对比情况。ToolBench不仅在多工具混合使用场景独一无二,且在真实API数量上也一骑绝尘。
ToolBench的构建包括三个阶段:API收集,指令生成和解路径标注:
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返回内容的长度。
指令生成
为了兼顾生成高质量的指令和保证指令能用API完成,作者采用自底向上的方法进行工具指令生成,即从收集的API入手,反向构造涵盖各种API的指令。具体而言,作者首先从整个API集合中采样各种各样的API组合,接着通过prompt engineering让ChatGPT构思可能调用这些API的指令。其中prompt包括了每个API的详细文档,这样ChatGPT能够理解不同API的功能和API之间的依赖关系,从而生成符合要求的人类指令。具体的采样方式分为单工具指令(指令涉及单工具下的多个API)和多工具指令(指令涉及同类或跨不同类的工具的多个API)。通过该方法,作者最终自动构造逾20万条合格的指令。
解路径标注
给定一条指令,作者调用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+条指令-解路径数据对用于训练模型。
为了确保准确可靠的工具学习性能评测,作者开发了一个名为ToolEval的自动评估工具,它包含两个评测指标:通过率(Pass Rate)和获胜率(Win Rate)。通过率是指在有限步骤内成功完成用户指令的比例;获胜率则基于ChatGPT衡量两个不同解路径的好坏(即让ChatGPT模拟人工偏好)。
为了检验这种评估方式的可靠性,作者首先收集了大量人类标注结果,并且发现利用ChatGPT做自动评测与人类评判的一致性高达75.8%,这意味着ToolEval的结评测果与人类判断高度相似。此外, ToolEval的评测在多次重复时方差非常小(3.47%),小于人类的3.97%,这表明,ToolEval的评测一致性超越了人类,更加稳定可靠。
基于ToolBench,作者微调LLaMA 7B模型并得到了具备工具使用能力的ToolLLaMA。由于训练数据中存在十分多样的工具与指令,ToolLLaMA学习到了非常强的泛化能力,能在测试中处理一些在训练期间未见过的新任务、新工具。为了验证ToolLLaMA的泛化能力,作者进行了三个级别的测试:
1. 单一工具指令测试(I1):评测模型解决面向单工具的在训练中未学习过的新指令。
2. 类别内多工具指令测试(I2):评测模型如何处理已经再训练中学习过的类别下的多种工具的新指令。
3. 集合内多工具指令测试(I3):考查模型如何处理来自不同类别的工具的新指令。
作者选择了两个已经针对通用指令微调的LLaMA变体Vicuna和Alpaca以及OpenAI的ChatGPT和Text-Davinci-003作为baseline。对所有这些模型应用了更加先进的DFSDT推理算法,此外对ChatGPT应用了ReACT。在计算win rate时,将每个模型与ChatGPT-ReACT进行比较。下面两幅图总结了ToolLLaMA模型和其他模型比较结果。
根据上图显示,ToolLLaMA在pass rate和win rate上显著优于传统的工具使用方法ChatGPT-ReACT,展现出优越的泛化能力,能够很容易地泛化到没有见过的新工具上,这对于用户定义新API并让ToolLLaMA高效兼容新API具有十分重要的意义。此外,作者发现ToolLLaMA性能已经十分接近ChatGPT,并且远超Davinci, Alpaca, Vicuna等baseline
将API检索器与ToolLLaMA结合
在实际情况下用户可能无法从大量的API中手动推荐和当前指令相关的API,因此需要一个具备API自动推荐功能的模型。为解决这个问题,作者调用ChatGPT自动标注数据并依此训练了一个sentence-bert模型用作dense retrieval。为了测试API检索器的性能,作者比较了训练得到的API检索器和BM25、Openai Ada Embedding方法,发现该检索器效果远超baseline,表现出极强的检索性能。此外,作者也将该检索器与ToolLLaMA结合,得到了更加符合真实场景的工具使用模型pipeline。
近年来,大模型在诸多领域展现出惊人的应用价值,持续刷新各类下游任务的效果上限。尽管大模型在很多方面取得了显著的成果,但在特定领域的任务上,仍然存在一定的局限性。这些任务往往需要专业化的工具或领域知识才能有效解决。因此,大模型需要具备调用各种专业化工具的能力,这样才能为现实世界任务提供更为全面的支持。
最近,新的范式大模型工具学习(Tool Learning)应运而生。这一范式的核心在于将专业工具与基础模型的优势相融合,以在问题解决方面达到更高的准确性、效率和自主性,工具学习极大地释放了大模型的潜力。
在应用方面,ChatGPT Plugins的出现补充了ChatGPT最后的短板,使其可以支持连网、解决数学计算,被称为OpenAI的“App Store”时刻。然而直到现在,它仅支持部分OpenAI Plus用户,大多数开发者仍然无法使用。
为此,该团队之前也推出了工具学习引擎 BMTools,一个基于语言模型的开源可扩展工具学习平台,它将是面壁智能在大模型体系布局中的又一重要模块。研发团队将各种各样的工具(例如文生图模型、搜索引擎、股票查询等)调用流程都统一到一个框架上,使整个工具调用流程标准化、自动化。
开发者可以通过BMTools,使用给定的模型(ChatGPT、GPT-4)调用多种多样的工具接口,实现特定功能。此外,BMTools 工具包也已集成最近爆火的Auto-GPT与BabyAGI。未来,团队还将围绕大模型工具学习有更多发布,敬请大家期待!
大模型使用搜索引擎实践:https://github.com/thunlp/WebCPM
更多内容,点击下方关注:
微信扫码关注该文公众号作者