来源:市场资讯

(来源:AI信息Gap)

前排提醒,你的 Claude Code 额度,又重置了!

就在刚刚,Anthropic 官宣重置了所有 Claude Code 用户的 5 小时和周额度限制,额度直接刷新,不需要任何操作。

打开网易新闻 查看精彩图片

但今天想聊的不是额度,是 Claude API 的一个新技巧。

max_tokens=0。

不生成任何内容。0 输出 token

但你的系统提示词,已经写进了缓存。等用户真正提问时,首次响应时间最多缩短 52%。

这个功能叫「提示词缓存预热」,Prompt Cache Prewarm。Anthropic 昨天分享了这个技巧,官方文档也更新了完整的使用说明。

打开网易新闻 查看精彩图片

用大模型 API 创建过应用的开发者都知道,第一个请求总是最慢的。

你的系统提示词可能有几千甚至几万个 token。AI 第一次收到时,要从头读一遍,写入缓存,然后才开始生成回答。

这就是「冷启动」。

后续请求就快多了,因为系统提示词已经被保存到了缓存里。但第一次问答,永远要承受冷启动的延迟。

提示词缓存预热要解决的就是这个问题。在用户到来之前,提前发一个「假请求」,让 Claude 把系统提示词写进缓存。

实现起来只需要改一个参数。把 max_tokens 设置成 0。

client = anthropic.Anthropic()prewarm = client.messages.create(model="claude-opus-4-7",max_tokens=0,system=[{"type": "text","text": BIG_SYSTEM_PROMPT,"cache_control": {"type": "ephemeral"},}],messages=[{"role": "user", "content": "warmup"}],code>

Claude 收到这个请求后,先读完整个系统提示词,写入缓存,然后立即返回。返回的 content 是空数组,output_tokens 是 0。

也就是,不生成任何内容,不产生额外的输出 token 费用。

之后真正的用户请求到达时,相同的系统提示词直接命中缓存。第一个用户,和第一百个用户的体验一样。

Anthropic 官方给出了一组 TTFT(首次响应时间)缩短的分析数据。

系统提示词有 20000 个 token,预热后首次响应缩短 4%。

40000 个 token,缩短 18%。

80000 个 token,缩短 34%。

160000 个 token,缩短 52%。

提示词越长,预热收益越大。

Agent 类应用,系统提示词动辄几万 token。工具定义、行为规范、RAG 背景文档全都要塞进去。这个场景下,预热能砍掉将近一半的首次等待时间。

对于延迟敏感的应用尤其有用,比如客服机器人、实时编程助手、语音对话。

注意,实现的时候有几个坑。

cache_control 必须放在系统提示词的内容块上,不能放在 messages 里的占位消息上。放错位置,缓存的 key 会绑定到占位消息,真正的用户请求就命中不了。

同时必须用显式缓存断点(explicit breakpoint),不能用自动缓存(automatic caching)。自动缓存会把断点放在最后一个块上,也就是那条占位消息,直接失效。

缓存默认 5 分钟过期。预热之后 5 分钟内没有用户请求到达,缓存就失效了。解决办法是用定时任务每隔 4 分钟发一次预热请求,保持缓存常驻。

完整的使用模式长这样。

SYSTEM_PROMPT = [{"type": "text","text": "你的超长 system prompt...","cache_control": {"type": "ephemeral"},def prewarm():"""应用启动时调用,或者定时任务每 4 分钟执行一次。"""client.messages.create(model="claude-opus-4-7",max_tokens=0,system=SYSTEM_PROMPT,messages=[{"role": "user", "content": "warmup"}],def respond(user_msg):"""真正的用户请求,命中预热缓存。"""return client.messages.create(model="claude-opus-4-7",max_tokens=1024,system=SYSTEM_PROMPT,messages=[{"role": "user", "content": user_msg}],# 应用启动时预热prewarm()

预热请求只收取缓存写入费用,是 base input 的 1.25 倍,不产生任何输出 token 费用。后续命中缓存的请求,input 部分只收 base input 的十分之一。

提示词缓存预热也有限制。

max_tokens=0 不能和流式输出(streaming)、扩展思考(extended thinking)、结构化输出、强制工具调用,以及批量请求(Batch API)同时使用。

之前有些开发者用 max_tokens=1 做预热。能用,但会生成一个无用的 token,还要额外计费。max_tokens=0 是 Anthropic 官方推荐的方案,更干净。

最低缓存门槛,Claude Opus 4.7 和 Claude Opus 4.6 是 4096 token,Claude Sonnet 4.6 只需要 1024 token。

系统提示词超过这个门槛的,直接加上预热。代码不到 10 行,复制粘贴就能用。

我是木易,Top2 + 美国 Top10 CS 硕,现在是 AI 产品经理。