第一次接 OpenAI API 的人常卡在同一件事上:充值进去的钱是怎么被扣掉的?为什么同一段提示词,改了几个字账单就不一样?这篇不讲官方涨跌,只把计费结构拆开:哪些部分计入 token、输入和输出为什么分开算、缓存和批处理这类口径会把账改成什么样。看完你能自己搭一张估算表,也知道该去站内哪一页核对当时的单价。
第一次接 OpenAI API 的人常卡在同一件事上:充值进去的钱是怎么被扣掉的?为什么同一段提示词,改了几个字账单就不一样?这篇不讲官方涨跌,只把计费结构拆开:哪些部分计入 token、输入和输出为什么分开算、缓存和批处理这类口径会把账改成什么样。
看完你能自己搭一张估算表,也知道该去站内哪一页核对当时的单价。先记住一句:这套是「按量」逻辑,不按请求次数收。所以判断贵不贵,永远要连着用量一起看。
钱到底花在哪几块
最核心的一条:输入和输出分开计价,各自有各自的单价,不是按你调了几次接口收。同样一段提示词,输出写得长,账就明显上去;反过来,输入里塞了大段上下文,也一样贵。
- 输入 token
- 你发过去的内容,包括对话历史、系统提示、工具描述、检索回来的文档
- 输出 token
- 模型生成回来的内容,通常单价和输入不是同一个数
- 非文本模态
- 出图、语音转写、嵌入这些各有各的计量单位,不能拿文本单价直接比
- 附加费用项
- 部分接口有单独的调用费、存储费,工具调用产生的额外 token 也计入
什么情况下不适用:如果你用的是订阅制或套餐额度的产品,那不按这套按量口径算,别拿 API 的尺子去量它。两条产品线分开看,预算也别混在一张表里。
Token 是怎么数出来的
Token 不等于字数。中英文、代码、标点的切分规则都不同,同样「看起来一样长」的两段文字,token 数可能差一截。所以别用字数估,用实际返回的用量字段对。
- 多轮对话每轮都要重发上下文,是累加的,不是只算你新打的那句
- 系统提示词和工具描述都算输入,很多人只算了用户问题,所以估出来总偏低
- 同一段提示词改几个字,如果动的是切分边界,token 数会有可见变化
- 自查动作:拿一个小样本任务重复跑几次,把返回里的用量字段抄下来,和你自己的估算对一遍
对不上的时候,先怀疑漏算了上下文,而不是怀疑计费出错。绝大多数「怎么这么贵」的疑问,最后都落在没把历史对话和系统提示算进输入。
自己算一遍:从用量到钱
- 固定一个任务,重复跑几次记录每次的输入 token、输出 token、调用次数。跑多次是为了看波动,不是看单次。
- 取当期单价到 OpenAI 官方价目与图片视频模型对照(/official-api/providers/openai) 看当时的数字,输入价和输出价分别取,别用一个混合均价。
- 把量代进去用日均调用量乘以单次的输入输出用量,得出区间。只算单次没有意义,预算看的是规模。
- 交叉核对用 模型成本计算器(/tools/model-cost-calculator) 代入用量,再拿 Token 单价换算(/tools/token-price-calculator) 核一下单位有没有搞错。
| 估算项 | 怎么取 | 常见坑 |
|---|---|---|
| 输入 token | 对话历史+系统提示+工具描述+用户问题 | 只算用户那句,偏低 |
| 输出 token | 模型实际生成的长度 | 按最大长度估,偏高 |
| 调用次数 | 日均请求量 | 按日活估,漏掉重试 |
| 单价 | 到官方价目页看当期 | 拿旧截图做预算 |
同样用量,账单为什么不一样
用量一样、账单不同,通常是这几个因素在动。先把它们和「单价涨跌」区分开,再决定要不要换方案。
- 缓存:命中缓存的输入部分通常更便宜,但命中条件不满足就按原价,别把它当默认值写进预算
- 批处理:能等结果的活走批处理通道,口径和实时不一样,不过要把等待的时间成本也考虑进去
- 模型档位:同一个任务换小模型还是大模型,差的是单价而不是用量,先定任务再定模型,别反过来
- 口径对齐:比价前先确认对方报的是输入价、输出价还是混合均价,这一条搞错全盘皆错
什么情况下这些优化没用:任务本身对延迟敏感、或者输出长度不可控的时候,缓存和批处理能压的空间很有限,这时候更现实的做法是缩小上下文、或者把任务拆细。
别背数字,去这几页看当期
价格是会动的,所以这篇不写具体数字。你要做预算的时候,去站内这几页拿当期口径,比记任何截图都靠谱。
| 想知道什么 | 去哪一页 |
|---|---|
| 官方当期单价 | 官方 API 价格(/official-api) |
| 同规模团队大概什么量级 | 真实用量榜(/usage) |
| 价格涨跌历史 | 价格变动追踪(/price-watch) |
| 订阅制产品怎么算 | 官方订阅地区价(/plans) |
注意最后一行:订阅制和 API 按量是两套账,别混着算。做 API 预算就看 API 那几页,用订阅产品就别拿 token 单价去套。
下一步把你自己那个任务的输入输出用量记下来,到官方价目页取当期单价,代进计算器跑一遍,你会比看任何解读都清楚这笔钱花在哪。→常见问题
OpenAI API 是按次收费还是按用量收费?
主流是按用量,也就是按 token 收,输入和输出各算各的。少数接口会有按次或按别的单位计的项,比如图片按张、语音按分钟。同一份提示词跑两次、结果长度不同,扣的钱就不一样,所以用「一次多少钱」来估基本不准。
为什么我算出来的钱和实际扣的对不上?
最常见的三个原因:多轮对话把历史上下文重复计入了;系统提示词和工具描述没算进输入;缓存没命中导致输入按原价走。建议先拿一个固定任务跑几遍,把接口返回的用量字段和自己的估算逐项对齐,再放大到全量。
缓存能省多少,是不是默认就省?
不是默认省。要满足命中条件才按优惠口径算,条件不满足就按普通输入价走,所以同一段提示词有时便宜有时不便宜。缓存命中率、命中条件这些细节,基础概念词典(/ai-dict/category/basics) 里有解释,账怎么被改动去看站内关于缓存与计费口径的专篇。