Claude API 压缩 Agentic 搜索输出成本:每个运营者都必须设置的 response_inclusion 参数

Anthropic 6 月 11 日平台更新为 web_search_20260318 和 web_fetch_20260318 新增 response_inclusion 参数,允许运营者在多步骤 Agentic 工作流中丢弃已消费的搜索结果块,降低 API 输出 token 成本。

TheRouter Newsroom来源 Anthropic
抽象示意图展示 API 响应 token 流经过一个过滤门,选择性地丢弃已消费的搜索结果块,代表 response_inclusion 成本控制参数

如果你的 Agentic pipeline 在多步骤循环中调用 Claude 的 web search 工具,你可能已经注意到:即使模型已处理完搜索结果,API 响应仍会把完整的搜索结果块回传。这种输出膨胀与账单直接挂钩。Anthropic 的 6 月 11 日平台更新通过一个新参数关闭了这个缺口,运营者只需修改一个字段即可生效。

发生了什么

web_search_20260318web_fetch_20260318 这两个工具版本于 2026 年 6 月 11 日随 Anthropic 平台更新一同发布,引入了 response_inclusion 参数。将其设置为 "excluded",API 将在同一轮次内某个搜索结果已被代码执行(code execution)调用完全消费的情况下,从响应中去掉对应的 server_tool_use 和结果块对。默认值保持 "full",现有集成不受影响,除非主动启用。

{
  "tools": [
    {
      "type": "web_search_20260318",
      "name": "web_search",
      "response_inclusion": "excluded"
    }
  ]
}

同次更新还发布了 code_execution_20260521,在工具描述中明确写入了每个代码单元 90 秒的执行时间上限。Claude 现在可以读取这个限制并合理规划长时间运行的代码单元,而不是静默地触碰上限。

为什么对 AI 工程团队重要

Web search 是 Agentic 操作中 token 消耗最密集的场景之一。Anthropic 文档描述了典型流程:Claude 决定搜索,API 执行查询并返回结果,Claude 对内容进行推理,最终响应包含引用。在朴素的实现中,所有中间结果块都会出现在 API 响应里,即使模型已经在动态过滤的代码执行调用中处理过它们。

对于单轮交互查询,这点开销尚可接受。但对于每轮进行 10 到 20 次搜索的多步骤研究 Agent、grounding 循环或引用生成 pipeline,累积的搜索结果回传是可观的额外开销。设置 response_inclusion: "excluded" 后,这些已消费的块在到达你的 gateway 之前就会被剥离,降低输出 token 数量,而不影响模型的可见内容。

代码执行预算披露进一步放大了这一优化。当 Claude 知道每个代码单元 90 秒的限制,它可以将工作拆分成更小的单元,避免因静默超时而触发重试请求。更少的重试意味着更少的可计费请求。

Router/Operator 视角

对于通过 AI gateway 或任何中间件层路由 Claude API 调用的团队,response_inclusion 的变化创造了一个干净的成本优化点,无需更改模型级配置或重写 prompt:

对工具调用进行版本区分:仅在 Claude 使用代码执行来过滤结果的 Agentic 请求路径上,才从 web_search_20250305web_search_20260209 升级到 web_search_20260318。对于需要在响应中保留原始搜索块的交互式助手工作流,保持旧版本不变。

响应体积规划:设置 "excluded" 后,输出 token 数量的降幅与每轮被代码执行消费的搜索调用数成比例,但并非对所有请求形态均匀分布——它只适用于同一轮次内已完成的代码执行调用。在切换前后分别跟踪 usage.output_tokens,按工作流类型衡量实际影响。

ZDR 与路由兼容性:文档指出 web search 在 Amazon Bedrock 上不可用,动态过滤(与 response_inclusion 配合使用)在 Vertex AI 上也不可用。如果你的路由策略跨 Bedrock、Vertex 和 Anthropic 直连 API 分配流量,工具版本选择必须感知 provider。路由到 Bedrock 或 Vertex fallback 的请求不应在启用动态过滤的情况下使用 web_search_20260318

模型支持范围web_search_20260318 的动态过滤功能支持 Claude Fable 5、Opus 4.8、Mythos 5、Mythos Preview、Opus 4.7、Opus 4.6 和 Sonnet 4.6。如果你的 fallback 链中包含较旧的模型,需测试它们是否接受新工具版本,或是否需要回退到 web_search_20250305

TheRouter 用户应关注或尝试的事项

如果你通过 gateway 层使用 Claude 的内置 web search,现在有两个配置决策需要关注:

  1. 为使用动态过滤的 Agent pipeline 设置 response_inclusion: "excluded" 成本降低立竿见影,无需修改模型或 prompt。唯一注意点:你的响应处理代码不应依赖这些回传的搜索结果块进行下游处理——如果依赖,保持默认的 "full"

  2. 为代码密集型 Agent 更新至 code_execution_20260521 工具描述中的 90 秒每单元限制让 Claude 具备合理规划单元边界的上下文信息,对文档分析、数据提取或运行长时间 Python 代码的验证 pipeline 尤其重要。

两项更新均为向后兼容的可选功能,无需更改路由策略本身,只需修改请求中的工具定义字段即可。

决策检查清单

在生产环境切换工具版本之前:

  • 确认你的 provider 路径支持动态过滤(Anthropic API 直连、Claude Platform on AWS、Microsoft Foundry——不支持 Bedrock 或 Vertex AI)
  • 验证你的 fallback 模型链仅包含支持 web_search_20260318 的模型
  • 确认你的响应处理代码不依赖回传的搜索结果块进行下游逻辑处理
  • 切换前在样本数据上测量 usage.output_tokens 以建立成本对比基线
  • 仅在启用代码执行动态过滤的请求路径上应用 response_inclusion: "excluded"——未使用代码执行的请求在两种设置下输出结果相同
客服支持