30 秒快速回答

Prompt Caching(提示缓存)是一种让 LLM 记住并复用已处理过的上下文前缀的技术。当你反复发送相同的系统提示词、文档或对话历史时,模型不再每次都重新计算,直接用缓存结果,典型的成本降幅在 50%~90%。核心价值一句话:你花一次推理的钱,后续调用几乎免费,是大规模 AI 应用降本的必选项。


1. 为什么需要 Prompt Caching?

写 AI 应用的开发者都有过这种痛:每次 API 调用都要把一大段 system prompt、知识库文档、few-shot 示例塞进请求里。1024 个 token 的 system prompt,调用一万次就是 1024 万 token 的重复推理——全是白花花的银子。

以 Claude 3.5 Sonnet 为例:

场景 每次输入 token 调用 1 万次总输入 成本(输入 $3/M tok)
无缓存,完整发送 5,000 5,000 万 ~$150
命中缓存(前 4,000 tok) 1,000(仅增量) 1,000 万 ~$30

缓存写入一次后,后续调用只需为未缓存部分付费。 这就是 Prompt Caching 的底层逻辑。


2. Prompt Caching 工作原理

2.1 核心机制

LLM 推理过程本质上是逐 token 计算。如果两次请求的前缀完全一致,Transformer 自回归解码中,前缀对应的 Key-Value(KV)缓存是可以复用的。Prompt Caching 正是在服务端做了这件事:

请求 1: [System Prompt] + [User: 帮我分析这份财报] → 完整推理,缓存前缀
请求 2: [System Prompt] + [User: 解读资产负债表]  → 前缀命中,只推理增量
请求 3: [System Prompt] + [User: 计算净利润率]    → 前缀命中,只推理增量

2.2 什么能被缓存?

各平台的缓存策略略有差异,但大体遵循一个原则:按前缀匹配,前缀越长缓存越值钱

平台 最小缓存长度 缓存有效期 写入成本 读取折扣
Anthropic Claude 1024 tok 5 分钟(自动刷新) 正常价格 ×1.25 90% off
OpenAI GPT-4o 1024 tok 5-10 分钟 正常价格 50% off
Google Gemini 32768 tok 按 TTL 配置 正常价格 75% off
DeepSeek 无要求 会话级 无额外成本 自动启用

截止 2026 年 8 月。Claude 的 90% off 是当前最激进的折扣方案。


3. 实战:各平台接入代码

3.1 Anthropic Claude(自动缓存)

Claude 的缓存是全自动的,无需手动标记。只要请求前缀相同,服务端自动命中:

import anthropic

client = anthropic.Anthropic()

# 第一次调用:完整推理,建立缓存
response1 = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "你是一个资深财务分析师,擅长解读上市公司财报..."  # 这段会被缓存
    }],
    messages=[{"role": "user", "content": "分析苹果公司最新财报"}]
)
print(response1.usage.cache_creation_input_tokens)  # 缓存写入量
# 成本:正常价格

# 第二次调用:system 部分命中缓存
response2 = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "你是一个资深财务分析师,擅长解读上市公司财报..."  # 命中缓存!
    }],
    messages=[{"role": "user", "content": "分析特斯拉最新财报"}]
)
print(response2.usage.cache_read_input_tokens)  # 缓存命中量,90% off

3.2 OpenAI GPT-4o(自动缓存)

OpenAI 同样自动缓存,方式与 Claude 类似:

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-4o",
    messages=[
        {"role": "system", "content": "你是法律文书助手..." * 50},  # 长 system prompt
        {"role": "user", "content": "起草一份保密协议"}
    ]
)
# 查看 usage 即可确认是否命中:
# response.usage.prompt_tokens_details.cached_tokens

3.3 手动标记缓存(进阶场景)

部分平台支持手动标记缓存断点,适合多轮对话等前缀不连续的场景:

# 伪代码示例:在内容块之间手动标记缓存断点
messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": [
        {"type": "text", "text": doc1, "cache_control": {"type": "ephemeral"}},
        {"type": "text", "text": doc2, "cache_control": {"type": "ephemeral"}},
        {"type": "text", "text": query}
    ]}
]

4. 最佳实践与避坑指南

4.1 什么场景最赚钱

场景 缓存命中率 成本节省 说明
固定 System Prompt 90%+ 60-90% system prompt 不变,几乎次次命中
RAG 知识库问答 50-80% 30-50% 文档块复用率高
多轮对话 Agent 40-70% 20-40% 历史对话自动前缀匹配
Few-shot 示例 80%+ 50-70% 示例内容固定

4.2 避坑要点

  1. 不要频繁改前缀:哪怕只改一个字符,缓存就失效。把静态内容放前面,动态内容放后面。
  2. 利用缓存 breakpoints:如果中间有一小段会变化的内容,可以在变化前设定缓存断点,只让稳定部分被缓存。
  3. 注意缓存有效期:Claude 是 5 分钟自动续期(每次命中刷新),Gemini 是按你设定的 TTL。高并发场景下不用担心过期。
  4. 写入成本:Claude 缓存写入比正常推理贵 25%,要确保缓存会被复用才划算。一次性的长 prompt 不建议开缓存。
  5. 会话复用:把同一个用户的多次调用放在同一个 session 里,前缀自然对齐,缓存命中率最高。

5. 成本对比:一个真实案例

拿一个典型的企业知识库问答应用来算账——500 个文档块的 RAG 系统,日活 1000 人,每人每天平均 5 次提问:

方案 每次输入 tok 缓存命中 月输入总量 月成本
无缓存 8,000 0% 1.2 亿 $360
Claude 自动缓存 1,500(缓存 6,500) 80% 2,850 万 $126
优化后(静态前缀前置) 800(缓存 7,200) 90% 1,890 万 $86

从 $360 降到 $86,节省 76%。 核心优化动作就两个:把 system prompt 和 few-shot 示例的复杂度集中在前 1024+ token,让缓存尽可能多吃掉。


总结

  • Prompt Caching 是 2026 年 LLM API 成本优化的第一优先级技术,90% off 不是噱头
  • Claude、GPT-4o、Gemini 均已内置自动缓存,开发者基本零改造成本
  • 遵守”静态前缀在前、动态内容在后”的编排原则,让缓存收益最大化
  • 缓存写入有溢价(Claude +25%),一次性长 prompt 避免盲目启用

延伸阅读建议