每天重复调用同一份长提示词:Prompt Caching 真能节省多少 API 费用?4 个模型 100 次调用实算

摘要:本文使用同一套工作负载,计算 Prompt Caching 在缓存写入、缓存读取、动态输入和输出四个部分的费用,并说明命中率、TTL 与调用节奏如何影响实际节省。

结论:本文设定的工作负载是每次固定前缀 20K Token、动态输入 500 Token、输出 1K Token,每天调用 100 次。在“首次写入、后续 99 次全部命中”的理想条件下,GPT-6.1 Sol 的完整日账单从 $5.10 降到 $1.348,降幅约 73.57%。Claude Sonnet 5.5 的结果与它相同,GPT-6 Astra 从 $25.50 降到 $7.73,降幅约 69.69%,Gemini 3.8 Flash 从 $1.9125 降到 $0.576,降幅约 69.88%。只看固定前缀这一项,节省比例在 88% 到 94% 之间。完整账单的降幅更低,原因是输出 Token 和动态输入不享受缓存折扣。以上数字是按官方单价做的预算演算,并非真实账单。价格统一采用标准短上下文费率,核对日期为 2026-11-13。

内容预告:第 1 部分说明缓存复用的是请求中的哪一段,以及它影响账单的哪一部分。第 2 部分对比 OpenAI、Claude、Gemini 三家的缓存规则。第 3 部分逐项列出四个模型的计算公式,读者可以自行复算。第 4 部分用 TTL 与调用节奏的演算说明命中率为什么会下降。第 5 部分给出提示词组织方式、TTL 选择、代码示例和命中率监控方法。第 6 部分讨论批量 AI 生产场景下控制 Token 成本的判断标准。

prompt-caching-api-cost-savings-calculation-image-0

To Know:Prompt Caching 术语预备

术语 解释
Token 模型计量文本的单位,API 按 Token 数量计费,单价通常以“美元 / 百万 Token(MTok)”表示
Prompt Caching 把已经处理过的提示词前缀缓存起来,后续请求遇到相同前缀时直接复用,从而降低重复处理的费用
稳定前缀 多次请求中逐字相同的提示词开头部分,例如角色说明、写作规范、范文、知识库
动态输入 每次请求都会变化的内容,例如当天的新闻材料、文章标题、用户要求
缓存写入 第一次处理稳定前缀并存入缓存,单价通常高于普通输入
缓存读取 后续请求命中已有缓存,按远低于普通输入的单价计费
缓存命中 新请求的前缀与可用缓存逐 Token 匹配,复用成功
TTL 缓存的存活时间。OpenAI 将它定义为最低存活时间,不承诺精确清除时间
缓存断点 在提示词中标出“可缓存前缀到此为止”的位置
隐式 / 显式缓存 隐式缓存由系统自动判断并复用;显式缓存由开发者主动声明断点或创建缓存对象
完整任务成本 一次调用的输入、输出及适用工具费用合计,是衡量节省比例的真实分母

1 Prompt Caching 能省钱,具体省在哪里?

1.1 Prompt Caching 复用的是什么

以一个 AI 写作平台为例。每生成一篇文章,请求都由两部分组成。第一部分是固定内容:角色说明、业务背景、写作规范、示例文章、术语与参考材料。第二部分是动态内容:当天的新闻材料、文章标题和用户的具体要求。

Prompt Caching 复用的是第一部分,也就是逐 Token 相同的前缀。缓存匹配要求 Token 序列完全一致,语义相近不算命中。改动一个措辞、调整段落顺序、重新排列工具定义,都可能让前缀变成新内容,缓存随之失效。

所以缓存优化有一条基本原则:稳定内容放在最前面,变化的内容放在后面。

prompt-caching-api-cost-savings-calculation-image-1

1.2 Prompt Caching 节省的是哪部分费用

一次调用的账单可以拆成五项,其中只有固定前缀的费用会被缓存改变:

费用项 无缓存时 开启缓存后
固定前缀 每次按普通输入价计费 首次按写入价,命中后按读取价
动态输入 普通输入价 普通输入价,不变
模型输出 输出价 输出价,不变
工具费用 按工具规则 按工具规则,不变
显式缓存存储(Gemini) 无 按存储时长另计

