← 全部文章

LLM API Prompt Caching 跨服务商对比:OpenAI、Anthropic、DashScope 和 DeepSeek 的缓存机制差异

2026 年跨服务商 Prompt Caching 对比:OpenAI 自动缓存 + 显式断点、Anthropic cache_control 标记、DashScope 显式与隐式双模式、DeepSeek 磁盘缓存。对比缓存类型、TTL、价格折扣、最低 token 数和路由影响。

· updated 2026-08-05· TheRouter

所有主流 LLM API 服务商现在都支持 prompt prefix 缓存,但实现方式完全不同。OpenAI 默认自动缓存,GPT-5.6 起新增显式断点并收取写入费用。Anthropic 要求显式 cache_control 标记并收取写入费。DashScope 提供显式缓存(收写入费)和隐式缓存(免写入费)两种模式。DeepSeek 自动写入磁盘缓存,无写入费。价格折扣从 80% 到 90%,TTL 从 5 分钟到 24 小时不等,最低 token 阈值从 256 到 1,024 不等。

当你在多个服务商之间做路由时,这些差异直接影响成本模型:同一个 prompt 在一个服务商上享受 90% 读取折扣,在另一个服务商上可能先付 25% 写入溢价,TTL 不匹配还可能导致预期的缓存命中变成全价未命中。

本文对四家服务商进行逐一对比,包含代码示例、价格计算和路由选型矩阵。

OpenAI 兼容指供应商提供一个 chat-completions 接口,其请求与响应结构与 OpenAI API 契约足够接近——只需替换三个值(API key、base URL、模型名),原来的 OpenAI SDK 调用即可直接工作。最小实践面是POST /v1/chat/completions 带 messages、model, 并返回 OpenAI 形式的流式响应。

数据来源:OpenAI Prompt Caching 文档,检索于 2026-08-05;DashScope 上下文缓存文档,检索于 2026-08-05;DeepSeek 上下文缓存文档,检索于 2026-08-05;Anthropic Prompt Caching 文档,检索于 2026-08-05(搜索摘要);DashScope 模型定价,检索于 2026-08-05。


总览对比表

特性OpenAIAnthropicDashScope(显式)DashScope(隐式)DeepSeek
缓存类型自动 + 显式断点显式(cache_control)显式(cache_control)自动自动(磁盘)
需要主动启用否(自动);显式断点需要是是否否
最低 token 数1,0241,024 (Sonnet 5) / 2,048 (Opus)1,024256未明确
缓存写入费免费(GPT-5.6 之前);1.25× 基础价(GPT-5.6+)1.25× 基础输入价1.25× 基础输入价免费(标准输入价)免费
缓存读取折扣模型相关(最高 90%)90%(0.1× 基础价)90%(0.1× 基础价)80%(0.2× 基础价)约 90%
TTL5-10 分钟(内存);最长 24 小时(扩展)5 分钟(ephemeral);1 小时(带 ttl)5 分钟(命中时重置)不确定数小时到数天
单次请求最大断点数4 写 / 50 读4 个 cache_control4 个 cache_controlN/AN/A
响应字段cached_tokens, cache_write_tokenscache_creation_input_tokens, cache_read_input_tokenscached_tokens(OpenAI 兼容)cached_tokensprompt_cache_hit_tokens, prompt_cache_miss_tokens

OpenAI:自动缓存 + GPT-5.6 显式断点

OpenAI 的 prompt caching 对 1,024 token 以上的 prompt 自动生效。系统根据 prompt 前 ~256 个 token 的 hash 将请求路由到近期处理过相同 prefix 的服务器,无需修改代码。

GPT-5.6 及更新模型引入了显式缓存断点和写入费用(1.25× 基础输入价)。默认的隐式断点落在最后一条 user 或 tool 消息上。如果该消息包含变化内容(时间戳、tool 调用历史),断点处的 prefix 每次请求都不同,cached_tokens 可能为 0。

要控制这一行为,可在稳定 prefix 末尾添加 prompt_cache_breakpoint,并将 prompt_cache_options.mode 设为 explicit:

from openai import OpenAI

client = OpenAI()

