
OpenAI Prompt Caching 有效 $/M 怎么算:命中率与对账单核对
OpenAI Prompt Caching 能让重复使用的提示词前缀(prompt prefix)在多次 API 调用中自动享受折扣,从而降低输入 Token 成本。
对账单读者主要关心:缓存是否真正省钱?命中率达到什么门槛才能低于实时 $/M?本文直接从官方 Token 价表拆解 cached input 字段,给出可复制的命中率门槛公式,以及账单行级核对步骤,帮助你快速验证缓存是否发挥作用。
如果你在运行多轮对话、代码编辑工具(如 Cursor)或企业级多项目应用,这篇文章就是对账单的必备对照工具。结合官方定价页与 API 使用仪表盘的数据,你可以精确算出每月实际支出,决定是否继续优化缓存策略。
官方价表 input vs cached input 字段精读
OpenAI API 会自动为支持的模型应用 Prompt Caching(当前覆盖 GPT-4o 系列、o1/o3-mini 系列等,需提示词长度超过 1024 个 Token)。
核心区别在于字段处理:
- Uncached Input Tokens:未命中缓存的部分,按标准输入单价计费。
- Cached Input Tokens:命中缓存的部分(
prompt_tokens_details.cached_tokens字段),按打折后的 cached input 单价计费。 - Output Tokens:输出部分始终按标准输出单价计费。
以下是部分热门模型的官方价格(数据以 openai.com/api/pricing 为准,2026 年 8 月最新):
| 模型 | Uncached Input ($/M) | Cached Input ($/M) | Output ($/M) |
|---|---|---|---|
| GPT-4o | $2.50 | $1.25 | $10.00 |
| GPT-4o mini | $0.15 | $0.075 | $0.60 |
| o1-preview | $15.00 | $7.50 | $60.00 |
| o1-mini | $3.00 | $1.50 | $12.00 |
提示:缓存自动生效,无需修改代码即可触发。缓存保留期通常为几分钟到数小时(视服务器负载),企业可通过 API 使用仪表盘监控命中率。
命中率门槛:多少比例才低于实时 $/M
要验证缓存是否真正划算,先算出“有效单价”。公式很简单:
有效 $/M = (Uncached tokens × Uncached rate + Cached tokens × Cached rate) / Total input tokens
假设 Uncached rate = $2.50/M,Cached rate = $1.25/M(GPT-4o 示例):
- 如果命中率 = 0%:有效 $/M = $2.50
- 如果命中率 = 50%:有效 $/M = ($1.25 + $0.625) / 1.5 = $1.25(与 cached rate 相同)
- 如果命中率 = 80%:有效 $/M = ($0.5 + $1.0) / 1.8 = $0.833(低于实时 $2.50)
门槛公式(适用于任何模型):
命中率门槛 = (Uncached rate - Cached rate) / Uncached rate
- GPT-4o:(2.50 - 1.25) / 2.50 = 50%
- GPT-4o mini:(0.15 - 0.075) / 0.15 = 50%
- o1-preview:(15 - 7.5) / 15 = 50%
结论:只要缓存命中率稳定超过 50%,有效单价就会低于实时 $/M。低于此门槛,缓存反而可能略微增加成本(尤其缓存写开销高的 GPT-5.6 系列模型需注意)。
Usage 与 Invoice 中 Cached tokens 行定位
1. API Response:调用后查看 usage 字段(或 usage.prompt_tokens_details.cached_tokens)。
2. Dashboard:OpenAI Platform > Usage > 查看 Prompt Tokens 明细(支持按模型过滤)。
3. Invoice:PDF 账单会将缓存命中部分单独列为 “Cached Input” 或 “Cache Hit”,与普通 Input 并行。总和即为应付款。
建议导出 CSV 或 Excel,对照 Usage 数据核对。完整核对路径详见 OpenAI 官方计费指南。
有效单价计算公式与实操示例
通用公式(Python 一行即可):
effective_rate = ((prompt_tokens - cached_tokens) * uncached_rate + cached_tokens * cached_rate) / prompt_tokens
实操示例(1 天 1000 调用,平均每调用 3000 提示词 Token):
| 场景 | 命中率 | 总提示词 | Cached Token | Uncached Token | 有效 $/M (GPT-4o) | 月总成本(假设输出 1000 Token/调用) |
|---|---|---|---|---|---|---|
| 纯新提示词 | 0% | 3M | 0 | 3M | $2.50 | $7500 |
| 缓存优化 | 60% | 3M | 1.8M | 1.2M | $1.10 | $3300 |
| 完美复用 | 90% | 3M | 2.7M | 0.3M | $0.625 | $1500 |
结论:命中率 60% 时,成本已降到实时价的 44%,适合企业多项目场景。
常见误区:把 cache 当成零成本
- 误区一:只看 cached_tokens 数量,忽略缓存写开销(GPT-5.6 系列写 Token 需额外计费)。
- 误区二:低命中率下缓存反而拖慢 API 响应(虽然成本低,但延迟会影响业务)。
- 误区三:以为缓存免费,实际 50% 折扣后仍占上下文窗口空间。
正确做法:定期用 Token 成本计算工具 模拟你的提示词前缀复用率,再决定是否添加系统提示词固定缓存键。
与 Batch API 折扣叠加时的决策表
Batch API 可再减 50% 输入成本。两者叠加后:
| 命中率 | Batch 叠加后有效价 (GPT-4o) | 建议决策 |
|---|---|---|
| <50% | 仍高于实时 | 优先 Batch |
| 50-70% | 接近 Batch 基准价 | 两者结合最佳 |
| >70% | 远低于实时 | 继续缓存 + Batch |
推荐:如果月缓存命中率 >60%,同时启用 Batch API,成本可再降 50% 以上。
多项目企业分账时的缓存归属建议
不同项目(如 chatgpt×20、claude×14 等)可能使用相同系统提示词。建议:
- 在 API 调用时通过自定义 header(如
x-project-id)标记项目。 - Dashboard 中按项目过滤 Usage,单独核对 cached_tokens。
- 企业账单可按项目拆分,避免混淆。
具体分账逻辑参考 OpenAI API 计费路径。
风险与边界
缓存命中率受服务器负载、缓存保留期影响,极端情况下可能为 0% 或因网络波动降低命中率。
以上计算基于官方定价页最新数据(openai.com/api/pricing),实际以账单为准。
非法律意见:本文仅供参考,不构成任何合同义务或投资建议。如有疑问,请直接联系 OpenAI 销售或查看官方文档。