摘要:本文使用同一套工作负载,计算 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 成本的判断标准。

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 序列完全一致,语义相近不算命中。改动一个措辞、调整段落顺序、重新排列工具定义,都可能让前缀变成新内容,缓存随之失效。
所以缓存优化有一条基本原则:稳定内容放在最前面,变化的内容放在后面。

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% |

从表中可以读出两点:
- 比例看读取折扣。GPT-6.1 Sol 和 Claude Sonnet 5.5 的读取价是普通输入的 0.05 倍,前缀节省率达到 93.8%,高于 0.1 倍读取的 Astra 和 Gemini。
- 金额看单价基数。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 方案只覆盖同一窗口,隔天能否复用同一份缓存没有保证。每天只调用一两次的任务,单靠相同提示词无法实现跨天缓存。

各类 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 稳定前缀与动态后缀的组织方法
按“变化频率从低到高”的顺序排列内容:
- 工具定义:保持固定顺序和固定描述,不要按请求动态增减
- 系统规则与写作规范:角色说明、品牌规范、文风要求
- 范文与知识库:大段参考文档,版本更新时整体替换
- (缓存断点)
- 动态材料:当天新闻、检索结果、用户输入
- 当前任务指令:标题、字数、具体要求
以下示例通过 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、多次引用同一份大型参考文档的资料分析系统,以及共用品牌规范和文风说明的批量内容生成。这类任务有一个共同点:前缀长、重复率高、调用量大,正好落在缓存收益最高的区间。
在这类场景中做成本决策,可以按三个标准判断:
- 模型是否支持所需的缓存能力。包括最低前缀长度、可选 TTL、读取折扣倍数。0.05 倍读取的模型在长前缀任务上的前缀节省率更高。
- 提示词与 TTL 是否匹配工作负载。连续批处理用短 TTL;按排班分散执行的任务评估长 TTL,并用 4.1 节的公式算出回本次数。
- 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 用真实模板验证命中率和扣费,两项都确认后再放量。
📚 参考资料
- OpenAI Prompt Caching 指南:缓存模式、断点、TTL 与计费倍数
- 链接:
developers.openai.com/api/docs/guides/prompt-caching -
说明:
prompt_cache_options、prompt_cache_breakpoint参数说明 -
OpenAI 模型与定价:GPT-6 Astra、GPT-6.1 Sol 单价
- 链接:
developers.openai.com/api/docs/pricing - 链接:
developers.openai.com/api/docs/models/gpt-6-astra - 链接:
developers.openai.com/api/docs/models/gpt-6.1-sol -
说明:标准短上下文费率,核对日期 2026-11-13
-
Claude Prompt Caching 文档:
cache_control、5m / 1h 写入与读取倍数 - 链接:
platform.claude.com/docs/en/build-with-claude/prompt-caching - 链接:
platform.claude.com/docs/en/models/sonnet-5-5/overview -
说明:Sonnet 5.5 缓存读取 0.05 倍费率
-
Gemini Context Caching 与定价:隐式 / 显式缓存、存储费与 2027 年调价
- 链接:
ai.google.dev/gemini-api/docs/caching - 链接:
ai.google.dev/gemini-api/docs/pricing - 说明:各模型最低缓存长度与 API 支持范围
作者:APIYI 技术团队
技术交流:欢迎在 API易 官网首页联系我们,更多接入资料可访问 docs.apiyi.com 文档中心