这张表说明了一个关键区别:固定前缀节省率和完整账单节省率是两个指标。前者只衡量被缓存部分的降幅,后者衡量整张账单的降幅。输出越长,后者越低。


2 GPT、Claude、Gemini 的 Prompt Caching 规则有什么区别?

2.1 OpenAI Prompt Caching:30m 与 12h

OpenAI 文档对 GPT-5.6 及后续模型规定:缓存前缀最低长度通常为 1,024 个可见输入 Token,支持隐式(implicit)和显式(explicit)两种模式。显式模式下,开发者在合适的消息内容块中标记 prompt_cache_breakpoint,明确缓存前缀的边界。

TTL 默认 30 分钟,Responses API 可以通过 prompt_cache_options.ttl = "12h" 选择最低 12 小时的存活时间。计费分为写入和读取:

  • 30 分钟写入:普通输入的 1.25 倍
  • 12 小时写入:普通输入的 2.5 倍
  • 缓存读取:大部分新模型为普通输入的 0.1 倍,GPT-6.1 Sol 与 GPT-6.1 Terra 为 0.05 倍

prompt_cache_key 可用于区分不同用户或工作空间的缓存账务。在 GPT-5.6 及后续模型上,缓存路由已由官方自动管理。

2.2 Claude Prompt Caching:5m 与 1h

Claude 通过 cache_control 支持自动或显式缓存。默认有效时间为 5 分钟,每次命中会刷新有效期。5 分钟从缓存写入或读取请求开始计算,生成响应所用的时间也计入其中。所以在长输出任务里,实际可用的间隔比 5 分钟更短。

计费倍数为:5 分钟写入 1.25 倍,1 小时写入 2 倍,普通读取 0.1 倍。Claude Sonnet 5.5 和 Claude Opus 5.5 的读取费率降到 0.05 倍。Sonnet 5.5 的标准单价是:输入 $2、5 分钟写入 $2.50、1 小时写入 $4、读取 $0.10、输出 $10(均为美元 / 百万 Token)。

2.3 Gemini Context Caching:隐式与显式

Gemini 2.5 及更新模型默认启用隐式缓存,无需额外配置。最低输入要求因模型而异:Gemini 3.8 Flash 为 4,096 Token,Gemini 2.5 Flash 和 2.5 Pro 为 2,048 Token。Google 建议把共用内容放在提示词前面,并在较短时间内复用相同前缀。

显式缓存需要开发者主动创建缓存对象并设定存活时长。费用包括缓存内容、后续读取和存储时长三部分。Gemini Interactions API 目前只支持隐式缓存,需要显式缓存对象时使用 generateContent API。

Gemini 3.8 Flash 截至 2026 年 12 月 31 日的价格为:输入 $0.75、输出 $3.75、缓存读取 $0.075、显式缓存存储 $0.50 / 百万 Token / 小时。官方计划从 2027 年 1 月 1 日起调整为 $1.50、$7.50、$0.15、$1.00。四项价格同比例翻倍,因此下文算出的节省比例不变,绝对金额翻倍。

2.4 三家 Prompt Caching 规则对照

维度 OpenAI Claude Gemini
缓存方式 隐式 / 显式断点 cache_control 自动 / 显式 隐式(默认)/ 显式缓存对象
默认 TTL 30 分钟(最低存活时间) 5 分钟,命中刷新 隐式由系统管理;显式自设时长
长 TTL 选项 12 小时(Responses API) 1 小时 显式缓存自定义
写入费率 30m:1.25 倍;12h:2.5 倍 5m:1.25 倍;1h:2 倍 隐式首次按普通输入计
读取费率 0.1 倍(Sol / Terra 为 0.05 倍) 0.1 倍(Sonnet / Opus 5.5 为 0.05 倍) 3.8 Flash:$0.075 / MTok
额外费用 无存储费 无存储费 显式缓存按小时收存储费
最低前缀 通常 1,024 Token 以官方文档为准 3.8 Flash:4,096 Token

