估算出来的 Token 数,为什么和账单对不上?
你数的是可见的文字,账单算的是整次请求,两者本来就不是同一个量。
最根本的一条:一次请求的输入不只包含你写的那段话。系统提示、历史对话、消息角色与分隔符、工具定义、附带的图片或文件,都会计入输入用量。只数正文自然会偏低,长对话里这种偏差尤其明显。
第二是语言差异。英文大致 4 个字符折算一个 token,中文往往一个汉字就要接近一个甚至更多 token。用「字数÷4」去估中文,结果通常严重偏低,这也是一部分人觉得账单「突然变贵」的原因。
Token 是模型处理文本时切分出的最小单位,它既不是字也不是词,由分词器决定。同一段文字,不同的模型分词结果不同,token 数也就不同。
计费则在 token 之上又叠了几层规则:输入与输出分开定价、缓存命中的输入更便宜、推理过程的 token 计入输出。任何一层被忽略,估算就会偏离。
1估算为什么会偏低
把容易漏掉的几块列出来,对照自己的估算口径就知道差在哪里。
| 遗漏项 | 是否计费 | 为什么容易漏 |
|---|---|---|
| 系统提示与角色设定 | 是,计入输入 | 写在你请求之前,不在你数的文本里 |
| 历史对话 | 是,计入输入 | 多轮对话中会反复累加,越聊越长 |
| 消息结构与分隔符 | 是,计入输入 | 属于请求格式的一部分,肉眼看不到 |
| 工具定义与数据结构 | 是,计入输入 | 定义越长,占用越可观 |
| 图片与文件 | 是,另有换算 | 不是文本,不能用字符数估算 |
| 推理过程 | 是,计入输出 | 不显示在答案里,但按输出计费 |
估算时不要只看自己写的那一段。把完整的请求体放到分词工具里数一遍,得到的结果会明显更接近实际用量。
2语言与文本类型带来的差异
同样的字数,不同语言与内容的 token 数差别很大,这是估算最易失准的地方。
| 内容类型 | 大致换算 | 估算提示 |
|---|---|---|
| 英文普通文本 | 约 4 个字符折 1 个 token | 可按字符数除以 4 粗估 |
| 英文单词视角 | 约 1 个 token 对应 0.75 个单词 | 按单词数估时要乘回 1.33 左右 |
| 中文文本 | 接近 1 个汉字对应 1 个或更多 token | 不能用英文的字符比例套用 |
| 代码与结构化数据 | 密度通常更高 | 符号、缩进、键名都会切分成独立片段 |
| 数字与专有名词 | 常被切得更碎 | 长数字串可能逐段切分,比预想更费 |
官方给出的换算都是估算值而非精确值,句子结构、大小写与空格都会影响切分。要精确到可用于预算的程度,就用分词工具实测,或直接看接口返回的用量字段。
3让估算贴近账单的做法
按下面的顺序改,误差会显著收敛。
- 按完整请求体估算:把系统提示、历史、工具定义一起算进去,而不是只数本次输入的那段话。
- 按语言分别估算:中英文用各自的换算比例,混合内容分段处理。
- 输入与输出分开算:两者单价通常不同,输出往往明显更贵,合成一个单价会失真。
- 把缓存命中单独计:重复前缀命中的部分单价更低,长期运行的服务这部分省得最多。
- 为推理留余量:如果模型会先推理再作答,输出用量会高于可见答案的长度。
- 落地后校准:用接口返回的实际用量反推偏差系数,把估算公式按真实数据修正一次。
顺着这个问题往下用
全部工具总览 →相关疑问
为什么答案很短,用量却很高?
如果模型在给出答案前先做了一段推理,这段推理同样按输出计费,但不会显示给你。所以可见文本短不代表用量低。这是推理型模型的正常特征,不是计费错误。
同样的提示词,两次调用用量一样吗?
输入部分通常一致,输出部分不一定:输出由模型逐字生成,长度本身带有随机性。同一提示词两次生成的答案长度不同,输出用量就会不同。
缓存能省多少?
重复使用的固定前缀可以被缓存,命中部分的输入单价通常远低于未命中部分。对系统提示很长、调用很频繁的服务,这一项往往是最有效的降本手段。
怎么才能算得准?
别依赖手算比例,直接用分词工具或接口返回的用量字段。比例只适合做数量级的快速估算,用于预算时需要按真实用量校准。
继续看:相关问题与资料
全部问题解答 →内容说明:本页针对具体使用问题作答,方法步骤与数值由本站自行整理与复算,事实性内容以对应官方规范与文档为准。内容最后核对日期:2026-10-08。若发现错误,欢迎通过页脚反馈入口告知。
速查在线工具箱