读书笔记 · 约 20,217 字 · 预计推送 3 部分

主题精读:Prompt caching 工程实践——缓存命中率、失效策略、隐私边界与成本收益 未开始

目录

题记与说明


一、七维提取

1. 核心问题:这份"主题"在解决什么问题

LLM 推理成本的大头在 prefill:同一份 system prompt、工具定义、文档上下文、多轮对话历史,会被一次又一次完整重算。Prompt caching 的目标是"前缀只算一次"——但把它从营销数字变成工程收益,要回答四个互相咬合的子问题:

2. 主要主张(各来源的核心论点)

来源核心主张原文关键句(摘引)
Anthropic《Prompt caching》缓存是显式声明(cache_control 断点)+ 层级式前缀匹配 + 双 TTL(5m 免费/1h 付费);断点免费、失效靠层级传播;组织间硬隔离"Cache prefixes are created in the following order: tools, system, then messages." / "Organization Isolation: Caches are isolated between organizations. Different organizations never share caches, even if they use identical prompts."
OpenAI《Prompt caching》缓存全自动、无写费,≥1024 token 自动启用;命中是路由问题——按前缀哈希把请求路由到最近处理过它的机器,可用 prompt_cache_key 主动干预;新增 24h extended retention(KV 张量落 GPU 本地存储)"Requests are routed to a machine based on a hash of the initial prefix of the prompt. The hash typically uses the first 256 tokens." / "Prompt Caching can reduce latency by up to 80% and input token costs by up to 90%."
Gemini《Context caching》走 implicit 路线:默认开启、自动传导节省;显式缓存对象正在退场(Interactions API 与 Gemini 4 起不再支持);多轮有"增量门槛"(新增 ≥2,050 token 才缓存上一请求)"The Interactions API only supports implicit caching. Explicit caching...is not supported in the Interactions API, or for Gemini 4 Argon and onward." / "We automatically pass on cost savings if your request hits caches."
DeepSeek《Models & Pricing》把缓存做成定价模型本身:每个模型直接分 cache hit / cache miss 两列报价,外加峰谷分时;缓存对用户全自动、透明deepseek-flash:cache hit $0.003–0.006/M vs miss $0.15–0.30/M;deepseek-v4-pro:hit $0.022–0.044/M vs miss $0.66–1.32/M(off-peak 半价)
ICML 2025 审计论文Prompt caching 造成数据依赖的时序差异,缓存命中率是可统计检验的侧信道;17 家中 7 家存在跨用户全局共享(含 OpenAI embedding 模型),构成对他人 prompt 的成员推断面"We detect global cache sharing across users in seven API providers, including OpenAI, resulting in potential privacy leakage about users' prompts." / "we were unable to execute practical prompt extraction attacks"
vLLM《Automatic Prefix Caching》自建推理的 APC 复用的是块级 KV cache(不是"文本缓存"),只省 prefill 不省 decode;自建时缓存归你所有、无跨租户问题,但多副本负载均衡会把命中率打碎"APC only reduces the time of processing the queries (the prefilling phase) and does not reduce the time of generating new tokens (the decoding phase)."

3. 方法:这个主题的"论证方式"是什么

4. 数据与证据

(1)计费与 TTL 三模型对照(全部来自 2026-11-03 抓取的官方页面)

维度Anthropic(显式)OpenAI(自动)Gemini(implicit)DeepSeek(自动+分价)
写入费用5m TTL 1.25×,1h TTL 2×无无(自动传导节省)无
读取费用0.1×(如 Sonnet $3→$0.30/MTok)cached tokens 折扣(官方 guide 称整体输入成本最高省 90%;五折为社区/二手普遍引用,本次未在定价页逐字核对)自动折扣(页面未给统一倍数)deepseek-flash hit 价为 miss 的 1/50(峰时 $0.006 vs $0.30);v4-pro 为 1/30($0.044 vs $1.32)
有效期/失效默认 5m,命中免费续期;可选 1h;层级断裂即失效in-memory:空闲 5–10 分钟、off-peak 最长约 1h;extended retention 最长 24h未公开精确 TTL(建议"短时间发送相似前缀")未公开(审计论文实测其缓存为 per-user)
起缓存门槛Opus/Sonnet 1024、Haiku 3.x 2048、Haiku 4.5 4096 token1024 token(128 token 增量)2.5 系列 2048、3.x/4 系列 4096 token无门槛声明
匹配方式精确前缀,tools→system→messages 层级,最多 4 个断点,20-block 回看精确前缀(前 ~256 token 做路由哈希)精确前缀精确前缀
隔离范围组织级硬隔离组织级("Prompt caches are not shared between organizations");extended retention 影响 ZDR 资格页面未声明审计实测 per-user
监控字段cache_creation_input_tokens / cache_read_input_tokens / input_tokensusage.prompt_tokens_details.cached_tokensusage.total_cached_tokens返回中含 cache hit/miss token 拆分
对限流的影响cache hit 不占 rate limit占 TPM("Do cached prompts contribute to TPM rate limits? Yes")未声明未声明

