简短答案
是否产生缓存折扣,取决于上游模型、调用协议和请求格式。BetterToken 会根据上游返回的 usage 信息进行用量记录和计费展示。 如果上游模型支持 prompt caching,并且响应中返回缓存命中字段,你可以在响应 usage 或调用日志中查看缓存相关 token。不同模型的缓存机制并不相同,不要假设所有模型都自动享受缓存折扣。什么是缓存计费
Prompt caching 的核心思想是:当多次请求包含相同或高度稳定的长前缀时,上游模型可能复用之前处理过的上下文,从而降低部分输入 token 的成本。 它适合这些场景:- 长系统提示词
- 固定项目说明
- 大段稳定文档上下文
- 多轮代码任务中重复出现的仓库说明
- 批量任务里相同的规则和格式要求
不同协议的差异
同一个 Claude 模型如果通过不同协议调用,缓存行为也可能不同。深度使用 Claude Code 或 Anthropic-compatible API 时,应优先按 Anthropic 原生缓存机制理解。
如何判断是否命中缓存
查看响应中的 usage 字段或 dashboard 调用记录。不同 API 格式的字段名称可能不同:
字段大于 0 时,通常表示本次请求有一部分上下文命中了缓存。字段不存在时,可能是模型不支持、协议不返回、请求未命中,或当前工具隐藏了原始 usage。
提高命中率的做法
- 把稳定内容放在 prompt 前面。
- 把用户每次变化的输入放在后面。
- 不要在稳定前缀中放时间戳、随机 ID 或每次变化的说明。
- 同一类任务尽量使用同一个模型和同一种调用协议。
- Claude 原生格式下,根据模型文档给需要缓存的 content block 添加
cache_control。 - 批量任务先用少量请求观察 usage 字段,再估算真实成本。
常见误区
- 以为所有模型都自动支持缓存折扣。
- 以为命中缓存后整条请求都免费。
- 频繁切换模型,导致缓存无法复用。
- 用 OpenAI-compatible 格式调用 Claude,却期待 Claude 原生缓存字段。
- 只看总 token,不看 cached tokens、cache read 或 cache creation 字段。