OpenAI Prompt Caching:让重复前缀真正省钱
一篇标明来源的实用指南,讲清可缓存前缀、GPT-5.6 断点、保留策略、用量指标,以及缓存读取与写入的真实成本。
· 阅读约 9 分钟
本页目录
正在加载文章…
一篇标明来源的实用指南,讲清可缓存前缀、GPT-5.6 断点、保留策略、用量指标,以及缓存读取与写入的真实成本。
· 阅读约 9 分钟
正在加载文章…
查找模型、服务商、价格页面和实用指南。
Prompt Caching 很容易启用,但也很容易被错误估算。OpenAI 会为符合条件的请求自动启用缓存,不过能否命中,仍取决于前缀是否完全一致、请求路由、保留时间,以及在较新模型家族上写入前缀所产生的成本。
本文说明截至 2026 年 7 月 10 日 OpenAI 当前公开的行为,并明确区分 OpenAI 官方 API 规则与 LLM Price Lens 使用的聚合模型价格索引。
下文的缓存行为与 OpenAI 价格示例均来自 OpenAI 官方文档。LLM Price Lens 的模型目录由公开的 OpenRouter Models API 建立索引,它是一个对比层,不应被视为 OpenAI 的账单或合同。
Prompt Caching 会复用模型对完全一致的 Prompt 前缀所做的计算。OpenAI 会尽量把请求路由到近期处理过相同前缀的机器,查找匹配的缓存表示,并按缓存输入费率计算匹配的 Token。模型仍会生成新的回答;缓存并不会复用旧的 completion。
可缓存的前缀不只包含普通文本,还可以包括:
detail 设置保持一致实际规则很简单:如果可复用前缀结束前的任意一处结构发生变化,后续 Token 的位置也会改变,匹配就可能消失。
渲染后的 Prompt 至少包含 1,024 Token 时,自动 Prompt Caching 才会开始工作。低于这一阈值的请求仍会返回 cached_tokens 字段,但其值为零。
OpenAI 通常会根据 Prompt 开头的一段内容计算哈希并路由请求——一般是前 256 Token,不过确切长度会因模型而异。prompt_cache_key 会与前缀哈希结合,让应用可以更有控制地路由那些共享同一长前缀的请求。
因此需要同时满足两个条件:
符合资格并不代表一定命中。请始终检查响应中的 usage 数据。
把变化慢的内容放在前面,把每次请求特有的内容放在最后。一个实用的生产环境顺序是:
缓存键应该带版本,并表示稳定资源、租户和策略版本,而不是某次请求的 ID:
{
"model": "gpt-5.6",
"prompt_cache_key": "tenant:acme:knowledge-base-v3",
"input": [
{
"role": "user",
"content": [
{
"type": "input_file",
"file_id": "file_123",
"prompt_cache_breakpoint": { "mode": "explicit" }
},
{
"type": "input_text",
"text": "Answer today's customer question."
}
]
}
]
}
OpenAI 建议同一个 key 下所有前缀的总流量大致控制在每分钟 15 次请求。超过这个水平后,部分请求可能无法命中。高流量系统应把流量拆到多个稳定 key,同时确保同一前缀仍映射到同一个 key。
复用 prompt_cache_key 可以改善请求局部性,但服务仍会比较实际前缀是否完全一致。同一个 key 不会让两个不同 Prompt 自动变成等价内容。
不同模型世代的行为并不相同。
较早的受支持模型采用自动 Prompt Caching。写入缓存不收取额外费用;在模型支持时,应用可以通过 prompt_cache_retention 选择保留策略。
较新家族支持请求级 prompt_cache_options 和显式 prompt_cache_breakpoint 标记:
implicit 是默认模式。OpenAI 会在最新消息处放置一个断点,同时也会考虑显式标记。explicit 会关闭隐式标记,仅使用应用指定的断点;如果没有显式标记,请求不会使用 Prompt Caching,也不会产生缓存写入费用。30m。在 GPT-5.6 及之后的家族中,缓存写入会记录在 cache_write_tokens,并按未缓存输入 Token 价格的 1.25 倍计费。缓存读取仍记录在 cached_tokens,使用缓存输入费率。
如果缓存写入成本很重要,并且你明确知道哪些稳定前缀可能被重复使用,显式模式会更合适。它能避免最新的动态消息产生非预期写入。
OpenAI 当前提供两套语义不同的保留机制。
| 模型世代 | 控制参数 | 含义 |
|---|---|---|
| GPT-5.6 及之后的家族 | prompt_cache_options.ttl | 断点最短存活时间;目前仅支持 30m,并默认启用 |
| 较早的受支持模型 | prompt_cache_retention | 最大保留策略,例如 in_memory,或在支持时使用 24h |
较早模型使用 in_memory 时,缓存前缀通常会在最后一次使用后保持 5–10 分钟,最长可能达到一小时。扩展保留可通过把 attention key/value tensor 移到 GPU 本地存储,让受支持模型的前缀最多保留 24 小时。
不要只按预期流量选择保留策略。保留方式可能影响数据控制资格和默认设置。OpenAI 当前文档说明:启用 Zero Data Retention 的组织,在同时支持两种策略的较早模型上默认采用内存保留;其他组织默认采用 24 小时保留。请针对实际使用的模型、端点、区域与策略组合检查官方 Your data 指南。
一个可靠的缓存仪表盘需要请求级计数器,而不是简单记录“已启用缓存”。至少应记录:
cached_tokenscache_write_tokensChat Completions 在 usage.prompt_tokens_details 下报告这些计数器。Responses API 则在 usage.input_tokens_details 下提供缓存输入详情。
{
"usage": {
"prompt_tokens": 2006,
"completion_tokens": 300,
"total_tokens": 2306,
"prompt_tokens_details": {
"cached_tokens": 1920,
"cache_write_tokens": 0
}
}
}
OpenAI 在 2026 年 7 月 10 日公布的 Standard 短上下文价格如下,单位均为每百万 Token:
| 模型 | 输入 | 缓存输入 | 缓存写入 | 输出 |
|---|---|---|---|---|
| GPT-5.6 Luna | $1.00 | $0.10 | $1.25 | $6.00 |
| GPT-5.6 Terra | $2.50 | $0.25 | $3.125 | $15.00 |
| GPT-5.6 Sol | $5.00 | $0.50 | $6.25 | $30.00 |
假设 GPT-5.6 Luna 有一个稳定的 100,000 Token 前缀,为便于说明,暂时忽略动态输入和输出:
100,000 / 1,000,000 × $1.25 = $0.125100,000 / 1,000,000 × $0.10 = $0.012 × $0.10 = $0.20$0.125 + $0.01 = $0.135在这个简化示例中,第一次成功复用已经能覆盖 $0.025 的写入溢价。如果缓存被淘汰前没有后续请求命中,这次写入反而会比普通输入更贵。因此,cache_write_tokens 与复用频率必须出现在同一份报告里。
长上下文、Batch、Flex、Priority、区域处理和第三方托管价格都可能不同。把示例用于预算前,请重新核对官方价格页。
把缓存键视为运维元数据,不要写入客户文本、凭据或其他秘密。对敏感工作负载启用扩展保留前,请检查最新的数据控制文档。
本文涉及 OpenAI 的具体结论,以以下第一方资料为依据:
prompt_cache_key — 请求参数定义LLM Price Lens 模型目录由公开的 OpenRouter Models API 生成,并对价格进行统一处理,便于跨服务商比较。如果 OpenRouter 索引与 OpenAI 的计费决策不一致,请以 OpenAI 官方价格和账户条款为准。