为什么 token 计费规则里,输出比输入贵那么多

21 阅读5分钟

为什么几乎所有大模型API的计费规则里,输出价格都比输入贵出一大截?GPT-4o输入每百万token定价2.5美元,输出却要10美元,整整四倍。Claude 3.5 Sonnet差距更大,输入3美元,输出15美元,五倍之差。这并非商家随意定价,背后是一套由技术架构、硬件成本和商业逻辑共同决定的价格体系。要理解这个差距,得从大模型最根本的工作方式说起。

大模型处理文本,分两步走。第一步叫编码,你的提示词喂进去,模型并行读取所有文字,一次性算出每个词和全文其他词之间的注意力关系。几千字几万字,一趟矩阵运算就完成了,干净利落。第二步叫解码,模型开始写回复。这一步只能串行,必须一个字一个字往外吐。为什么?因为每生成一个新字,都要回头看一遍上面所有已经生成的字,重新计算它们与新字的关联。写第1个字只算1次,写第1000个字已经算了1000次。这就是自回归生成机制——先有上文才能有下文,顺序不可颠倒。输入跑一趟,输出跑成百上千趟,计算量的差距从一开始就写在算法里了。

缓存代价

如果说计算量的差异只是拉开了序幕,那么硬件成本才是真正的主角。大模型在推理时,需要把每一步的中间计算结果暂存在显存里,这东西叫KV缓存。它的作用是避免每次计算都从头重算,用空间换时间。

输入阶段产生的KV缓存有个巨大的优势:可以复用。如果你的提示词是系统级的固定前缀,比如“你是一个专业的翻译助手”,那么所有用户请求都能共享这份缓存,算一次,用无数次。很多推理服务会做前缀缓存优化,把常用提示词的KV值常驻显存,命中之后输入成本几乎可以忽略。但输出阶段完全是另一回事。每生成一个新token,模型就往显存里写入一份全新的KV缓存,而且之前所有token的缓存都不能丢,必须一直保留,因为后续解码每一步都要回看全部历史。输出越长,显存堆积越高。当同时有成千上万个用户请求压上来,每一路对话都在持续不断地往显存里塞新缓存,整个GPU的HBM高带宽显存很快就会被吃满。HBM是推理硬件里最昂贵的资源,单位成本远高于计算单元本身。输出过程对显存的这种持续挤占,是推高价格的核心物理原因。

价值落差

技术成本解释了为什么输出更烧钱,但最终定价并不完全等于成本。商业逻辑也在发挥作用。

输入是你给模型的材料,是你的需求描述、背景信息、参考资料。输出是模型交付给你的成果,是可直接使用的代码、可发表的文案、可落地的方案。后者的商业价值天然高于前者——你买的是智力产出,不是算力消耗。按价值定价,在各行各业都是通行规则。

这还是一种资源调配手段。便宜的输入鼓励你把需求写清楚,给足上下文,这样输出质量更高,用户体验更好,留存率自然上升。贵的输出则在价格层面抑制了无限长的生成——如果输出和输入一个价,很多场景下模型可能会无节制地长篇大论,挤占其他用户的算力配额。用价格信号调节供需,让整个算力池在宏观上保持高效运转,这是平台方必须考虑的平衡术。

计费现实

以上说了那么多输出贵的理由,但有一件事必须澄清:输出单价高,不代表每次调用的账单都是输出占大头。实际情况取决于你的使用方式。

现在大模型的上下文窗口越来越长,动辄几十万甚至上百万token。你扔一本几十万字的书进去让它写一段摘要,输入token可能是输出的上百倍。这时候哪怕输出单价贵五倍,总费用的大头依然是输入。按总价算,输入并没便宜。另一种情况是多轮对话。每一轮对话都会把整段历史上下文原封不动地重新发送一遍,聊得越多,输入token叠加得越猛。真正的高额账单,往往不是输出引起的,而是被不断膨胀的输入给拖垮的。

所以理解输出为什么贵,不是为了让你害怕输出、刻意压缩回复长度,而是帮你建立成本意识。精简提示词,减少无效轮次,在长上下文场景里果断裁剪不必要的背景材料,这些才是真正省钱的抓手。输出贵是客观事实,但最终账单长什么样,决定权在你怎么用。