概述
背景信息
近年来,基于大型语言模型(LLMs)的工具学习成为增强LLMs应对复杂任务能力的有力范式。尽管这一领域快速发展,现有文献的碎片化以及缺乏系统组织,给新入门者带来了阻碍。因此,本论文旨在对现有工具学习相关工作进行全面综述,以便为研究人员和工业开发者提供系统的了解,启发未来研究。
研究目的
论文的目标是通过对工具学习的“为什么”和“如何”这两个方面进行探讨,来全面理解LLMs与工具结合的过程及其优势。具体而言,论文首先从工具集成的益处和工具学习范式固有的优势两个方面探讨了工具学习的意义,其次从任务规划、工具选择、工具调用和响应生成四个阶段,系统回顾了工具学习的实现方式。
相关工作
主要理论
对于工具的定义,本文认为任何通过外部手段增强LLMs方法都可以作为一种工具,将每个 API 视为一个单独的工具。值得注意的是,检索增强生成(RAG)代表了工具学习的一个特定实例,其中搜索引擎被用作LLMs的工具。
四个阶段
工具学习主要包含四个阶段:任务规划、工具选择、工具调用和响应生成。定义如下:
- 任务规划: 任务规划是工具学习的第一阶段,旨在对用户的复杂查询进行全面分析,将其分解为多个可解的子任务。通过任务规划,LLMs可以理解用户的意图,并规划每个子任务的执行顺序,确保最终问题得到全面的解决。
- 工具选择: 工具选择是指在任务规划后,LLMs从可用的工具库中选择适合解决当前子任务的工具。工具选择可以通过两种方式进行:基于检索的工具选择(使用检索器筛选出最适合的工具)和基于LLMs的工具选择(直接由LLMs从候选工具中挑选合适的工具)。
- 工具调用: 工具调用是指在工具选择阶段确定了适用工具之后,由LLMs按照工具的说明和用户查询中提取的参数进行工具调用。这一阶段要求模型正确提取参数内容并以正确的格式调用工具,以确保得到正确的返回结果。
- 响应生成: 响应生成是工具学习的最后阶段。在这一阶段,LLMs将工具调用的输出与其内部知识相结合,生成一个适合用户查询的综合性答案。响应生成可以通过直接插入工具结果或对工具输出进行进一步信息整合来实现,以确保最终回答的准确性和完整性。
两种范式
- 一步任务解决工具学习(One-step Task Solving):LLMs在接收到用户问题后,一次性生成所有子任务并调用工具,然后整合返回结果生成响应。这种方式不考虑调用工具的中途反馈。
- 迭代任务解决工具学习(Iterative Task Solving):LLMs逐步与工具进行交互,基于工具的反馈不断调整计划和任务,直至问题解决。这种方式允许LLMs在工具调用中进行不断的调整,逐步优化解决方案。
关键工作
近年来,多个代表性工作在不同方面推进了工具学习的发展,如ReACT、Toolformer、HuggingGPT等模型提出了不同的工具集成方式,从而显著提升了LLMs在多种自然语言处理任务中的表现。方法文章梳理的很多,可以见下图:
方法论
研究方法
任务规划
示例输入输出如下:
指令提示:你当前处于任务规划阶段。你收到一个需要多步操作和推理的用户查询。你将把用户的查询分解为多个子问题,并且只需在分解后输出这些子问题。确保通过最少数量的子问题全面涵盖原始问题。
用户问题:我想知道5盎司黄金加上100万股亚马逊(AMZN)股票的价值,以人民币(CNY)为单位。
输出:
1.黄金每盎司的当前价格是多少(以美元计)?
2.亚马逊(AMZN)股票的当前每股价格是多少(以美元计)?
3.美元(USD)和人民币(CNY)之间的当前汇率是多少?
任务规划的方法分为无调优方法和基于调优的方法:
无调优方法利用LLMs的内在能力,通过提示词实现任务规划。这些方法包括:
- 少样本或零样本提示:通过设计提示词进行任务分解。
- ART:通过从任务库中检索示例来生成提示。
- RestGPT:使用逐步细化的在线规划方法,迭代进行任务分解。
- HuggingGPT:结合规范指令与基于演示的解析进行任务规划。
- PLUTO 等其他方法通过生成假设并进行反复改进来优化任务规划。
- 基于调优的方法通过对LLMs进行微调,以增强其任务规划和工具调用能力。主要包括:
- Toolformer:通过微调GPT-J,使其能够有效利用工具。
- TaskMatrix.AI:通过人类反馈强化学习提升基础模型。
- TPTU-v2 和其他方法通过在大规模数据集上对模型进行进一步微调,以提高其对复杂任务的规划能力。
尽管当前已有多种方法来增强任务规划能力,但在面对复杂问题时直接生成完美计划仍然具有挑战性,尤其是在如何有效利用工具反馈来不断改进任务规划方面,未来还需进一步探索。
工具选择
示例输入输出如下:
指令提示:你当前处于工具选择阶段。你获得了一些候选工具,这些工具可能用于解决子问题。在候选工具中,选择一组相关工具来帮助解决子问题。
子问题1:当前黄金每盎司的价格是多少(以美元计)?
候选工具:
1.金属价格汇率 API:该API端点将返回每60秒更新一次的实时汇率数据。
2.Medium:获取来自Medium的官方新闻。
3.加密货币市场:最近发布的加密货币相关视频。
输出:
1.金属价格汇率 API:该API端点将返回每60秒更新一次的实时汇率数据。
子问题2:... 输出:...
工具选择的方法可以分为基于检索的工具选择和基于LLMs的工具选择。
在实际应用中,工具库通常包含大量的工具,因此需要一个高效的工具检索系统来筛选出与用户查询最相关的前K个工具,供LLMs进一步选择。基于检索的方法分为两类:
- 基于术语的方法(Term-based Methods):如TF-IDF和BM25,这些方法通过精确匹配查询和工具描述中的术语来进行检索。
- 基于语义的方法(Semantic-based Methods):使用神经网络学习查询和工具描述之间的语义关系,从而计算它们的语义相似性。最近的研究还提出了一些更高效的检索方法,如CRAFT、ToolRerank等,通过结合工具的层次结构来提高检索效果。
在工具数量有限或通过工具检索得到候选工具后,可以将这些工具的描述与用户查询一起输入到LLMs中,让LLMs从中选择最合适的工具。基于LLMs的工具选择方法可以分为:
- 无调优方法(Tuning-free Methods):通过提示设计或其他机制引导LLMs进行工具选择。例如,ReACT方法将推理与动作相结合,通过反馈不断改进工具选择。
- 基于调优的方法(Tuning-based Methods):通过在工具学习数据集上对LLMs进行微调,使其更好地掌握工具的使用。例如,Toolbench通过微调模型来提高工具使用效果,而ToolVerifier则通过对比工具选择的候选项来进行自我验证。
工具选择阶段的核心是确保为每个子任务选择合适的工具,以便于高效地解决问题。基于检索的方法适合处理大型工具库,而基于LLMs的方法则通过推理和学习提升工具选择的准确性。
工具调用
示例输入输出如下:
指令提示:你当前处于工具调用阶段。你获得了一些可以用于解决子问题的选定工具。你的目标是根据工具描述,从子问题中提取所需的参数。输出格式如下:{参数名称: 参数, ... , 参数名称: 参数}
子问题1:当前黄金每盎司的价格是多少(以美元计)?
选定工具:
- 工具名称:金属价格汇率 API
- 工具描述:最新的API端点将返回每60秒更新一次的实时汇率数据。
- 所需参数:
- [名称: symbols,类型: 字符串,描述: 输入一个逗号分隔的货币代码或金属代码列表以限制输出代码。]
- [名称: base,类型: 字符串,描述: 输入你希望作为基础货币的三字母货币代码或金属代码。]
输出: {symbols: "XAU", base: "USD"}
工具调用的方法可以分为无调优方法和基于调优的方法:
无调优方法主要通过少样本提示或规则引导LLMs进行参数提取和工具调用:
- Reverse Chain:通过反向思维先选择最终的工具,然后提取必要参数,如果缺少参数,则选择额外工具完成任务。
- EasyTool:通过让ChatGPT重新撰写工具描述,使工具功能更简洁易懂,从而提高LLMs对工具的理解。
- ConAgents:引入一个多代理协作框架,其中一个执行代理专门负责参数提取和工具调用。
一些研究通过对LLMs进行微调,提升其工具调用的能力:
- GPT4Tools:通过LoRA优化技术微调开源LLMs,以增强其工具使用能力。
- ToolkenGPT:使用特殊的标记符“toolkens”无缝调用工具,当预测到一个toolken时进入特殊模式来生成输入参数,并将输出结果整合到生成过程中。
- Themis 和 STE:通过引入试错、想象和记忆等机制,动态调用工具,提高工具使用的准确性和可解释性。
无调优方法和基于调优的方法各有优劣。无调优方法灵活且无需构建专门数据集,但找到合适的提示仍是一个挑战;基于调优的方法可以通过修改模型参数来提高调用准确性,但在处理新工具时表现欠佳。
响应生成
示例输入输出如下:
指令提示:你当前处于响应生成阶段。你获得了一些工具输出,这些输出可以用于解决子任务。你的目标是基于工具的结果和你内部的知识,为用户问题生成一个响应。
用户问题:我想知道5盎司黄金加上100万股亚马逊(AMZN)股票的价值,以人民币(CNY)为单位。
工具调用返回的结果:
- 亚马逊股票价格为130美元
- XAU(黄金)美元价格为1919.7605807522993
- 美元兑人民币汇率为7.24
输出: 总价值以人民币计:总价值 = 黄金的人民币价值 + 股票的人民币价值 = 69,495.87 + 941,200,000 = 941,269,495.87 人民币。因此,5盎司黄金和100万股亚马逊股票的总价值约为941,269,495.87人民币。
响应生成的方法可以分为直接插入方法和信息整合方法:
直接插入方法
这种方法将工具输出直接插入到生成的响应中。例如,如果用户问题是“今天的天气如何?”,模型可能生成“今天是 Weather()”。然后,工具输出(如“今天是多云”)会替换掉占位符。这种方法简单直接,但在处理复杂或多样化的工具输出时可能会影响用户体验。
信息整合方法
大多数方法会将工具的输出作为输入整合到LLMs的上下文中,由LLMs生成最终的回答。由于LLMs的上下文长度有限,某些工具的输出可能无法完全被包含,因此出现了一些处理较长工具输出的方法:
- RestGPT:利用预定义的模式简化工具的冗长输出,只保留关键信息。
- ToolLLaMA:通过截断的方式处理过长的输出,但可能会丢失部分必要信息。
- ReCOMP:开发了压缩器来将长输出压缩为更简洁的形式,保留最有用的信息。
- ConAgents:提出了一种无模式方法,使观察代理能够根据指令动态生成函数,适应提取目标输出。
直接插入方法适用于简单的工具输出,而信息整合方法更强大,能够生成更好的响应并提高用户体验。
基线
通用基准
通用基准用于评估LLMs在工具学习的不同阶段(如任务规划、工具选择、工具调用和响应生成)中的表现。这些基准通常包含大量工具和实例,例如:
- API-Bank:包含73种工具,用于评估各个阶段的工具学习能力。
- ToolBench1 和 ToolBench2:基于公开的API进行工具调用评估。
- MetaTool 和 TaskBench:用于评估任务规划和工具选择阶段,涵盖多种工具和实例。
这些基准侧重于评估LLMs在不同阶段的工具使用意识、工具选择能力以及工具调用的准确性。
其他基准
这些基准专注于特定任务类型,例如安全性、多模态、对话等,评估LLMs在不同场景下的工具使用效果,包括:
- ToolQA:用于问答场景的工具评估。
- ToolTalk:用于对话中的工具调用能力评估。
- VIoT 和 m&m’s:用于多模态工具学习的评估,侧重于模型处理不同类型输入的能力。
- ToolSword 和 InjecAgent:用于评估LLMs在安全性和工具学习稳定性方面的表现。
详情见下图:
评估指标
任务规划
任务规划阶段主要评估模型在工具使用意识和任务分解方面的表现,使用的评估指标包括:
- 工具使用意识(Tool Usage Awareness):衡量模型能否识别任务中需要使用工具的情形。
- 通过率(Pass Rate):评估模型在任务规划中的正确性和完成率。
- 准确性(Accuracy):用于评估模型任务规划的整体准确性。
工具选择
工具选择阶段评估模型在从大量工具中筛选出适用工具的能力,使用的评估指标包括:
- 召回率(Recall):评估模型能否有效地选择出所有相关的工具。
- 归一化折现累积增益(NDCG):用于评估模型选择工具时结果的排序质量。
- 完整性(COMP):衡量模型在工具选择过程中是否选择了所有必要的工具。
工具调用
工具调用阶段评估模型能否正确调用工具、提取参数并获得所需结果,使用的评估指标包括:
- 符合规定性(Consistent with Stipulations):评估工具调用是否遵循了工具的使用规范,确保模型输入的参数正确且符合工具要求。
响应生成
响应生成阶段评估模型如何结合工具的输出与内部知识生成最终答案,使用的评估指标包括:
- BLEU:衡量生成响应与标准答案在词汇上的相似度。
- ROUGE-L:评估生成的响应与标准答案在句子级别的重叠度。
- 精确匹配(Exact Match):用于评估生成的响应是否与预期的标准答案完全一致。
结论
总结
在本文中,作者回顾了大约 100 篇论文,对LLMs工具学习进行了全面的调查。作者首先简要介绍“工具”和“工具学习”的概念,为初学者提供基础概述和必要的背景知识。然后,作者阐明工具集成和工具学习范式的好处,详细介绍了六个具体方面,以强调为什么工具学习对于LLMs至关重要。此外,为了更详细地介绍如何进行工具学习,作者将工具学习过程分为四个不同的阶段:任务规划、工具选择、工具调用和响应生成。每个阶段都进行了深入讨论,整合了最新的研究进展,以提供对每个步骤的透彻理解。此外,作者还对特定于工具学习这些阶段的现有基准和评估方法进行了总结和分类,提供了评估协议的结构化概述。
未来与挑战
主要挑战
- 高延迟性(High Latency in Tool Learning): 当前工具学习系统往往存在调用工具过程中的高延迟,尤其在复杂任务中涉及多次工具交互时,延迟问题更为明显。这种延迟会影响模型的响应效率和用户体验。
- 严格且全面的评估(Rigorous and Comprehensive Evaluation): 现有的评估方法缺乏统一性,未能覆盖工具学习的各个方面。工具学习需要一个全面且严格的评估框架,以确保能够系统地衡量工具学习各个阶段的表现。
- 全面且易获取的工具(Comprehensive and Accessible Tools): 工具学习的发展需要全面且易于访问的工具集合,以便训练和评估模型。然而,现有的工具集往往不够丰富,工具的获取也存在障碍,限制了工具学习模型的训练和优化。
- 安全且稳健的工具学习(Safe and Robust Tool Learning): 工具学习中涉及安全性和稳健性的问题,例如如何保证工具调用的安全性,如何应对工具调用失败或恶意输入。现有研究在安全性和稳健性方面还不够完善。
- 统一的工具学习框架(Unified Tool Learning Framework): 工具学习的各个阶段(如任务规划、工具选择、工具调用等)目前缺乏一个统一的框架来进行端到端的训练和评估,这影响了工具学习整体的优化和发展。
- 真实世界的工具学习基准(Real-World Benchmark for Tool Learning): 现有的工具学习基准通常是人工设计的,缺乏真实世界中的复杂性和多样性,难以全面评估模型在真实环境中的表现。因此,需要设计更加接近真实世界的工具学习基准。
- 多模态工具学习(Tool Learning with Multi-Modal): 随着用户查询的多样化,LLMs需要处理多模态输入(如文本、图像、语音等)。多模态工具学习的研究目前相对薄弱,还需进一步探索如何有效地将多模态工具集成到工具学习中。
未来研究方向
- 降低工具调用延迟,提高模型响应速度。
- 开发全面的评估体系,以系统衡量工具学习各个阶段的表现。
- 构建丰富且易于获取的工具集合,以支持更好的模型训练和评估。
- 提高工具学习的安全性和稳健性,减少调用失败或不当使用的风险。
- 构建统一的工具学习框架,实现工具学习的端到端优化。
- 设计真实世界场景的基准,确保模型能应对真实世界中的复杂任务。
- 深入研究多模态工具学习,提升LLMs在处理不同类型输入上的能力。
参考资料
- 论文
- github