工作原理
模型会从头读取提示词。如果新请求开头的 token 与近期某次请求相同,服务商就可以复用此前的计算,而不必重算,并按更低的缓存价格收取这部分 token 的费用。只有开头连续匹配的部分才算命中:只要有一个 token 发生变化,从它开始的所有内容就都会重新算作新增输入。
智能体、聊天应用和文档问答会反复发送相同的指令、工具定义和文档,因此对这些场景而言,缓存价格比输入价格更重要。
缓存 token 如何收费
| 模型 | 输入 / 1M | 缓存 / 1M | 缓存价格占比 |
|---|---|---|---|
| Claude Opus 5.5 | $1.40 | $0.07 | 5% |
| Claude Sonnet 5.5 | $0.79 | $0.079 | 10% |
| GPT-6 Astra | $2.50 | $0.25 | 10% |
| GPT-6 Sol | $0.50 | $0.05 | 10% |
| Gemini 3.1 Pro | $0.50 | $0.08 | 16% |
| Gemini 3.8 Flash | $0.22 | $0.032 | 14.5% |
| DeepSeek V4.1 Flash | $0.03 | $0.00074 | 2.5% |
| Qwen 3.8 Max | $1.20 | $0.15 | 12.5% |
以上为 Zurelay 实时价格。每个模型的页面均提供完整价目表。
Claude 缓存你标记的内容
Claude 会缓存你用 cache_control 标记的内容,有效期为五分钟;使用 "ttl": "1h" 则可延长至一小时。写入五分钟缓存的费用为输入价格的 1.25 倍,一小时缓存则为 2 倍。在 Anthropic,旧款模型的缓存读取价格为输入价格的十分之一,Opus 和 Sonnet 5.5 为 0.05 倍,Fable 5.1 为 0.025 倍;各模型页面列有 Zurelay 的缓存价格。Claude Code 会自动为你标记提示词。大多数其他模型则会自动缓存开头的重复内容。
如何命中缓存
- 将固定不变的内容放在最前面:指令、工具定义、参考文档。之后放对话,最后放新问题。
- 确保开头的内容逐字节一致。开头出现时间戳、请求 ID,或工具列表顺序发生变化,都会导致每次请求无法命中缓存。
- 尽快发送后续请求。缓存会在几分钟后过期,因此短时间内连续请求可以命中缓存,一小时后再请求则需要重新开始 (除非你为 Claude 设置了一小时缓存)。
检查是否生效
每次响应中的用量信息都会显示缓存用量: Chat Completions 中是 usage.prompt_tokens_details.cached_tokens,Anthropic 的 Messages API 中是 cache_read_input_tokens 和 cache_creation_input_tokens。如果重复请求时缓存用量始终为零,说明提示词开头的某些内容在变化。
想了解缓存对整月费用的影响,可以在 LLM 费用计算器中设置缓存占比。