Claude 开发者平台高级工具使用功能介绍
概述
Anthropic 发布了三个测试版功能,使 Claude 能够更高效地动态发现、学习和执行工具:
- 工具搜索工具 – 允许 Claude 按需发现工具,无需预先加载所有定义
- 编程式工具调用 – 使 Claude 能够通过代码而非顺序 API 调用来编排工具
- 工具使用示例 – 提供超出模式定义的具体使用模式
工具搜索工具
问题
大型工具库会消耗大量 token。一个五服务器配置(GitHub、Slack、Sentry、Grafana、Splunk)在开始任何对话之前总共需要约 55K token。该功能指出,在 Anthropic 的规模下,"工具定义在优化前消耗 134K token"。
工具选择错误频繁发生,尤其是名称相似的工具,如 notification-send-user 与 notification-send-channel。
解决方案
工具搜索工具无需预先加载所有工具定义,而是按需发现相关工具。根据文档,这可以实现"在保持访问完整工具库的同时,将 token 使用量减少 85%"。
内部测试显示准确率提升:Opus 4 从 49% 提升到 74%,Opus 4.5 从 79.5% 提升到 88.1%。
实现
工具标记 defer_loading: true 以启用按需发现:
{
"tools": [
{"type": "tool_search_tool_regex_20251119", "name": "tool_search_tool_regex"},
{
"name": "github.createPullRequest",
"description": "Create a pull request",
"defer_loading": true
}
]
}对于 MCP 服务器,可以延迟加载整个服务器,同时保持高频使用工具处于加载状态。
使用场景
适用于:
- 工具定义消耗 >10K token
- 工具选择准确率问题
- 具有多个服务器的 MCP 系统
- 可用工具 10 个以上
不太适用于:
- 小型库(<10 个工具)
- 每个会话频繁使用的工具
- 紧凑的工具定义
编程式工具调用
问题
传统工具调用存在两个瓶颈:
上下文污染 – 中间结果不必要地累积。分析 10MB 日志文件中的错误模式会将整个文件加载到上下文中,尽管只需要摘要。
推理开销 – 每次工具调用都需要完整的模型推理过程。一个五工具工作流意味着五次独立推理加上手动结果综合。
解决方案
Claude 编写 Python 代码来编排工具、处理输出并控制进入其上下文的内容。代码在沙箱环境中执行,只有最终结果对模型可见。
示例用例:查找超出 Q3 差旅预算的团队成员。
传统方法:获取 20 名团队成员 → 获取每人的 50-100 条费用项目(20 次调用)→ 获取预算 → 所有 2,000+ 条项目进入上下文 → Claude 手动求和比较。
使用编程式工具调用:Claude 编写代码并行获取数据、本地过滤,仅返回超出限额的 2-3 人。
效率提升
- Token 节省:减少 37%(复杂任务从 43,588 降至 27,297 token)
- 延迟:通过在一个代码块中编排 20+ 次调用,消除 19+ 次推理过程
- 准确率:知识检索从 25.6% 提升到 28.5%;GIA 基准从 46.5% 提升到 51.2%
实现
步骤 1 – 将工具标记为可从代码调用:
{
"tools": [
{"type": "code_execution_20250825", "name": "code_execution"},
{
"name": "get_team_members",
"allowed_callers": ["code_execution_20250825"]
}
]
}步骤 2 – Claude 生成 Python 编排代码
步骤 3 – 工具在代码执行环境内执行,而非 Claude 的上下文
步骤 4 – 仅最终输出返回给 Claude
使用场景
最适用于:
- 需要聚合的大型数据集
- 多步工作流(3+ 次依赖调用)
- 在 Claude 查看之前过滤/转换结果
- 跨多个项目的并行操作
不太适用于:
- 单工具调用
- 需要 Claude 查看所有中间结果的任务
- 响应较小的快速查询
工具使用示例
问题
JSON Schema 定义结构有效性,但无法表达使用模式:何时包含可选参数、哪些组合有意义,或 API 约定。
示例:具有必需 title 字段和多个可选嵌套字段的支持工单 API 会留下未解答的问题:
- 日期格式:"2024-11-06"、"Nov 6, 2024" 还是 ISO 8601?
- ID 约定:UUID、"USR-12345" 还是 "12345"?
- 何时填充嵌套结构?
escalation.level与priority之间的关系?
解决方案
工具使用示例展示具体使用模式:
{
"name": "create_ticket",
"input_examples": [
{
"title": "Login page returns 500 error",
"priority": "critical",
"labels": ["bug", "authentication", "production"],
"reporter": {
"id": "USR-12345",
"name": "Jane Smith",
"contact": {"email": "jane@acme.com", "phone": "+1-555-0123"}
},
"due_date": "2024-11-06",
"escalation": {"level": 2, "notify_manager": true, "sla_hours": 4}
},
{
"title": "Add dark mode support",
"labels": ["feature-request", "ui"],
"reporter": {"id": "USR-67890", "name": "Alex Chen"}
},
{"title": "Update API documentation"}
]
}内部测试显示,复杂参数处理的准确率从 72% 提升到 90%。
使用场景
最适用于:
- 具有非明显模式的复杂嵌套结构
- 具有条件包含的多个可选参数
- 特定领域的 API 约定
- 需要澄清的相似工具
不太适用于:
- 简单的单参数工具
- 标准格式(URL、电子邮件)
- 更适合通过模式约束处理的验证
最佳实践
策略性分层使用功能
从最大的瓶颈开始:
- 工具定义导致的上下文膨胀 → 工具搜索工具
- 大型中间结果 → 编程式工具调用
- 参数错误 → 工具使用示例
根据需要叠加其他功能;它们是互补的。
工具搜索设置
使用清晰、描述性的工具名称和描述:
{
"name": "search_customer_orders",
"description": "Search for customer orders by date range, status, or total amount. Returns order details including items, shipping, and payment info."
}保持三到五个最常用工具始终加载;延迟加载其余工具。
编程式工具调用设置
清晰记录返回格式,帮助 Claude 编写正确的解析逻辑:
{
"name": "get_orders",
"description": "Retrieve orders for a customer. Returns: List of order objects with id, total (float), status, items array, and created_at timestamp"
}选择支持并行运行且幂等的工具。
工具使用示例设置
精心设计展示最小、部分和完整规范模式的真实数据示例。保持示例简洁(每个工具 1-5 个),专注于实际的歧义点。
入门
使用测试版 header 启用功能:
client.beta.messages.create(
betas=["advanced-tool-use-2025-11-20"],
model="claude-sonnet-4-5-20250929",
max_tokens=4096,
tools=[
{"type": "tool_search_tool_regex_20251119", "name": "tool_search_tool_regex"},
{"type": "code_execution_20250825", "name": "code_execution"},
]
)详见 平台文档 获取详细指南和 cookbook。
实际应用
Claude for Excel 使用编程式工具调用读取和修改包含数千行的电子表格,而不会使模型的上下文窗口过载,展示了传统工具模式之前无法实现的实际能力。