跳至正文

找出 OpenAI 账单背后的缓存未命中

更新于 September 26, 2026 · 首次发布 September 26, 2026

快速结论: 提示词缓存仪表盘可以告诉你复用率下降了,但它本身无法说明是哪一次请求变更导致下降,也无法说明造成了多少成本。OpenAI 于 2026 年 9 月 8 日的发布将提示词缓存诊断(Prompt Cache Diagnostics)在 Responses API 中正式开放(GA),适用于 GPT-5.6 及更新的受支持模型。对 FinOps 有用的做法,是把缓存 token...

提示词缓存仪表盘可以告诉你复用率下降了,但它本身无法说明是哪一次请求变更导致下降,也无法说明造成了多少成本。OpenAI 于 2026 年 9 月 8 日的发布将提示词缓存诊断(Prompt Cache Diagnostics)在 Responses API 中正式开放(GA),适用于 GPT-5.6 及更新的受支持模型。对 FinOps 有用的做法,是把缓存 token 的下降转化为一次简短、可重复的排查。

比较未命中的那次请求

保存一次近期已完成的响应 ID,且你预期其前缀可以被复用。在同一组织下的下一次可比较的 Responses API 请求中,将 prompt_cache_options.comparison_response_id 设为该 ID。然后,结合 usage.input_tokens_details.cached_tokens,读取新响应上的 prompt_cache_diagnostics。比较选项只会请求诊断,不会加载先前的对话,也不会改变缓存行为。OpenAI 的 诊断指南中包含可运行的请求示例。

const next = await client.responses.create({
  model: model,
  instructions: stableInstructions,
  input: nextInput,
  tools: stableTools,
  prompt_cache_options: { comparison_response_id: baseline.id }
});
console.log(next.prompt_cache_diagnostics);
console.log(next.usage.input_tokens_details.cached_tokens);

该代码片段假设 baseline 是一个近期已完成的响应,其他变量为你自己的请求数据。请保持足够长的稳定前缀以便被缓存:OpenAI 文档说明,GPT-5.6 及更新模型的最小缓存长度为 1,024 个 token。过小或完全不同的提示词,并不是有意义的缓存未命中测试。

修复原因,而不是指标

cache_miss 结果可能指向模型、服务层级、工具定义或其顺序、缓存键、响应格式、推理强度、详细程度或压缩后的上下文发生了变化。例如,一个看似无害的工具 schema 重命名,就可能使可复用的前缀失效。请比较请求配置和最早的提示词字节,在变化属于无意时恢复稳定,然后针对同一基线重新运行比较。OpenAI 只报告它找到的第一个原因,因此修复第一个原因后,可能会出现另一个原因。

如果变化是有意的,请不要强行制造命中。更换模型可能会降低总任务成本,即使它失去了缓存复用;压缩可能会减少后续上下文。应以整个请求和任务来判断,而不是单独看缓存命中百分比。基线已过期,或结果为 unavailable,都属于结论不确定,并不能证明缓存失效。

把诊断结果换算成金额

cache_missed_tokens 估算的是相对于比较响应所损失的可复用 token 数量,并不是计费 token 数。同样,cache_hit 结果也不能证明实际节省了多少美元。要计算实际输入成本,请收集每个响应的总 input_tokens、cached_tokens 和 cache_write_tokens,然后应用该模型和处理层级的当前费率。对于 GPT-5.6 及更新模型,OpenAI 的 提示词缓存指南说明,缓存读取的费用为未缓存输入费率的 0.1 倍,缓存写入的费用为该费率的 1.25 倍。

ordinary = input_tokens - cached_tokens - cache_write_tokens
weighted_input = ordinary + 0.1 * cached_tokens + 1.25 * cache_write_tokens
input_cost = weighted_input * input_price_per_million / 1_000_000

这些是互斥的 token 类别:不要为已按写入费率计算的 token 再加一次缓存写入附加费。该公式只涵盖输入;在计算每个成功任务的成本时,还需包括输出、工具、重试及其他费用。应使用服务商当前的价格表,而不是硬编码的文章价格。

一份有用的每周检查

  1. 按工作负载、模型和服务层级对可比的流量分组;绘制缓存 token 占比以及每个已完成任务的输入成本。
  2. 对突发的回归进行抽样,将其与近期基线比较,并记录诊断原因和负责的代码变更。
  3. 修复无意的前缀或配置漂移;如果总任务经济性有所改善,则保留有意的质量或路由变更。
  4. 在具有代表性的生产流量上验证结果,并将观察到的节省与账单对账。

诊断功能本身没有额外功能费,但额外的测试请求会照常计费。它的价值不在于让命中率图表更好看,而在于能为某个工作负载的输入成本为何变化提供有说服力的解释,并判断拟议的修复是否真正降低了账单。

团队常问的问题

缓存命中诊断能证明请求更便宜吗?

不能。它只表示相对于所选基线没有检测到未命中。在宣称节省之前,请检查实际的 cached_tokens 以及请求中计价的 token 类别。

诊断能比较任意两个 OpenAI 请求吗?

不能。请使用同一组织下近期已完成的基线,并且只能在受支持的 GPT-5.6 及更新版本的 Responses API 模型上期望此流程生效。比较记录可能会过期。

应该消除每一次缓存未命中吗?

不应该。切换模型、更换服务层级或压缩上下文都可能是有意的。在撤销变更之前,请比较质量、延迟以及每个成功任务的成本。

相关文章


想将这些方法用于您的技术栈吗? 请准备好供应商账单、网关日志和主要工作流;我们会梳理成本驱动因素与节省空间。 预约免费审查 →

返回 finopsllm.com