如何计算大模型 Token 数量与 API 成本
理解 AI Token、输入与输出计费、上下文窗口和隐藏请求开销,并在调用 API 前估算成本。
大模型 API 通常不按字符、单词或页面计费,而是处理 Token。Token 是特定分词器把文本拆分后得到的小单位,它既决定请求能否放进上下文窗口,也决定大多数商业 API 的费用。
可靠的估算需要把输入与输出分开,计算完整请求,而不是只看输入框中的一段文字;同时还要承认不同模型家族可能用不同方式切分同一内容。下面从基础概念开始,逐步建立可以复核的成本模型。
在浏览器本地验证文章中的估算或清理流程,无需上传内容。
一个 AI Token 到底代表什么
Token 可能是一个完整短词、长词的一部分、标点、空格,也可能是一段代码。分词器会把文本映射成模型词表中的数字 ID。英文普通文本常常是几个字符组成一个 Token,但代码、特殊名称、数字、Emoji 和多语言内容的表现会明显不同。
“一个 Token 约等于 0.75 个英文单词”适合快速猜测,却不能作为账单保证。中文字符可能单独表示,也可能按模型学到的组合切分;模型更换分词器后,相同文本的数量也可能变化。涉及严格上下文限制或财务承诺时,应使用与目标模型匹配的分词器,或直接调用厂商 Token 统计接口。
输入 Token 与输出 Token 必须分开
输入 Token 包括发给模型的全部信息:系统与开发者指令、用户消息、选中的历史对话、检索文档、工具定义,以及部分场景中的图片或音频编码。输出 Token 包括模型生成的回答;根据厂商和模型规则,还可能包含可见或不可见的推理 Token。
输入和输出通常采用不同单价。请求发送 8,000 个输入 Token,并允许最多生成 2,000 个输出 Token 时,应分别乘以对应价格,不能把合计 10,000 个 Token 全部按输入单价计算。还要区分最大输出限制与真实输出:限制是安全上限,实际账单通常根据真正处理的 Token 计算。
| 组成 | 通常归类 | 容易遗漏的地方 |
|---|---|---|
| 系统与开发者指令 | 输入 | 每次请求都可能重复发送 |
| 对话历史 | 输入 | 每轮持续增长 |
| 检索文件或搜索段落 | 输入 | 可能远长于用户问题 |
| 模型回答 | 输出 | 单价通常高于输入 |
| 推理或思考 Token | 厂商定义的输出 | 不一定全部可见 |
逐步计算一次 API 请求成本
第一步统计或估算完整输入;第二步根据相似调用选择预计输出长度,不要直接照搬模型最大值;第三步查找准确型号当前的标准输入和输出价格;最后计算输入 Token 乘以每百万输入价格,加上输出 Token 乘以每百万输出价格。
例如一个流程发送 12,000 个输入 Token,平均接收 1,500 个输出 Token,模型价格为输入每百万 1.50 美元、输出每百万 9 美元。输入费用为 0.018 美元,输出费用为 0.0135 美元,一次约 0.0315 美元。执行一万次约为 315 美元,但尚未加入重试、缓存、工具、搜索、存储、税费或区域溢价。
- 输入费用 = 输入 Token × 输入单价 ÷ 1,000,000。
- 输出费用 = 输出 Token × 输出单价 ÷ 1,000,000。
- 请求估算 = 输入费用 + 输出费用 + 单独计价功能。
- 月度估算 = 单请求费用 × 调用量,并根据流量分布和重试修正。
上下文窗口是容量限制,不是免费额度
上下文窗口是模型规则下请求输入与生成内容可使用的总容量。窗口很大代表可以接受更多材料,却不代表把窗口填满是免费或有效的。超长 Prompt 会增加延迟、稀释相关证据,还可能跨过厂商更高价格的长上下文门槛。
必须为输出预留空间。如果输入几乎占满窗口,模型可能无法生成完整回答,API 也可能直接拒绝请求。聊天应用不应无限重发全部历史;可以保留最近对话、摘要旧内容,只检索相关段落,并通过评测确认更多上下文是否真的提高结果质量。
从一次请求推算生产月度费用
真实流量是一个分布。分别准备小型、典型、大型和滥用边界样本,统计各组输入与输出,再按预计频率加权。单一平均值会掩盖长尾请求,因此还要记录百分位并设置应用硬限制。开发、评测、监控和重试调用不会直接体现在用户会话数中,也必须计入。
上线初期每天对比估算与厂商 usage,关注每个成功任务的 Token、重试率、输出长度、缓存命中率和流量结构。给每次请求增加 500 个稳定 Token,在测试中似乎很小,但面对数百万次请求就会形成明显成本。
| 流量分组 | 记录内容 | 作用 |
|---|---|---|
| 典型请求 | 输入输出 P50 | 描述流量中心 |
| 大型请求 | P90/P95 与最大值 | 控制长尾费用 |
| 失败与重试 | 重试比例 | 重复请求仍消耗资源且可能计费 |
| 内部流量 | 测试和评测 | 常被产品预算遗漏 |
降低成本,不等于盲目删短所有 Prompt
可以移除重复模板、检索更少但更相关的段落、摘要旧历史、限制输出长度,并把简单任务路由到合适的小模型。稳定前缀只有在确认复用率后再启用缓存。异步任务可以评估厂商批处理模式,但需要同时考虑延迟与运行约束。
不要为了省 Token 删除保障质量与安全的必要指令。过短 Prompt 如果导致格式错误和重复调用,反而更贵。优化指标应是每个被接受任务的总成本,并保留回归样本,确保 Token 降低不会悄悄破坏可靠性。
常见问题
1,000 Token 大约是多少字?
英文普通文本常用粗略值约为 750 个单词,但真实数量会受分词器、语言、格式、数字和代码影响,中文不能直接套用。
上下文窗口包含模型回答吗?
通常上下文规则会同时考虑输入与生成输出,但具体限制由厂商和模型决定,应主动为回答预留容量。
最大输出 Token 没有用完也会全部收费吗?
厂商通常按实际处理量计费,最大值只控制上限,但仍应核对具体服务条款。
为什么本地估算与账单不同?
厂商可能使用不同分词器,并计入本地文本估算看不到的系统消息、工具、媒体、推理、缓存和重试。