3 每天调用 100 次,Prompt Caching 究竟能省多少钱?

3.1 统一计算条件

以下是按官方单价做的理论演算,并非实际用户账单。统一假设如下:

  • 每次固定前缀 20,000 Token,动态输入 500 Token,输出 1,000 Token
  • 每天调用 100 次,始终使用同一个模型
  • 动态内容全部位于稳定前缀之后
  • 缓存场景:第 1 次写入,后续 99 次完整命中;所有调用都在 TTL 内完成,或命中时持续刷新有效期
  • 不考虑第三方加价、批量折扣和工具费用
  • 20K 前缀不触发 GPT-6 Astra 超过 272K Token 时的长上下文附加计费

计算公式统一为:

单项费用 = Token 数 × 调用次数 ÷ 1,000,000 × 单价(美元 / MTok)
缓存后前缀费用 = 20,000 × 1 ÷ 1,000,000 × 写入价 + 20,000 × 99 ÷ 1,000,000 × 读取价

3.2 GPT-6 Astra 的完整公式

GPT-6 Astra 单价:普通输入 $10,输出 $50,30 分钟写入 $12.50,缓存读取 $1。

无缓存:

  • 固定前缀:20,000 × 100 ÷ 1,000,000 × $10 = $20
  • 动态输入:500 × 100 ÷ 1,000,000 × $10 = $0.50
  • 输出:1,000 × 100 ÷ 1,000,000 × $50 = $5
  • 每日合计:$25.50

30 分钟缓存:

  • 首次写入:20,000 ÷ 1,000,000 × $12.50 = $0.25
  • 99 次读取:20,000 × 99 ÷ 1,000,000 × $1 = $1.98
  • 动态输入:$0.50;输出:$5
  • 每日合计:$7.73

完整账单节省 $17.77,约 69.69%。固定前缀从 $20 降到 $2.23,节省约 88.85%。

3.3 GPT-6.1 Sol、Claude Sonnet 5.5、Gemini 3.8 Flash

GPT-6.1 Sol(输入 $2、输出 $10、30 分钟写入 $2.50、读取 $0.10):

  • 无缓存:前缀 $4 + 动态输入 $0.10 + 输出 $1 = $5.10
  • 缓存后:写入 $0.05 + 读取 $0.198 + 动态输入 $0.10 + 输出 $1 = $1.348
  • 节省 $3.752,约 73.57%;前缀从 $4 降到 $0.248,节省约 93.8%

Claude Sonnet 5.5(5 分钟缓存)的单价与 GPT-6.1 Sol 相同,计算过程和结果也一致:$5.10 降到 $1.348。前提是调用间隔能持续维持 5 分钟有效期。

Gemini 3.8 Flash(隐式缓存,首次按普通输入 $0.75 计):

  • 无缓存:前缀 $1.50 + 动态输入 $0.0375 + 输出 $0.375 = $1.9125
  • 缓存后:首次前缀 $0.015 + 99 次读取 $0.1485 + 动态输入 $0.0375 + 输出 $0.375 = $0.576
  • 节省 $1.3365,约 69.88%;前缀从 $1.50 降到 $0.1635,节省约 89.1%
  • 此结果假设隐式缓存全部命中,不含显式缓存存储费

3.4 Prompt Caching 节省比例与绝对金额的区别

模型 无缓存 / 天 缓存后 / 天 每日节省 30 天节省(外推) 前缀节省率 完整账单节省率
GPT-6 Astra $25.50 $7.73 $17.77 $533.10 88.85% 69.69%
GPT-6.1 Sol $5.10 $1.348 $3.752 $112.56 93.8% 73.57%
Claude Sonnet 5.5 $5.10 $1.348 $3.752 $112.56 93.8% 73.57%
Gemini 3.8 Flash $1.9125 $0.576 $1.3365 $40.10 89.1% 69.88%

prompt-caching-api-cost-savings-calculation-image-2

