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

概述

背景信息

近年来,基于大型语言模型(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.rhkb.cn/news/455186.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

stable-zero123模型构建指南

一、介绍 stabilityai出品,能够对有简单背景的物体进行三维视角图片的生成,简单来说也就是通过调整变换观察的视角生成对应视角的图片。 本项目通过comfyui实现。 二、容器构建说明 1. 部署ComfyUI (1)使用命令克隆ComfyUI g…

【设计模式系列】命令模式

目录 一、什么是命令模式 二、命令模式的角色 三、命令模式的典型应用场景 四、命令模式在Runnable中的应用 一、什么是命令模式 命令模式(Command Pattern)是一种行为设计模式,它将一个请求或简单操作封装为一个对象。这个模式提供了一种…

Axure垂直菜单展开与折叠

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! 课程主题:Axure垂直菜单展开与折叠 主要内容:垂直菜单单击实现展开/折叠,点击各菜单项显示选中效果 应用场景:后台菜单设…

Python 应用可观测重磅上线:解决 LLM 应用落地的“最后一公里”问题

作者:彦鸿 背景 随着 LLM(大语言模型)技术的不断成熟和应用场景的不断拓展,越来越多的企业开始将 LLM 技术纳入自己的产品和服务中。LLM 在自然语言处理方面表现出令人印象深刻的能力。然而,其内部机制仍然不明确&am…

Apache Seata 新版本集成了 RocketMQ 事务消息

大家好,我是君哥。 Apache Seata 是一款高性能、简单易用的分布式事务中间件,它包含 AT、TCC、SAGA 和 XA 四种模式。 在最近发布的新版本中,Apache Seata 引入了 RocketMQ 中间件,并且跟 RocketMQ 的事务消息配合使用。今天我们…

界面控件DevExtreme中文教程 - 如何与Amazon S3和Azure Blob存储集成?

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

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

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

1024程序员节 | QT进阶学习——如何通过QT连接云服务器的MySQL数据库并进行数据库操作 和 数据表的增删改查

目录 引出连接本地MySQL1.首先下载MySQL的ODBC驱动2.启动运行,创建用户数据源补充:ANSI 版和 Unicode 版 3.qt代码连接 如何连接华为云服务器中的MySQL1.在Centos中安装Linux版本的ODBC驱动2.在ODBC连接管理器中建立和华为云的链接3.qt代码通过ODBC连接华…

【微软商店平台】如何将exe打包上传微软商店

打开微软合作者中心:https://partner.microsoft.com/en-us/dashboard/home点击App and Games板块可以创建项目。 3. 重新生成包含私钥的自签名证书 运行以下命令,确保生成的证书包含私钥: New-SelfSignedCertificate -Type CodeSigning -Su…

【Java设计模式】1-15章

第1章 内容介绍 1.1 Java设计模式内容介绍 1.1.1 先看几个经典的面试题 1.1.2 设计模式的重要性 1.2 课程亮点和授课方式 第2章 设计模式七大原则 2.1 设计模式的目的 2.2 设计模式七大原则 2.3 ①单一职责原则 方案1 package com.atguigu.principle.singleresponsibili…

【Nuvoton干货分享】开发应用篇 4 -- 8bit MCU Flash 操作

我们在进行实际开发设计中,难免需要进行数据存储,早期很多都是外接EEPROM来进行设计,但是需要增加成本。其实芯片内部的Flash也是可以当成数据存储空间的。本章节主要介绍新唐的8位机如何进行常量数据的存储操作。 一、存储空间划分 我这边…

力扣hot100--DFS/BFS

DFS/BFS 1. 79. 单词搜索 中等 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相…

2024 睿抗机器人开发者大赛(RAICOM)-【网络安全】CTF 部分WP

文章目录 一、前言二、MICS你是黑客么循环的压缩包Goodtime 三、WEBpy 四、Crypto变异凯撒RSAcrypto3 一、前言 WP不完整,仅供参考! 除WEB,RE,PWN外,其余附件均已打包完毕 也是一个对MISC比较友好的一个比赛~ 123网…

鲸鱼优化算法(Whale Optimization Algorithm, WOA)原理与MATLAB例程

鲸鱼优化算法(Whale Optimization Algorithm, WOA)是一种基于鲸鱼捕食行为的智能优化算法。它模拟了座头鲸在狩猎时的“气泡网”捕食策略。 文章目录 1.适应度函数2. 更新公式2.1 突袭行为2.2 螺旋更新3.线性递减参数4. 边界处理 MATLAB 实现示例代码说明…

C语言程序设计:现代设计方法习题笔记《chapter3》

第一题 ​ 代码示例&#xff1a; #include<stdio.h>int main() {printf("Enter a date&#xff08;mm/dd/yyyy&#xff09;: ");int day, month, year;scanf_s("%d/%d/%d", &month, &day, &year);printf("%04d%02d%02d", yea…

一款好用的搜索软件——everthing(搜索比文件资源管理器快)

everthing官网链接 在官网选择下载 1.下载后双击打开 2.点击OK&#xff08;需要其他语言自己选择&#xff09; 3.选择安装位置&#xff08;路径最好别带中文和空格&#xff09; 继续点击下一步 4. 点击下一步 5.继续点击安装 6.然后就完成了 7.点击打开然后就可以搜索了

Elastic Stack简介

本文内容参考了田雪松老师编著的《Elastic Stack应用宝典》 从ELK到Elastic Stack ELK是三个单词的首字母缩写&#xff0c;即Elasticsearch、Logstash和Kibana。 Elasticsearch用于数据存储与检索Logstash用于数据传输与清洗Kibana则用于数据可视化等领域 Elasticsearch的第…

AnaTraf | 网络性能监控系统NPM:提升网络性能与业务连续性

AnaTraf 网络性能监控系统NPM | 全流量回溯分析 | 网络故障排除工具 网络系统非常复杂&#xff0c;管理和维护它们也越来越具有挑战性。为了确保网络性能和业务的持续稳定运行&#xff0c;IT运维团队需要对网络进行实时监控、优化和快速排查故障。本文将围绕网络性能监控系统&…

raidrive 访问搭建的ftp服务报错超时的情况

尝试了很久&#xff0c;包括改用户权限和密码&#xff0c;后面根据ftp日志&#xff0c;查到用户登录是正常的 /var/log/vsftpd.log 就知道&#xff0c;不是密码问题也不是服务器端的问题&#xff0c;通过多次尝试发现是被动模式的问题&#xff0c;被动模式会通过其他端口进行交…

ChatGPT实现旅游推荐微信小程序

随着旅游行业的快速发展&#xff0c;个性化推荐已成为提升用户体验的重要手段。通过AI技术&#xff0c;提供一个智能旅游推荐小程序&#xff0c;使用户能够轻松获取定制化的旅行建议。 项目概述 项目目标 开发一个AI旅游推荐小程序&#xff0c;基于用户输入的旅行偏好&#…