在 Claude 开发者平台上引入高级工具使用功能
来源: Anthropic Engineering Blog
作者: Anthropic Engineering Team
发布日期: 2024 年 11 月 24 日
类型: 产品功能发布
阅读时间: 约 12 分钟
概述
Anthropic 正式发布三项高级工具使用功能,使 Claude 能够动态发现、学习和执行工具。这些功能包括:工具搜索工具(Tool Search Tool)、程序化工具调用(Programmatic Tool Calling)和工具使用示例(Tool Use Examples)。这些功能使开发者能够构建更强大的 AI Agent,无缝集成数百个工具,同时保持高效的上下文窗口使用和准确性。核心突破包括:工具 token 消耗减少 85%,Opus 4 在 MCP 评估中从 49% 提升至 74%,Opus 4.5 从 79.5% 提升至 88.1%。
AI Agent 工具集成的挑战
AI Agent 的未来是模型能够无缝跨数百甚至数千个工具工作的世界。想象一下:
- IDE 助手:集成 git 操作、文件操作、包管理器、测试框架和部署管道
- 运营协调员:同时连接 Slack、GitHub、Google Drive、Jira、公司数据库和数十个 MCP 服务器
然而,要构建有效的 Agent,它们需要能够:
- 使用无限工具库而无需将所有定义预先塞入上下文
- 按需发现和加载工具,只保留与当前任务相关的内容
- 通过代码调用工具,而不仅依赖自然语言工具调用
- 从示例中学习正确的工具用法,而不仅从模式定义中学习
令牌消耗问题
我们的代码执行与 MCP 博客文章讨论了工具结果和定义在 Agent 读取请求之前如何消耗 50,000+ 令牌。考虑一个五服务器设置:
- GitHub:35 个工具(约 26K 令牌)
- Slack:11 个工具(约 21K 令牌)
- Sentry:5 个工具(约 3K 令牌)
- Grafana:5 个工具(约 3K 令牌)
- Splunk:2 个工具(约 2K 令牌)
那是 58 个工具消耗约 55K 令牌,甚至在对话开始之前。添加更多服务器(如 Jira,单独使用约 17K 令牌),很快接近 100K+ 令牌开销。在 Anthropic,我们见过工具定义在优化之前消耗 134K 令牌。
令牌成本不是唯一问题
最常见的失败是:
- 错误的工具选择:当工具具有相似名称时(如 notification-send-user vs notification-send-channel)
- 参数不正确:不知道何时包含可选参数或哪些组合有意义
- 无法学习使用模式:JSON 模式定义结构上有效的内容,但无法表达使用模式
三项新功能的解决方案
今天,我们发布三项功能来实现这一目标:
1. 工具搜索工具(Tool Search Tool)
功能:允许 Claude 使用搜索工具访问数千个工具,而无需消耗上下文窗口。
工作原理:
- 不是一次性加载所有工具定义,而是按需动态发现工具
- Claude 只为当前任务看到实际需要的工具
- 使用
defer_loading: true标记工具,使其可按需发现
传统方式 vs 工具搜索工具:
| 方式 | 令牌消耗 | 说明 |
|---|---|---|
| 传统方式 | ~77K 令牌 | 所有工具定义预先加载(~72K 令牌用于 50+ MCP 工具) |
| 工具搜索工具 | ~8.7K 令牌 | 按需发现(3-5 个相关工具,~3K 令牌) |
效果:令牌使用减少 85%,同时保持访问完整工具库的能力。
2. 程序化工具调用(Programmatic Tool Calling)
功能:允许 Claude 在代码执行环境中调用工具,减少对模型上下文窗口的影响。
为什么需要:
- 使用自然语言工具调用时,每次调用都需要完整的推理传递
- 中间结果堆积在上下文中,无论是否有用
- 代码是编排逻辑(循环、条件、数据转换)的自然选择
应用场景:
- Claude for Excel:使用程序化工具调用读取和修改包含数千行的电子表格,而不会压垮模型的上下文窗口
- 需要多次迭代的数据处理任务
- 涉及复杂编排的多步骤工作流
3. 工具使用示例(Tool Use Examples)
功能:提供一个通用标准,用于演示如何有效使用给定工具。
为什么需要:
- JSON 模式无法表达使用模式
- 无法告诉您何时包含可选参数
- 无法传达 API 期望的约定
- 从示例学习比从模式学习更有效
效果:
- 提供实际使用示例
- 展示边缘情况处理
- 传达最佳实践和约定
实际效果
在内部测试中,我们发现这些功能帮助构建了使用传统工具使用模式无法实现的功能:
性能提升
| 模型 | 传统方式 | 启用工具搜索工具 | 提升 |
|---|---|---|---|
| Opus 4 | 49% | 74% | +25% |
| Opus 4.5 | 79.5% | 88.1% | +8.6% |
Claude for Excel 案例
Claude for Excel 使用程序化工具调用:
- 读取和修改包含数千行的电子表格
- 不会压垮模型的上下文窗口
- 保持高效的性能和准确性
实现建议
工具搜索工具实现
1 | # 示例:配置工具搜索工具 |
程序化工具调用最佳实践
选择合适的场景:
- 多次迭代的数据处理
- 需要复杂编排的任务
- 涉及大量数据的操作
优化代码结构:
- 使用清晰的函数封装工具调用
- 添加适当的错误处理
- 记录中间结果以便调试
工具使用示例编写指南
- 包含常见用法:展示最典型的使用场景
- 覆盖边缘情况:处理参数变化和特殊情况
- 提供清晰的注释:解释为什么选择特定的调用方式
- 展示最佳实践:包括错误处理和验证
关键要点总结
- 三项核心功能:工具搜索工具、程序化工具调用、工具使用示例
- 令牌效率:工具搜索工具减少 85% 的令牌消耗
- 性能提升:Opus 4 在 MCP 评估中从 49% 提升至 74%
- 实际应用场景:Claude for Excel 等复杂数据处理任务
- 灵活性:Agent 可以根据任务选择自然语言调用或代码执行
个人评价
这次发布代表了 Anthropic 在 AI Agent 工具集成方面的重大进步。其价值主要体现在:
优点:
- 解决实际痛点:直接应对工具定义消耗大量令牌的核心问题
- 量化效果明显:85% 的令牌减少和显著的性能提升有说服力
- 实用性强:三项功能都针对实际开发中的具体问题
- 向后兼容:可以渐进式采用,不影响现有实现
潜在关注点:
- 学习曲线:开发者需要学习新的工具和模式
- 调试复杂性:动态加载可能增加调试难度
- 性能权衡:按需加载可能引入额外延迟
总体评价:
这是构建生产级 AI Agent 的重要基础设施改进。工具搜索工具解决了大规模工具集成的核心瓶颈,程序化工具调用为复杂数据处理提供了有效途径,工具使用示例提高了工具使用的准确性。
对于正在构建复杂 Agent 系统的开发者,建议:
- 优先使用工具搜索工具管理大型工具库
- 对数据处理密集型任务使用程序化工具调用
- 为自定义工具编写详细的使用示例
- 根据具体场景选择合适的工具调用方式
本文内容翻译自 Anthropic Engineering Blog 官方博客,原文标题为”Introducing advanced tool use on the Claude Developer Platform”。