首页/AI/RAG 与向量库速查/提示词缓存与生成成本优化

提示词缓存与生成成本优化

把稳定的系统提示与知识片段前缀交给服务端缓存(如各家 prompt caching 能力)可降本降延迟:缓存命中要求字节级一致,因此模板拼接顺序与空白字符都要稳定。

RAG 与向量库速查AI更新于 2026-10-13

提示词缓存是什么

提示词缓存把稳定不变的前缀(系统提示、固定的示例、公共知识片段)交给服务端缓存,重复请求直接命中,从而降低输入侧成本与首字延迟。命中条件是前缀字节级一致,因此模板拼接顺序、空白字符、标点都不能变;模板里一旦混入时间戳或随机 id,缓存就永远不命中。它的收益随前缀长度与调用频次上升,短提示词或低频调用基本没有收益。

基本信息

缓存对象稳定前缀:系统提示、固定示例、公共知识段
命中条件前缀字节级完全一致
常见失效原因动态时间戳、随机 id、字段顺序变化
观测方式服务端返回的缓存命中统计字段
收益输入成本下降、首字延迟下降
前提同一前缀被足够高频地复用

典型使用场景

  • 系统提示很长且固定,例如角色设定与输出规范
  • 少样本示例在同一业务里反复使用
  • 公共知识前缀(术语表、规则表)每次请求都要带上
  • 批量离线任务:同一模板跑成千上万次
  • 高并发在线场景,用缓存压低首字延迟

稳定前缀的拼接顺序

稳定前缀的拼接顺序
messages = [
    {"role": "system", "content": CACHED_SYSTEM_PROMPT},   # 固定不变,放最前
    {"role": "system", "content": CACHED_KB_PREFIX},       # 高复用片段
    {"role": "user", "content": question},                 # 变化部分放最后
]
# 变化的内容必须后置:前缀里出现任何动态字段都会导致不命中

缓存前提读法

前提说明不满足时的表现
前缀稳定顺序与空白字符完全一致命中率接近零,收益消失
无动态字段时间戳、随机 id 不进前缀缓存永远不命中,成本无下降
调用频次足够同一前缀被反复使用改造没有收益,白白增加复杂度
不牺牲可读性变量不该硬塞进前缀提示词难维护,改动风险上升
时间戳、随机 id 这类易变字段不要放进缓存前缀;命中率要看服务端返回的统计字段,而不是凭感觉判断。
调整系统提示后命中率会先归零再回升:这是前缀变化的正常现象,发布时不要当成故障处理。

易错点

  • 模板里混入动态时间戳或随机 id:缓存永远不命中,成本优化完全落空
  • 为了缓存牺牲提示词结构:把变量硬塞进前缀,可读性与可维护性双输
  • 不监控命中率:成本变化无法归因,优化效果无从验证
  • 把不稳定的知识片段放进缓存前缀:命中率波动大,排查成本很高

数据来源与参考

  • Anthropic 官方文档(Prompt caching)
  • OpenAI 官方文档(Prompt Caching)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