response = client.chat.completions.create(
    model="gpt-5.6-sol",
    prompt_cache_key="repo-review-v1",
    prompt_cache_options={"mode": "explicit"},
    messages=[
        {
            "role": "system",
            "content": [
                {
                    "type": "text",
                    "text": "You are a code reviewer. Repository contents:\n\n<repo>...</repo>",
                    "prompt_cache_breakpoint": {"mode": "explicit"},
                }
            ],
        },
        {"role": "user", "content": "Review the auth module for security issues."},
    ],
)

usage = response.usage
print(f"Cached: {usage.prompt_tokens_details.cached_tokens}")
print(f"Written: {usage.prompt_tokens_details.cache_write_tokens}")

要点:

  • prompt_cache_key 与 prefix hash 组合使用,将请求路由到同一缓存。每个 key 的流量应控制在 ~15 RPM 以内。
  • GPT-5.6 显式断点的 TTL 默认 30 分钟。
  • GPT-4.1、GPT-5、GPT-5.1、GPT-5.2、GPT-5.4、GPT-5.5 系列的非 ZDR 组织可使用扩展保留(最长 24 小时)。
  • 每次请求最多创建 4 个缓存写入;最多 50 个断点可用于读取。

来源:OpenAI Prompt Caching 文档,检索于 2026-08-05。


Anthropic:显式 cache_control + 写入费

Anthropic 的 prompt caching 完全显式。通过在内容块上添加 cache_control 标记指定需要缓存的 prefix。首次调用支付 1.25× 的写入费;后续命中缓存的调用只需支付基础输入价的 10%(90% 折扣)。

import anthropic

client = anthropic.Anthropic()

response = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    system=[
        {
            "type": "text",
            "text": "You are a code reviewer. Full repo contents:\n\n<repo>...</repo>",
            "cache_control": {"type": "ephemeral"},
        }
    ],
    messages=[
        {"role": "user", "content": "Review auth module for vulnerabilities."}
    ],
)

usage = response.usage
print(f"Cache write: {usage.cache_creation_input_tokens}")
print(f"Cache read:  {usage.cache_read_input_tokens}")

要点:

  • 最低可缓存 token 数:Claude Sonnet 5 为 1,024,Claude Opus 为 2,048。
  • 默认 TTL:5 分钟(ephemeral)。可选 ttl 参数可延长至 1 小时。
  • 每次请求最多 4 个 cache_control 断点。
  • 写入价格 1.25× 基础输入价,读取价格 0.1× 基础输入价。
  • 每次命中会重置 TTL。

来源:Anthropic Prompt Caching 文档,检索于 2026-08-05(搜索摘要)。


DashScope:显式和隐式双模式

DashScope(阿里云百炼)提供两种缓存模式,同一请求中互斥:

显式缓存

与 Anthropic 方式类似:在消息中添加 cache_control: {"type": "ephemeral"} 标记。写入费 1.25× 基础输入价,读取费 0.1× 基础输入价(90% 折扣)。TTL 5 分钟,命中时重置。最低 1,024 token。每次请求最多 4 个标记。

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)

response = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {
            "role": "system",
            "content": [
                {
                    "type": "text",
                    "text": "你是一位金融分析师。报告内容:\n\n<report>...</report>",
                    "cache_control": {"type": "ephemeral"},
                }
            ],
        },
        {"role": "user", "content": "总结关键收入指标。"},
    ],
)

print(response.usage)

隐式缓存

未使用显式标记时默认启用。系统自动检测跨请求的公共 prefix 并缓存。无写入费——缓存创建 token 按标准输入价计费。缓存读取 token 按基础输入价的 20% 计费(80% 折扣)。最低 256 token。TTL 不确定,系统定期清理未使用的缓存数据。

**支持的模型(截至 2026 年 8 月):**Qwen3.7-Max、Qwen3.7-Plus、Qwen3.6-Flash、Qwen3.5-Plus、Qwen3.5-Flash、Qwen3-Max、Qwen-Plus、Qwen-Flash、DeepSeek-V3.2(通过 DashScope)、Kimi-K2.7-Code、Kimi-K2.6、Kimi-K2.5、GLM-5.1,以及 Qwen VL/Coder 系列。

