忘记Tool检索,拥抱全新Agent ToolGen!
传统大模型工具调用的方法依赖于将工具描述作为上下文输入,这受到上下文长度的限制,并需要单独的、通常效率低下的检索机制。
之前基于检索的方法与ToolGen之间的比较。以前的方法使用检索器根据相似性匹配检索相关工具,这些工具进一步被放入提示中供LLMs选择。ToolGen可以通过直接生成工具标记来检索工具。ToolGen也可以在不依赖任何外部检索器的情况下完成任务。
为此,微软等提出ToolGen,这是一种将工具知识直接整合到LLM参数中的范式转变,将每个工具表示为大型语言模型(LLM)词汇表中的一个独特虚拟标记(token),将工具检索和执行集成到LLM的生成过程中。
ToolGen框架的说明。在工具虚拟化中,工具被映射到虚拟标记中。在接下来的三阶段训练中,ToolGen首先通过基于文档预测工具标记来记忆工具。然后它学习通过从查询中预测工具标记来检索工具。最后,使用流水线数据,即轨迹,来微调最后阶段的检索器模型,从而产生ToolGen代理模型。
ToolGen的三个训练阶段:
- 工具记忆(Tool Memorization):在这个阶段,模型通过将工具描述作为输入,相应的工具标记作为输出,进行微调,从而让模型关联每个虚拟工具标记与其文档。
- 检索训练(Retrieval Training):在检索训练阶段,模型学习基于用户查询生成相关的工具标记。这使得模型能够根据用户的查询预测正确的工具标记。
- 端到端代理调优(End-to-End Agent-Tuning):在最后阶段,模型使用代理完成任务的轨迹数据进行微调。ToolGen遵循迭代过程,首先生成一个计划,然后是相应的动作标记。这个标记用于获取工具文档,模型使用这些文档来生成完成任务所需的参数。这个过程会迭代进行,直到模型生成一个“完成”标记或达到最大轮数。
ToolGen的推理方法:
在推理过程中,ToolGen可能会生成预定义工具标记集之外的动作标记。为了防止这种情况,设计了一个受限的束搜索(beam search)生成策略,将输出标记限制在工具标记集内。这在工具检索和端到端代理系统中都得到了应用,显著减少了动作生成步骤中的幻觉(hallucination)。
ToolGen框架允许LLM无需额外的检索步骤即可访问和利用大量工具,显著提高了性能和可扩展性。在超过47,000个工具的实验结果表明,ToolGen不仅在工具检索和自主任务完成方面取得了优越的结果,而且为能够适应不同领域工具的AI代理的新时代铺平了道路。
在两种设置中进行工具检索评估:(1) 同域(In-Domain),在这种设置中,模型在同一领域内进行训练和评估;以及 (2) 跨域(Multi-Domain),在这种设置中,模型在所有领域上进行训练,并使用所有领域的全套工具进行评估。BM25、EmbSim和Re-Invoke是未经训练的无监督基线模型。IterFeedback是一个具有多个模型和反馈机制的检索系统。ToolRetriever是使用对比学习训练的,而ToolGen是使用下一个标记预测进行训练的。带*号的结果不是我们实现的,而是从它们原来的论文中复制过来的,因此只在同域设置中有。对于同域设置中的ToolGen,我们允许生成空间包含所有标记,这与其他模型相比是一个更具挑战性的场景。每个类别中最好的结果都加粗显示。
在两种设置下对未见过的指令进行端到端评估性能。在R设置中,GPT3.5和ToolLlama使用ToolRetriever,而ToolGen不使用外部检索器。对于所有结果,SoPR和SoWR都评估了三次,并报告平均值。
工具记忆和检索训练的数据集示例。使用用户角色来代表输入,助手角色来代表输出。
端到端Agent调优的示例
ToolGen的推理示例。首先给出一个没有相关工具的系统提示。然后用户提出任务查询。ToolGen生成思考(Thought),然后使用用户角色来提示模型生成动作(action)。生成动作后,再次使用用户角色来提供工具文档。模型将根据这份文档生成工具输入。
https://github.com/Reason-Wang/ToolGen
TOOLGEN: UNIFIED TOOL RETRIEVAL AND CALLING VIA GENERATION
https://arxiv.org/pdf/2410.03439
本文转载自PaperAgent