从表中可以读出两点:

  1. 比例看读取折扣。GPT-6.1 Sol 和 Claude Sonnet 5.5 的读取价是普通输入的 0.05 倍,前缀节省率达到 93.8%,高于 0.1 倍读取的 Astra 和 Gemini。
  2. 金额看单价基数。Astra 的节省比例最低,但每天节省 $17.77,是 Gemini 3.8 Flash 的 13 倍多。单价越高的模型,开启缓存带来的绝对收益越大。

缓存后,输出在 GPT-6 Astra 账单中的占比从约 20% 升到约 65%($5 ÷ $7.73)。这时进一步降本的重点会转向控制输出长度。需要注意,四个模型使用相同 Token 数量只是为了方便比较。完成同一任务时,各模型的实际输出长度和正确率并不相同。

💡 选型建议:比例相近时,优先看每日绝对节省金额与任务质量的平衡。建议先在 API易 apiyi.com 用同一份模板分别调用几个候选模型,记录真实输出长度和缓存 Token,再代入上面的公式估算月度预算。


4 为什么每天重复同一份 Prompt,Prompt Caching 账单仍然可能很高?

4.1 TTL 和调用频率决定命中率

每天调用 100 次,不代表一次写入就能覆盖全天。下面以 GPT-6 Astra 为例:每天分 20 批,每批连续调用 5 次,两批之间间隔 31 分钟。

场景 写入次数与费用 读取次数与费用 前缀费用 加动态输入与输出 每日总计 节省率
无缓存 — — $20 $5.50 $25.50 —
A:30m 缓存 20 × $0.25 = $5 80 × $0.02 = $1.60 $6.60 $5.50 $12.10 约 52.55%
B:12h 缓存(同一窗口内) 1 × $0.50 99 × $0.02 = $1.98 $2.48 $5.50 $7.98 约 68.71%

场景 A 中,批次间隔超过 30 分钟,每批都要重新写入,节省率从理想的 69.69% 降到 52.55%。场景 B 的单次写入价是 30m 的两倍,但全天只写一次,所以对分散调用更划算。12h 方案只覆盖同一窗口,隔天能否复用同一份缓存没有保证。每天只调用一两次的任务,单靠相同提示词无法实现跨天缓存。

prompt-caching-api-cost-savings-calculation-image-3

各类 TTL 的盈亏平衡点可以只看稳定前缀,以普通输入为 1 倍计算:

方案 写入倍数 读取倍数 写 1 + 读 1 vs 无缓存 2 次 写 1 + 读 2 vs 无缓存 3 次 回本所需有效读取
OpenAI 30m 1.25 0.1 1.35 < 2 — 1 次
OpenAI 12h 2.5 0.1 2.6 > 2 2.7 < 3 2 次
Claude Sonnet 5.5 · 5m 1.25 0.05 1.30 < 2 — 1 次
Claude Sonnet 5.5 · 1h 2 0.05 2.05 > 2 2.10 < 3 2 次

结论很直接:短 TTL 只要命中一次就能回本;长 TTL 需要在有效期内至少命中两次。

4.2 缓存断点和提示词顺序

最常见的失效原因是稳定前缀被改动。把时间戳、用户 ID、任务标题或实时材料放在提示词开头,每次请求的前缀都会变成新内容,缓存永远无法命中。

在 OpenAI 隐式模式下,如果首次请求把动态内容也划进了缓存范围,后续动态内容一变,就可能命中不到预期的稳定前缀。解决办法是在稳定内容结束处设置显式缓存断点。

其他常见原因还有:

  • 切换了模型、厂商、服务组织,或修改了部分参数
  • Agent 做对话压缩、重排工具定义、修改历史消息,导致可复用前缀被改写
  • 第三方网关没有传递缓存参数,或没有把缓存折扣计入账单

4.3 输出 Token 与工具费用的影响

缓存只作用于输入前缀。在 3.2 的 Astra 算例中,即使前缀费用降到零,账单也不会低于 $5.50(动态输入加输出)。输出长、调用工具多的任务,完整账单的降幅会明显低于前缀节省率。所以开启缓存之后,还需要配合控制输出长度、精简工具调用。


5 AI 应用如何配置和监控 Prompt Caching?

5.1 稳定前缀与动态后缀的组织方法