来源:DashScope 上下文缓存文档,检索于 2026-08-05。


DeepSeek:自动磁盘缓存

DeepSeek 的 "Context Caching on Disk" 对所有用户默认启用,无需修改代码。每次请求会触发缓存构建,后续具有匹配 prefix 的请求自动命中缓存。

from openai import OpenAI

client = OpenAI(
    api_key="sk-xxx",
    base_url="https://api.deepseek.com",
)

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "你是一位金融分析师。报告内容:\n\n<report>...</report>"},
        {"role": "user", "content": "总结关键收入指标。"},
    ],
)

usage = response.usage
print(f"Cache hit tokens:  {usage.prompt_cache_hit_tokens}")
print(f"Cache miss tokens: {usage.prompt_cache_miss_tokens}")

要点:

  • 缓存 prefix 单元在请求边界(用户输入末尾 + 模型输出末尾)、长输入的固定 token 间隔、以及系统检测到的公共 prefix 处创建。
  • 缓存匹配要求完全匹配一个已持久化的 prefix 单元,部分 prefix 重叠不会命中。
  • 多轮对话场景下第二轮可命中第一轮的完整缓存单元。同一文档不同问题的场景下,系统在 2+ 次请求后检测公共 prefix 并持久化,第三次请求才能命中。
  • TTL:尽力而为,"几小时到几天"。无显式 TTL 控制。
  • 无写入费。命中 token 按折扣价计费(约 90% 折扣)。

来源:DeepSeek 上下文缓存文档,检索于 2026-08-05。


SiliconFlow:未记录缓存机制

截至 2026 年 8 月,SiliconFlow 的公开 API 文档未描述 prompt caching 机制。/v1/chat/completions 端点遵循 OpenAI 兼容 schema,但未暴露 cached_tokens 或类似字段。如果 SiliconFlow 内部有缓存,它是透明的,不反映在计费或响应元数据中。

对于缓存收益显著的工作负载,通过支持显式缓存的服务商路由可能比 SiliconFlow 更省钱,即使 SiliconFlow 的基础 token 价格更低。


价格计算:缓存何时省钱?

缓存只有在读取节省大于写入成本时才省钱。各服务商的盈亏平衡点:

OpenAI(GPT-5.6)

  • 写入费:1.25× 基础输入价
  • 读取折扣:模型相关(最高 90%,即 0.1× 基础价)
  • 盈亏平衡:约 2 次读取/写入

Anthropic

  • 写入费:1.25× 基础输入价
  • 读取:0.1× 基础输入价
  • 盈亏平衡:约 2 次读取/写入

DashScope 显式

  • 写入费:1.25× 基础输入价
  • 读取:0.1× 基础输入价
  • 盈亏平衡:约 2 次读取/写入

DashScope 隐式

  • 写入费:无(1.0× 标准价)
  • 读取:0.2× 基础输入价
  • 盈亏平衡:首次命中即省钱

DeepSeek

  • 写入费:无
  • 读取:~0.1× 基础输入价
  • 盈亏平衡:首次命中即省钱

**路由启示:**DashScope 隐式缓存和 DeepSeek 磁盘缓存没有盈亏平衡门槛——每次命中都省钱。OpenAI(GPT-5.6+)、Anthropic 和 DashScope 显式缓存至少需要 2 次缓存读取才能覆盖写入费。对于一次性或低频 prompt,写入溢价可能让缓存比不缓存更贵。


影响路由的缓存行为差异

TTL 与缓存亲和性

跨服务商路由时,缓存状态不会迁移。在 OpenAI 上缓存的 prefix 在 Anthropic 上不存在。将相同的重复 prefix 以轮询方式分发到不同服务商,意味着没有任何服务商能积累缓存状态,每次都付全价。

对于缓存密集型工作负载,服务商绑定(将相同对话或 prompt 模板路由到同一服务商)比轮询更划算。这是一个设计权衡:绑定提高缓存命中率,但降低了故障转移到其他服务商的灵活性。

Prefix 结构

