林逍遥 AI林逍遥 AI
登录
CLAUDE API 开发·缓存

Prompt 缓存:降低成本的技巧

Prompt Caching 可以节省 90% 的重复 token 费用。本文深入讲解缓存机制、前缀匹配原理、最佳请求结构设计,以及 Claude Code 团队的实战经验。

·10 分钟阅读·
缓存成本优化
·

每次 API 请求,Claude 都要处理你发送的全部 token——包括 system prompt、工具定义、历史消息。如果你的 system prompt 有 5000 token,每次请求都重复处理这 5000 token,浪费且昂贵。Prompt Caching 解决了这个问题:缓存不变的前缀,后续请求只需处理新增内容,节省高达 90% 的输入 token 费用

你将学到什么

  • Prompt Caching 的工作原理
  • 两种缓存方式(自动和手动)
  • 实际的节省效果和计费方式
  • 最佳实践和常见陷阱

工作原理

缓存工作原理缓存工作原理

Prompt Caching 缓存请求的前缀(prefix)。当多次请求共享相同的前缀时:

  1. 首次请求:完整处理,写入缓存(多付 25% 写入费)
  2. 后续请求:读取缓存(只付 10% 的费用)
  3. 缓存有效期:5 分钟(每次命中刷新),可选 1 小时

自动缓存(最简单)

python
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    cache_control={"type": "ephemeral"},  # 一行启用
    system="你是一位专业的法律顾问..." ,  # 长 system prompt
    messages=[{"role": "user", "content": "合同违约怎么赔偿?"}]
)

手动缓存断点(精确控制)

python
response = client.messages.create(
    model="claude-sonnet-4-6",
    max_tokens=1024,
    system=[{
        "type": "text",
        "text": "你是法律顾问,以下是参考法条...(5000字)",
        "cache_control": {"type": "ephemeral"}  # 在这里设置缓存断点
    }],
    messages=[
        {"role": "user", "content": "违约金怎么计算?"}
    ]
)

费用对比

费用对比费用对比

以 Sonnet 4.6 为例(每百万 token):

  • 无缓存:输入 $3.00
  • 缓存写入:$3.75(1.25 倍)
  • 缓存读取:$0.30(0.1 倍)

实际场景:5000 token 的 system prompt,进行 100 次对话

  • 无缓存:5000 × 100 × $3/M = $1.50
  • 有缓存:5000 × $3.75/M(写入 1 次)+ 5000 × 99 × $0.30/M(读取 99 次)= $0.17

节省 89%!

查看缓存命中情况

python
print(response.usage)
# input_tokens: 50
# cache_creation_input_tokens: 5000  ← 首次:写入缓存
# cache_read_input_tokens: 0

# 第二次请求
# input_tokens: 50
# cache_creation_input_tokens: 0
# cache_read_input_tokens: 5000     ← 命中缓存!

可缓存的内容

可缓存内容可缓存内容

按处理顺序,前缀匹配:

  1. tools(工具定义)
  2. system(系统提示词)
  3. messages(对话消息)

Tip: 把最长且最不变的内容放在最前面(tools → system → 静态消息),效果最好。

最佳实践

  • 长 system prompt 一定要缓存:超过 1000 token 就值得
  • 多轮对话天然受益:历史消息作为前缀自动缓存
  • 批量调用同一 prompt:第一次写入,后续全部命中
  • 工具定义也可以缓存:如果你的 tools 数组很大

常见陷阱

常见陷阱常见陷阱

  • 缓存只匹配完全相同的前缀,改一个字就失效
  • 最小缓存内容因模型而异(通常 1024+ token)
  • 5 分钟不访问就过期

实战练习

Tip: 在你的应用中启用缓存。

  1. 给你的 API 调用加上 cache_control,观察 usage 中的缓存指标
  2. 计算你的应用在有缓存和无缓存下的月度成本差异
  3. 优化请求结构,把静态内容放在前缀位置

关键要点

Note: 本文核心总结

  • Prompt Caching 缓存请求前缀,后续只付 10% 费用
  • 一行代码启用:cache_control={"type": "ephemeral"}
  • 长 system prompt + 多轮对话 + 批量调用场景收益最大
  • 通过 usage 字段监控缓存命中率

延伸阅读

二维码
微信公众号:lingxiaoyao

关注公众号,获取最新 AI 教程和课程更新

加载评论中...
Prompt 缓存:降低成本的技巧 | 林逍遥 AI