工具选择器 | Middleware 中间件 | 产品经理学Langchian | 第15篇

内容纲要

概述

在前面的章节中,我们讨论了如何通过To-do list帮助AI智能体更好地规划任务。现在我们要关注另一个实际生产中的问题:当AI智能体有很多工具(比如20个、50个甚至更多)时,每次查询都要把所有工具都传给模型,这样会消耗大量token,增加成本,而且可能让模型选择困难

想象一下,如果AI智能体有50个工具,但用户只是问"今天天气怎么样",实际上只需要一个天气工具就够了。如果把所有50个工具都传给模型,不仅浪费token,还可能让模型因为选择太多而做出错误决策。

LLM tool selector中间件思路是:在主模型调用前,先用一个轻量级的模型(比如GPT-4o-mini)分析当前查询,智能选择相关的工具,过滤掉无关的工具。这样,主模型只需要关注相关的工具,既能降低token消耗,又能提升选择的准确性。

使用场景

工具数量较多的场景

当AI智能体拥有大量工具(10+)时,每次查询通常只需要其中少数几个。通过工具选择器,可以过滤无关工具,减少上下文复杂度。

成本敏感场景

工具描述会占用大量token,通过筛选只保留相关工具,可以显著降低token消耗,节省成本。特别是在工具数量很多的情况下,节省的效果更明显。

提升选择准确性

工具数量过多时,模型可能因为选择困难而做出错误决策。通过筛选只保留相关工具,可以提升模型的选择准确性。

核心功能需求

预筛选机制

在主模型调用前,使用轻量级模型进行预筛选,只选择相关的工具传递给主模型。

选择模型选择

  • 轻量模型优先:建议使用轻量级模型(如GPT-4o-mini、Claude 3 Haiku)进行工具选择,降低成本
  • 模型能力要求:选择模型需要支持结构化输出(Structured Output),确保输出格式规范
  • 成本对比:工具选择的成本应该低于主模型处理所有工具的成本

产品建议:在PRD中明确使用轻量模型进行工具选择,并评估成本节省效果。

选择逻辑

选择模型会分析:

  • 用户查询意图:理解用户想要做什么
  • 工具功能匹配:从所有工具中找出能够满足用户需求的相关工具
  • 结构化输出:返回相关工具列表,格式规范

工具过滤与限制

选择出相关工具后,还需要根据配置进行过滤和限制。

最大工具数量限制

  • max_tools参数:可以设置最多选择多少个工具
  • 数量建议:简单工具建议5-10个,复杂工具建议3-5个
  • 动态调整:可以根据查询复杂度动态调整数量

始终包含的工具

  • always_include参数:可以设置始终包含的工具列表
  • 常用工具:建议将常用工具(如搜索工具)加入列表,确保这些工具始终可用
  • 不受限制:这些工具不受max_tools限制,始终会被包含

产品建议:在PRD中明确哪些工具应该始终包含,以及工具数量的限制策略。

PRD需求描述

功能需求

FR-1: 工具预筛选

  • 描述:在主模型调用前,使用轻量模型分析查询,选择相关工具
  • 选择模型:支持配置选择模型,默认使用轻量模型
  • 结构化输出:选择模型返回相关工具列表,格式规范
  • 优先级:P0(核心功能)

FR-2: 工具过滤

  • 描述:根据配置过滤和限制选择的工具数量
  • 最大数量限制:支持设置最多选择多少个工具
  • 始终包含工具:支持设置始终包含的工具列表
  • 优先级:P0(核心功能)

FR-3: 自定义系统提示

  • 描述:支持自定义系统提示,指导选择模型如何选择工具
  • 提示优化:可以根据实际效果优化提示词
  • 优先级:P1

FR-4: 选择结果记录

  • 描述:记录工具选择结果,便于分析和优化
  • 记录内容:查询内容、选择的工具、未选择的工具等
  • 优先级:P1

非功能需求

NFR-1: 性能要求

  • 选择延迟:工具选择需要额外的模型调用,会增加延迟(通常100-500ms)
  • 延迟容忍度:需要在PRD中明确延迟容忍度
  • 成本要求:工具选择的成本应该低于主模型处理所有工具的成本

NFR-2: 选择准确性

  • 准确性监控:监控工具选择的准确性(选择的相关工具是否被主模型实际调用)
  • 准确性阈值:如果准确性低,需要优化系统提示或工具描述
  • 工具描述质量:工具描述应清晰、准确,便于选择模型理解

NFR-3: 成本监控

  • 成本统计:统计工具选择功能的成本
  • 成本节省评估:评估工具选择节省的token成本是否大于选择模型的调用成本
  • 成本优化:如果成本节省不明显,需要优化策略

产品设计要点

模型选择策略

轻量模型优先

  • 建议使用GPT-4o-mini、Claude 3 Haiku等轻量模型
  • 工具选择任务相对简单,不需要太强的模型能力

成本对比

  • 工具选择的成本应该低于主模型处理所有工具的成本
  • 需要在PRD中明确成本阈值

产品建议:默认使用轻量模型,如果选择准确性不足,可以考虑使用中等模型,但需要评估成本。

工具选择数量策略

max_tools设置

  • 简单工具建议5-10个
  • 复杂工具建议3-5个
  • 避免选择过多工具导致主模型选择困难

动态调整

  • 可以根据查询复杂度动态调整max_tools
  • 简单查询3个,复杂查询5个

always_include策略

  • 建议将常用工具(如搜索工具)加入always_include
  • 确保这些工具始终可用

产品建议:在PRD中明确工具数量限制策略,根据实际效果调整。

选择准确性优化

系统提示优化

  • 可以自定义system_prompt,明确工具选择的指导原则
  • 比如"优先选择能够直接回答问题的工具"

工具描述质量

  • 工具描述应该清晰、准确
  • 便于选择模型理解工具用途

准确性监控

  • 监控工具选择的准确性
  • 如果准确性低,需要优化系统提示或工具描述

产品建议:建议在PRD中明确工具描述的质量要求,并定期评估选择准确性。

使用建议

什么时候应该使用

  1. 工具数量较多:AI智能体拥有10+个工具
  2. 成本敏感:需要降低token消耗,控制成本
  3. 选择准确性需要提升:工具数量过多导致选择困难

配置建议

  1. 选择模型:默认使用轻量模型,降低成本
  2. 工具数量限制:根据工具复杂度设置合理的限制
  3. 始终包含工具:将常用工具加入always_include列表

注意事项

  1. 额外延迟:工具选择会增加延迟,需要评估是否可接受
  2. 成本评估:需要评估成本节省效果,确保整体成本降低
  3. 准确性监控:需要监控选择准确性,及时优化

与其他中间件的配合

工具选择器可以与其他中间件配合使用:

  • 与ToolCallLimitMiddleware配合:工具选择不影响工具调用限制,选择后的工具调用仍受限制
  • 与ModelFallbackMiddleware配合:如果选择模型失败,可以回退到主模型处理所有工具
  • 执行顺序:工具选择应在主模型调用前执行,确保主模型只看到筛选后的工具

后续优化方向

  1. 智能选择:基于历史数据,智能预测哪些工具更可能被使用
  2. 工具分组:将相关工具分组,按组选择,提高效率
  3. 上下文感知:结合对话上下文,更准确地选择工具
  4. 学习优化:基于实际使用情况,持续优化选择策略
滚动至顶部