Skip to main content

4月30日截止:Claude 1M Context Beta 停用,你的代码需要改吗?

Anthropic 将于4月30日停用 context-1m-2025-08-07 beta header,超过200K Token 的请求将直接报错。两步完成迁移,注意一个隐藏的 prefill 破坏性变更。

News模型更新API 迁移Claude SonnetEst. read8分钟
2026.04.27 published
4月30日截止:Claude 1M Context Beta 停用,你的代码需要改吗?

4月30日截止:Claude 1M Context Beta 停用,你的代码需要改吗?

结论先说: 如果你的代码里有 anthropic-beta: context-1m-2025-08-07 这行请求头,4月30日之后超过 200K Token 的请求将直接报错。迁移只需两步,但有一个隐藏的破坏性变更很多人没注意到。


发生了什么

Anthropic 将于 2026年4月30日 正式停用 context-1m-2025-08-07 beta header。

这个 header 是去年8月随 Claude Sonnet 4 一同推出的临时机制,让开发者可以提前体验 1M token 的超长上下文。现在,Anthropic 认为它已经完成历史使命——因为 Claude Sonnet 4.6 和 Claude Opus 4.6 早在今年2月就已原生支持 1M 上下文,不再需要任何 beta 开关。

退役通知于3月30日写入官方 changelog,距截止日期有30天窗口。但据技术媒体 Riptide Insights 的分析,很多团队已经习惯性地忽略 changelog 更新,直到现在才意识到这件事。

哪些 Claude API 用户受影响