(2)成本收益模型(基于上表推导,非原文)

(3)命中率杀手清单(官方文档明确列出的失效/未命中原因)

(4)隐私审计实测数据(ICML 2025,2024-09~10 测量)

5. 结论

  1. Prompt caching 是 LLM 应用里 ROI 最高、且完全由工程侧掌控的优化:布局决定命中率,命中率直接换算成 0.1×–0.5× 的有效输入价,TTFT 显著下降(OpenAI 口径最高 80%)。
  2. 它是约束驱动的架构决策,不是一个开关:prompt 静态前置、序列化稳定、工具 schema 当作"缓存破坏性部署"管理、请求节奏(间隔 vs TTL)与路由粘性(prompt_cache_key、前缀感知负载均衡)都要配合。
  3. 失效的正确心智模型是"前缀断裂"而非"过期淘汰":TTL 只是兜底,真正的失效来自层级上任意的提前变动;厂商不给手动清除,一切靠"把会变的东西放到最后"。
  4. 隐私边界 = 缓存共享范围:头部厂商的组织级隔离承诺明确且经审计验证(Anthropic、GPT-4o mini 均为 org 级),但 2024 年审计中 7/17 存在全局共享、OpenAI extended retention 影响 ZDR 资格、网关/中转链路的缓存归属尚未被充分审计——"缓存在谁那边、跟谁共享、存多久"应成为供应商评估的标准三问。
  5. 三种计费模型没有绝对优劣,取决于流量形态:高复用(agent 循环、多轮、批量处理同一文档)下 Anthropic 显式式最深(0.1×);自动式(OpenAI/Gemini/DeepSeek)是免费期权、miss 无罚;DeepSeek 分价+峰谷给了"错峰省钱"这第四个杠杆。

6. 局限(作者承认的 + 我推断的)

7. 对我的启发

  1. 给 nightly 批量管线(我自己就在跑的):多任务共享的系统提示、技能文档、输出规范应该做成逐字节稳定的超长前缀;同一批任务先串行发第一个请求"暖缓存",再并行发余下(Anthropic 并发条款的直接应用);批量任务还能压进 DeepSeek off-peak 时段吃半价。
  2. 给 agent/编码工具的日常使用:Claude Code 式工具循环是缓存最佳场景——但改一次工具定义 = 全缓存失效,所以"随手改 system prompt 措辞/工具描述"其实是很贵的操作;会话闲置超 5 分钟再继续,就重付一遍写费,长思考任务该考虑 1h TTL。
  3. 把缓存指标纳入可观测性:凡是记 trace 的地方加三列——cache_read_input_tokens、cache_creation_input_tokens、有效输入单价(= 总输入费用/总输入 token)。命中率突降几乎总是意味着 prompt 模板被人动了(把模板漂移当作告警信号,这和前端性能监控里"缓存命中率是所有指标之首"是同一条经验)。
  4. 供应商评估清单加一条"缓存三问":共享范围(org/user/全局)?保留时长与存储形态(KV 张量是否落盘/持久化,ZDR 是否仍成立)?命中是否占限流额度(Anthropic 不占、OpenAI 占,影响容量规划)?经手敏感客户数据时,还应确认中转/网关层有没有自己的共享缓存。
  5. 写作素材:这批材料正好补全"缓存跨层共性"主题的一个新层级——CPU cache line 的空间局部性 ↔ 前缀匹配;写穿/写回 ↔ 写费/读费;缓存隔离(进程/组织)↔ 侧信道(Spectre ↔ timing audit)。同一条物理约束(复用 vs 隔离的张力)在每一层都重新出现一次。

二、逐来源精读

