token计费规则详细解读

成本与用量

把 AI 接口的 token 计费拆成可核对的几段,讲清分段、倍率、缓存与日志字段怎么对应,知道去哪查当期数字,避免预估与实际对不上。

很多人第一次看 API 账单会懵:明明只发了一段话,为什么输入比输出贵好几倍,为什么同一段提示词第二次便宜,为什么缓存写还单独收一笔。这篇不讲大道理,只把 token 计费拆成几个可核对的段落,告诉你每一段的计费对象、怎么在用量日志里找到它,以及去哪一页看当期单价。

很多人第一次看 API 账单会懵:明明只发了一段话,为什么输入比输出贵好几倍,为什么同一段提示词第二次便宜,为什么缓存写还单独收一笔。这篇不讲大道理,只把 token 计费拆成几个可核对的段落,告诉你每一段的计费对象、怎么在用量日志里找到它,以及去哪一页看当期单价。

核心结论先放前面:账单对不上,九成不是单价看错,而是口径没对齐——把四类 token 混成一个均值、把不同渠道的价直接相减、把重试当成一次调用。下面按「什么被计费 → 怎么分段 → 什么时候跳档 → 怎么对账」这个顺序走,每一步都给你可验证的动作。

先搞清一件事:到底什么被算成了钱

计费对象是模型实际处理的 token 数,不是你的字数、也不是字符数。同一句话在不同分词器下切出来的长度不同,中文、代码、符号混排时差异更明显。所以拿字数乘以某个系数去估,只能当粗略参考,不能当核对依据。

输入 token
提示词、系统提示、工具/函数定义、历史对话,全部计入,且通常是账单里最不显眼但占比最大的一块。
输出 token
模型生成的内容,逐 token 串行产出,同模型一般比输入段贵,长文和长代码任务要重点盯。
缓存 token
分缓存写和缓存读两笔,命中条件各家不同,不是所有重复内容都能命中。
等效 token
图片、音频等非文本输入,有的平台会换算成等效 token 计入,别以为只按文字收费。
  • 先看接口返回体里有没有用量对象,有的话说明是按 token 计费,可以往下拆。
  • 如果没有用量对象、只有固定扣费,直接去对应产品的计费说明页确认,不要套用本文口径。
  • 同一账号下混用了两种计费模式的接口时,对账要分开做,混在一起必然对不上。

分段计费的四个段落,各自怎么定价

一次请求通常拆成四类 token:未命中缓存的输入、缓存写、缓存读、输出。四段单价往往不一样,有的平台还叠加阶梯。把每段单独乘单价再求和,才是最接近实际的估法;用平均单价去乘总量,误差会随任务类型浮动。

段落计费对象什么时候占比会变大
输入(未命中缓存)系统提示、工具定义、历史对话、用户问题系统提示写得很长、每轮都带完整历史
缓存写首次写入可复用前缀的那部分 token反复用同一段长提示词做批处理
缓存读命中缓存被复用的那部分 token前缀稳定、只改末尾问题的连续调用
输出模型逐 token 生成的内容写长文、生成大段代码、做多轮推理

想横向比不同模型或不同渠道,最稳妥的做法是把这四段都填进同一个估算表里,而不是只看输入单价那一行。输入便宜但输出贵、或者缓存读不便宜的模型,在你这种任务上未必划算。

  1. 统计你最近一批请求的四段 token 各占多少从用量日志按模型分组导出,看输入、输出、缓存读三列的比例,比例比绝对值更稳定,也更能说明你的任务形态。
  2. 把四段分别乘对应单价再求和用站内工具区的模型成本计算器,输入你自己的用量分布,出来的才是你的真实成本,不是官方示例里的成本。
  3. 换一个模型重算一遍做对照同样用量分布套另一套单价,差异出现在哪一段,就是你选型时该权衡的点。

阶梯与分档:什么时候单价会跳

分档是账单对不上的第二大原因,而且很多人会默认它是「只对超出部分加价」那种算法。实际上整档生效更常见——只要你的条件落进高档,整个请求或整个账期就按高档算,前后单价差别可能不小。

常见两种分档逻辑:按单次请求的上下文长度分档,或按账期累计用量分档。前者主要影响长文档、长对话这类任务;后者主要影响高频调用,同一份调用量集中在月初还是分散在全月,结果可能不同。

  • 判断标准一:看分档门槛是不是以「单次请求」为单位,如果是,长上下文任务要单独拎出来估。
  • 判断标准二:看累计档位是整档生效还是分段累进,口径不同,估出来的差距会很大。
  • 判断标准三:拿真实用量分布去套门槛,算跨档请求占比,比看平均值有意义得多。
  • 不适用的情况:如果平台明确写了统一单价不分档,这一节可以跳过,但要去价格页确认当期口径,别凭印象。

一个混合档位任务(同一请求里既有超长输入又有大量输出)要按最贵的那一档来估,这是保守但不容易翻车的做法。想知道当期门槛和档位数字,去官方 API 价格页核对,站内价格页和官方页面的口径都要看一遍。

倍率、折算与计费口径怎么对齐

官方价、中转价、订阅折算价,同样是「元」但不是同一个口径。比价前先把口径统一,否则算出来的是假差价,看着便宜实际贵。这是很多人换渠道后账单反而上升的原因。

口径差异常见表现统一方法
税与币种一边含税一边不含,或用不同结算币种换算到同一币种、同一含税口径再比
倍率折算按模型倍率折算成统一记账单位换算成每次调用的实际成本再比
渠道加价方式按 token 加价或按倍率整体上浮用同一份用量分布两边各算一遍

