Skip to content

大模型 Token 计费的门道:为什么输入输出分开算、缓存还要分档?

更新: 7/16/2026 字数: 0 字 时长: 0 分钟

你调用大模型 API 时,账单上往往列着好几种价格:输入多少钱、输出多少钱,输入里还分"缓存命中"和"未命中"。为什么不能一口价?这背后其实藏着大模型的技术原理和实打实的成本逻辑。下面我们从头讲透。

一、先搭框架:Token 计费的几个基本概念

Token 计费:输入和输出分开算钱

在解答疑问前,先把几个词说清楚:

Token(词元)的大白话: 大模型处理文字的"最小计价单位",你可以理解成把文字切成的一小块一小块"文字积木"。一个英文单词可能是 1 个 token,一个汉字大约算 1~2 个 token。大模型不是按"字数"算钱,而是按 token 数量算。

输入 Token: 你发给模型的内容——问题、指令、提供的资料等,也就是"你说的话"。

输出 Token: 模型生成返回给你的内容,也就是"AI 回的话"。

缓存命中 / 不命中: 指你这次输入的内容,是否"之前刚算过、可以直接复用"。命中=能复用(便宜),不命中=得重新算(贵)。后面细讲。

大模型计费的核心特点就是:这几类 token 单价不一样。 一般规律是——输出 比 输入贵,未命中缓存的输入 比 命中缓存的输入贵。 为什么这么设计?下面逐一拆解。

二、疑问一:为什么输入和输出要分开计价?

为什么输出比输入贵

答案的核心是:处理输入和生成输出,是两种完全不同的计算方式,烧掉的算力天差地别。 通常输出 token 的单价是输入的 3~5 倍,正是这个原因。

处理输入:像"一目十行"地并行速读

当你把一段问题发给模型,模型读这段内容时,可以一次性、并行地把所有输入 token 全部"看"进去。就好比你把一整页文章铺开,一眼扫过去同时理解所有字——因为整段话已经完整摆在那儿了,模型可以同时处理,效率极高。

  • 技术上说: 输入阶段(业内叫 Prefill / 预填充)能高度并行,把显卡的算力"喂饱",单位时间处理的 token 多;
  • 结果: 处理每个输入 token 的平均成本很低

生成输出:像"一个字一个字往外挤"

模型生成回答时,情况完全反过来了——它只能一个 token 一个 token 地往外蹦,没法并行

关键在于:它生成下一个字,必须依赖前面已经生成的所有字。 就像写作文,写第 100 个字之前,得先知道前 99 个字是什么。所以模型每吐一个新字,都要把"目前为止的全部内容"过一遍,再决定下一个字。

  • 技术上说: 输出阶段(业内叫 Decode / 解码)是串行的,一步只能产出一个 token,每一步都要完整跑一次模型计算;
  • 结果: 生成每个输出 token,都要占用一次昂贵的显卡计算,而且这个过程慢、并行度低,平均成本高得多

从三个角度总结

角度输入(读问题)输出(写回答)
技术并行处理,一次读完串行生成,逐字往外蹦
算力单位算力能处理很多 token,效率高每个 token 都要跑一次完整计算,效率低
成本平均成本低平均成本高(常为输入的数倍)

结论: 因为输入是"高效并行速读"、输出是"低效逐字慢写",两者对算力的真实消耗差距巨大,所以厂商必须分开定价才公平、才反映真实成本——这既是技术决定的,也是合理的商业逻辑。

三、疑问二:为什么输入还要分"缓存命中/不命中"?

缓存命中为什么更便宜

同样是输入 token,为什么"命中缓存"能便宜一大截(常常只要原价的 1/10 甚至更低)?这要从大模型的一个"偷懒技巧"说起。

先理解:什么是 KV 缓存?

模型在读输入时,会对每个 token 做一堆复杂计算,并把中间结果记下来备用——这些中间结果叫 KV 缓存

KV 缓存的大白话: 模型读一段内容时做的"计算草稿/笔记"。有了这份笔记,处理后续内容时就不用重复算了。

关键点来了:这份"笔记"是可以存起来、下次复用的。

缓存不命中 vs 命中:算力差在哪?

设想很多请求都带着相同的开头。比如一个客服系统,每次请求前面都有一大段固定的"系统提示词 + 产品说明书",只有最后用户的问题不同。

  • 缓存不命中(这段内容第一次算): 模型只能老老实实从头到尾把这段长文重新计算一遍,生成全套 KV 笔记。这要占用大量显卡算力——又慢又贵。就像一道复杂的题,第一次做得从头推导。

  • 缓存命中(这段内容之前刚算过): 系统发现"这段开头我刚算过,笔记还存着呢",于是直接把之前存好的 KV 笔记调出来复用,跳过了绝大部分重复计算。就像同一道题第二次遇到,直接翻出上次的答案抄一下,几乎不费力。

为什么要为此分档计费?

从成本和商业逻辑看,这么设计非常合理:

  1. 真实算力消耗差异巨大: 命中缓存省掉了大量重复计算,厂商的显卡成本、电费成本都实打实降低了,自然可以把这部分省下的钱让利给用户。
  2. 公平原则: 你复用了别人(或你自己)已经算过的结果,没让服务器重新受累,凭什么收全价?按实际消耗收费才公平。
  3. 引导用户优化用法: 便宜的缓存价,会鼓励开发者把固定不变的内容(如系统提示、长文档)放在输入开头、保持稳定,从而更容易命中缓存。这样服务器整体负载下降,大家都受益——用户省钱、厂商省算力,是双赢的商业设计。

结论: 缓存命中与否,背后是"要不要重新做一遍昂贵计算"的本质区别。命中就复用现成笔记、成本骤降,不命中就得从头硬算、成本高企——分档计费,正是让价格如实反映这份算力差异

四、简短总结

  • Token 是计价单位(切碎的"文字积木"),大模型按 token 数量而非字数收费;
  • 输入输出分开算,是因为"并行读问题"便宜、"逐字写回答"昂贵,两者算力消耗本质不同,输出通常贵数倍;
  • 输入分缓存命中/不命中,是因为命中能复用现成的"计算笔记"(KV 缓存)、省掉大量重复计算,成本骤降,而不命中要从头硬算,成本高。

大模型的计费看似复杂,其实就一条底层逻辑——谁真正消耗了多少算力,就为谁定多少价:输出比输入烧钱,所以更贵;缓存命中省了重复计算,所以更省。看懂了算力的流向,也就看懂了账单的门道。