对照以下清单,满足任意一条就需要读下去:

  • 代码中使用了 anthropic-beta: context-1m-2025-08-07 请求头
  • 正在调用 claude-sonnet-4-5claude-sonnet-4(旧版 ID:claude-sonnet-4-20250514
  • 在 Amazon Bedrock 或 Google Cloud Vertex AI 上使用了上述模型 + 该 beta header

不受影响的情况: 如果你已经在用 claude-sonnet-4-6claude-opus-4-6 或更新的模型,上下文限制早就是 1M token 标准配置,什么都不需要改。


迁移方法:两步搞定

绝大多数情况下,迁移就是两行代码的事。

Step 1:删掉 beta header

# 改之前
headers = {
    "x-api-key": "YOUR_API_TOKEN",
    "anthropic-version": "2023-06-01",
    "anthropic-beta": "context-1m-2025-08-07",   # ← 删掉这行
    "content-type": "application/json"
}

# 改之后
headers = {
    "x-api-key": "YOUR_API_TOKEN",
    "anthropic-version": "2023-06-01",
    "content-type": "application/json"
}
# 改之前
headers = {
    "x-api-key": "YOUR_API_TOKEN",
    "anthropic-version": "2023-06-01",
    "anthropic-beta": "context-1m-2025-08-07",   # ← 删掉这行
    "content-type": "application/json"
}

# 改之后
headers = {
    "x-api-key": "YOUR_API_TOKEN",
    "anthropic-version": "2023-06-01",
    "content-type": "application/json"
}

Step 2:更新模型 ID

# 旧模型 ID(停用后不再支持 1M context)
model = "claude-sonnet-4-5"
# 或
model = "claude-sonnet-4-20250514"

# 改为 Sonnet 4.6
model = "claude-sonnet-4-6"
# 旧模型 ID(停用后不再支持 1M context)
model = "claude-sonnet-4-5"
# 或
model = "claude-sonnet-4-20250514"

# 改为 Sonnet 4.6
model = "claude-sonnet-4-6"

使用 Anthropic 官方 SDK 的完整写法:

import anthropic

client = anthropic.Anthropic(api_key="YOUR_API_TOKEN")

response = client.messages.create(
    model="claude-sonnet-4-6",   # 更新模型 ID
    max_tokens=8192,
    messages=[{"role": "user", "content": "你的超长文档内容..."}]
    # 无需任何 beta header,1M context 已是默认值
)
import anthropic

client = anthropic.Anthropic(api_key="YOUR_API_TOKEN")

response = client.messages.create(
    model="claude-sonnet-4-6",   # 更新模型 ID
    max_tokens=8192,
    messages=[{"role": "user", "content": "你的超长文档内容..."}]
    # 无需任何 beta header,1M context 已是默认值
)

通过 ClaudeAPI 中转接入的用法完全一致,只需将 base_url 指向 https://gw.claudeapi.com 即可。具体接入方式参考 ClaudeAPI 接入教程


⚠️ 隐藏破坏性变更:prefill 报错

这里有一个容易踩的坑,官方文档写了但很多人没注意到。

Claude Sonnet 4.6 不再支持 assistant 消息预填充(prefill)。

什么是 prefill?就是在 messages 数组里用 "role": "assistant" 预先填入一段内容,引导模型按特定格式输出。这是老版本常见的技巧:

# 这种写法在 Sonnet 4.5 上没问题
messages = [
    {"role": "user", "content": "请输出 JSON 格式的结果"},
    {"role": "assistant", "content": "{"}   # ← prefill,引导模型以 { 开头
]

# 换到 Sonnet 4.6 后,这条请求会返回 400 错误
# 这种写法在 Sonnet 4.5 上没问题
messages = [
    {"role": "user", "content": "请输出 JSON 格式的结果"},
    {"role": "assistant", "content": "{"}   # ← prefill,引导模型以 { 开头
]

# 换到 Sonnet 4.6 后,这条请求会返回 400 错误

如何修复? 有三种替代方案:

  1. Structured Outputs(推荐):使用 output_config.format 参数直接指定输出格式,比 prefill 更可靠

  2. System Prompt 约束:在系统提示词中明确要求输出格式,例如「请严格以 JSON 格式输出,不要包含任何额外说明」

  3. Prompt 改写:在 user 消息中直接说明格式要求

如果你的代码库里有大量 prefill 用法,Anthropic 在 Claude Code 中提供了 /claude-api migrate 命令,可以自动扫描并替换。


迁移到 Sonnet 4.6:能力和价格对比

从 Sonnet 4.5 迁移到 Sonnet 4.6,除了破坏性变更要处理,其余都是好消息:

对比项 claude-sonnet-4-5 claude-sonnet-4-6
1M Context 需 beta header ✅ 原生支持,无需 header
价格(输入/输出) $3 / $15 per MTok $3 / $15 per MTok(不变)
SWE-bench 编码能力 79.6%(提升)[^1]
prefill 支持 ✅ 支持 ❌ 不支持(需改代码)
Prompt Cache ✅ 支持 ✅ 支持,最高省 90%
Batch API 折扣 ✅ 50% ✅ 50%

价格没有变化,性能有提升,唯一的代价是处理 prefill 的兼容问题。对于大多数应用来说,这是值得的。

[^1]: SWE-bench 数据来自 NxCode 技术媒体对 Sonnet 4.6 的评测报告(2026年2月),官方页面未直接列出该数字,使用前请核实。

如果对价格敏感,建议同时了解一下 Prompt Caching 的使用方式,在超长上下文场景下最高可省 90% 的费用。详情参考 Claude API 价格完全指南


常见问题

Q:4月30日之后,用旧模型 ID 调用会完全不能用吗?

模型本身(claude-sonnet-4-5)不会下线,还可以正常调用,只是超过 200K token 的请求会报错。如果你的应用不涉及超长上下文,旧模型 ID 暂时还能用——但建议尽早迁移,避免后续其他问题。

Q:Bedrock 和 Vertex AI 用户怎么处理?

据 Riptide Insights 报道,两个平台的 inference profile 配置如果包含该 beta header,同样会受影响,需要在对应平台的配置页面删除该 header。具体操作建议参考各平台官方文档。

Q:迁移之后,已有的 Prompt Cache 缓存还有效吗?

缓存是与模型 ID 绑定的,换了模型 ID 之后缓存会失效,需要重新建立。第一次请求会有缓存未命中的费用,之后恢复正常。


如果在迁移过程中遇到报错,可以参考 Claude API 报错完全手册 排查常见问题。

迁移完成后,通过 ClaudeAPI 控制台即可确认新模型是否正常调用:console.claudeapi.com

本文由 ClaudeAPI 团队出品。

Related Articles