判断标准很简单:拿同一段提示词,在两边各跑一次,记录四类 token 的用量和实际扣费,换算成每次调用成本再比。不要拿两个不同记账单位里的数字直接相减。

失败、重试和流式中断算不算钱

请求在计费前就被拒(比如鉴权失败、参数错误),一般不计费;已经生成到一半才断流的,多数平台会按已产生的 token 计费。这两类要分开看,不能笼统地说「失败不计费」。

更容易被忽略的是重试。超时后自动重发等于又跑了一次,两次都计费。账单明显高于预估时,先别怀疑单价,先确认实际调用次数是不是等于你以为的次数。

  1. 按请求 ID 去重在日志里找出内容完全相同但时间接近的记录,数量就是多跑的次数。
  2. 核对状态码分布看错误码和超时各占多少,这部分对应的是额外成本,能解释多少偏差一目了然。
  3. 先对齐次数再对齐单价顺序反了会白查半天:先确认次数,金额对不上再去查单价和分档。

限速被拦后立刻重试容易连环触发,形成一批几乎无效的调用。这类问题的排查动作是固定的:把同一时间窗内的调用数、失败数、重试数三个数字摆在一起看,基本一眼就能定位。

对账靠什么:用量日志里的关键字段

没有日志就对不了账,只能猜。至少要留下这几个字段:请求时间、模型标识、输入 token 数、输出 token 数、缓存写 token 数、缓存读 token 数、请求耗时、状态码。有了它们,账单再对不上也能定位到是哪一类 token、哪个模型、哪一天出的偏差。

  • 优先把接口返回体里的用量对象原样落盘,比事后按业务统计更可靠,也更少口径争议。
  • 字段命名各家不同,先统一成自己的口径再汇总,否则同一列里混了两种含义。
  • 缓存写和缓存读要分两列,合成一列后面就没法拆开核对。
  • 模型标识要存接口实际用的那串,别只存你口语里的叫法,对不上表就白查。

判断标准:拿一次已知的调用,手工按日志字段算一遍总额,再和账单里对应的那笔比。对得上说明字段口径没问题,对不上先修口径再谈成本优化,不然优化方向都是错的。

想知道当期数字,去哪几个页面看

本文不给任何具体数字,因为价格和档位会变,写死的数字只会误导人。看当期数字的正确姿势是:先确认模型标识,再分别看官方和中转两边的价格页,最后用自己的用量分布算一遍。

  • 比价前先到 /models 核对模型标识,确认你用的名字和计费表里的确实是同一个模型。
  • 当期官方单价去官方 API 价格页看,中转渠道的价格去 /sites 对应条目看,两边别混着用。
  • 拿不准换算结果时,用 /price-watch 看价格变动记录,再用 /tools/speed-test 之外的模型成本类工具按自己的用量算一遍。
  • 价格随时可能调整,所有结论以页面上的当期数字为准,别参考任何二手截图或记忆里的旧价。

一套可复用的核对清单

把上面的内容收成一套固定动作,下个月账单出来照着走一遍,基本能解释清楚每一个偏差。关键是顺序:先对齐总量,再对齐单价,最后才谈优化。

  1. 导出账期内的请求数与四类 token 总量先对齐总量,总量对不上说明数据范围或去重口径有问题,先修这个再往下走。
  2. 四类 token 分开套单价再求和不要用一个混合均值去估,混合均值的误差会随任务类型变化,无法解释偏差。
  3. 检查跨档请求占比和缓存命中情况这两项最能解释「为什么比预估高」或「为什么第二遍反而便宜」。
  4. 把结论写进下个月预算表下次预估直接用这次的实测分布,而不是重新拍脑袋,逐月收敛误差。

不适用的情况也要说清楚:如果你的调用量很小、任务形态单一,这套拆法的收益有限,知道四段单价差异即可;如果平台明确按次或按订阅计费,整套逻辑都不适用,直接看对应产品的计费说明。

下一步去站内模型库核对你要用的模型标识,再对照价格页和中转站目录看当期单价,用自己的用量分布算一遍成本,比看别人的结论可靠得多。

常见问题

为什么我的输入比输出贵,不是反过来的吗?

多数模型是输出单价高于输入,但如果你把缓存写、超长上下文或带倍率的渠道算进去,输入侧的总花费可能反超。判断时先看四段各自的 token 数和单价,再下结论,别直接看总额。

同一段提示词第二次调用为什么便宜了

很可能是命中了缓存,命中的那部分按缓存读计价,单价低于普通输入。命中条件和有效期各家不同,不保证每次都中,所以别把缓存省下的钱算进固定预算里。

分段计费是不是超出部分才按高价算

不一定。有的是整档生效,有的是超出部分累进,两种算法结果差很多。判断办法是在计费说明里找「整档」还是「累进」这类字眼,或者用两笔不同规模的用量反推验证。

请求失败了还会扣钱吗

被直接拒掉的请求一般不计费;已经生成一截再断的,通常按已产生的 token 算。最省事的办法是在用量日志里按状态码筛一遍,看失败请求有没有落在计费记录里。

怎么把预估做得准一点

拿最近一段真实用量分布,按四类 token 分开算,再把跨档和重试的影响加进去,而不是用一个平均单价乘以总字数。第一版肯定不准,跑一两个账期把偏差修正过来就有谱了。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。