按“变化频率从低到高”的顺序排列内容:

  1. 工具定义:保持固定顺序和固定描述,不要按请求动态增减
  2. 系统规则与写作规范:角色说明、品牌规范、文风要求
  3. 范文与知识库:大段参考文档,版本更新时整体替换
  4. (缓存断点)
  5. 动态材料:当天新闻、检索结果、用户输入
  6. 当前任务指令:标题、字数、具体要求

以下示例通过 OpenAI 兼容接口发起调用,并读取返回中的缓存 Token:

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.apiyi.com/v1"  # API易 OpenAI 兼容接口
)

STABLE_PREFIX = """你是一名技术博客作者……(写作规范、范文、术语表,约 20K Token,内容逐字固定)"""

resp = client.chat.completions.create(
    model="gpt-6.1-sol",  # 以平台模型列表中的实际名称为准
    messages=[
        {"role": "system", "content": STABLE_PREFIX},          # 稳定前缀放最前
        {"role": "user", "content": "今日材料:……\n标题:……"},  # 动态内容放后面
    ],
)
details = getattr(resp.usage, "prompt_tokens_details", None)
cached = getattr(details, "cached_tokens", 0) or 0
print(f"输入 {resp.usage.prompt_tokens},命中缓存 {cached}")
查看完整代码:成本演算器 + 命中率统计
from openai import OpenAI

M = 1_000_000

def daily_cost(prefix, dynamic, output, calls,
               p_in, p_out, p_write, p_read,
               writes=1, use_cache=True):
    """按官方单价演算每日费用(美元),返回 (前缀, 动态输入, 输出, 合计)"""
    dyn = dynamic * calls / M * p_in
    out = output * calls / M * p_out
    if use_cache:
        pre = prefix * writes / M * p_write + prefix * (calls - writes) / M * p_read
    else:
        pre = prefix * calls / M * p_in
    return round(pre, 4), round(dyn, 4), round(out, 4), round(pre + dyn + out, 4)

MODELS = {
    # 名称: (输入, 输出, 写入, 读取)  美元 / 百万 Token,核对日期 2026-11-13
    "GPT-6 Astra (30m)":   (10,   50,   12.5, 1),
    "GPT-6.1 Sol (30m)":   (2,    10,   2.5,  0.10),
    "Claude Sonnet 5.5":   (2,    10,   2.5,  0.10),
    "Gemini 3.8 Flash":    (0.75, 3.75, 0.75, 0.075),  # 隐式缓存首次按普通输入
}

for name, (p_in, p_out, p_w, p_r) in MODELS.items():
    base = daily_cost(20000, 500, 1000, 100, p_in, p_out, p_w, p_r, use_cache=False)[-1]
    cached = daily_cost(20000, 500, 1000, 100, p_in, p_out, p_w, p_r)[-1]
    print(f"{name}: ${base} -> ${cached},节省 {(base - cached) / base:.2%}")

# 场景 A:Astra 30m,20 批各需重新写入
a = daily_cost(20000, 500, 1000, 100, 10, 50, 12.5, 1, writes=20)[-1]
print(f"Astra 分批 30m: ${a}")  # 12.1

# ---- 线上命中率统计 ----
client = OpenAI(api_key="YOUR_API_KEY", base_url="https://api.apiyi.com/v1")

def run_and_track(stable_prefix, dynamic_inputs, model="gpt-6.1-sol"):
    total_in = total_cached = 0
    for text in dynamic_inputs:
        r = client.chat.completions.create(
            model=model,
            messages=[{"role": "system", "content": stable_prefix},
                      {"role": "user", "content": text}],
        )
        d = getattr(r.usage, "prompt_tokens_details", None)
        total_in += r.usage.prompt_tokens
        total_cached += (getattr(d, "cached_tokens", 0) or 0)
    hit = total_cached / total_in if total_in else 0
    print(f"实际缓存命中率:{hit:.2%}")
    return hit

🚀 快速上手建议:先用上面的演算器估算预算,再拿真实模板跑 10~20 次调用,看 cached_tokens 是否从第二次开始稳定出现。新用户可以在 API易 apiyi.com 领取免费测试额度完成这一步验证,确认命中后再放量。

