【LLM之Agent】《Tool Learning with Large Language Models: A Survey》论文阅读笔记

news2024/11/29 0:50:27

概述

背景信息

近年来,基于大型语言模型(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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2222239.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸿蒙启航 | 搭建 HarmonyOS 开发环境来个 Hello World

2024年10月22日,华为公司正式发布全新一代操作系统鸿蒙Next(HarmonyOS NEXT),此次发布标志着华为在操作系统领域的重大进展,成为继苹果iOS和谷歌安卓之后的全球第三大移动操作系统。以下是鸿蒙Next的一些关键特点&…

无人机加速度计算法!

一、加速度计的工作原理 内部构造:加速度计内部通常包含一个微小的质量块,该质量块通过弹簧或其他弹性元件与固定基准相连。 工作原理:当无人机受到加速度作用时,质量块会相对于固定基准产生位移。这个位移量可以通过相应的传感…

在示波器上观察到李萨如图形应如何调节

在示波器上观察李萨如图形通常用于分析两个信号之间的频率和相位关系。若要清晰地显示和调节李萨如图形,可以按照以下步骤进行: 1. 连接信号 信号源:将两个待测信号分别接入示波器的CH1和CH2通道。 2. 设置示波器模式为X-Y模式 在示波器菜…

【状态机DP】【记忆化搜索1:1翻译递归空间优化】力扣2771. 构造最长非递减子数组

给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,长度均为 n 。 让我们定义另一个下标从 0 开始、长度为 n 的整数数组,nums3 。对于范围 [0, n - 1] 的每个下标 i ,你可以将 nums1[i] 或 nums2[i] 的值赋给 nums3[i] 。 你的任务是使用最…

LabVIEW提高开发效率技巧----离线调试

离线调试是LabVIEW开发中一项重要的技巧,通过使用Simulate Signal Express VI生成虚拟数据,开发者能够有效减少对实际硬件的依赖,加速开发过程。这种方法不仅可以提高开发效率,还能降低成本,增强系统的灵活性。 ​ 离…

网安加·百家讲坛 | 徐一丁:金融机构网络安全合规浅析

作者简介:徐一丁,北京小西牛等保软件有限公司解决方案部总监,网络安全高级顾问。2000年开始从事网络安全工作,主要领域为网络安全法规标准研究、金融行业安全咨询与解决方案设计、信息科技风险管理评估等。对国家网络安全法规标准…

深度学习 之 模型部署 使用Flask和PyTorch构建图像分类Web服务

引言 随着深度学习的发展,图像分类已成为一项基础的技术,被广泛应用于各种场景之中。本文将介绍如何使用Flask框架和PyTorch库来构建一个简单的图像分类Web服务。通过这个服务,用户可以通过HTTP POST请求上传花朵图片,然后由后端…

【Qt】QTableView添加下拉框过滤条件

实现通过带复选框的下拉框来为表格添加过滤条件 带复选框的下拉框 .h文件 #pragma once #include <QCheckBox> #include <QComboBox> #include <QEvent> #include <QLineEdit> #include <QListWidget>class TableComboBox : public QComboBox …

前端构建工具vite的优势

1. 极速冷启动 Vite 使用原生 ES 模块 (ESM) 在开发环境下进行工作。相比于传统构建工具需要打包所有的文件&#xff0c;Vite 只在浏览器请求模块时动态加载所需的文件。无打包冷启动&#xff1a;无需预先打包&#xff0c;项目启动非常快&#xff0c;尤其对于大型项目效果更明…

顺序表(一)(数据结构)

一. 线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列 。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;是人为想象出来的数…

HCIP--1

同一区域内的OSPF路由器拥有一致的 LSDB, 在区域内&#xff0c;OSPF 采用 SPF算法计算路由一个区域太多路由器&#xff0c;硬件资源跟不上&#xff0c;所以多划分区域 OSPF 路由计算原理 1. 区域内路由计算 LSA 在OSPF中&#xff0c;每个路由器生成 LSA&#xff0c;用于告诉…

【部署篇】RabbitMq-03集群模式部署

一、准备主机 准备3台主机用于rabbitmq部署&#xff0c;文章中是在centos7上安装部署rabbitmq3.8通过文章中介绍的方式可以同样在centos8、centos9上部署&#xff0c;只需下载对应的版本进行相同的操作。 主机IP角色说明192.168.128.31种子节点192.168.128.32普通节点192.16…

Matlab学习01-矩阵

目录 一&#xff0c;矩阵的创建 1&#xff0c;直接输入法创建矩阵 2&#xff0c;利用M文件创建矩阵 3&#xff0c;利用其它文本编辑器创建矩阵 二&#xff0c;矩阵的拼接 1&#xff0c;基本拼接 1&#xff09; 水平方向的拼接 2&#xff09;垂直方向的拼接 3&#xf…

Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Linux系统基础-进程间通信(5)_模拟实现命名管道和共享内存 收录于专栏[Linux学习] 本专栏旨在分享学习Linux的一点学习笔记&#xff0c;欢迎大家在评论区交流讨…

LeetCode--删除并获得点数--动态规划

一、题目解析 二、算法原理 根据题意&#xff0c;在选择了元素 x 后&#xff0c;该元素以及所有等于 x−1 或 x1 的元素会从数组中删去。若还有多个值为 x 的元素&#xff0c;由于所有等于 x−1 或 x1 的元素已经被删除&#xff0c;我们可以直接删除 x 并获得其点数。因此若选…

Win10+MinGW13.1.0编译Qt5.15.15

安装windows SDK、python、ruby、cmake、Perl[可选]安装MySQL解压qt-everywhere-opensource-src-5.15.15.zip&#xff08;注&#xff1a;不要使用qt-everywhere-opensource-src-5.15.15.tar.xz&#xff09;修改源代码 E:\qt-everywhere-src-5.15.15\qtbase\src\3rdparty\angle\…

hive数据库,表操作

1.创建; create database if not exists myhive; use myhive; 2.查看: 查看数据库详细信息:desc database myhive; 默认数据库的存放路径是 HDFS 的&#xff1a; /user/hive/warehouse 内 补充:创建数据库并指定 hdfs 存储位置:create database myhive2 location /myhive2 3.…

<项目代码>YOLOv8路面垃圾识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…

Codeforces Round 881 (Div. 3)(A~F1题解)

这场比赛可能是因为比较老吧&#xff0c;我感觉很轻松&#xff0c;就是第五个卡了一下&#xff0c;看错题了&#xff0c;原本应该是严格大于的&#xff0c;从而导致代码一直出现bug&#xff0c;在1小时20分钟才解决 A. Sasha and Array Coloring 题意&#xff1a;就是说给你n个…

提权 | Windows系统

文章目录 cmd提权meterpreter提权getsystemsteal_tokenmigrate 令牌窃取(MS16-075)烂土豆提权步骤烂土豆提权原理 sc命令提权抓本地密码提权其他工具pr工具 内核提权WindowsVulScan cmd提权 前言&#xff1a;我们getshell一个用windows部署的网站后&#xff0c;通过蚁剑或者其…