跳转到主要内容

简短答案

是否产生缓存折扣,取决于上游模型、调用协议和请求格式。LLMEasy 会根据上游返回的 usage 信息进行用量记录和计费展示。 如果上游模型支持 prompt caching,并且响应中返回缓存命中字段,你可以在响应 usage 或调用日志中查看缓存相关 token。不同模型的缓存机制并不相同,不要假设所有模型都自动享受缓存折扣。

什么是缓存计费

Prompt caching 的核心思想是:当多次请求包含相同或高度稳定的长前缀时,上游模型可能复用之前处理过的上下文,从而降低部分输入 token 的成本。 它适合这些场景:
  • 长系统提示词
  • 固定项目说明
  • 大段稳定文档上下文
  • 多轮代码任务中重复出现的仓库说明
  • 批量任务里相同的规则和格式要求
缓存不适合把所有内容都放进 prompt。动态内容、时间戳、随机 ID 和用户每次变化的数据应尽量放在后面。

不同协议的差异

场景常见机制
OpenAI-compatible部分模型会自动对稳定前缀做缓存,响应 usage 可能返回 cached tokens
Anthropic-compatible / Claude部分模型需要显式 cache_control 标记才能获得缓存收益
同一个 Claude 模型如果通过不同协议调用,缓存行为也可能不同。深度使用 Claude Code 或 Anthropic-compatible API 时,应优先按 Anthropic 原生缓存机制理解。

如何判断是否命中缓存

查看响应中的 usage 字段或 dashboard 调用记录。不同 API 格式的字段名称可能不同:
API 格式常见缓存字段
OpenAI Chat Completionsusage.prompt_tokens_details.cached_tokens
OpenAI Responses APIusage.input_tokens_details.cached_tokens
Anthropic Messages APIusage.cache_read_input_tokens / usage.cache_creation_input_tokens
字段大于 0 时,通常表示本次请求有一部分上下文命中了缓存。字段不存在时,可能是模型不支持、协议不返回、请求未命中,或当前工具隐藏了原始 usage。

提高命中率的做法

  1. 把稳定内容放在 prompt 前面。
  2. 把用户每次变化的输入放在后面。
  3. 不要在稳定前缀中放时间戳、随机 ID 或每次变化的说明。
  4. 同一类任务尽量使用同一个模型和同一种调用协议。
  5. Claude 原生格式下,根据模型文档给需要缓存的 content block 添加 cache_control
  6. 批量任务先用少量请求观察 usage 字段,再估算真实成本。

常见误区

  • 以为所有模型都自动支持缓存折扣。
  • 以为命中缓存后整条请求都免费。
  • 频繁切换模型,导致缓存无法复用。
  • 用 OpenAI-compatible 格式调用 Claude,却期待 Claude 原生缓存字段。
  • 只看总 token,不看 cached tokens、cache read 或 cache creation 字段。

关于 LLMEasy

LLMEasy 的计费和用量展示以实际请求、上游返回的 usage 信息和当前模型价格为准。需要确认缓存是否生效时,请同时查看模型文档、响应 usage 字段和 dashboard 调用记录。