5.2 选择 Prompt Caching TTL 和缓存模式

  • 高频连续调用(间隔稳定在几分钟内):用默认短 TTL,即 OpenAI 30m、Claude 5m。命中一次即可回本,写入溢价最低。Claude 需要把响应生成时长计入 5 分钟窗口。
  • 全天分散调用(批次间隔超过 30 分钟):评估 OpenAI 12h 或 Claude 1h。只要窗口内能命中两次以上,长 TTL 就比反复写入更便宜,4.1 的场景 B 即为例证。
  • 前缀极长、需要跨较长时段复用的 Gemini 任务:评估显式缓存,同时计入存储费。以 Gemini 3.8 Flash 为例,20K Token 存 12 小时的存储费是 0.02 × $0.50 × 12 = $0.12。在本文工作负载下,这笔费用相对 $0.576 的日账单已经比较显著。如果隐式缓存命中良好,就保持默认。
  • 前缀经常改动:先固定前缀,再考虑 TTL。前缀不稳定时,任何 TTL 都换不来命中。

5.3 查看 Prompt Caching 的真实命中率和账单

三家的 usage 字段分别是:

  • OpenAI(Responses API):usage.input_tokens、usage.input_tokens_details.cached_tokens、usage.input_tokens_details.cache_write_tokens
  • Claude:usage.input_tokens、usage.cache_creation_input_tokens、usage.cache_read_input_tokens
  • Gemini:对应 API 的 usage 字段,例如 total_cached_tokens;显式缓存另计对象存储费

建议持续跟踪两个指标:

实际缓存命中率 = 缓存读取 Token ÷ 总输入 Token
实际节省金额   = 未缓存基准成本 − 实际 API 账单成本

未缓存基准成本要按相同模型、相同工作负载、相同输出规模计算,否则节省金额没有可比性。在 API易 apiyi.com 控制台核对账单时,可以把同一时段的 usage 汇总与扣费明细逐项对照,确认缓存 Token 按缓存价计费。


6 API易 场景:固定模板与批量 AI 生产如何用 Prompt Caching 控制成本?

适合 Prompt Caching 的典型业务有:每天运行固定文章模板的 AI 写作平台、反复加载同一份工具定义的 Agent、多次引用同一份大型参考文档的资料分析系统,以及共用品牌规范和文风说明的批量内容生成。这类任务有一个共同点:前缀长、重复率高、调用量大,正好落在缓存收益最高的区间。

在这类场景中做成本决策,可以按三个标准判断:

  1. 模型是否支持所需的缓存能力。包括最低前缀长度、可选 TTL、读取折扣倍数。0.05 倍读取的模型在长前缀任务上的前缀节省率更高。
  2. 提示词与 TTL 是否匹配工作负载。连续批处理用短 TTL;按排班分散执行的任务评估长 TTL,并用 4.1 节的公式算出回本次数。
  3. API 供应商是否完整支持缓存并按实际缓存费用计价。上游支持缓存,只是降本的必要条件之一。网关还需要正确传递缓存参数、在 usage 中报告缓存 Token,并把缓存价体现在扣费上。

通过 API易 apiyi.com 调用时,建议把第 3 条落实为固定的验收步骤:用同一份 20K 模板连续调用若干次,检查 usage 中的缓存字段,再与账单扣费核对。技术命中和计费落地两项都确认之后,再把上面的演算结果作为月度预算依据。


常见问题 FAQ

Q1:Prompt Caching 是什么?

它把提示词中已经处理过的相同前缀缓存下来,后续请求命中时按远低于普通输入的价格计费。匹配要求 Token 逐字一致,所以适合固定模板、固定知识库、固定工具定义这类场景。

Q2:为什么前缀省了 90% 以上,整张账单只省 70% 左右?

缓存只作用于固定前缀,动态输入和输出仍按原价计费。以 GPT-6.1 Sol 为例,缓存后 $1.348 的日账单中,输出占 $1,动态输入占 $0.10。输出越长,完整账单的节省率越低。

