首页/AI/AI 应用速查/OpenAI 提示缓存:自动命中前缀

OpenAI 提示缓存:自动命中前缀

OpenAI 对请求前缀自动做缓存:相同前缀(≥1024 token 量级)重复出现时,命中部分按折扣输入价计费,无需改代码;对“固定系统提示 + 动态用户内容”的形态天然友好。

AI 应用速查AI更新于 2026-10-13

提示缓存是什么

提示缓存指服务端把你请求里重复出现的开头部分存下来,后续请求命中时这部分按折扣价计费。按前缀匹配的方案不需要改代码,只要请求前缀一致就能命中;要求显式标记的方案则要在内容块上打标。共同的影响因素是一致的:固定内容放前面、变化内容放后面。对把长文档、工具定义、系统提示反复复用的场景,这项优化几乎免费。

基本信息

机制对重复出现的请求前缀做缓存,命中部分按折扣价计费
命中前提前缀完全一致,且长度达到服务要求的最小量级
对齐方式按 token 块对齐,前缀中任何一处变化都会导致后续失效
设计要点固定内容前置,动态内容后置
可观测性响应里的用量字段会区分缓存命中与未命中的 token 数
另一条路线部分厂商需要显式标记缓存断点,做法见对应厂商文档

影响命中率的设计

做法命中率说明
固定系统提示与工具定义高这部分每轮不变,最适合缓存
长文档作为前置资料高同一文档被反复提问时收益明显
前缀里插入时间戳极低前缀一旦变化,之后的内容全部失效
前缀内拼接用户信息低每个用户前缀都不同,等于没有缓存
示例与规则频繁微调波动每次调整后缓存都要重新建立

典型使用场景

  • 客服知识问答:同一套产品资料被大量用户反复提问
  • 代码助手:仓库说明与编码规范长期固定,作为前缀复用
  • Agent 场景:工具定义与角色说明较长且不变,最值得缓存
  • 批量抽取:同一份指令模板应用于成千上万条文本
  • 文档追问:一份长文档配多个问题依次提问

缓存友好的请求结构

缓存友好的请求结构
{
  "model": "gpt-4o",
  "messages": [
    { "role": "system", "content": "……长期固定的角色规则与格式要求……" },
    { "role": "system", "content": "……固定不变的工具定义与示例……" },
    { "role": "user",   "content": "……本轮的用户问题与实时数据……" }
  ]
}
// 前缀尽量长时间保持不变,变化的内容一律放到最后
// 需要展示时间时,把它放在用户消息里,而不是系统提示里

命中率杀手

写法后果改法
系统提示里写当前时间前缀每次都变,几乎永不命中把时间放进本轮用户消息
前缀里拼随机标识每个请求都是新前缀把标识移到后缀
每次请求重新生成提示模板空白与顺序微小差异导致不匹配固定模板文本并做规范化
前缀太短达不到最小缓存量级把稳定的示例与规则集中到前缀
缓存的命中情况可以在响应用量里看到:把它接进监控,就能发现某次提示词调整是否悄悄毁掉了命中率。
多轮对话里历史消息本身也会成为前缀的一部分:追加消息不影响前面已有部分,但修改、压缩或重排历史会让缓存失效,这也是长会话进行到中段后成本突然上升的常见原因之一。
缓存有存活时间:间隔太久再发请求会重新写入,高频场景的折扣收益需要按实际节奏评估,而不是默认一直命中。

易错点

  • 在系统提示里插入当前时间或请求标识:前缀每次变化,缓存几乎永远不命中
  • 频繁微调前缀文案:每次调整都要重建缓存,折扣收益被自己改没
  • 把动态内容放在指令之前:变化内容一出现,后面的固定内容也一起失效
  • 不监控命中率:提示词改动导致命中率骤降,账单上升却找不到原因

数据来源与参考

  • OpenAI Prompt Caching 官方文档(platform.openai.com)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