所有服务商都按精确 prefix 匹配。如果可变内容在静态内容之前,任何服务商都不会触发缓存:

✅ system prompt(静态,长)→ user message(可变,短)
❌ user context(可变)→ system prompt(静态)

DeepSeek 的匹配更严格:缓存单元必须完全匹配。请求 1 发送 A + B,请求 2 发送 A + C,请求 2 不会命中。DeepSeek 在两次请求后检测到公共 prefix A 并持久化;第三次请求 A + D 才能命中。这意味着 DeepSeek 缓存在变化后缀的工作负载上有 2+ 次请求的冷启动延迟。

响应字段名

各服务商报告缓存状态的字段不同。如果你的日志或成本追踪系统依赖特定字段,需要按服务商解析:

服务商缓存读取字段缓存写入字段
OpenAIusage.prompt_tokens_details.cached_tokensusage.prompt_tokens_details.cache_write_tokens
Anthropicusage.cache_read_input_tokensusage.cache_creation_input_tokens
DashScopeusage.prompt_tokens_details.cached_tokens—(隐式:无;显式:从总量推断)
DeepSeekusage.prompt_cache_hit_tokens—(无独立写入字段)

选型矩阵:哪种缓存策略适合哪种工作负载

工作负载最佳缓存选择原因
重复 system prompt,固定模型OpenAI(自动)或 DeepSeek(自动)零配置,重复 prefix 自动构建缓存
大型静态文档 + 不同问题DashScope 显式或 Anthropic 显式在文档后放置 cache_control,一次写入多次读取享 90% 折扣
多轮对话DeepSeek 或 OpenAI两者都自动缓存对话历史
低频多样化 promptDashScope 隐式或 DeepSeek无写入溢价,偶尔复用也省钱
高吞吐量相同请求OpenAI + prompt_cache_keykey 路由提高命中率,每个 key 控制在 15 RPM 以内
成本敏感 + 复用不确定避免显式缓存(Anthropic/DashScope 显式)1.25× 写入费在低复用时可能反而更贵
多服务商路由将缓存密集流量绑定到单一服务商缓存状态不跨服务商迁移,轮询会破坏缓存经济性

TheRouter 说明

当 TheRouter 在 OpenAI、Anthropic、DashScope 和 DeepSeek 之间路由请求时,缓存由各服务商独立处理。发往 OpenAI 的请求在 OpenAI 上构建缓存;如果同一 prompt 的下一个请求被路由到 Anthropic,则从零开始。

对于缓存是重要成本杠杆的工作负载,建议配置模型 fallback 让特定 prompt 模板优先使用单一服务商,仅在限流或错误时 fallback 到其他服务商。这在保持可靠性的同时保留缓存亲和性。

Prompt caching 不改变路由决策本身——router 不检查或管理服务商的缓存状态。优化在 prompt 和路由配置侧:合理组织 prompt 结构以利于缓存、绑定缓存敏感流量、并监控各服务商响应元数据中的缓存命中率。


常见问题

能否通过 OpenAI 兼容网关使用 prompt caching? 可以。OpenAI 自动缓存透明生效。Anthropic 和 DashScope 显式缓存需要网关透传 cache_control 参数。DeepSeek 缓存完全透明。

缓存是否影响输出质量? 不会。所有服务商都声明缓存仅影响输入处理(KV cache 复用),模型仍通过完整计算生成输出,输出随机性(由 temperature 控制)不受影响。

缓存过期后会怎样? 下一个具有相同 prefix 的请求按全价(或写入价)计费。Anthropic 和 DashScope 显式缓存中每次命中会重置 TTL,活跃使用的缓存会保持有效。OpenAI(GPT-5.6)显式断点缓存 TTL 为 30 分钟;旧模型系列可使用扩展保留。

能否缓存 tool 定义和图片? OpenAI:可以(tool 和图片包含在 prefix 匹配中)。Anthropic:可以(tool 定义和图片内容块可携带 cache_control)。DashScope:可以(显式模式下多模态内容块支持 cache_control)。DeepSeek:tool 定义作为 prompt prefix 的一部分自动缓存。

帮助与联系