【Anthropic】Claude 代理工具高级特性:工具搜索、编程调用、使用示例
- 问题与动机
- 特性一:工具搜索(Tool Search)
- 特性二:编程工具调用(Programmatic Tool Calling)
- 特性三:工具使用示例(Tool Use Examples)
- 分层策略与实施
- 可用性与接入
- 核心思想
问题与动机
在构建大规模 AI 代理系统时,工具定义会消耗大量 token。传统的「一次性加载所有工具」模式下,工具定义可能在代理读取实际请求之前就已吃掉 50,000+ token,导致:
- 上下文窗口被浪费
- 推理成本和延迟增加
- 模型在复杂工具协调任务中表现下降
Anthropic 针对这些瓶颈发布了三项测试版特性。
特性一:工具搜索(Tool Search)
允许 Claude 动态发现工具,而非一次加载全部定义。
工作机制:
在工具定义中标记 defer_loading: true,该工具在代理真正需要时才被加载。Claude 可以通过搜索接口查询和发现可用工具。
性能收益:
- Token 消耗减少 ~85%:在测试场景中从约 77K token 下降到 8.7K token
- 准确率显著提升:Opus 4.5 在知识检索任务中从 79.5% 提升到 88.1%
- 与缓存兼容:可与提示缓存(prompt caching)配合使用,进一步提升成本效率
特性二:编程工具调用(Programmatic Tool Calling)
传统工具使用需要多轮 API 调用;此特性让 Claude 通过代码执行来编排工具,中间结果不进入 Claude 的上下文窗口。
工作机制:
代理在执行环境中直接编排多个工具调用,控制流程和条件分支,类似于编写脚本。
性能收益:
- Token 消耗减少 37%:在复杂研究任务中
- 消除多轮推理:对于多步骤工作流至关重要
- 准确率改进:知识检索准确率从 25.6% 提升到 28.5%
- 支持并行执行:多个工具可并行调用,而非顺序执行
典型场景:
预算合规性检查需要处理数千条支出行项,传统方法会将所有行项塞入上下文,导致推理变差;编程调用则将逻辑留在执行环境中,模型只关注决策和控制。
特性三:工具使用示例(Tool Use Examples)
超越 JSON Schema 定义,提供具体的使用样板,帮助模型理解:
- 格式约定
- 参数关联关系
- 可选字段的包含方式
- 实际调用模式
性能收益:
- 准确率从 72% 提升到 90%:在复杂参数处理的内部测试中
这看似简单,但能显著减少模型的「猜测成本」,特别是在字段组合和边界情况处理上。
分层策略与实施
三项特性的最佳使用方式是分层应用:
- 先诊断性能瓶颈(是 token 消耗、推理轮数还是格式理解?)
- 针对最严重的瓶颈优先应用特性(例如工具众多则先用工具搜索)
- 根据需要补充其他特性
避免盲目全量启用,应结合具体场景灵活组合。
可用性与接入
- 发布状态:测试版(Beta)
- 接入方式:通过 Claude Developer Platform API,添加请求头
betas=["advanced-tool-use-2025-11-20"] - 文档:Developer Platform 官方文档和 GitHub cookbook 提供代码示例
核心思想
Anthropic 这三项特性的本质是突破 agent 工具使用的根本瓶颈:
- 工具搜索解决「定义爆炸」——用惰性加载替代全量加载,削弱工具数量的诅咒
- 编程调用解决「推理碎片化」——把复杂协调从模型推理转移到确定性执行环境,节省推理成本
- 使用示例解决「理解歧义」——通过具体样板而非抽象定义消除格式猜测
关键洞察是这三个瓶颈相互独立且都很关键。不是”选一个”而是”依症状组合”。对于工具多、任务复杂、格式复杂的真实 agent 场景,往往需要三个特性同时发力。
Anthropic 特意强调「分层策略」而非一刀切,反映了对工程现实的理解:不同 agent 的主要瓶颈不同,盲目优化错误的维度比不优化还糟。这套思路对设计任何复杂系统都有参考价值。
本文由作者按照 CC BY 4.0 进行授权