Claude 开发者平台“会用工具”了:搜索、代码、示例三板斧,让 AI 像人一样“边干边学”

原文:Introducing advanced tool use on the Claude Developer Platform
作者:Anthropic 工程团队
改写:EEAT 技术内容小组
适用人群:计算机、软件工程、信息管理等相关专业毕业生;正在搭建 AI Agent 的开发者
阅读耗时:约 18 min


一、先抛结论: Claude 这次到底更新了什么?

  1. Tool Search Tool——需要时才把工具说明书塞进脑子,上下文瞬间瘦身 85%。
  2. Programmatic Tool Calling——让 Claude 用 Python 脚本一口气调用 N 个工具,只把最终结果告诉你,省 token、省时间、少犯错。
  3. Tool Use Examples——在工具说明书里直接附上“示范作业”,模型照猫画虎,少踩坑。

一句话:以前是把整本工具大典塞进 Claude 怀里,现在 Claude 像人一样“边干边学”——查工具、写脚本、看样例,三板斧下来,复杂任务也能一次搞定。


二、为什么传统“工具调用”越来越撑不住?

痛点 场景举例 带来的后果
上下文爆炸 一次把 50 个 MCP 服务器、上万行工具定义全塞给模型 还没开口就吃掉 100K tokens,留给真正对话的空间所剩无几
选错工具 notification-send-usernotification-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”,平台把对应的 createPullRequestlistIssues 等定义动态展开进上下文。
  • 其余 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 差旅超支”

传统做法:

  1. 先拿员工列表 → 20 人
  2. 逐人调费用接口 → 20 次往返,回来 2000 条记录全进上下文
  3. 人工(模型)口算合计、比对预算 → 容易算错

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 → 搜索保证选对工具 → 脚本批量跑

七、最佳实践小结(可直接抄作业)

  1. 写清晰、可搜索的描述
    好例子:
    "Search customer orders by date range, status or total amount. Returns shipping & payment info."
    坏例子:
    "Execute order query"

  2. 永远留 3–5 个最高频工具“常驻”,其余全部 defer_loading: true

  3. 在系统提示里告诉 Claude 会“动态搜工具”:
    “You can use the tool search to find Slack, GitHub, Jira capabilities.”

  4. 给代码友好型工具补充“返回格式”文档,方便 Claude 写出正确解析逻辑。

  5. 示例数据要真实:

    • 用“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 给你跑一遍“无人工厂”了。祝开发顺利!