Agent遇上4万个工具?一个Token搞定!
ToolGen: Unified Tool Retrieval and Calling via Generation
随着大型语言模型(LLMs)的发展,它们无法与外部工具直接交互以自主执行任务,这仍然是一个关键的限制。传统方法依赖于将工具描述作为上下文进行输入,这受到上下文长度的限制,并且需要单独的、通常效率不高的检索机制。我们引入了 ToolGen,这是一种范式转变,通过将每个工具表示为唯一的token,直接将工具知识集成到LLM的参数中。这使得LLM能够生成工具调用和参数作为其下一次token预测能力的一部分,无缝结合工具调用和语言生成。我们的框架允许LLM访问和利用大量的工具,而无需进行额外的检索步骤,从而大大提高了性能和可扩展性。对超过 47,000 个工具进行的实验结果表明,ToolGen 不仅在工具检索和自主任务完成方面取得了优越的结果,而且为能够适应不同领域工具的新时代 AI 代理奠定了基础。ToolGen 通过从根本上将工具检索转变为生成过程,为更通用、高效和自主的 AI 系统铺平了道路。ToolGen 能够实现端到端的工具学习,并与其他先进技术(如思维链和强化学习)集成,从而扩展了LLMs 的实际能力。代码开源:https://github.com/Reason-Wang/ToolGen
现实场景中,工具可能会很多,无法全部放进模型的上下文中。因此在给定一个用户问题之后,一般会存在一个工具召回模块,它的目标是从一个工具集中找到与用户问题相关的工具来解决这个问题。
经典的ToolBench,有16000个工具集,总共有47000个API。从中捞出来与问题相关的工具,还是很困难的一个问题。
这个过程对应了下图的上半部分。图片上左为工具召回模块,一般借助相似度方法获取数量有限的工具。图片上右就是常见的Agent引擎做出相应的Action。
而本文介绍的ToolGen,整个流程分为2大步
- 工具映射到词表id,这样模型做决策的时候,就只需要预测出对应的token id即可
- 微调新添加进去的id,分为3小步
- 输入工具描述,输出对应的工具token id,学习新增id的具体含义
- 输入query,输出对应的工具token id,学会根据用户问题召回对应的工具
- 端到端的Agent训练,引导模型输出完整的plan,action,params
总的来说,ToolGen是将工具检索和执行统一为一个生成任务,简化了检索过程,并且可以与其他LLM功能(如链式推理和强化学习)集成。训练还算容易,最后结果也很亮眼。
本文转载自 探索AGI,作者: 猕猴桃