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

