AI API 怎么计费?输入 token、输出 token、倍率和余额一次讲清楚
用 AI API 和用网页会员不太一样。网页会员通常是按月买产品体验,API 更像水电表:每次请求用了多少输入、生成了多少输出、走的是哪个模型、有没有命中缓存,最后都会进入用量账单。
如果你还不清楚 token 是什么,可以先看 AI Token 是什么?一篇讲清楚。这篇不再重复分词细节,重点讲一件事:API 到底怎么扣钱,为什么你看到的余额消耗有时和自己心算的不一样。
先给结论:AI API 计费通常不是“问一次多少钱”,而是下面几层叠在一起:
| 层级 | 你看到的名字 | 影响费用的地方 |
|---|---|---|
| 模型用量 | 输入 token、输出 token | 请求上下文有多长,回答生成了多长 |
| 模型单价 | 每 100 万 token 多少钱 | 不同模型、输入和输出价格不同 |
| 平台规则 | 缓存、最低扣费、四舍五入 | 同样 token 数,实际入账可能略有差异 |
| 中转换算 | 余额、汇率、倍率 | 中转站会把模型成本换算成自己的余额体系 |
下面的价格都是假设数字,只用来说明计算方法,不代表任何模型或平台的实时价格。真实价格一定要看服务商后台和账单。
输入 token 和输出 token 是两笔账
一次 API 请求里,通常会分出两类 token:
- 输入 token:你发给模型的内容,包括系统提示词、用户问题、历史消息、文档片段、代码上下文、检索结果和工具返回内容。
- 输出 token:模型生成出来的内容,也就是最终回答、JSON、代码、摘要、分类结果等。
很多人低估输入 token,是因为他们只看到了自己最后输入的那一句话。实际请求里,应用可能还带上了很长的系统提示词、固定格式要求、多轮对话历史、RAG 检索出来的材料,或者代理工具返回的大段日志。
举个例子:你在一个客服机器人里问“帮我查一下退款规则”。这句话本身很短,但请求里可能包含:
- 机器人的角色说明
- 最近几轮对话
- 检索出来的退款政策
- 输出格式要求
- 你的当前问题
这些都会算作输入 token。模型回复的答案,才算输出 token。
最常见的基础公式是:
总成本 = 输入 token / 1,000,000 * 输入单价
+ 输出 token / 1,000,000 * 输出单价
有的平台按 1,000 token 展示价格,有的平台按 100 万 token 展示价格,本质一样,只是单位不同。
为什么输出 token 往往更贵?
很多模型会把输出价格定得高于输入价格。原因不神秘:读入一段文本和生成一段新文本,对系统来说不是同一种工作。
输入阶段主要是把已有内容编码进上下文。输出阶段则要一步一步生成,每生成一个 token,都要根据前面的上下文和已经生成的内容继续计算下一个 token。回答越长,模型占用的计算时间越久,延迟也越高。
所以你会看到一种很常见的价格结构:
- 输入便宜一些,因为模型是在“读”已有内容。
- 输出贵一些,因为模型是在“写”新内容。
这不是绝对规律,不同模型、不同服务商会有自己的定价方式。但在估算成本时,可以先记住一句话:长输入会让输入成本上升,长回答会让输出成本上升,而且输出通常更值得控制。
一个最小计算例子
假设某个模型的价格是:
- 输入:每 100 万 token 1 美元
- 输出:每 100 万 token 4 美元
一次请求用了 20,000 输入 token,生成了 2,000 输出 token。那么成本大概是:
输入成本 = 20,000 / 1,000,000 * 1 = 0.020 美元
输出成本 = 2,000 / 1,000,000 * 4 = 0.008 美元
总成本 = 0.028 美元
注意这个例子里,输出 token 只有输入的十分之一,但因为输出单价更高,输出成本并没有小到可以忽略。
再看几个极简场景,仍然使用上面的假设单价:
| 场景 | 输入 token | 输出 token | 估算成本 | 主要成本 |
|---|---|---|---|---|
| 简单分类 | 200 | 5 | 0.00022 美元 | 输入提示词 |
| 长文提取 | 12,000 | 300 | 0.01320 美元 | 原文输入 |
| 生成长文 | 800 | 3,000 | 0.01280 美元 | 输出生成 |
这张表不是为了让你记数字,而是提醒你:不同任务的成本来源不一样。分类任务的输出很短,但固定提示词可能占主要部分;长文总结主要贵在原文;写长文章则主要贵在输出。
中转站里的余额、汇率和倍率是什么?
如果你直接调用模型官方 API,账单通常围绕模型单价和 token 用量展开。如果你通过 AI 中转站调用模型,中间还会多一层余额换算。中转站适合哪些场景,可以参考 为什么 AI 中转站比订阅 AI 会员更划算?。
中转站常见有几种展示方式:
- 余额显示为人民币、美元或点数。
- 模型标注
1x、0.5x、2x这类倍率。 - 同一个模型在不同渠道、不同质量档位、不同供应链下倍率不同。
- 后台用“消耗额度”而不是“真实美元成本”展示账单。
倍率可以理解成平台自己的换算规则。它不一定等于官方模型价格,也不一定等于汇率。更准确地说,倍率回答的是:
这次模型基础用量,折算到这个平台余额里,要按多少倍扣?
继续使用上面的假设例子。如果某次请求按官方口径估算是 0.028 美元,而某中转站把这个模型标成 0.5x,并且余额单位也按“美元额度”展示,那么你可能会看到接近:
余额扣除 ≈ 0.028 * 0.5 = 0.014 额度
如果平台余额是人民币、点数或内部币,还会再经过它自己的充值比例、汇率、赠送额度或折扣规则。不同中转站的规则不一样,所以不要只看“倍率低不低”,还要看最终用量明细是否透明。
比较可靠的检查方式是:拿一条真实请求,记录模型、输入 token、输出 token、缓存字段、倍率和最终扣费,再用平台规则反推。能对上,说明账比较清楚;长期对不上,就要谨慎。
缓存和读取折扣:便宜,但不要默认一定命中
有些模型和平台支持提示词缓存。简单说,如果很多请求都有相同的长前缀,比如固定系统提示词、固定文档、固定代码上下文,平台可能会把这部分缓存起来。后续请求再次读取同一段内容时,缓存命中的部分会按更低价格计费。
常见字段可能叫:
- cached input
- cache read
- prompt cache
- cache creation
- cache hit
不同服务商叫法不完全一样,但思路差不多:第一次把内容写进缓存可能正常计费或按单独规则计费;后面重复读取时,如果命中缓存,就可能更便宜。
这里有几个坑:
- 不是所有模型都支持缓存折扣。
- 不是所有请求都会自动命中缓存。
- 前缀不完全一致,可能就不命中。
- 缓存可能有最小长度、过期时间和模型限制。
- 中转站是否把缓存折扣完整传递给用户,要看它的账单字段。
所以缓存适合拿来优化批量任务、长系统提示词、固定知识库前缀,但不适合在预算里盲目假设“肯定打折”。估算时最好先按未缓存价格算,再把缓存命中当作额外节省。
最低扣费和四舍五入会影响小请求
理论公式很干净,但真实账单可能还有最小计费单位、精度截断、四舍五入或每请求最低扣费。尤其是非常短的小请求,你自己算出来可能是一个极小数字,但平台入账时会按自己的最小粒度记录。
假设某平台设置了每次请求最低扣费 0.0001 额度。一个特别短的请求按 token 算只要 0.000028 额度,最后也可能按 0.0001 额度扣。这个规则只是示意,不代表所有平台都有。
这会影响两类任务:
- 高频小请求:比如批量做几万个短文本分类。如果每条都单独请求,最低扣费和请求开销可能被放大。
- 失败重试:请求失败后如果已经进入模型处理阶段,可能仍然产生部分用量;自动重试又会再消耗一次。
优化方式通常不是把所有东西硬塞进一个请求,而是在质量允许的情况下做合理批处理:一次处理 10 条、20 条或 50 条,并要求模型按严格 JSON 数组返回。这样既能减少每请求开销,也更容易控制输出长度。
为什么账单和用量记录才是准绳?
本地估算只能接近真实费用,不能替代账单。原因很多:
- 不同模型 tokenizer 不同,同一段文本 token 数会变。
- 应用可能附加了你没看到的系统提示词和格式说明。
- 工具调用、检索结果、函数返回内容也可能进入输入。
- 流式输出中途停止时,实际输出 token 取决于停止位置。
- 缓存是否命中,要看服务商记录。
- 中转站可能还有倍率、汇率、赠送额度、四舍五入和最低扣费。
因此排查扣费问题时,最有价值的不是“我感觉这句话很短”,而是这些字段:
- 请求时间
- request id 或 trace id
- 模型名称
- 输入 token
- 输出 token
- 缓存 token
- 倍率或渠道
- 最终扣费
只要这些字段能对上,账就能解释清楚。没有明细,只给一个余额减少数字,就很难判断到底是模型贵、输出太长、缓存没中,还是平台换算规则不透明。
批量任务之前怎么估算成本?
批量任务最容易超预算,因为单条看起来很便宜,乘上 10 万条之后就不是小数了。比较稳的做法是先跑小样本,再外推。
可以按这个流程来:
- 选 20 到 100 条真实样本,不要只选最短的。
- 用正式提示词、正式模型、正式输出格式跑一遍。
- 记录每条的输入 token、输出 token、是否命中缓存、实际扣费。
- 看平均值,也看 P90 或偏长样本,不要只看最便宜的一条。
- 用公式估算总量,再加 20% 到 30% 的重试和异常余量。
- 设置最大输出长度、并发上限和每日预算。
- 先跑 1% 或 5% 数据,对照账单后再放量。
估算时可以写成:
单条成本 ≈ 输入成本 + 输出成本
批量成本 ≈ 单条成本 * 数据条数 * 安全系数
中转余额消耗 ≈ 批量成本 * 模型倍率 * 平台换算规则
如果任务是分类、打标签、字段抽取,输出应该尽量短,最好只返回必要 JSON。如果任务是总结、改写、生成文章,就要重点限制输出长度,因为输出 token 会成为主要变量。
最后怎么判断费用是否合理?
看 AI API 费用,不要只盯“一个模型单价”。更完整的判断应该是:
- 这个任务主要消耗输入还是输出?
- 模型是否过强,能不能用便宜模型完成?
- 固定提示词能不能缩短,或者利用缓存?
- 输出格式能不能更紧凑?
- 中转站的倍率和余额换算是否透明?
- 用量明细能不能解释每次扣费?
- 批量任务有没有先小样本验证?
一句话总结:AI API 账单的核心是 token,用量的核心是输入和输出,平台余额的核心是换算规则。真正可靠的成本判断,永远以服务商的用量记录和账单为准。