ToolGen 是一个将工具知识直接集成到大型语言模型(LLM)中的框架,通过将每个工具表示为独特的标记,实现无缝的工具调用和语言生成。该项目由 Renxi Wang 等人开发,旨在提升工具检索和任务完成的性能。
- 工具标记化:将工具转换为独特的标记,便于模型调用。
- 工具调用生成:模型能够生成工具调用和参数。
- 任务完成:通过工具调用实现复杂任务的自动化。
- 数据集支持:提供丰富的数据集以支持模型训练和评估。
摘要
随着大语言模型(LLMs)的发展,其无法通过直接与外部工具交互来自主执行任务的局限性变得尤为明显。传统方法依赖将工具描述作为上下文输入,这受限于上下文长度,且需要单独的检索机制,往往效率低下。我们提出了ToolGen,一种通过将每个工具表示为唯一的 Token ,直接将工具知识集成到LLM参数中的范式。这使得LLM能够将工具调用和参数作为其下一个 Token 的预测能力的一部分,从而将工具调用与语言生成无缝结合。我们的框架允许LLM在无需额外检索步骤的情况下访问和使用大量工具,显著提升了性能和可扩展性。基于超过47,000个工具的实验结果表明,ToolGen不仅在工具检索和自主任务完成方面取得了卓越的效果,还为新一代能够适应各种领域工具的AI代理奠定了基础。通过从根本上将工具检索转变为生成式过程,ToolGen为更灵活、高效和自主的AI系统铺平了道路。ToolGen支持端到端的工具学习,并为与链式思维和强化学习等其他先进技术的集成提供了机会,从而扩展了LLM的实用功能。
1 引言
大语言模型(LLMs)在处理外部输入、执行操作和自主完成任务方面展示了令人印象深刻的能力(Gravitas, 2023; Qin等, 2023; Yao等, 2023; Shinn等, 2023; Wu等, 2024a; Liu等, 2024)。在各种使LLMs与外部世界交互的方法中,通过API进行工具调用已成为最常用和有效的方法之一。然而,随着工具数量增加到数万级,现有的工具检索和执行方法难以高效扩展。
在实际场景中,一种常见的方法是将工具检索与工具执行结合起来,即检索模型首先筛选出相关工具,再交给LLM进行最终选择和执行(Qin等, 2023; Patil等, 2023)。虽然这种组合方法在处理大量工具时有所帮助,但也存在明显的局限:检索模型通常依赖小型编码器,难以全面捕捉复杂工具和查询的语义,而将检索与执行分离可能会导致任务完成过程中的效率低下和阶段性偏差。
此外,LLMs及其分词器主要在自然语言数据上进行预训练(Brown等, 2020; Touvron等, 2023),其自身对工具相关功能的内在知识有限。这种知识差距导致了性能不佳,尤其是在LLM必须依赖检索的工具描述进行决策时。
在本研究中,我们引入ToolGen,一种将现实工具知识直接集成到LLM参数中并将工具检索与执行转变为统一生成任务的新框架。具体而言,ToolGen通过扩展LLM词汇,将工具表示为特定的虚拟Token,并训练模型在对话上下文中生成这些Token,从而更有效地利用LLM的预存知识来实现工具检索和调用。
具体来说,每个工具在LLM词汇中表示为一个独特的虚拟Token。在预训练LLM的基础上,ToolGen的训练过程包括三个阶段:工具记忆、检索训练和代理训练。在工具记忆阶段,模型将每个虚拟工具Token与其文档关联。在检索训练期间,模型学习基于用户查询生成相关的工具Token。最后,在端到端的代理调优中,模型被训练为自主代理,生成计划和工具,并确定完成任务的适当参数。通过调用工具并从外部环境获取反馈,模型可以高效而一体化地处理用户查询。图 1 显示了ToolGen与传统范式的对比。
我们在两个场景中验证了ToolGen的优越性:一个工具检索任务中,模型可以为给定查询检索到正确的工具;另一个基于LLM的代理任务中,模型完成了涉及实际API调用的复杂任务。利用包含47,000个现实工具的数据集,ToolGen的表现与领先的工具检索方法相当,但成本显著降低且效率更高。此外,它超越了传统的工具学习范式,突显了其在推进更有效的工具使用系统中的潜力。
图 1:ToolGen与以往基于检索的方法的对比。以往方法通过相似性匹配的方式使用检索器来检索相关工具,然后将这些工具放入LLM的提示中进行选择。ToolGen可以通过直接生成工具Token来实现工具检索,并且可以在不依赖任何外部检索器的情况下完成任务。
ToolGen 代表了一种工具交互的新范式,将检索和生成融合为一个统一的模型。这一创新为新一代能够适应各种领域工具的 AI 代理奠定了基础。此外,ToolGen 为将链式思维推理和强化学习等先进技术与工具使用的统一生成方式相结合创造了新机遇,扩展了大语言模型在实际应用中的能力。
总结来说,我们的贡献包括:
- 提出了一种新颖的框架 ToolGen,它通过虚拟 Token 将工具检索和执行整合到大语言模型的生成过程中。
- 设计了一个三阶段的训练过程,使 ToolGen 能够在工具检索和 API 调用方面实现高效和可扩展性。
- 实验验证表明,ToolGen 在大规模工具库中比现有最佳工具检索方法表现出相当的性能,但成本更低、效率更高,并且超越了传统的工具学习范式。
2 相关工作
2.1 工具检索
工具检索在大语言模型代理的实际任务执行中至关重要,其中工具通常由其文档描述。传统方法如稀疏检索(例如 BM25 (Robertson et al., 2009))和密集检索(例如 DPR (Karpukhin et al., 2020)、ANCE (Xiong et al., 2021))依赖于大型文档索引和外部模块,导致效率低下且难以在端到端代理框架中优化。一些研究探讨了替代方法。例如,Chen 等人 (2024b) 重写查询并提取其意图,面向无监督检索设置,尽管结果不如有监督方法。Xu 等人 (2024) 提出一种方法,通过基于工具反馈迭代地优化查询,提高了检索精度但增加了延迟。
近来,生成式检索成为一种有前景的新范式,模型直接生成相关的文档标识符,而非依赖传统检索机制 (Wang et al., 2022; Sun et al., 2023; Kishore et al., 2023; Mehta et al., 2023; Chen et al., 2023b)。受到此启发,ToolGen 将每个工具表示为一个唯一的 Token,使工具检索和调用可以作为生成任务来处理。除了简化检索外,这一设计还能与其他大语言模型和基于大语言模型的代理功能(如链式思维推理 (Wei et al., 2023)和 ReAct (Yao et al., 2023))平滑集成。通过将检索和任务执行整合到单一的大语言模型代理中,它降低了延迟和计算开销,提高了任务完成的效率和效果。
2.2 带有工具调用的大语言模型代理
大语言模型在掌握各种任务所需的工具方面展现了很强的潜力。然而,大多数现有研究集中在有限的一组动作上 (Chen et al., 2023a; Zeng et al., 2023; Yin et al., 2024; Wang et al., 2024)。例如,Toolformer (Schick et al., 2023) 微调了 GPT-J 以处理仅五种工具(如计算器)。虽然这种方法在狭窄任务中效果良好,但在包含大量动作空间的现实场景中存在困难。ToolBench (Qin et al., 2023) 扩展了研究范围,引入了超过 16000 种工具,强调了在复杂环境中进行工具选择的挑战。
为执行工具选择,当前方法通常采用一个检索-生成流水线,大语言模型先检索相关工具,然后进行利用 (Patil et al., 2023; Qin et al., 2023)。然而,流水线方法面临两个主要问题:检索步骤的错误传递,以及大语言模型难以通过简单的提示完全理解和使用工具。
为缓解这些问题,研究人员尝试将动作表示为 Token,将动作预测转化为生成任务。例如,RT2 (Brohan et al., 2023) 生成代表机器人动作的 Token,Self-RAG (Asai et al., 2023) 使用特殊 Token 决定何时检索文档。ToolkenGPT (Hao et al., 2023) 引入了工具特定的 Token 以触发工具使用,这一概念最接近我们的方法。
我们的方法与 ToolkenGPT 存在显著不同。首先,我们专注于需要灵活参数用于复杂任务的真实工具(例如,YouTube 频道搜索),而 ToolkenGPT 限于较简单、输入较少的工具(例如,包含两个数的数学函数)。此外,ToolkenGPT 依赖于少样本提示,而 ToolGen 通过全参数微调将工具知识直接整合到大语言模型中,使其能够自主检索和执行任务。最后,我们的实验涉及更大规模的工具集——47000 个工具,相较于 ToolkenGPT 的 13–300 个。
其他研究如 ToolPlanner (Wu et al., 2024b) 和 AutoACT (Qiao et al., 2024) 使用了强化学习或多代理系统来增强工具学习或任务完成 (Qiao et al., 2024; Liu et al., 2023; Shen et al., 2024; Chen et al., 2024a)。我们不将这些方法与我们的模型进行对比,原因有二:(1) 这些工作大多依赖反馈机制,例如 Reflection (Shinn et al., 2023) 或奖励模型,这类似于 ToolBench 的评估设计,其中大语言模型作为评估器且无法访问真实答案。然而,这不是我们研究的重点,我们的端到端实验不依赖于此类反馈机制。 (2) 我们的方法与这些方法不冲突,反而可以集成。对这种集成的探索留待未来研究。
3 ToolGen
在本节中,我们首先介绍论文中使用的符号表示。然后,我们详细描述了 ToolGen 的具体方法,包括工具虚拟化、工具记忆、检索训练和端到端代理调优,如图 2 所示。最后,我们介绍了我们的推理方法。
图 2: ToolGen 框架示意图。在工具虚拟化阶段,工具被映射到虚拟 Token。在接下来的三阶段训练中,ToolGen 首先通过工具文档预测工具 Token 来记忆工具。接着通过从查询中预测工具 Token 来学习检索工具。最后,管道数据 (即轨迹) 被用于微调最后一阶段的检索模型,生成 ToolGen Agent 模型。
3.1 预备知识
对于给定的用户查询 q,工具学习的目标是通过使用来自大型工具集 D={d1,d2,…,dN} 的工具来解决 q,其中 |D|=N 是一个大数量,这使得在大语言模型环境中包含 D 中的所有工具变得不切实际。因此,当前研究通常使用检索器 R 从 D 中检索 k 个相关工具,记为 Dk,R={dr1,dr2,…,drk}=R(q,k,D),其中 |Dk,R|≪N。最终的提示词是 q 和 Dk,R 的串联,记为 Prompt=[q,Dk,R]。为了完成一个任务 (查询) ,基于大语言模型的代理通常采用四阶段迭代 (Qu 等人, 2024 ):生成一个计划 pi,选择工具 dsi,确定工具参数 ci,并从工具反馈 fi 收集信息。我们将这些步骤记为第 i 次迭代的 pi,dsi,ci,fi。模型将持续迭代这些步骤,直到任务完成,此时生成最终答案 a。整个轨迹可以表示为 Traj=[Prompt,(p1,ds1,c1,f1),…,(pt,dst,ct,ft),a]=[q,R(q,D),(p1,ds1,c1,f1),…,(pt,dst,ct,ft),a]。这种迭代方法允许模型在每一步根据收到的反馈动态调整和完善其操作,从而提高其完成复杂任务的性能。
3.2 工具虚拟化
在 ToolGen 中,我们通过一种称为原子索引的方法,将每个工具映射到一个唯一的新 Token,以实现工具虚拟化。在此方法中,通过扩展大语言模型的词汇表,为每个工具分配一个唯一的 Token。每个工具 Token 的嵌入初始化为其对应工具名称的平均嵌入,从而为每个工具提供了一个语义上有意义的起点。
形式上,Token 集定义为 T=Index(d)|∀d∈D,其中 Index 是将工具映射到 Token 的函数。我们证明,与其他索引方法 (例如语义和数字映射,讨论见 4.3 和 5.4 ) 相比,原子索引更为高效,并且能够减少幻觉现象。
3.3 工具记忆
在为工具分配了 Token 之后,大语言模型仍然缺乏对工具的任何知识。为了解决这一问题,我们通过使用工具描述作为输入和其对应的 Token 作为输出对其进行微调,将此过程称为工具记忆。我们使用以下损失函数:
ℒtool=∑d∈D−logpθ(Index(d)|ddoc) |
其中 θ 表示大语言模型参数,ddoc 表示工具描述。此步骤为大语言模型提供了工具和相关操作的基本知识。
3.4 检索训练
然后我们训练大语言模型将虚拟工具 Token (及其文档) 的隐藏空间与用户查询空间关联,从而使模型能够根据用户的查询生成正确的工具。为此,我们通过用户查询作为输入和对应工具 Token 作为输出来微调大语言模型:
ℒretrieval=∑q∈Q∑d∈Dq−logpθ′(Index(d)|q) |
其中 θ′ 表示工具记忆后的大语言模型参数,Q 是用户查询集,Dq 是与每个查询相关的工具集。该过程生成了 ToolGen 检索器,使其能够在给定用户查询时生成适当的工具 Token。
3.5 端到端代理调优
在检索训练后,大语言模型能够从查询中生成工具 Token。在最后阶段,我们使用代理任务完成轨迹微调模型。我们采用类似 Agent-Flan (Chen 等人, 2024c ) 的推理策略,我们的管道采用迭代过程,模型首先生成 Thought,然后生成对应的 Action Token。该 Token 用于获取工具文档,大语言模型利用该文档生成必要的参数。该过程不断迭代,直到模型生成“完成” Token 或达到最大回合数。生成的轨迹表示为 Traj=[q,(p1,Index(ds1),c1,f1),…,(pt,Index(dst),ct,ft),a]。在此结构中,不再需要关联工具。
3.6 推理
在推理过程中,大语言模型可能会生成超出预定义工具 Token 集的动作 Token。为防止这种情况,我们设计了一种限制束搜索生成方法,将输出 Token 限制在工具 Token 集中。我们将此限制束搜索应用于工具检索 (模型基于查询选择工具) 和端到端代理系统中,有效减少了动作生成步骤中的幻觉。详细分析见 5.4 。实现细节见附录 C 。
4 工具检索评估
4.1 实验设置
我们使用预训练的 Llama-3-8B 模型 (Dubey 等人,2024) 作为基础模型,其词汇量为 128,256。通过原子索引方法,在工具虚拟化过程中增加了 46,985 个 Token,最终词汇量达到 175,241。我们使用 Llama-3 聊天模板对模型进行微调,采用余弦学习率调度器并应用 3% 的预热步长。最大学习率为 4×10−5。所有模型都在 4×A100 GPU 上通过 Deepspeed ZeRO 3 (Rajbhandari 等人,2020) 进行训练。工具记忆训练了 8 轮,检索训练了 1 轮。
数据集
我们的实验基于 ToolBench,这是一个真实世界的工具基准,包含超过 16,000 个工具集合,每个集合包含多个 API,总共约 47,000 个独特的 API。每个 API 使用一个包含 API 名称、描述和调用参数的字典进行文档化。实际示例请见附录 A。我们将每个 API 视为一个操作,并将其映射为一个 Token。我们的检索和端到端代理调优数据从 ToolBench 的原始数据转换而来。详细信息见附录 G。尽管每个工具可能包含多个 API,为简化起见,本文将每个 API 统称为工具。
我们遵循 Qin 等人 (2023) 的数据划分方法,将 200,000 对 (查询,相关 API) 划分为三类:I1(单工具查询)、I2(类内多工具查询)和 I3(集合内多工具指令),分别包含 87,413、84,815 和 25,251 个实例。
基准方法
我们将 ToolGen 与以下基准进行比较:
- BM25:一种经典的基于 TF-IDF 的无监督检索方法,基于查询与文档的词语相似性进行检索。
- Embedding 相似度 (EmbSim):使用 OpenAI 的句子嵌入模型生成的句子嵌入;具体为我们的实验中使用的 text-embedding-3-large。
- Re-Invoke (Chen 等人,2024b):一种无监督检索方法,包含查询重写和文档扩展。
- IterFeedback (Xu 等人,2024):基于 BERT 的检索器,使用 gpt-3.5-turbo-0125 作为反馈模型,可进行最多 10 轮的迭代反馈。
- ToolRetriever (Qin 等人,2023):一种通过对比学习训练的基于 BERT 的检索器。
设置
我们在两种设置下进行实验。在第一个设置中,域内检索(In-Domain Retrieval)限制检索搜索空间为同一域内的工具。例如,在评估 I1 域的查询时,仅限于 I1 的工具。此设置与 ToolBench 的设置一致。第二个设置,多域检索(Multi-Domain Retrieval)则更为复杂,搜索空间扩展到所有三类域的工具。在这种情况下,模型在合并数据上进行训练,增加了搜索空间和任务复杂性。与 ToolBench 不同,多域设置反映了检索任务可能涉及重叠或混合领域的现实场景。该设置评估了模型在跨领域泛化和处理更复杂多样的检索任务的能力。
指标
我们使用归一化折扣累积增益 (NDCG) (Järvelin & Kekäläinen, 2002) 来评估检索性能,这是排名任务中广泛使用的指标,包括工具检索。NDCG 同时考虑了检索到的工具的相关性和排名位置。
表 1:在两种设置下的工具检索评估:(1) 域内检索,其中模型在相同领域内进行训练和评估;(2) 多域检索,模型在所有领域上进行训练,并在所有领域工具的完整集合中进行评估。BM25、EmbSim 和 Re-Invoke 是未经训练的无监督基准方法。IterFeedback 是带有多模型和反馈机制的检索系统。ToolRetriever 使用对比学习进行训练,而 ToolGen 则使用下一个 Token 预测进行训练。结果中带 * 的项目表示非我们实现的模型,数据来源于原始论文,因而仅在域内设置下列出。对于域内设置下的 ToolGen,我们允许生成空间包括所有 Token,与其他模型相比这是更具挑战性的场景。每个类别中最优的结果用粗体标注。
模型 | I1 | I2 | I3 | ||||||
---|---|---|---|---|---|---|---|---|---|
NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | |
域内 | |||||||||
BM25 | 29.46 | 31.12 | 33.27 | 24.13 | 25.29 | 27.65 | 32.00 | 25.88 | 29.78 |
EmbSim | 63.67 | 61.03 | 65.37 | 49.11 | 42.27 | 46.56 | 53.00 | 46.40 | 52.73 |
Re-Invoke* | 69.47 | – | 61.10 | 54.56 | – | 53.79 | 59.65 | – | 59.55 |
IterFeedback* | 90.70 | 90.95 | 92.47 | 89.01 | 85.46 | 87.10 | 91.74 | 87.94 | 90.20 |
ToolRetriever | 80.50 | 79.55 | 84.39 | 71.18 | 64.81 | 70.35 | 70.00 | 60.44 | 64.70 |
ToolGen | 89.17 | 90.85 | 92.67 | 91.45 | 88.79 | 91.13 | 87.00 | 85.59 | 90.16 |
多域 | |||||||||
BM25 | 22.77 | 22.64 | 25.61 | 18.29 | 20.74 | 22.18 | 10.00 | 10.08 | 12.33 |
EmbSim | 54.00 | 50.82 | 55.86 | 40.84 | 36.67 | 39.55 | 18.00 | 17.77 | 20.70 |
ToolRetriever | 72.31 | 70.30 | 74.99 | 64.54 | 57.91 | 63.61 | 52.00 | 39.89 | 42.92 |
ToolGen | 87.67 | 88.84 | 91.54 | 83.46 | 86.24 | 88.84 | 79.00 | 79.80 | 84.79 |
4.2 结果
表格 1 展示了工具检索的结果。正如预期,所有训练过的模型在各项指标上都明显优于未经训练的基线(BM25、EmbSim 和 Re-Invoke),显示了在工具检索数据上进行训练的优势。
我们提出的 ToolGen 模型在两种设置中都持续表现最佳。在领域内设置中,ToolGen 提供了高度竞争力的结果,其性能与使用多个模型和反馈机制的 IterFeedback 系统相当。作为单一模型,ToolGen 在所有指标上均显著优于 ToolRetriever,甚至在多个场景(如领域 I1 的 NDCG@5 和 I2 的 NDCG@1、@3、@5)中超过了 IterFeedback。
在多领域设置中,尽管搜索空间更大,整体表现通常下降,但 ToolGen 依然保持稳健,优于 ToolRetriever,并在各基线模型中保持领先。这表明 ToolGen 尽管是单一模型,依然能与像 IterFeedback 这样复杂的检索系统竞争,展现了其处理领域边界不清晰的复杂实际检索任务的能力。
4.3 索引方法对比
虽然 ToolGen 使用原子索引进行工具虚拟化,我们也探讨了几种替代的生成式检索方法。在本节中,我们将其与以下三种方法进行比较:
- 数字:将每个工具映射到一个唯一编号。生成的 Token 纯粹是数字化的,未提供内在的语义信息,但为每个工具提供了独特的标识符。
- 分层:该方法将工具聚类成非重叠组,并递归地对这些集群进行划分,形成一种层级结构。该结构中从根节点到叶节点的索引表示了每个工具,类似于 Brown 聚类技术。
- 语义:此方法中,每个工具映射到其名称,通过工具名称的语义内容来指导大语言模型(LLM)。工具名称直接提供与其功能相关的有意义的表示。
图 3:每种索引方法下,每个工具的子 Token 数量分布不同。原子索引确保每个工具是一个单一的 Token,而数字索引将工具编码成 N 个 Token ,即工具编号位于 (10N−1,10N] 范围内。相对地,语义索引和分层索引产生的子 Token 数量可变,其中语义索引的子 Token 序列较长且有更多异常值。
具体的实现细节描述在附录 B 中。
首先,我们分析了每种方法表示每个工具所需的子 Token 数量,如图 3 所示。图表突显了原子索引的优越性,其中每个工具由一个单一的 Token 表示,而其他方法需要多个 Token。这种效率使得 ToolGen 能减少生成 Token 的数量,并在检索和代理场景中缩短推理时间。
接着,我们检验了不同索引方法的有效性。如表 2 所示,语义索引在多项指标和场景中展现出最佳的检索性能,而原子索引在许多情况下紧随其后。我们将此归因于语义索引更符合大语言模型的预训练数据。然而,随着训练数据和类型的增加,这种优势会减弱。例如,在第 5.3 节中,我们展示了原子索引在端到端结果上表现更佳。综合考虑这些因素,我们选择原子索引用于 ToolGen 工具虚拟化。
表 2:在多领域设置下不同索引方法的检索评价。最佳结果为加粗,次佳结果为下划线。
模型 | I1 | I2 | I3 | ||||||
---|---|---|---|---|---|---|---|---|---|
NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | |
数字 | 83.17 | 84.99 | 88.73 | 79.20 | 79.23 | 83.88 | 71.00 | 74.81 | 82.95 |
分层 | 85.67 | 87.38 | 90.26 | 82.22 | 82.70 | 86.63 | 78.50 | 79.47 | 84.15 |
语义 | 89.17 | 91.29 | 93.29 | 83.71 | 84.51 | 88.22 | 82.00 | 78.86 | 85.43 |
原子 | 87.67 | 88.84 | 91.54 | 83.46 | 86.24 | 88.84 | 79.00 | 79.80 | 84.79 |
表 3:工具检索的消融研究。分别评估了去除检索训练、工具记忆和约束波束搜索对 ToolGen 性能的影响。
模型 | I1 | I2 | I3 | ||||||
---|---|---|---|---|---|---|---|---|---|
NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | NDCG1 | NDCG3 | NDCG5 | |
ToolGen | 87.67 | 88.84 | 91.54 | 83.46 | 86.24 | 88.84 | 79.00 | 79.80 | 84.79 |
−记忆 | 84.00 | 86.77 | 89.35 | 82.21 | 83.20 | 86.78 | 77.00 | 77.71 | 84.37 |
−检索训练 | 10.17 | 12.31 | 13.89 | 5.52 | 7.01 | 7.81 | 3.00 | 4.00 | 4.43 |
−约束 | 87.67 | 88.79 | 91.45 | 83.46 | 86.24 | 88.83 | 79.00 | 79.93 | 84.92 |
4.4 消融实验
我们进行了消融实验以评估 ToolGen 不同训练阶段的影响,如表 3 所示。结果表明,检索训练是影响工具检索性能的关键因素,因为它直接对齐了输入为查询、输出为工具 Token 的检索任务。去除工具记忆后性能略有下降,尽管其对提升泛化性能有帮助,我们将在附录 F 中进一步讨论。同样,受限束搜索虽然对检索任务贡献不大,但有助于防止幻觉生成,因此在端到端代理任务中具有一定价值,见第 5.4 节。
5 端到端评估
5.1 实验设置
我们对来自 ToolBench 的轨迹数据进行了多项修改,使其适应 ToolGen 框架。例如,由于 ToolGen 不需要显式选择相关工具作为输入,因此我们在系统提示中移除了这些信息。更多细节见附录 G。在此基础上,我们使用重新格式化的数据微调了检索模型,生成了一个端到端的 ToolGen 代理。
基线模型
- GPT-3.5:我们使用 gpt-3.5-turbo-0613 作为其中一个基线模型。实现方式与 StableToolBench (Guo et al., 2024) 相同,GPT-3.5 的工具调用功能被用于形成工具代理。
- ToolLlama-2:Qin 等人 (2023) 通过在 ToolBench 数据上微调 Llama-2 (Touvron et al., 2023) 模型引入了 ToolLlama-2。
- ToolLlama-3:为了保证公平比较,我们在 ToolBench 数据集上微调了与 ToolGen 相同的基础模型 Llama-3,创建了 ToolLlama-3 基线模型。本文中剩余部分将 ToolLlama-3 简称为 ToolLlama 以区分 ToolLlama-2。
设置
- 使用真实工具 (G.T.):参考 Qin 等人 (2023),我们定义查询的真实工具为 ChatGPT 选择的工具。对于 ToolLlama,我们在提示中直接输入真实工具,与其训练数据格式一致。对于 ToolGen,由于未在预先选择工具的数据上进行训练,我们在规划阶段添加了前缀:我正在使用以下工具:[tool tokens],其中 [tool tokens] 是对应真实工具的虚拟 Token。
- 使用检索器:在端到端实验中,我们使用基于检索的设置。对于基线模型,我们使用 ToolRetriever 检索的工具作为相关工具。而 ToolGen 直接生成工具 Token,因此不使用检索器。
所有模型均使用余弦调度器进行微调,最大学习率设为 4×10−5。上下文长度截断为 6,144,总批次大小为 512。我们进一步使用 Flash-Attention (Dao 等, 2022;Dao, 2024) 和 Deepspeed ZeRO 3 (Rajbhandari 等, 2020) 以节省内存。
ToolGen 和 ToolLlama 遵循不同的范式完成任务。ToolLlama 在单轮中生成思想、动作和参数,而 ToolGen 将这些步骤分开。对于 ToolGen,我们设置最多 16 轮上限,允许进行 5 轮动作和 1 轮最终回答。我们将此与 ToolLlama 的 6 轮限制进行比较。
此外,我们为所有模型引入了重试机制,以防止过早终止,具体细节在附录 D 中介绍。具体而言,如果模型生成的响应包含“give up”或“I'm sorry”,我们会以更高的温度提示模型重新生成响应。
评估指标
对于端到端评估,我们使用稳定的工具评估基准 StableToolBench (Guo et al., 2024),该基准从 ToolBench 中选择可解决的查询,并使用 GPT-4 (OpenAI, 2024) 模拟失败工具的输出。我们使用两项指标评估性能:可解通过率 (SoPR),即成功解决查询的百分比;以及可解胜率 (SoWR),表示优于参考模型 (本研究中为 GPT-3.5) 的答案的百分比。此外,我们提供每个类别的微平均分。
表 4:在两种设置下对未见指令进行端到端评估的性能表现。对于 R. 设置,GPT-3.5 和 ToolLlama 使用 ToolRetriever,而 ToolGen 不使用外部检索器。所有结果的 SoPR 和 SoWR 评估均进行三次并以均值报告。
模型 | SoPR | SoWR | ||||||
---|---|---|---|---|---|---|---|---|
I1 | I2 | I3 | Avg. | I1 | I2 | I3 | Avg | |
使用真实工具 (G.T.) | ||||||||
GPT-3.5 | 56.60 | 47.80 | 54.64 | 50.91 | - | - | - | - |
ToolLlama-2 | 53.37 | 41.98 | 46.45 | 48.43 | 47.27 | 59.43 | 27.87 | 47.58 |
ToolLlama | 55.93 | 48.27 | 52.19 | 52.78 | 50.31 | 53.77 | 31.15 | 47.88 |
ToolGen | 61.35 | 49.53 | 43.17 | 54.19 | 51.53 | 57.55 | 31.15 | 49.70 |
使用检索器 (R.) | ||||||||
GPT-3.5 | 51.43 | 41.19 | 34.43 | 45.00 | 53.37 | 53.77 | 37.70 | 50.60 |
ToolLlama-2 | 56.13 | 49.21 | 34.70 | 49.95 | 50.92 | 53.77 | 21.31 | 46.36 |
ToolLlama | 54.60 | 49.96 | 51.37 | 51.55 | 49.08 | 61.32 | 31.15 | 49.70 |
ToolGen | 56.13 | 52.20 | 47.54 | 53.28 | 50.92 | 62.26 | 34.42 | 51.51 |
5.2 结果
表 4 展示了在两种环境下各模型的端到端评估性能:使用真实工具 (G.T.) 和检索器 (R.)。在 G.T. 环境下,ToolGen 的平均 SoPR 得分为 54.19,优于 GPT-3.5 和 ToolLlama,且 ToolGen 的 SoWR 得分最高为 49.70。在检索器环境下,ToolGen 仍保持领先,平均 SoPR 为 53.28,SoWR 为 51.51。ToolLlama 展现了竞争力,在某些个体实例上优于 ToolGen。端到端 ToolGen 的消融研究见附录 G 。
表 5:不同索引方法的端到端评估。
索引方法 | SoPR | SoWR | ||||||
---|---|---|---|---|---|---|---|---|
I1 | I2 | I3 | Avg. | I1 | I2 | I3 | Avg | |
数字索引 | 34.76 | 29.87 | 46.99 | 35.45 | 25.77 | 33.02 | 29.51 | 28.79 |
分层索引 | 50.20 | 45.60 | 32.79 | 45.50 | 38.04 | 43.40 | 29.51 | 38.18 |
语义索引 | 58.79 | 45.28 | 44.81 | 51.87 | 49.69 | 57.55 | 26.23 | 47.88 |
原子索引 | 58.08 | 56.13 | 44.81 | 55.00 | 47.85 | 57.55 | 29.51 | 47.58 |
5.3 索引方法对比
与检索任务的索引方法对比相似 (第 4.3 节 ),表 5 展示了端到端代理任务中不同索引方法的对比。在此设置中,去除了受限解码,允许代理自由生成 Thought、Action 和 Parameters。从结果来看,原子索引方法在四种索引方法中表现最佳。我们将其归因为其他方法较高的幻觉率,这在第 5.4 节中讨论。
图 4:展示了不同模型在生成不存在的工具时的幻觉率。在使用受限解码时,ToolGen 不会生成不存在的工具。然而,在没有此限制的情况下,ToolGen 在使用原子索引时的 Action 生成阶段会生成 7% 的非工具 Token ,使用语义索引时幻觉率更高。对于 ToolLlama 和 GPT-3.5,即使在提示中提供了五个真实工具,幻觉仍然会出现。若提示中未指定任何工具,ToolLlama 会生成超过 50% 的不存在工具名称。
5.4 幻觉
我们在端到端代理场景下评估模型在工具生成中的幻觉情况。为此,我们输入与模型训练时格式一致的查询。具体而言,对于 ToolGen,我们直接输入查询并提示模型按照 ToolGen 代理范式生成响应 ( 即按顺序生成 Thought、Tool 和 Parameters )。我们测试了不使用第 3.6 节中描述的束搜索限制的 Action 解码。对于 ToolLlama 和 GPT-3.5,我们输入查询并包含 5 个真实工具。在所有设置中,我们报告在所有工具生成动作中生成的工具中不存在于数据集的比例。图 4 展示了不同模型生成不存在工具的幻觉率。从图中可以看出,尽管只提供了五个真实工具,ToolLlama 和 GPT-3.5 仍然可能生成不存在的工具名称。相比之下,ToolGen 通过受限解码设计,完全避免了幻觉的发生。
6 结论
在本文中,我们介绍了 ToolGen,这是一种通过将特定工具的虚拟 Token 嵌入模型词汇表来统一工具检索和执行的大语言模型(LLM)框架,从而将工具交互转化为一个生成式任务。通过包含一个三阶段训练流程,ToolGen 赋予 LLM 在真实场景中高效检索和执行工具的能力。这种统一方法为具备扩展性和高效性的 AI 代理设立了新标杆,使其能够处理庞大的工具库。展望未来,ToolGen 为整合链式思维(chain-of-thought reasoning)、强化学习(reinforcement learning)和 ReAct 等先进技术打开了大门,进一步提升 LLM 在真实应用中的自主性和多功能性。
References
- Asai et al. (2023)↑Akari Asai, Zeqiu Wu, Yizhong Wang, Avirup Sil, and Hannaneh Hajishirzi.Self-rag: Learning to retrieve, generate, and critique through self-reflection, 2023.URL https://arxiv.org/abs/2310.11511.
- Brohan et al. (2023)↑Anthony Brohan, Noah Brown, Justice Carbajal, Yevgen Chebotar, Xi Chen, Krzysztof Choromanski, Tianli Ding, Danny Driess, Avinava Dubey, Chelsea Finn, Pete Florence, Chuyuan Fu, Montse Gonzalez Arenas, Keerthana Gopalakrishnan, Kehang Han, Karol Hausman, Alexander Herzog, Jasmine Hsu, Brian Ichter, Alex Irpan, Nikhil Joshi, Ryan Julian, Dmitry Kalashnikov, Yuheng Kuang, Isabel Leal, Lisa Lee, Tsang-Wei Edward Lee, Sergey Levine, Yao Lu, Henryk Michalewski, Igor Mordatch, Karl Pertsch, Kanishka Rao, Krista Reymann, Michael Ryoo, Grecia Salazar, Pannag Sanketi, Pierre Sermanet, Jaspiar Singh, Anikait Singh, Radu Soricut, Huong Tran, Vincent Vanhoucke, Quan Vuong, Ayzaan Wahid, Stefan Welker, Paul Wohlhart, Jialin Wu, Fei Xia, Ted Xiao, Peng Xu, Sichun Xu, Tianhe Yu, and Brianna Zitkovich.Rt-2: Vision-language-action models transfer web knowledge to robotic control, 2023.URL https://arxiv.org/abs/2307.15818.
- Brown et al. (2020)↑Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel M. Ziegler, Jeffrey Wu, Clemens Winter, Christopher Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, and Dario Amodei.Language models are few-shot learners.In Hugo Larochelle, Marc’Aurelio Ranzato, Raia Hadsell, Maria-Florina Balcan, and Hsuan-Tien Lin (eds.), Advances in Neural Information Processing Systems 33: Annual Conference on Neural Information Processing Systems 2020, NeurIPS 2020, December 6-12, 2020, virtual, 2020.URL https://proceedings.neurips.cc/paper/2020/hash/1457c0d6bfcb4967418bfb8ac142f64a-Abstract.html.
- Chen et al. (2023a)↑Baian Chen, Chang Shu, Ehsan Shareghi, Nigel Collier, Karthik Narasimhan, and Shunyu Yao.Fireact: Toward language agent fine-tuning.arXiv preprint arXiv:2310.05915, 2023a.
- Chen et al. (2023b)↑Jiangui Chen, Ruqing Zhang, Jiafeng Guo, Maarten de Rijke, Wei Chen, Yixing Fan, and Xueqi Cheng.Continual Learning for Generative Retrieval over Dynamic Corpora.In Proceedings of the 32nd ACM International Conference on Information and Knowledge Management, CIKM ’23, pp. 306–315, New York, NY, USA, 2023b. Association for Computing Machinery.ISBN 9798400701245.doi: 10.1145/3583780.3614821.URL https://dl.acm.org/doi/10.1145/3583780.3614821.
- Chen et al. (2024a)↑Junzhi Chen, Juhao Liang, and Benyou Wang.Smurfs: Leveraging multiple proficiency agents with context-efficiency for tool planning, 2024a.URL https://arxiv.org/abs/2405.05955.
- Chen et al. (2024b)↑Yanfei Chen, Jinsung Yoon, Devendra Singh Sachan, Qingze Wang, Vincent Cohen-Addad, Mohammadhossein Bateni, Chen-Yu Lee, and Tomas Pfister.Re-invoke: Tool invocation rewriting for zero-shot tool retrieval.arXiv preprint arXiv:2408.01875, 2024b.
- Chen et al. (2024c)↑Zehui Chen, Kuikun Liu, Qiuchen Wang, Wenwei Zhang, Jiangning Liu, Dahua Lin, Kai Chen, and Feng Zhao.Agent-flan: Designing data and methods of effective agent tuning for large language models, 2024c.URL https://arxiv.org/abs/2403.12881.
- Dao (2024)↑Tri Dao.FlashAttention-2: Faster attention with better parallelism and work partitioning.In International Conference on Learning Representations (ICLR), 2024.
- Dao et al. (2022)↑Tri Dao, Daniel Y. Fu, Stefano Ermon, Atri Rudra, and Christopher Ré.FlashAttention: Fast and memory-efficient exact attention with IO-awareness.In Advances in Neural Information Processing Systems (NeurIPS), 2022.
- Dubey et al. (2024)↑Abhimanyu Dubey, Abhinav Jauhri, Abhinav Pandey, Abhishek Kadian, Ahmad Al-Dahle, Aiesha Letman, Akhil Mathur, Alan Schelten, Amy Yang, Angela Fan, et al.The llama 3 herd of models.arXiv preprint arXiv:2407.21783, 2024.
- Gravitas (2023)↑Gravitas.AutoGPT, 2023.URL https://github.com/Significant-Gravitas/AutoGPT.
- Guo et al. (2024)↑Zhicheng Guo, Sijie Cheng, Hao Wang, Shihao Liang, Yujia Qin, Peng Li, Zhiyuan Liu, Maosong Sun, and Yang Liu.StableToolBench: Towards Stable Large-Scale Benchmarking on Tool Learning of Large Language Models, 2024.URL https://arxiv.org/abs/2403.07714.
- Hao et al. (2023)↑Shibo Hao, Tianyang Liu, Zhen Wang, and Zhiting Hu.Toolkengpt: Augmenting frozen language models with massive tools via tool embeddings.In Alice Oh, Tristan Naumann, Amir Globerson, Kate Saenko, Moritz Hardt, and Sergey Levine (eds.), Advances in Neural Information Processing Systems 36: Annual Conference on Neural Information Processing Systems 2023, NeurIPS 2023, New Orleans, LA, USA, December 10 - 16, 2023, 2023.URL http://papers.nips.cc/paper_files/paper/2023/hash/8fd1a81c882cd45f64958da6284f4a3f-Abstract-Conference.html.
- Järvelin & Kekäläinen (2002)↑Kalervo Järvelin and Jaana Kekäläinen.Cumulated gain-based evaluation of ir techniques.ACM Transactions on Information Systems (TOIS), 20(4):422–446, 2002.
- Karpukhin et al. (2020)↑Vladimir Karpukhin, Barlas Oguz, Sewon Min, Patrick Lewis, Ledell Wu, Sergey Edunov, Danqi Chen, and Wen-tau Yih.Dense passage retrieval for open-domain question answering.In Bonnie Webber, Trevor Cohn, Yulan He, and Yang Liu (eds.), Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP), pp. 6769–6781, Online, 2020. Association for Computational Linguistics.doi: 10.18653/v1/2020.emnlp-main.550.URL https://aclanthology.org/2020.emnlp-main.550.
- Kishore et al. (2023)↑Varsha Kishore, Chao Wan, Justin Lovelace, Yoav Artzi, and Kilian Q. Weinberger.Incdsi: Incrementally updatable document retrieval.In Andreas Krause, Emma Brunskill, Kyunghyun Cho, Barbara Engelhardt, Sivan Sabato, and Jonathan Scarlett (eds.), International Conference on Machine Learning, ICML 2023, 23-29 July 2023, Honolulu, Hawaii, USA, volume 202 of Proceedings of Machine Learning Research, pp. 17122–17134. PMLR, 2023.URL https://proceedings.mlr.press/v202/kishore23a.html.
- Liu et al. (2024)↑Xiao Liu, Hao Yu, Hanchen Zhang, Yifan Xu, Xuanyu Lei, Hanyu Lai, Yu Gu, Hangliang Ding, Kaiwen Men, Kejuan Yang, et al.Agentbench: Evaluating llms as agents.In The Twelfth International Conference on Learning Representations, 2024.
- Liu et al. (2023)↑Zhiwei Liu, Weiran Yao, Jianguo Zhang, Le Xue, Shelby Heinecke, Rithesh Murthy, Yihao Feng, Zeyuan Chen, Juan Carlos Niebles, Devansh Arpit, et al.Bolaa: Benchmarking and orchestrating llm-augmented autonomous agents.arXiv preprint arXiv:2308.05960, 2023.
- Mehta et al. (2023)↑Sanket Vaibhav Mehta, Jai Gupta, Yi Tay, Mostafa Dehghani, Vinh Q. Tran, Jinfeng Rao, Marc Najork, Emma Strubell, and Donald Metzler.DSI++: Updating transformer memory with new documents.In Houda Bouamor, Juan Pino, and Kalika Bali (eds.), Proceedings of the 2023 Conference on Empirical Methods in Natural Language Processing, pp. 8198–8213, Singapore, 2023. Association for Computational Linguistics.doi: 10.18653/v1/2023.emnlp-main.510.URL https://aclanthology.org/2023.emnlp-main.510.
- OpenAI (2024)↑OpenAI.Gpt-4 technical report, 2024.URL https://arxiv.org/abs/2303.08774.
- Patil et al. (2023)↑Shishir G. Patil, Tianjun Zhang, Xin Wang, and Joseph E. Gonzalez.Gorilla: Large language model connected with massive apis, 2023.URL https://arxiv.org/abs/2305.15334.
- Qiao et al. (2024)↑Shuofei Qiao, Ningyu Zhang, Runnan Fang, Yujie Luo, Wangchunshu Zhou, Yuchen Eleanor Jiang, Chengfei Lv, and Huajun Chen.Autoact: Automatic agent learning from scratch for qa via self-planning, 2024.URL https://arxiv.org/abs/2401.05268.
- Qin et al. (2023)↑Yujia Qin, Shihao Liang, Yining Ye, Kunlun Zhu, Lan Yan, Yaxi Lu, Yankai Lin, Xin Cong, Xiangru Tang, Bill Qian, Sihan Zhao, Lauren Hong, Runchu Tian, Ruobing Xie, Jie Zhou, Mark Gerstein, Dahai Li, Zhiyuan Liu, and Maosong Sun.ToolLLM: Facilitating Large Language Models to Master 16000+ Real-world APIs, 2023.URL https://arxiv.org/abs/2307.16789.
- Qu et al. (2024)↑Changle Qu, Sunhao Dai, Xiaochi Wei, Hengyi Cai, Shuaiqiang Wang, Dawei Yin, Jun Xu, and Ji-Rong Wen.Tool learning with large language models: A survey.arXiv preprint arXiv:2405.17935, 2024.
- Rajbhandari et al. (2020)↑Samyam Rajbhandari, Jeff Rasley, Olatunji Ruwase, and Yuxiong He.Zero: Memory optimizations toward training trillion parameter models, 2020.URL https://arxiv.org/abs/1910.02054.
- Robertson et al. (2009)↑Stephen Robertson, Hugo Zaragoza, et al.The probabilistic relevance framework: Bm25 and beyond.Foundations and Trends® in Information Retrieval, 3(4):333–389, 2009.
- Schick et al. (2023)↑Timo Schick, Jane Dwivedi-Yu, Roberto Dessì, Roberta Raileanu, Maria Lomeli, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom.Toolformer: Language models can teach themselves to use tools, 2023.URL https://arxiv.org/abs/2302.04761.
- Shen et al. (2024)↑Weizhou Shen, Chenliang Li, Hongzhan Chen, Ming Yan, Xiaojun Quan, Hehong Chen, Ji Zhang, and Fei Huang.Small llms are weak tool learners: A multi-llm agent, 2024.URL https://arxiv.org/abs/2401.07324.
- Shinn et al. (2023)↑Noah Shinn, Federico Cassano, Ashwin Gopinath, Karthik Narasimhan, and Shunyu Yao.Reflexion: language agents with verbal reinforcement learning.In Proceedings of the 37th International Conference on Neural Information Processing Systems, pp. 8634–8652, 2023.
- Sun et al. (2023)↑Weiwei Sun, Lingyong Yan, Zheng Chen, Shuaiqiang Wang, Haichao Zhu, Pengjie Ren, Zhumin Chen, Dawei Yin, Maarten de Rijke, and Zhaochun Ren.Learning to tokenize for generative retrieval.In Alice Oh, Tristan Naumann, Amir Globerson, Kate Saenko, Moritz Hardt, and Sergey Levine (eds.), Advances in Neural Information Processing Systems 36: Annual Conference on Neural Information Processing Systems 2023, NeurIPS 2023, New Orleans, LA, USA, December 10 - 16, 2023, 2023.URL http://papers.nips.cc/paper_files/paper/2023/hash/91228b942a4528cdae031c1b68b127e8-Abstract-Conference.html.
- Touvron et al. (2023)↑Hugo Touvron, Thibaut Lavril, Gautier Izacard, Xavier Martinet, Marie-Anne Lachaux, Timothée Lacroix, Baptiste Rozière, Naman Goyal, Eric Hambro, Faisal Azhar, Aurelien Rodriguez, Armand Joulin, Edouard Grave, and Guillaume Lample.Llama: Open and efficient foundation language models, 2023.URL https://arxiv.org/abs/2302.13971.
- Wang et al. (2024)↑Renxi Wang, Haonan Li, Xudong Han, Yixuan Zhang, and Timothy Baldwin.Learning from failure: Integrating negative examples when fine-tuning large language models as agents.arXiv preprint arXiv:2402.11651, 2024.
- Wang et al. (2022)↑Yujing Wang, Yingyan Hou, Haonan Wang, Ziming Miao, Shibin Wu, Qi Chen, Yuqing Xia, Chengmin Chi, Guoshuai Zhao, Zheng Liu, Xing Xie, Hao Sun, Weiwei Deng, Qi Zhang, and Mao Yang.A neural corpus indexer for document retrieval.In Sanmi Koyejo, S. Mohamed, A. Agarwal, Danielle Belgrave, K. Cho, and A. Oh (eds.), Advances in Neural Information Processing Systems 35: Annual Conference on Neural Information Processing Systems 2022, NeurIPS 2022, New Orleans, LA, USA, November 28 - December 9, 2022, 2022.URL http://papers.nips.cc/paper_files/paper/2022/hash/a46156bd3579c3b268108ea6aca71d13-Abstract-Conference.html.
- Wei et al. (2023)↑Jason Wei, Xuezhi Wang, Dale Schuurmans, Maarten Bosma, Brian Ichter, Fei Xia, Ed Chi, Quoc Le, and Denny Zhou.Chain-of-thought prompting elicits reasoning in large language models, 2023.URL https://arxiv.org/abs/2201.11903.
- Wu et al. (2024a)↑Qingyun Wu, Gagan Bansal, Jieyu Zhang, Yiran Wu, Beibin Li, Erkang Zhu, Li Jiang, Xiaoyun Zhang, Shaokun Zhang, Jiale Liu, Ahmed Hassan Awadallah, Ryen W White, Doug Burger, and Chi Wang.Autogen: Enabling next-gen llm applications via multi-agent conversation framework.In COLM, 2024a.
- Wu et al. (2024b)↑Qinzhuo Wu, Wei Liu, Jian Luan, and Bin Wang.ToolPlanner: A Tool Augmented LLM for Multi Granularity Instructions with Path Planning and Feedback, 2024b.URL https://arxiv.org/abs/2409.14826.
- Xiong et al. (2021)↑Lee Xiong, Chenyan Xiong, Ye Li, Kwok-Fung Tang, Jialin Liu, Paul N. Bennett, Junaid Ahmed, and Arnold Overwijk.Approximate nearest neighbor negative contrastive learning for dense text retrieval.In 9th International Conference on Learning Representations, ICLR 2021, Virtual Event, Austria, May 3-7, 2021. OpenReview.net, 2021.URL https://openreview.net/forum?id=zeFrfgyZln.
- Xu et al. (2024)↑Qiancheng Xu, Yongqi Li, Heming Xia, and Wenjie Li.Enhancing tool retrieval with iterative feedback from large language models.arXiv preprint arXiv:2406.17465, 2024.
- Yao et al. (2023)↑Shunyu Yao, Jeffrey Zhao, Dian Yu, Nan Du, Izhak Shafran, Karthik Narasimhan, and Yuan Cao.ReAct: Synergizing reasoning and acting in language models.In International Conference on Learning Representations (ICLR), 2023.
- Yin et al. (2024)↑Da Yin, Faeze Brahman, Abhilasha Ravichander, Khyathi Chandu, Kai-Wei Chang, Yejin Choi, and Bill Yuchen Lin.Agent lumos: Unified and modular training for open-source language agents.In Lun-Wei Ku, Andre Martins, and Vivek Srikumar (eds.), Proceedings of the 62nd Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers), pp. 12380–12403, Bangkok, Thailand, August 2024. Association for Computational Linguistics.doi: 10.18653/v1/2024.acl-long.670.URL https://aclanthology.org/2024.acl-long.670.
- Zeng et al. (2023)↑Aohan Zeng, Mingdao Liu, Rui Lu, Bowen Wang, Xiao Liu, Yuxiao Dong, and Jie Tang.Agenttuning: Enabling generalized agent abilities for llms, 2023.
一个真实工具的示例
图 5 展示了一个真实工具的示例。每个工具包含多个 API。在我们的实验中使用了以下字段:“tool_name” 是工具的名称。“tool_description” 描述工具相关的信息,例如工具的功能。在每个 API 中,“name” 是 API 的名称。“description” 描述 API 相关的信息。“method” 是调用 API 的 http 方法。“required_parameters” 是调用 API 时必须填写的参数。“optional_parameters” 可用于设置额外参数(可选)。
{
"tool_name":"YouTube Hub",
"tool_description":"获取单个视频的点赞数、观看次数、标题、缩略图等详细信息。",
"home_url":"https://rapidapi.com/itsrohitofficial-XBPdXttOUQ/api/youtube-hub/",
"host":"youtube-hub.p.rapidapi.com",
"api_list":[
{
"name":"获取视频详情",
"url":"https://youtube-hub.p.rapidapi.com/",
"description":"获取视频的所有基本信息",
"method":"GET",
"required_parameters":[
{
"name":"id",
"type":"STRING",
"description":"",
"default":"fD6SzYIRr4c"
}
],
"optional_parameters":[],
}
]
}
图 5: 一个真实工具的示例。该工具包含一个 API。为简洁起见,我们已删除了不必要的字段。
B 工具虚拟化实现
ToolGen 采用单一独特的 Token 来表示一个工具,这显示了其在工具检索和调用方面的优势。我们还引入了其他方法来对工具进行索引,包括语义、数字和层次化。以下是我们如何实现每种索引的详细说明。
原子
索引是我们在 ToolGen 中使用的方法。与其他方法相比,它将一个单独的 Token 作为工具,并且不会虚构不存在的工具。我们使用 <<tool name&&api name>> 将工具名称和 API 名称结合起来形成一个单一的 Token。例如,在附录 A 中的示例,结果 Token 为 <<Youtube Hub&&Get Video Details>>。
语义
索引将每个工具映射到在 ToolBench 中使用的名称,这也是工具名称和 API 名称的组合。然而,该名称可以被分解为多个 Token,以便模型可以感知其语义意义。在附录 A 中的示例,得到的映射为 get_video_details_for_youtube_hub。
数字
索引将每个工具映射到一个唯一的数字。我们首先获取所有工具的列表,长度约为 47,000。对于所有工具,我们使用一个五位数字,由空格分隔来表示该工具。如果附录 A 中的示例是列表中的第 128 个元素,我们使用 0 0 0 1 2 8 来表示该工具。由于 Llama-3 分词器对每个数字进行编码
层次化
也将每个工具映射到一个数字。与数字索引不同,我们通过迭代聚类将结构信息注入工具表示。在每次迭代中,我们将工具聚类成十个集群,每个集群被分配一个从 0 到 9 的数字。对于每个集群,我们重复这一聚类过程,直到该集群中只有一个工具。这些步骤形成了一棵聚类树。我们从根到叶的数字作为该叶子中工具的表示。附录 A 中的示例可能被分配一个超过五位数字的号码,例如 0 1 2 2 3 3 3。
C 约束束搜索详细信息
在检索和完成端到端代理任务时,我们使用约束束搜索来限制生成的操作为有效的工具 Token。详细步骤见算法 1。基本思路是在束搜索步骤中限制搜索空间。为此,我们需要首先构建一个不相交的字典树,其中每个节点表示一个工具 Token ID。该节点的子节点都是跟随当前 ID 的所有可行 ID。利用这棵树,我们可以根据当前搜索的 ID 确定所有可能的下一个 Token ID。在束搜索步骤中,我们屏蔽掉所有其他不可行 Token 的 logits,强制可能的 ID 被采样或搜索。
对于检索,这可以在生成过程中直接应用。对于端到端代理任务,由于我们将推理步骤分解为三个对话轮次,我们可以轻松检测 ToolGen 何时需要生成操作,因此应用该约束。图 6 展示了 ToolGen 的端到端推理示例,其中没有相关工具供 ToolGen 选择。它可以直接生成工具 Token 并完成任务。
表 6: 三阶段训练的数据集统计。对于工具记忆,有一些重复的工具,导致样本数量略大于我们使用的工具数量。
数据集 | 工具记忆 | 检索训练 | 端到端代理调优 | |||
---|---|---|---|---|---|---|
I1 | I2 | I3 | 全部 | |||
#num | 49,936 | 194,086 | 222,783 | 72,833 | 489,702 | 183,336 |
系统:您是一个 AutoGPT,能够利用众多工具和功能来完成给定的任务。
1. 首先,我会给您提供任务描述,您的任务将开始。
2. 在每一步中,您需要通过生成一个行动令牌来确定下一步行动。
3. 在令牌之后,您将收到与该令牌对应的行动文档。您需要生成该行动的输入,将您转移到一个新状态。随后,您将决定下一步,并重复此过程。
4. 在生成多个行动和输入的几次迭代后,您将最终完成任务并提供您的最终答案。
... ...
:我最近访问了 Viva City,菜单给我留下了深刻的印象。我想了解更多关于场馆 5a76c927bb5d660001e09731 的菜单项。您能提供菜单类别、价格、可用性、规则、套餐项及其他相关细节吗?请使用语言 'zh-hans' 来提供菜单详情。
:我需要调用 "<<Viva City Documentation&&MenuDetails>>" 函数以检索场馆 5a76c927bb5d660001e09731 的菜单详情。调用此函数的原因是为了向用户提供菜单类别、价格、可用性、规则、套餐项及其他相关细节。该函数的调用参数为 "lang" 设置为 "zh-hans" 和 "is_id" 设置为 "5a76c927bb5d660001e09731",以确保提供的菜单详情符合所需语言,并且是针对特定场馆。
:生成行动。
:<<Viva City Documentation&&MenuDetails>>
:请给出输入。以下是文档:{'name': '<<Viva City Documentation&&VenueDetails>>', 'description': '使用 KV 获取场馆详情(需要重新同步以获取最新数据),并根据查询参数过滤动态多语言数据。', 'required': [{'name': 'id', 'type': 'STRING', 'description': '', 'default': '56c467cb7b0d464811a42017'}, {'name': 'lang', 'type': 'STRING', 'description': '', 'default': 'zh-hans'}], 'optional': []}
:{\n "is_id": "5a76c927bb5d660001e09731",\n "lang": "zh-hans"\n}
:{'error': '', 'response': {'menu_id': '5a76c927bb5d660001e09731', 'language': 'zh-hans', 'menu_details': {'sections': [{'section_name': '开胃菜', 'items': [{'item_name': '春卷', 'description': '脆皮春卷,搭配特制酱汁', 'price': 12.99}, {'item_name': '鸡肉串', 'description': '香辣鸡肉串,外焦里嫩', 'price': 15.99}]}, {'section_name': '主菜', 'items': [{'item_name': '宫保鸡丁', 'description': '经典川菜,麻辣鲜香', 'price': 18.99}, {'item_name': '清蒸鲈鱼', 'description': '清新淡雅,营养健康', 'price': 22.99}]}], 'special_notes': '本菜单提供纯素选项,请告知服务员。'}}}
:场馆 5a76c927bb5d660001e09731 的菜单详情如下:\n- 菜单类别:中餐\n价格:\n - 项目 1:12.99 人民币\n - 项目 2:15.99 人民币\n - 项目 3:18.99 人民币\n - 项目 4:22.99 人民币\n可用性:\n - 项目 1:可用\n - 项目 2:可用\n - 项目 3:可用\n - 项目 4:可用\n- 规则:\n - 项目 1:未提及具体规则\n - 项目 2:未提及具体规则\n - 项目 3:未提及具体规则\n - 项目 4:未提及具体规则\n- 套餐项:\n - 项目 1:2份套餐\n - 项目 2:2份套餐\n - 项目 3:2份套餐\n - 项目 4:2份套餐\n- 其他相关细节:\n - 特别说明:菜单可能会更改,价格也可能会变动。请向场馆确认最新信息。\n\n请告诉我是否还有其他我可以帮助您的地方!
:生成行动。
:<<Finish>>
:请给出输入。以下是文档:{'required': [], 'optional': [{'name': 'give_answer', 'description': '输出答案', 'type': 'string'}, {'name': 'give_up_and_restart', 'description': '无法从此步骤处理任务', 'type': 'string'}]}
:{"return_type": "give_answer", "final_answer": "场馆 5a76c927bb5d660001e09731 的菜单详情如下:\n- 菜单类别:中餐\n- 价格:\n - 项目 1:12.99 人民币\n - 项目 2:15.99 人民币\n - 项目 3:18.99 人民币\n - 项目 4:22.99 人民币\n- 可用性:\n - 项目 1:可用\n - 项目 2:可用\n - 项目 3:可用\n - 项目 4:可用\n- 规则:\n - 项目 1:未提及具体规则\n - 项目 2:未提及具体规则\n - 项目 3:未提及具体规则\n - 项目 4:未提及具体规则\n- 套餐项:\n - 项目 1:2份套餐\n - 项目 2:2份套餐\n - 项目 3:2份套餐\n - 项目 4:2份套餐\n- 其他相关细节:\n - 特别说明:菜单可能会更改,价格也可能会变动。请向场馆确认最新信息。"}
图 6: ToolGen 的推理示例。首先给出系统提示,没有相关工具。然后用户给出任务查询。ToolGen 生成思维,然后我们使用用户角色提示模型生成行动。生成行动后,我们再次使用用户提供工具文档。模型将根据此文档生成工具输入。
E 消融实验
表 7 显示了端到端评估的消融结果。对于未见过的指令,ToolGen Agent 在没有工具记忆或检索训练的情况下表现稍好。然而,对于未见过的工具,在没有前两个阶段的训练时,SoPR 和 SoWR 都会下降。这表明前两个阶段的训练在 ToolGen 的泛化能力中起着作用,而检索训练比工具记忆更为重要。
表 7: ToolGen 端到端评估的消融结果。这里的 Inst. 代表未见过的查询(指令),Tool. 和 Cat. 表示训练期间未见过的工具。
模型 | SoPR | SoWR | ||||||
---|---|---|---|---|---|---|---|---|
I1-Inst. | I2-Inst. | I3-Inst. | Avg. | I1-Inst. | I2-Inst. | I3-Inst. | Avg. | |
ToolGen | 54.60 | 52.36 | 43.44 | 51.82 | 50.31 | 54.72 | 26.23 | 47.28 |
w/o retrieval training | 56.95 | 46.70 | 50.27 | 52.42 | 49.69 | 50.94 | 34.43 | 47.27 |
w/o memorization | 56.03 | 47.96 | 57.38 | 53.69 | 49.08 | 59.43 | 34.43 | 49.70 |
I1-Tool. | I1-Cat. | I2 Cat. | Avg. | I1-Tool | I1-Cat. | I2 Cat. | Avg. | |
ToolGen | 56.54 | 49.46 | 51.96 | 52.66 | 40.51 | 39.87 | 37.90 | 39.53 |
w/o retrieval training | 49.47 | 40.31 | 37.90 | 42.84 | 36.71 | 30.07 | 36.29 | 34.18 |
w/o memorization | 58.86 | 46.19 | 49.87 | 51.70 | 37.34 | 38.56 | 42.74 | 39.32 |
F 泛化能力
对于 ToolGen Agent,我们测量模型在未经过训练的工具查询上的表现。表 8 显示了模型在未见过工具上的端到端评估。ToolGen Agent 的表现低于 ToolLlama,这也表明在完成完整任务时泛化能力较差。泛化问题在生成式检索中普遍存在,超出了本文的范围。因此,我们将其留待未来研究。
表 8: ToolGen 的泛化结果。我们测试并比较了 ToolGen 与其他模型在训练期间要求未见工具的查询上的表现。
模型 | 设置 | SoPR | SoWR | ||||||
---|---|---|---|---|---|---|---|---|---|
I1-Tool. | I1-Cat. | I2 Cat. | Avg. | I1-Tool | I1-Cat. | I2 Cat. | Avg | ||
GPT-3.5 | GT. | 58.90 | 60.70 | 54.60 | 58.07 | - | - | - | - |
ToolLlama | GT. | 57.38 | 58.61 | 56.85 | 57.68 | 43.04 | 50.31 | 54.84 | 49.04 |
ToolGen | GT. | 52.32 | 40.46 | 39.65 | 47.67 | 39.24 | 38.56 | 40.32 | 39.30 |
GPT-3.5 | 检索 | 57.59 | 53.05 | 46.51 | 52.78 | 46.20 | 54.25 | 54.81 | 51.58 |
ToolLlama | 检索 | 57.70 | 61.76 | 45.43 | 54.96 | 48.73 | 50.98 | 44.35 | 48.30 |
ToolGen | 56.54 | 49.46 | 51.96 | 52.66 | 40.51 | 39.87 | 37.90 | 39.53 |
将 ToolBench 数据适配到 ToolGen
我们的 ToolGen 数据是从 ToolBench 数据中适配和转换而来的。具体而言,我们采用工具文档作为工具记忆训练的数据,其中输入是工具文档,输出是相应的 Token。
对于检索训练,我们使用 ToolBench 中注释用于工具检索的数据,其中一个查询被注释为多个相关工具。我们将查询作为输入,并将相关工具转换为虚拟 Token。这些 Token 随后作为检索训练的输出。
对于端到端的智能体调优,我们使用交互轨迹作为来源,并进行以下转换:(1) 每个轨迹包含可用于解决查询的系统提示中的可用工具。当完成任务时,ToolLlama 依赖于系统提示中检索到的工具来解决任务,而 ToolGen 可以直接生成工具。因此,我们移除系统提示中的工具。(2) 我们将轨迹中的所有工具名称替换为相应的虚拟工具 Token。(3) 在原始轨迹中,智能体模型按顺序生成 Thought、Action 和 Action Input(也称为 ReAct)。我们将整个 ReAct 分解为三个对话回合。在第一个回合中,智能体模型生成一个 Thought,我们使用用户来提示模型生成一个动作。在第二个回合中,模型生成动作,即虚拟工具 Token。然后我们获取与这些 Token 对应的文档,以便模型知道需要指定哪些参数。在第三个回合中,模型为工具生成参数。
每个数据集中的样本数量见表 6。工具记忆和检索训练的样本见图 7。端到端智能体调优的样本见图 8。
# 工具记忆
用户: 工具名称:泰国驾驶执照 OCR。工具描述:提取泰国驾驶执照上的信息并返回文本结果,例如驾驶执照号码和个人信息。API 名称:驾驶执照 API 描述:提取泰国驾驶执照上的信息并返回文本结果,例如驾驶执照号码和个人信息。
助手: <<Thai Drivers License OCRDriver's License>>
# 检索训练
用户: 我和我的朋友正在组织一个关于“网页开发”和“移动应用开发”的黑客马拉松。我们需要一些灵感和指导。你能从 Medium.com 获取这些主题的热门故事吗?
助手: <<Medium&&/search/topics>>
图 7: 工具记忆和检索训练的数据集示例。我们使用用户角色来表示输入,使用助手角色来表示输出。
# 端到端代理调优
系统:
您是一个 AutoGPT,能够利用众多工具和功能来完成给定的任务。
1. 首先,我会提供给您任务描述,您的任务将开始。
2. 在每一步中,您需要通过生成一个操作 Token 来确定下一步行动。
3. 在 Token 之后,您将收到与该 Token 对应的操作文档。您需要生成操作的输入,帮助您转到新的状态。随后,您将对下一步进行决策,并重复此过程。
4. 在生成多个操作和输入的若干次迭代后,您最终将完成任务并提供您的最终答案。
记住:
1. 状态变化是不可逆的,您无法返回到之前的状态。
2. 保持您的操作简洁,限制在最适合当前查询的范围内。
3. 您可以进行多次尝试。如果您计划不断尝试不同的条件,请每次尝试一个条件。
4. 如果您认为您已经收集了足够的信息,请生成操作 "<<Finish>> with argument give_answer",以提供您对该任务的答案。
5. 如果您觉得在这一步无法处理任务,请生成操作 "<<Finish>> with argument give_up_and_restart"。
让我们开始吧!
任务描述:您应该使用操作来处理实时用户查询。记住:
1. 在任务结束时始终生成 "<<Finish>>"。最终答案应包含足够的信息以展示给用户。如果您无法处理任务,或者发现操作总是失败(该功能当前无效),请使用操作 <<Finish>> with give_up_and_restart。
2. 仅生成操作和输入。
用户:
您能否获取邮政编码 'PL11DN' 的地址?我想知道找到的项目数量、区、分区、县、国家以及地理编码详情(东向、北向、纬度和经度)。
开始!
助手:
根据用户的查询,他们想获取邮政编码 'PL11DN' 的地址,并检索特定详情,如找到的项目数量、区、分区、县、国家以及地理编码详情。当前的 API 调用是针对函数 'find_by_postcode',参数 'postcode' 设置为 'PL11DN'。此 API 很有用,因为它可以根据给定的英国邮政编码提供地址。通过使用此 API,我将能够为用户的查询检索所需的信息。
用户:
生成操作。
助手:
<<Find By PostCode&&Find By PostCode>>
用户:
请给出输入。这是文档:{'name': '<<Find By PostCode&&Find By PostCode>>', 'description': '“Find By PostCode” API 根据给定的英国邮政编码获取地址。此 API 提供 JSON 接口以搜索英国邮政编码的地址。', 'required': [{'name': 'postcode', 'type': 'string', 'description': '', 'default': 'PL11DN'}], 'optional': []}
助手:
{
"postcode": "PL11DN"
}
工具:
{"error": "", "response": "{'status': 200, 'message': '成功', 'noOfItems': 37, 'result': {'postcode': 'PL1 1DN', 'district': '普利茅斯', 'ward': '圣彼得和海滨', 'county': '德文', 'country': '英格兰', 'geocode': {'eastings': '248025', 'northings': '0054420', 'lattitude': '50.370001', 'longitude': '-4.138397'}, 'addresses': [{'po_box': '', 'line_2': '', 'postcode_type': 'S', 'line_3': '', 'su_organisation_indicator': ' ', 'building_number': '5', 'udprn': '18911184', 'thoroughfare': '圣安德鲁十字', 'line_1': '5 圣安德鲁十字', 'postcode_outcode': 'PL1', 'postcode_compact': 'PL11DN', 'dependant_thoroughfare': '', 'premise': '5', 'post_town': '普利茅斯', 'building_name': '', 'organisation_name': '', 'postcode': 'PL1 1DN', 'department_name': '', 'postcode_incode': '1DN', 'address': '5 圣安德鲁十字, 普利茅斯, PL1 1DN', 'double_dependant_locality': '', 'sub_building_name': '', 'dependant_locality': '', 'delivery_point_suffix': '4T'}, {'po_box': '', 'line_2': '2 圣安德鲁十字', 'p...
用户:
生成操作。
助手:
<<Finish>>
用户:
请给出输入。这是文档:{'required': [], 'optional': [{'name': 'give_answer', 'description': '输出答案', 'type': 'string'}, {'name': 'give_up_and_restart', 'description': '无法处理此步骤的任务', 'type': 'string'}]}
助手:
{
"return_type": "give_answer",
"final_answer": "找到的项目数量:37\n区:普利茅斯\n分区:圣彼得和海滨\n县:德文\n国家:英格兰\n地理编码详情:\n- 东向:248025\n- 北向:0054420\n- 纬度:50.370001\n经度:-4.138397"
}
![[Pasted image 20241027190429.png]]
图 8: 端到端代理调优的示例。