刚拿到 key,写了个 demo 跑得挺顺,等到月底看账单才发现对不上——这种情况多半不是谁算错了,而是计费口径没对齐:输入输出分开算、缓存和普通调用不同价、长上下文还会连带放大开销。这篇不堆价目,而是告诉你钱按什么口径走、去哪里核对当时的真实数字、以及接入前该做哪几件事把成本按住。
刚拿到 key,写了个 demo 跑得挺顺,等到月底看账单才发现对不上——这种情况多半不是谁算错了,而是计费口径没对齐。输入输出分开算、缓存和普通调用不同价、长上下文还会连带放大开销,任何一项没对上,估算和实际扣款就会差一截。
这篇不堆价目,因为价目本来就是浮动的,写死的数字过几天就过时。下面讲的是钱按什么口径走、去哪里核对当时的真实数字、以及接入前该做哪几件事把成本按住。判断标准给你,具体数字你自己去站内页面看当时的。
先搞清 ChatGPT API 的钱按什么口径走
按量计费的核心是输入与输出分开定价。同样一句话,问出去的部分和答回来的部分成本不一样,估算时必须分别乘各自的量。很多人只按「一轮对话大概多少字」算,结果漏掉了系统提示词、历史上下文、工具返回结果这些也都算输入。
- 计价单位和结算口径要先对齐:是每百万 token 计价还是按千 token,标的是哪种货币,是否含税、是否含平台服务费,口径不统一,比价就是白比;
- 不同能力档的模型差价很大,能力档越高越不适合拿来做分类、抽取、格式转换这类简单活,先用低价档跑通再考虑升级;
- 缓存命中与未命中的价格通常不同,长系统提示词是否走缓存,对账单影响可能比换模型还大;
- 具体单价不要背,接入当天到 /official-api 和 /official-api/providers/openai 核对当时的数字,以页面显示为准。
| 费用构成项 | 是否容易被漏算 | 核对办法 |
|---|---|---|
| 输入 token | 容易,系统提示词和历史常被忽略 | 按请求日志逐条统计输入长度 |
| 输出 token | 较少漏,但长回答会放大 | 看单次回答平均长度乘次数 |
| 重试与失败重发 | 容易,调试期尤其明显 | 统计失败请求是否也计费 |
| 缓存命中部分 | 容易,单价不同 | 对比命中与未命中的扣费差异 |
| 平台或通道附加费 | 容易,藏在细则里 | 到站内官方 API 页面看说明 |
从用量倒推:接入前先估一个月的账
预算不是拍脑袋定的,是从用量倒推出来的。接入前先算清三件事:单次请求的平均输入长度、平均输出长度、一天大概多少次。三者相乘就是日消耗的骨架,再乘三十天看月度量级,心里就有底了。
- 量输入拿几条真实请求,数一下系统提示词加历史上下文加用户输入一共多长,取平均值而不是取最短的那条。
- 量输出统计回答的平均长度,注意结构化输出和长文生成会明显拉高这个数。
- 估频次按业务高峰和低谷分别估,别只按测试期的手感,上线后并发往往翻几倍。
- 换成钱用 /tools/token-price-calculator 或 /tools/model-cost-calculator 把 token 量换成费用,再乘三十天。
- 留余量把重试、失败重发、调试期的无效调用留出余量,实测通常比纸面估算高出一截。
团队场景还要按人头发额度,别指望事后从总账里拆出谁用了多少。多平台之间的计费口径差异,可以参考 /ai-nav/category/ai-api 里的平台对比,先选口径清晰的再谈省钱。
几条真能省钱的接入习惯
省钱不是靠抠单价,而是靠改调用方式。下面几条按优先级排,前面几条改起来最省事,效果也最直接。
- 能走缓存和批量的活别用实时高价通道,先判断你的任务是否容忍延迟,再决定走哪条路;
- 控制上下文:固定不变的说明放到可缓存的位置,长文档先摘要再喂,别整篇塞进每一轮对话;
- 按任务分档选模型,简单分类、格式转换用低价档,只有真正需要复杂推理的请求才上高价档;
- 给账号设预算告警和用量上限,把跑飞的可能压在一晚以内,设置思路见 /budget-alert-five-gates 那一套闸门做法;
- 定期清理调试用的常驻脚本,很多超支来自忘了关的定时任务而不是线上流量。
需要说明的是,缓存和批量这类手段并不适合所有场景。如果业务要求即时响应、或者每次输入都完全不同,这些手段基本用不上,这时候省钱的落点就只剩选模型和控制上下文长度。
账单核对:每月花十分钟对一遍
账单不是等出问题才看,固定每月花十分钟对一遍,比事后追查轻松得多。核对有个顺序:先看用量记录,再对账单,顺序反了会发现怎么都对不上。
| 核对步骤 | 看什么 | 发现异常怎么办 |
|---|---|---|
| 看用量分布 | 哪个接口、哪个档位占大头 | 先锁定贡献最大的调用点 |
| 对单价口径 | 当时页面标的单价与结算价是否一致 | 到 /official-api 核对 |
| 查缓存比例 | 命中率是否异常低 | 检查提示词结构是否被打散 |
| 看失败重试 | 失败请求是否也产生费用 | 在代码里加失败拦截 |
| 比对真实扣款 | 赠送额度、折扣是否已生效 | 到 /usage 看真实用量分布 |
价格是浮动的,促销、折扣、赠送额度都会影响实际扣款,所以别拿上个月的印象套这个月。到 /price-watch 和 /usage 看当时的行情与用量分布,数字以页面为准。
对不上的时候先怀疑口径而不是数字。缓存、倍率、退税这些差异的解释在站内 token-cost 那篇里已经讲透,这里不重复,遇到具体差异去那边对一下就行。
下一步先拿一条真实请求把输入输出长度量出来,再用计算器换成钱,最后去价格追踪页核对当时的单价,这套流程走一遍,预算就有底了。→常见问题
ChatGPT API 和 ChatGPT Plus 订阅,哪个更划算?
看用途。订阅是固定月费、给个人交互用,超了要等;API 按量计费、给程序调用,用多少算多少。个人只是聊天、写点东西,订阅通常更省心;要接进自己的产品、跑批处理,就得走 API。两条路的钱不能直接比,先把用量算出来再决定,参考 /plans/chatgpt-plus 看订阅侧的档位。
为什么我预估的费用和实际账单总是对不上?
通常是口径差异:输入输出没分开算、重试和失败请求也在计费、上下文越滚越长导致后几轮比前几轮贵得多。先拉一份用量记录,把请求数和 token 量对一遍,再去看单价。差异的解释思路在 token-cost 那篇,这里只提醒你先查用量别先怀疑单价。
现在该怎么查最准确的 ChatGPT API 价格?
别信任何写死的数字,包括二手教程里的截图。以官方价目页为准,到 /official-api 和 /official-api/providers/openai 看当时的单价与规格;如果走中转或云厂商渠道,还要再看 /official-api/providers/azure 这类托管口径,因为计费单位可能不一样。