dev.to #ai短讯
缓存前缀交叉:当便宜的 LLM 变贵时
本文指出大多数 LLM 成本比较仅基于单次调用的输入 token 价格,这忽略了提示词缓存(prompt caching)的影响。开启缓存后,大部分请求的 token 按缓存读取费率计费,而不同模型的缓存折扣力度不同。文章通过计算揭示了当缓存折扣差异足够大时,原本便宜的模型可能变得比昂贵的模型更贵,并给出了具体的临界点计算方法。
大多数大语言模型(LLM)的成本比较将模型简化为一个数字:每百万输入 token 的价格为 $X。这个数字代表的是缓存未命中(cache miss)时的价格。一旦启用提示词缓存(prompt caching),你在每次请求中发送的大部分 token 都将按缓存读取费率计费——而且缓存并不会对所有模型提供同等幅度的折扣。当它对某个模型的折扣远大于另一个模型时,性价比排名就会发生翻转。
这种翻转有一个精确的临界点。本文计算了该临界点。
算术推导
所有费率单位均为美元/百万 token。对于包含 N 个输入 token(命中率为 f)和 M 个输出 token 的请求:
cost(f) = N · [ (1 − f)·in + f·cached ] + M · out
= (N·in + M·out) − f · N · (in − cached)成本与命中率呈线性关系。所有不依赖缓存的部分构成常数项;缓存的全部影响体现在斜率上,即 −N·(in − cached)。
两个模型,相同的工作负载。令 cost_A(f) = cost_B(f) 并求解:
(N·in_A + M·out_A) − (N·in_B + M·out_B)
f* = ─────────────────────────────────────────────
N·(in_A − cached_A) − N·(in_B − cached_B)- f* > 1 — 在运行范围内没有翻转;较便宜的模型始终保持更便宜。
- 0 ≤ f* ≤ 1 — 存在真实的交叉点。低于 f* 时第一个模型胜出;高于 f* 时第二个模型胜出。
分母是缓存收益的差异。如果两个模型对缓存读取的折扣比例相同,则分母为零,无论该折扣比例多好,缓存都不会改变它们的排序。
人们实际忽略的数字:缓存折扣比率
in / cached 表示命中比未命中便宜多少倍。在我们追踪的 28 个模型中,它并非恒定值:
| 模型 | input ÷ cached | 命中折扣 |
|---|---|---|
| DeepSeek V4.1 Flash | 50.0× | 98% off |
| Claude Fable 5.1 | 40.0× | 97.5% off |
| DeepSeek V4 Pro | 30.0× | 96.7% off |
| GPT-6.1 Sol | 20.0× | 95% off |
| (大多数 OpenAI / Anthropic / Google 模型) | 10.0× | 90% off |
| Grok 4.3 | 6.25× | 84% off |
| GPT-4.1 | 4.0× | 75% off |
| Grok 4.6 | 4.0× | 75% off |
位于此表顶部的模型随着缓存预热会显著变便宜;而位于底部的模型价格几乎不变。正是这一差距导致了交叉点的出现。
实际产生影响的交叉点(RAG:5万输入 / 2千输出)
以检索工作负载为例——每次调用 50,000 个输入 token,2,000 个输出 token,这是你在每次请求中将一组文档粘贴到提示词中时常见的形态:
| 在 0% 命中率时更便宜 | 在超过以下命中率后变得比...更贵 | 交叉点 |
|---|---|---|
| GPT-4.1 | GPT-6.1 Sol | 20.0% |
| GPT-4.1 | Claude Sonnet 5 | 26.7% |
| GPT-5.2 | GPT-6.1 Sol | 27.7% |
| Grok 4.6 | GPT-6.1 Sol | 40.0% |
| Grok 4.6 | GPT-6 Sol | 53.3% |
| Grok 4.6 | Claude Sonnet 5 | 53.3% |
| Claude Haiku 4.5 | DeepSeek V4 Pro | 74.0% |
| GPT-5.4 mini | DeepSeek V4 Pro | 91.2% |
案例演算:Grok 4.6 vs GPT-6 Sol
- Grok 4.6:输入 $2,缓存 $0.50,输出 $6
- GPT-6 Sol:输入 $2,缓存 $0.20,输出 $10
它们共享相同的输入价格,因此标价显示它们处理输入的成本相同。但事实并非如此。
cost_Grok(f) = 50000·(2 − 1.5f) + 2000·6 = 112,000 − 75,000·f
cost_GPT6(f) = 50000·(2 − 1.8f) + 2000·10 = 120,000 − 90,000·f
112,000 − 75,000·f = 120,000 − 90,000·f
15,000·f = 8,000
f = 0.533当缓存命中率低于 53.3% 时,Grok 4.6 更便宜。高于该阈值时,GPT-6 Sol 更便宜。尽管包装盒上的输入价格相同,但根据缓存行为得出的结论截然相反——且没有任何一家提供商的定价页面告知你这种交叉点的存在。
GPT-4.1 的结果更为惊人:直到缓存命中率仅为 20% 之前,它都比 GPT-6.1 Sol 便宜,因为 GPT-4.1 对命中的折扣是 4 倍,而 GPT-6.1 Sol 的折扣高达 20 倍。
为什么这很重要
团队通常根据标价的输入价格选择模型,部署后却发现无法解释账单——因为实际的命中率使他们跨越了他们从未意识到的边界。一旦启用缓存,决定胜负的不是 headline price(标题价格/名义价格),而是缓存折扣比率。
本文未涉及的内容
- 费率是基础层级,如2026年10月发布的那样。长上下文附加费和批量层级会改变常数并移动 f*。
- 它假设缓存命中是你免费安排的。缓存写入通常单独计费,而大多数时间缓存未命中的工作负载接近 f = 0。
- Anthropic 不收取长上下文附加费;具有隐藏层级阈值的模型在该阈值之上的表现与此单层级模型所示不同。
该公式是精确的;输入费率是脆弱的部分。在信任 f* 之前,请检查它们以及你自己的 workload 形状。
这里的数字来自一个无需账户、客户端运行的免费计算器,它根据各提供商的计费方式应用提示缓存写入、缓存读取、批量层级和长上下文层级,然后根据给定工作负载的实际月度成本对所有 28 个模型进行排名:**https://rabayid.com/。费率是从各提供商的定价页面转录并注明日期的;上述缓存交叉点可从已发布的数据/pricing.json 中复现。
译文已达到本站中文翻译的字数上限,剩余内容请查看原文。