Skip to main content
支持。缓存相关参数原样传给上游,响应里的缓存命中字段原样返回,命中缓存的输入按模型与价格总表中的「缓存读」价格计费。总表中缓存读一栏为「—」的模型没有缓存价,全部按普通输入价计费。 具体哪个模型有缓存价、价格多少,以总表为准。缓存不需要额外开启,也没有单独的写入费用。

怎样提高命中率

缓存按前缀匹配:两次请求开头的内容完全一样,这部分才可能命中。组织请求时:
  • 把系统提示词、工具定义、长文档等不变的内容放在最前面;
  • 把用户问题、时间戳、随机 ID 等每次都变的内容放在最后;
  • 多轮对话只在末尾追加新消息,不改动前面的历史;
  • 同一业务固定使用同一个模型,缓存按模型隔离,换模型不共享。
OpenAI 模型还可以传 prompt_cache_key,让同一类请求更集中地命中,用法见 OpenAI 提示词缓存文档。

确认是否命中

看响应 usage 中的缓存字段,大于 0 就是命中了: 命中的部分按缓存读价格计算,其余输入按普通输入价,完整算法见看懂日志里的扣费。实际扣费以调用日志为准。

注意事项

  • Gemini 的隐式缓存命中率不稳定,命中行为由上游决定。做成本预算时按无缓存价估算,命中算额外节省。
  • Grok 的上游不保证每次命中,同样按无缓存价估算。
  • 前缀太短不会触发缓存,OpenAI 的门槛是 1024 tokens,其他厂商的门槛见各自文档。
  • 长上下文场景命中缓存后,实际扣费可能远低于按 prompt_tokens 全价估算的金额,这是正常的。

常见问题

需要在请求里打开缓存吗?

上表中的厂商都不需要,缓存由上游自动处理。老张API不改写这些请求,也不额外收取缓存写入费用。

为什么同样的请求,第二次反而没命中?

上游缓存会在一段时间不用后失效,高峰期也可能被提前清除,前缀里有任何一个字符变化也不会命中。检查请求开头是否混入了时间戳、随机内容或顺序变化的工具定义。

相关文档