2.1 Anthropic《Prompt caching》——显式缓存的完整设计空间

Anthropic 是四家中唯一"显式声明 + 写费"模型,因此文档把机制写得最透,是理解其他家行为的心智模板:

我的归纳:Anthropic 文档给出的不是"怎么开缓存",而是缓存友好的 prompt 工程规范——静态前置、断点前置可变块、序列化稳定、变更管理。这四条在任何厂商都适用,只是别家不写这么细。

2.2 OpenAI《Prompt caching》——把缓存做成路由问题

OpenAI 走另一个极端:全自动、无配置、无写费。它披露的路由层是本次精读最大的增量信息:

我的归纳:OpenAI 的模型是"你不用管缓存,但缓存在管你的路由"。工程含义:prompt_cache_key 的粒度选择(按会话?按租户?按文档?)本质是在做一致性哈希的分区键设计——粒度太粗撞 15 rpm 溢出,太细则机器间缓存碎片化。

2.3 Gemini《Context caching》——implicit 化与"增量门槛"

2.4 DeepSeek——缓存即定价

2.5 vLLM APC——自建时的同一原理

2.6 ICML 2025 审计论文——隐私边界的实证


三、工程实践清单(可直接执行)

布局(命中率的主要来源)

  1. 静态→动态单向排列:tools → system → few-shot → 文档 →(断点)→ 会话历史 → 当前输入。
  2. 前缀禁入:时间戳、随机 UUID、"今天是 X 日"、用户名——要么删除,要么挪到前缀之外。
  3. 序列化稳定:JSON key 排序输出、温度参数外置、图片与 tool_choice 保持一致;Swift/Go 等语言注意 key 顺序随机化问题(Anthropic 明确警告)。
  4. 工具 schema 变更 = 缓存破坏性发布:改描述、改参数 = 全部前缀重算,尽量批量攒着改。

节奏与路由

  1. 会话间隔 <5min:什么也不用做(5m 免费续期);间隔 >5min 且前缀大:Anthropic 用 1h TTL(第二轮起就回本)。
  2. 并行批量前先发一个请求暖缓存(Anthropic 并发条款)。
  3. OpenAI 用 prompt_cache_key 做会话粘性,粒度控制在同 key ≤15 req/min;自建 vLLM 做前缀感知负载均衡。
  4. Gemini 短回合注意 2,050 token 增量门槛,回合太短会按全价重算尾部。

观测与核算

  1. trace 里记 cache_read_input_tokens / cached_tokens / total_cached_tokens;看板指标:token 命中率、有效输入单价、TTFT 分布(双峰=缓存在工作)。
  2. 命中率骤降 → 先查 prompt 模板 diff,再查供应商侧(路由/策略变更)。
  3. 预算模型:Anthropic 有效输入价 = 0.1p + 1.25(1−p)(p=token 命中份额,5m 模式);写费只在"写了没人读"时是纯损失。

隐私与合规

  1. 供应商评估"缓存三问":共享范围?保留形态与时长(KV 张量是否持久化,ZDR 是否成立)?命中占不占限流?
  2. 敏感数据优先选 org 隔离或 per-user 的供应商;用聚合网关时把网关自己的缓存策略也问一遍。
  3. 高敏场景防御:把可探测性考虑进威胁模型(成员推断可行、内容重建在精确前缀匹配下目前不可行);可要求供应商采用 per-user 隔离或延迟拉平。

四、重要原文引述汇编(供写作引用)


五、来源链接

  1. https://docs.claude.com/en/docs/build-with-claude/prompt-caching
  2. https://platform.openai.com/docs/guides/prompt-caching
  3. https://ai.google.dev/gemini-api/docs/caching
  4. https://api-docs.deepseek.com/quick_start/pricing
  5. https://arxiv.org/abs/2502.07776 (全文数据提取:https://arxiv.org/html/2502.07776v2 )
  6. https://docs.vllm.ai/en/latest/features/automatic_prefix_caching.html

检索辅助(未逐字精读):https://api-docs.deepseek.com/news/news250801 (2024 缓存公告,检索摘要);https://docs.vllm.ai/en/stable/design/prefix_caching (设计文档,检索摘要);https://www.ndss-symposium.org/wp-content/uploads/2025-1772-paper.pdf (仅存目);arXiv 2605.30613(仅存目)。

← 资料库今日播报 →