大模型 API 价格对比:一张挂牌费率表漏掉的五个变量
你能搜到的每一份大模型 API 价格对比,几乎都是一张「每百万 token 挂牌单价」的表。这种表好做、好读,但对预测你实际要付多少钱基本没用——因为挂牌单价只是决定账单的至少五个变量之一,而且不是差距最大的那一个。
这篇讲的是一套经得起真实业务检验的价格对比方法:哪些变量真正起作用、一个可以回溯到一手来源的完整算例,以及为什么一张挂牌数字表会持续误导那些认真读它的人。
为什么挂牌单价决定不了你的账单
挂牌价是每百万 token 的费率,输入与输出分开报。从这个费率到你的发票之间,还隔着四件事。
输入和输出的价格不一样,通常差四到五倍。 所以你的实际混合单价取决于你自己的输入产出比,而这个比例在不同业务之间差异极大。分类任务是发进去一大堆、返回几乎没有;起草任务是发进去一点、返回一大片。两个团队按同样的挂牌价付费,混合成本可以差三倍,而且谁都没被多收。
缓存折扣改变的是算式,不只是总额。 在支持前缀缓存的地方,重复的上下文按输入价的一个零头计费。对于每一轮都重发一大段稳定前缀的 agent 类业务,这不是一个尾数级修正——它是主导项。一家挂牌价更高但缓存有效的服务商,在生产环境里可以比一家挂牌价更低但没有缓存的更便宜。
分词器不同,所以 token 数在服务商之间不可直接比较。 同一段文字在不同地方不会变成同样多的 token。这意味着每 token 的费率只有在你先按「各家会把你的文本数成多少 token」归一化之后才可比。哪怕在同一家自己的产品线内部这也会变:Anthropic 说明其较新的分词器对同一段输入计出的 token 数约为旧分词器的 1 到 1.35 倍,所以跨代迁移时官方建议重新建立基线,而不是默认沿用旧的 token 数。
思考 token 按输出计费。 在回答前先思考的模型上,思考过程是被生成出来的文本,无论是否展示给你,都按输出价收费。两个挂牌价完全相同的模型,如果一个内部更啰嗦,成本可以差出一截。
还存在批处理与异步档位。 能容忍延迟的工作通常有折扣——Anthropic 的批处理档是半价。如果你有相当一部分量对延迟不敏感,那部分适用的费率根本不是定价页首页那个。
一个数字可回溯的完整算例
与其复制一张几周内就会过期、而且我无法逐行核实的多厂商对照表,不如把一家的完整产品线摆出来,好让这套方法有具体对象可以运算。下面是 Anthropic 一方的挂牌费率,取自 Anthropic 自己的当前模型参考文档、缓存日期 2026-06-24,单位为美元每百万 token:
|
模型 |
输入 |
输出 |
|---|---|---|
|
Claude Fable 5 |
10.00 |
50.00 |
|
Claude Opus 5 |
5.00 |
25.00 |
|
Claude Opus 4.8 |
5.00 |
25.00 |
|
Claude Opus 4.7 |
5.00 |
25.00 |
|
Claude Sonnet 5 |
2.00 |
10.00 |
|
Claude Sonnet 4.6 |
3.00 |
15.00 |
|
Claude Haiku 4.5 |
1.00 |
5.00 |
按上一节的方法去读这张表,会看到几件跨厂商对照表反而会盖住的事。
输出价全线都是输入价的五倍,所以单看输入那一列几乎什么都告诉不了你。Sonnet 5 明明是更新的型号,价格却低于 Sonnet 4.6,可见「越新越贵」也不是一条能跨产品线套用的规律。而最便宜与最贵之间差了十倍——这个跨度大于同能力档位上多数竞争服务商之间的差距,也就是说:在同一家里选对模型,通常比在几家之间选服务商更影响成本。
再把缓存这一项代进去。Anthropic 的缓存读取按基础输入价的十分之一计费,写入溢价为短时缓存 1.25 倍、长时缓存 2 倍,盈亏平衡点落在针对同一前缀的第 2 到第 3 次请求。对于每轮都重发 5 万 token 前缀的业务,用缓存与不用缓存在输入侧的差距大约是一个数量级。没有任何一张跨厂商对照表里有这一列,而它比那些表真正展示出来的差异都要大。
缓存这一侧的完整机制——断点放哪、缓存命中为什么会静默失效、以及怎么确认你真的命中了——见Claude API 提示缓存。单一厂商的费率明细在Claude API 价格。
真正决定胜负的那个指标
你买的东西不是 token,所以每 token 多少钱不是那个指标。每完成一个任务多少钱才是。
一个更便宜但需要试三次、或者产出还得再过一遍才能用的模型,并不便宜。这是大模型成本对比中最常见的错误,而且任何止步于定价页的方法都看不见它。一个高一档、第一次就做对的模型,哪怕挂牌价贵一倍,也可能是更省的那个选择。
这一点也推翻了关于能力档位的一个常见直觉:把更强的模型调到较低的推理投入去跑,经常优于把较弱的模型开到满档,而总成本相当甚至更低——而且它让你留在同一个缓存命名空间里,因为缓存是按模型隔离的,任何多模型路由方案都会放弃在它所路由的那些模型之间复用缓存。一个看起来单次请求更便宜的降级级联,在缓存未命中上损失的可能比它在费率上省下的更多。
这套对比具体怎么跑
- 收集真实样本。 二十到五十条能代表你实际流量的请求,不要用合成 prompt。合成样本会系统性低估前缀长度,而前缀长度恰恰是缓存作用的那个变量。
- 逐家实测 token 数,不要估。 拿你的样本去调各家自己的 token 计数接口。分词器差异在这一步才从理论变成数字。
- 用你自己的输入产出比算混合单价。 实测输入 token 乘输入价、实测输出 token 乘输出价。得到的才是你的实际单价,它不会等于任何一家定价页上的数。
- 用你的真实前缀代入缓存项。 把输入拆成「可缓存前缀」与「易变余量」,前缀按缓存读取价计,再按你的流量形态补上写入溢价。
- 按完成任务数计分,不按请求数。 把样本端到端跑完,数清有多少条不用重试就产出了可用结果,再用总花费除以这个数。
- 情况一变就重跑。 费率会动、模型会加、你自己的流量形态也会漂。一份对比是一次带日期的测量,不是一条事实。
如果你做对比的目的部分是把几家收拢到一个统一接口后面、而不是二选一,架构侧写在LLM API 网关;两种主流请求格式在接入层面的差异写在Claude vs GPT API。
当前数字去哪里取
挂牌费率会变,任何被抄进文章里的数字从落笔那一刻就开始老化——包括上面那张表,这也是它为什么带日期。请把各家的官方定价页当作当前费率的唯一权威来源,把任何第三方对照表(包括这一份)都当作方法演示而不是实时报价。
由此引出两个实用习惯。一是在你决定架构的那一刻去核费率,而不是在你第一次读到它的时候。二是用你自己实测的流量建立自己的成本基线,因为当周围所有挂牌价都在动的时候,只有这个数还保持有意义。
常见问题
哪家大模型 API 最便宜?
这个问题在「服务商」这一层没有答案,因为同一家产品线内部不同模型之间的价差,通常大于同能力档位上不同服务商之间的价差。能回答的版本是:「对我这份特定流量来说,哪个模型、开在哪个推理投入档、配什么缓存方案最便宜」——而这是一次测量,不是一次查表。
我能不能只比每百万 token 的输入价?
不能。输出价是输入价的数倍,所以你的混合单价取决于你自己的输入产出比;而缓存折扣能把输入侧整体挪动一个数量级。孤立看输入那一列,是定价页上信息量最低的一个数。
同一段文字为什么在不同服务商那里 token 数不一样?
各家用各家的分词器。同一段文字经过不同分词器会变成不同数量的 token,所以每 token 的费率必须在你实测出各家对你的文本实际计出多少 token 之后才可比。
思考 token 收费吗?
收,在会生成思考的模型上按输出价计费,无论那段推理是否展示在响应里。同样的挂牌价下,内部推理更啰嗦的模型更贵。
更便宜的模型是不是一定账单更低?
不是。如果它需要更多次尝试、或者产出还要再修,那么每完成一个任务的成本可能超过一个一次就成功的更强模型。永远按完成任务计分。
总结
挂牌的每百万 token 费率是价格对比的起点,不是它的实质。输入与输出定价不同、分词器之间不可比、思考按输出计费、缓存能把输入侧挪动十倍、批处理档给能等的活打折。真正决定哪个选项更便宜的那个数,是在你自己的流量上测出来的「每完成一个任务的成本」——而这个数在任何一家的定价页上都读不到。
ROIBest AI 提供同时兼容 OpenAI 与 Anthropic 协议的端点,也就是说本文描述的这套测量可以直接拿你现有的客户端去跑,不必先重写接入。