智能体的工具调用部分远比我们通常指向的模型简单
摘要
本文介绍了一个专为AI智能体工具调用设计的48M参数模型的开发。该模型使用语法确保有效的JSON输出,并且开源,可在特定API目录上进行定制。
我所使用的每个智能体栈都通过同一个大型模型发送工具调用,该模型还负责推理,因此你为了一个通常只是“将请求映射到40个类型化函数之一”的操作,支付了整个模型和一个往返的成本。我花了几时间研究另一个极端:一个仅负责工具调用的48M参数模型。它读取你的函数模式加上一个请求,然后输出调用,如果不适用则输出空列表。它完全不能聊天。使其在如此小的尺寸下工作的技巧是JSON从不由模型生成。一个从你的模式编译出的语法生成所有结构,模型只回答五种问题:拒绝或调用、哪个工具、包含此可选参数、什么值、停止或继续。因此,格式错误的JSON和虚构的参数名不是低概率的,而是不可能发生的。这部分在任何目录上无需训练即可实现。准确性是真实的权衡。在训练过的目录上,它在一些套件上比可比的小基线高出20多分(在其中一个上严格精确匹配为86.3对63.7)。在从未见过的目录上,它与该基线大致持平,并远低于提示的前沿模型。有一个脚本可以将其专用于你自己的API,成本约为56美元的合成数据,这才是实际预期用途,每个目录一个微型模型,而不是一个大型模型处理所有内容。整个构建成本约为260美元,并且是开源的,MIT许可证,权重包含在内。由于这里的规则要求将链接放在评论中,因此不在正文中提供链接。好奇是否有人尝试过为智能体的确定性部分使用小专家模型的路线,以及在哪里遇到了问题。
相似文章
2600万参数工具路由器表明:工具调用应与推理分离
文章介绍了由 Cactus-Compute 开发的 2600 万参数模型 Needle,该模型专为单次工具调用设计。文章主张将工具路由从推理中分离出来,作为一种结构化预测任务,以提高代理(agent)的效率并降低延迟。
为什么这么多智能体工具只是1:1的API封装?
这篇文章认为,许多AI智能体工具只是1:1的API封装,将分支逻辑推给大语言模型,导致失败。作者推荐任务形态的工具,比如upsert_contact,将搜索/创建/更新逻辑封装在代码中,传递已知上下文,校验输入,并返回结构化错误。
@hanakoxbt:你的智能体有三十个工具。它只调用了其中两个。另外二十八个并没有闲置在某个地方。它们就在请求中…
AI 智能体工具集中未使用的工具仍然会消耗令牌,并给工具选择增加噪音,因此智能体应只加载当前任务所需的工具。
给一个代理30个工具后,它在关键工具的使用上表现更差了。
作者观察到,给AI代理添加更多工具会增加分类复杂度,从而降低其选择正确工具的准确性;并且发现使用多个工具集更窄的小型代理可以提高可靠性。
你最强的模型可能不是最佳的工具调用者
本文认为,工具调用的可靠性往往不与模型能力成正比;较小的模型在遵循模式和格式规范方面可能超越较大的模型,这表明原始能力并非选择工具调用模型的唯一因素。