Claude 开发者平台“会用工具”了:搜索、代码、示例三板斧,让 AI 像人一样“边干边学”
原文:Introducing advanced tool use on the Claude Developer Platform
作者:Anthropic 工程团队
改写:EEAT 技术内容小组
适用人群:计算机、软件工程、信息管理等相关专业毕业生;正在搭建 AI Agent 的开发者
阅读耗时:约 18 min
一、先抛结论: Claude 这次到底更新了什么?
-
Tool Search Tool——需要时才把工具说明书塞进脑子,上下文瞬间瘦身 85%。 -
Programmatic Tool Calling——让 Claude 用 Python 脚本一口气调用 N 个工具,只把最终结果告诉你,省 token、省时间、少犯错。 -
Tool Use Examples——在工具说明书里直接附上“示范作业”,模型照猫画虎,少踩坑。
一句话:以前是把整本工具大典塞进 Claude 怀里,现在 Claude 像人一样“边干边学”——查工具、写脚本、看样例,三板斧下来,复杂任务也能一次搞定。
二、为什么传统“工具调用”越来越撑不住?
| 痛点 | 场景举例 | 带来的后果 |
|---|---|---|
| 上下文爆炸 | 一次把 50 个 MCP 服务器、上万行工具定义全塞给模型 | 还没开口就吃掉 100K tokens,留给真正对话的空间所剩无几 |
| 选错工具 | notification-send-user 与 notification-send-channel 名字太像 |
调错 API,用户收不到提醒 |
| 中间结果污染 | 查 10MB 日志,所有原始行都回流到模型窗口 | 关键指令被挤出内存,回答质量骤降 |
| 多次往返慢 | 每调一个工具就要等一次模型推理 | 五个工具五步推理,延迟高、花钱多 |
| 只给模式不给“套路” | JSON Schema 只会说“字段必填”,不会告诉你“日期用 YYYY-MM-DD” | 模型瞎猜格式,后端直接 400 报错 |
三、Feature 1:Tool Search Tool——“要用谁,再翻谁的牌子”
1. 工作原理(用大白话)
-
你把全部工具定义上传到 API,但给它们打上 defer_loading: true的标签。 -
Claude 先只能看到一个“工具搜索引擎”+ 3~5 个最常用工具。 -
当它发现“我要搞 GitHub”,先搜一下“github”,平台把对应的 createPullRequest、listIssues等定义动态展开进上下文。 -
其余 Slack、Jira、Splunk 等工具继续“躺平”,不占位置。
2. 内部数据对比
| 方案 | 初始 token 占用 | 可用剩余窗口 | 准确率* |
|---|---|---|---|
| 传统一次性加载 | ≈ 77 K | 剩 25% | Opus 4 仅 49% |
| Tool Search Tool | ≈ 8.7 K | 剩 95% | Opus 4 提升到 74% |
* 测试任务:在 58 个工具里选出正确的那一个并填对参数。
3. 快速上手指南
// 1. 把“搜索工具”本身放进列表
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex"
}
// 2. 给其他工具打上“延迟加载”标签
{
"name": "github.createPullRequest",
"description": "Create a pull request",
"input_schema": {...},
"defer_loading": true
}
注意:Prompt caching 不会被打破,因为被延迟的工具压根不在初始提示里出现。
四、Feature 2:Programmatic Tool Calling——让 Claude“写脚本”一次性跑完流程
1. 为什么又要写代码?
-
代码天生支持循环、判断、并发,比“自然语言一步一请示”高效得多。 -
中间数据留在沙箱,只把结论返回给模型,上下文干净。
2. 案例:查“哪些同事 Q3 差旅超支”
传统做法:
-
先拿员工列表 → 20 人 -
逐人调费用接口 → 20 次往返,回来 2000 条记录全进上下文 -
人工(模型)口算合计、比对预算 → 容易算错
Programmatic Tool Calling 做法:
Claude 直接生成一段 Python,asyncio.gather 并行拉数据,脚本里把 2000 条记录求和、过滤,最后只输出 3 行 JSON 给模型。
结果:token 降 37%,延迟省掉 19 次推理,准确率从 25.6% 提到 28.5%。
3. 四步流程拆解
| 步骤 | 你看到的 | 背后发生了什么 |
|---|---|---|
| ① 标记工具 | 在工具定义里加 "allowed_callers": ["code_execution_20250825"] |
告诉平台:这些工具允许被沙箱代码调用 |
| ② Claude 写脚本 | 返回一段 code_execution 请求 |
模型在沙箱里 import 工具函数,写主程序 |
| ③ 平台代理执行 | 你收到带 caller 字段的 tool 请求 |
你把结果回给平台,平台喂给沙箱,不进模型窗口 |
| ④ 只看结果 | 沙箱把 stdout 回抛给 Claude |
模型基于最终摘要回答用户 |
五、Feature 3:Tool Use Examples——“照着我的作业抄,就不会错”
1. Schema 的盲区
JSON Schema 只能告诉你“字段存在”,无法说明:
-
日期到底用哪种格式? -
什么情况下才填 contact.phone? -
escalation.level=2时,sla_hours应该写几小时?
2. 解决方案:在工具定义里塞“示范答案”
"input_examples": [
{
"title": "Login page returns 500 error",
"priority": "critical",
"reporter": { "id": "USR-12345", "contact": {"email": "jane@acme.com"} },
"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" } // 注意:没填 contact,也没 escalation
}
]
Claude 一看就懂:
-
关键故障 → 信息填满满; -
功能需求 → 只留核心字段; -
日期格式 = YYYY-MM-DD,用户 ID 带 USR- 前缀。
实测:复杂参数准确率从 72% 升到 90%。
六、组合拳打法:什么时候上哪一招?
| 瓶颈 | 第一招 | 第二招 | 第三招 |
|---|---|---|---|
| 工具多、token 爆炸 | Tool Search Tool | → 示例提高准确率 | → 脚本加速 |
| 中间数据太大 | Programmatic Tool Calling | → 搜索减少无关工具 | → 示例防错 |
| 老调错参数 | Tool Use Examples | → 搜索保证选对工具 | → 脚本批量跑 |
七、最佳实践小结(可直接抄作业)
-
写清晰、可搜索的描述
好例子:
"Search customer orders by date range, status or total amount. Returns shipping & payment info."
坏例子:
"Execute order query" -
永远留 3–5 个最高频工具“常驻”,其余全部
defer_loading: true。 -
在系统提示里告诉 Claude 会“动态搜工具”:
“You can use the tool search to find Slack, GitHub, Jira capabilities.” -
给代码友好型工具补充“返回格式”文档,方便 Claude 写出正确解析逻辑。
-
示例数据要真实:
-
用“Beijing”“Shanghai”而非“city_string”; -
价格写 99.00 而非 “number”; -
每工具 1–5 个示例即可,别写论文。
-
八、FAQ:开发者最关心的问题
Q1:搜索工具会增加延迟吗?
A:会多一次搜索往返,但只要工具库 >10 个且单条定义 >2K tokens,省下的上下文和准确率提升更划算。
Q2:延迟加载会不会导致找不到工具?
A:只要工具名称/描述写得正常,regex/BM25 都能匹配;真不放心可自定义向量搜索。
Q3:Programmatic Tool Calling 支持哪些语言?
A:目前沙箱内置 Python3,平台把工具封装成 async Python 函数。
Q4:沙箱里能装第三方库吗?
A:官方沙箱暂不支持 pip install,如需特殊库,得自己托管代码执行环境并对接 MCP。
Q5:Tool Use Examples 会撑爆 token 吗?
A:一个示例通常 0.5–1K tokens,带来 10–20% 准确率提升。复杂嵌套结构才用,简单字段没必要。
九、一行代码开启“高级工具用法”
import anthropic
client = anthropic.Anthropic()
response = 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"},
# 下面放你自己的工具,记得加 defer_loading / allowed_callers / input_examples
],
messages=[{"role": "user", "content": "Which team members exceeded their Q3 travel budget?"}]
)
十、结语:把 AI 从“背词典”解放到“查资料+写脚本+看样例”
过去我们让 Claude 像记忆大师,把整本 API 大典背下来再上场;
现在 Claude 更像一位工程师——
-
开工前先搜一搜,只带必要的工具说明书; -
遇到重活先写段脚本,批量拉数据、算结果,不把垃圾搬回大脑; -
新接口看不懂?瞄一眼示例就明白套路。
这三大能力不是炫技,而是让 AI 真正省 tokens、省时间、少犯错,从而能撑起动辄几十上百个工具的企业级流程。
下一步,轮到你把自家的 GitHub、Slack、Jira、ERP……统统接进来,让 Claude 给你跑一遍“无人工厂”了。祝开发顺利!
