你的 Agent 定义了 10 个工具但只用 2 个?试试按需装载

发布时间:2026/7/7 10:46:05
你的 Agent 定义了 10 个工具但只用 2 个?试试按需装载 你的 Agent 定义了 10 个工具但只用 2 个?试试按需装载每多一个不用的工具定义,就是在用真金白银买 Agent 变笨。这篇文章告诉你如何让 Agent 自己决定需要什么工具。先算一笔账一个典型的工具定义长这样:Tool: search_customer_database Description: 在客户数据库中搜索客户信息。支持按姓名、手机号、邮箱、 会员ID 等字段进行精确和模糊搜索。返回客户基本信息、消费记录、会员等级、 最近一次消费时间等数据。适用于客服场景中需要查询客户身份的场景。 Parameters: - query (str, required): 搜索关键词 - search_type (str, optional): 搜索类型,可选 "name" / "phone" / "email" / "member_id",默认为 "name" - include_history (bool, optional): 是否包含历史消费记录,默认 false - page (int, optional): 分页页码,默认 1 - page_size (int, optional): 每页条数,默认 20 Returns: JSON 对象,包含 customer_info、purchase_history、member_level...这一个工具定义 = 约 250 token。10 个工具 = 约 2500 token——这还没算使用示例。而实际对话中,我们发现:工具数量平均每次对话实际调用利用率62.1 个35%102.3 个23%202.7 个13%你每次都在为 70-80% 用不到的工具定义买单。按需装载:原理一张图看懂传统方式: 系统提示中全量注入 10 个工具 → 每次请求都带着 2500 token 工具定义 ┌──────────────────────────────────────┐ │ [系统提示] [工具1] [工具2] ... [工具10] │ → 12000 token │ [对话历史..........................] │ │ [用户问题] │ └──────────────────────────────────────┘ 按需装载: 系统提示中只放核心工具 → 运行时根据语义匹配选 3 个 → 注入上下文 ┌──────────────────────────────────────┐ │ [系统提示] [核心工具×3] [匹配工具×3] │ → 6500 token │ [对话历史..........................] │ │ [用户问题] │ └──────────────────────────────────────┘三种装载策略对比策略做法节省量复杂度适用场景静态分层手动把工具分为"核心"和"扩展"两组,核心始终加载,扩展按场景加载30-40%⭐工具数量 ≤ 10语义匹配用 Embedding 对工具描述建索引,每次根据用户 query 检索 Top-N 工具40-60%⭐⭐工具数量 10-50Agent 自选用一个小模型先判断任务类型 → 自动加载对应工具集50-70%⭐⭐⭐工具数量 50+实操:三种策略的代码实现策略一:静态分层(5 分钟上手)# 把工具分两层CORE_TOOLS=["search_knowledge_base","memory_save","memory_recall"]# ↑ 核心工具:每次必带,约 500 tokenSCENE_TOOLS={"customer_service":["search_order","check_refund","escalate_human"]