Q3:每天只调用一两次,值得开缓存吗?

收益很小。OpenAI 12h 和 Claude 1h 都需要在有效期内命中至少两次才能回本,跨天复用没有保证。更有效的做法是把同类任务集中到同一时段批量执行,提高窗口内的命中次数。

Q4:选 30m 还是 12h?

看调用间隔。间隔稳定在 30 分钟以内,用 30m,命中一次即可回本;批次间隔较长、全天分散,用 12h。以 GPT-6 Astra 分 20 批调用为例,12h 的日费用是 $7.98,30m 是 $12.10。

Q5:通过 API 聚合平台调用,缓存还能生效吗?

这取决于平台对缓存参数的传递和计费实现。建议在 API易 apiyi.com 用免费测试额度连续调用同一模板,检查 usage 中的 `cached_tokens` 等字段,并与扣费明细核对。确认缓存既命中、又按缓存价计费后再批量使用。

Q6:缓存命中率突然下降,先查哪里?

按以下顺序排查:前缀里是否混入了时间戳、ID 等动态内容;工具定义的顺序是否变化;Agent 是否压缩或改写了历史消息;模型或参数是否切换;调用间隔是否超出 TTL。用 5.3 节的命中率公式按小时统计,能较快定位变化发生的时间点。

Q7:Gemini 隐式缓存和显式缓存怎么选?

隐式缓存默认开启,没有存储费,前缀超过模型最低长度(3.8 Flash 为 4,096 Token)时优先使用。显式缓存适合需要确定性复用的超长内容,但要按小时支付存储费,并使用 generateContent API。Interactions API 目前只支持隐式缓存。


总结

Prompt Caching 的核心要点:

  • 省在哪里:只降低固定前缀的费用。本文工作负载下,前缀节省率为 88.85%~93.8%,完整账单节省率为 69.69%~73.57%。
  • 省多少:GPT-6.1 Sol 与 Claude Sonnet 5.5 每天从 $5.10 降到 $1.348,GPT-6 Astra 从 $25.50 降到 $7.73。单价越高,绝对节省越多。
  • 什么频率最划算:高频、连续、前缀长的调用。短 TTL 命中 1 次回本,长 TTL 需要命中 2 次。
  • 如何落地:稳定内容在前、动态内容在后,在稳定内容末尾设断点;按调用节奏选择 TTL;用 usage 字段持续监控命中率。
  • 成立前提:缓存既要技术上命中,也要在计费上按缓存价扣费。

建议先用文中的演算器算出预算,再在 API易 apiyi.com 用真实模板验证命中率和扣费,两项都确认后再放量。


📚 参考资料

  1. OpenAI Prompt Caching 指南:缓存模式、断点、TTL 与计费倍数
  2. 链接:developers.openai.com/api/docs/guides/prompt-caching
  3. 说明:prompt_cache_options、prompt_cache_breakpoint 参数说明

  4. OpenAI 模型与定价:GPT-6 Astra、GPT-6.1 Sol 单价

  5. 链接:developers.openai.com/api/docs/pricing
  6. 链接:developers.openai.com/api/docs/models/gpt-6-astra
  7. 链接:developers.openai.com/api/docs/models/gpt-6.1-sol
  8. 说明:标准短上下文费率,核对日期 2026-11-13

  9. Claude Prompt Caching 文档:cache_control、5m / 1h 写入与读取倍数

  10. 链接:platform.claude.com/docs/en/build-with-claude/prompt-caching
  11. 链接:platform.claude.com/docs/en/models/sonnet-5-5/overview
  12. 说明:Sonnet 5.5 缓存读取 0.05 倍费率

  13. Gemini Context Caching 与定价:隐式 / 显式缓存、存储费与 2027 年调价

  14. 链接:ai.google.dev/gemini-api/docs/caching
  15. 链接:ai.google.dev/gemini-api/docs/pricing
  16. 说明:各模型最低缓存长度与 API 支持范围

作者:APIYI 技术团队
技术交流:欢迎在 API易 官网首页联系我们,更多接入资料可访问 docs.apiyi.com 文档中心

发表评论