API Token 怎么计算和计费?
简答:API Token 的费用通常按“各类 Token 数量 ÷ 1,000,000 × 对应单价”计算,但输入、输出、缓存和部分推理 Token 可能采用不同价格。先区分 API Key 与用量 Token,再以 API 响应中的 usage 字段核对真实用量,最后套用服务商当前定价表估算成本。
定义:API Token 是模型处理输入和生成输出时使用的计量单位,而 API Key 是用于身份认证的密钥,两者不是同一个概念。
先看结论:API Token 计费的最短计算方法
本站是第三方 AI API 接入指南站,不代表任何模型厂商或接口服务商。计算 API Token 费用时,先记录请求产生的各类 Token,再分别乘以对应单价。
| 计费项目 | 常见含义 | 计算方式 |
|---|---|---|
| 输入 Token | 系统提示、用户问题、历史对话、文件和工具结果等送入模型的内容 | 输入 Token ÷ 1,000,000 × 输入单价 |
| 输出 Token | 模型返回的文本、代码或结构化结果 | 输出 Token ÷ 1,000,000 × 输出单价 |
| 缓存 Token | 被服务商识别为可复用的输入内容 | 缓存 Token ÷ 1,000,000 × 缓存单价 |
| 推理 Token | 部分推理模型生成可见答案前使用的内部 Token | 以具体模型的 usage 字段和定价规则为准 |
总费用就是各项费用相加。以 OpenAI 的说明为例,输入、缓存输入、输出和推理 Token 可能分别统计,且不同接口返回的 usage 字段名称可能不同;Google Gemini 也提供输入、输出、思考、缓存、工具调用和总 Token 等用量字段。OpenAI Token 说明、Google Gemini Token 文档。help.openai.com
API Key、API Token 和用量 Token 有什么区别?
搜索“API Token 怎么计算和计费”时,最容易混淆的是三个词:
- API Key:用于认证请求身份的密钥,通常放在环境变量或请求 Header 中,本身不是按字符数量计费的 Token。
- API Token:有些平台用这个说法指 API Key,有些平台则指模型用量。看到具体服务商的“Token”说明时,要先确认它是在说凭据还是用量。
- 用量 Token:模型处理文本、代码、图片、音频或其他输入时的计量单位,通常用于上下文限制、速率限制和费用核算。
本文后续说的 Token,默认指用量 Token。如果页面写的是“创建 Token”“复制 Token”或“Token 有效期”,那更可能是在描述鉴权凭据,应按 API Key 安全规范处理,而不是按计费公式计算。
Token 为什么不能简单按字数或汉字数计算?
Token 是模型的分词单位,不等于字数、单词数或字节数。同一段文字在不同模型、编码方式和语言环境下,Token 数量可能不同。英文单词可能被拆成多个 Token,标点、空格、大小写也会影响切分;中文、代码、JSON、路径和长数字也不能直接用固定比例换算。
官方资料通常只提供粗略估算。例如 OpenAI 文档指出,英文文本可以用“约 4 个字符对应 1 个 Token”作初步判断,但这只是估算,其他语言可能不同;Google Gemini 文档也说明,Token 约相当于 4 个字符,100 个 Token 约为 60 到 80 个英文单词。发布预算或核对账单时,不应只依赖字符数估算,应优先使用目标模型提供的 Tokenizer、count tokens 接口或响应中的 usage 字段。OpenAI 对字符和 Token 的说明、Gemini Token 统计方法。help.openai.com
完整算例:输入、输出和缓存费用怎么相加?
假设某服务商当前定价表给出以下单价,数值仅用于演示公式,不能替代实际价格:
- 输入单价:每百万 Token 2 美元;
- 缓存输入单价:每百万 Token 0.5 美元;
- 输出单价:每百万 Token 8 美元。
某次请求的 usage 显示:未缓存输入 80,000 Token、缓存输入 20,000 Token、输出 10,000 Token。
- 未缓存输入费用:
80,000 ÷ 1,000,000 × 2 = 0.16 美元。 - 缓存输入费用:
20,000 ÷ 1,000,000 × 0.5 = 0.01 美元。 - 输出费用:
10,000 ÷ 1,000,000 × 8 = 0.08 美元。 - 本次合计:
0.16 + 0.01 + 0.08 = 0.25 美元。
如果服务商没有单独列出缓存、推理或工具调用价格,就不要擅自套用其他平台的规则。模型、接口类型、区域、缓存策略、批处理和附加工具可能改变计费单位,具体金额必须以对应服务商在核验日期展示的定价页为准。OpenAI 的定价页按模型和 Token 类别列出输入、输出及缓存等项目,但价格会更新,使用前应重新核对。OpenAI API Pricing。platform.openai.com
如何从 API 响应中的 usage 字段核对实际用量?
最可靠的做法不是根据返回文本长度倒推,而是保存每次请求返回的 usage 字段,并与服务商控制台的账单或用量页面交叉核对。
- 记录请求标识:保存时间、模型标识、接口类型和请求 ID,但不要记录完整 API Key。
- 读取 usage:不同接口字段可能不同。OpenAI Chat Completions 常见字段包括
prompt_tokens、completion_tokens和total_tokens;Responses 接口可能使用input_tokens、output_tokens和total_tokens。 - 检查特殊项目:查看是否出现 cached、reasoning、thinking、tool use 或其他供应商专用字段。
- 套用当前价格:按照请求实际使用的模型、区域、服务等级和 Token 类型分别计算。
- 核对账单:将多次请求按日期、模型和项目汇总,比较控制台总量;发现差异时,先检查重试、流式请求和工具调用。
OpenAI 官方文档明确提醒,不同接口的 usage 字段名称可能不同;Gemini 文档则展示了输入、输出、思考、缓存、工具调用和总 Token 等字段。Claude 平台提供了在发送消息前统计输入 Token 的接口,可用于估算上下文和成本。OpenAI usage 字段说明、Gemini usage 字段说明、Claude Token counting 文档。help.openai.com
哪些内容会增加输入 Token?
一次请求的输入不只是你刚输入的最后一句话,以下内容都可能进入模型上下文:
- 系统提示词、角色设定和安全规则;
- 多轮对话中的历史消息;
- 检索增强生成返回的文档片段;
- 上传的文本、PDF、图片、音频或视频内容;
- 工具定义、JSON Schema、函数参数和工具返回结果;
- 客户端自动附加的格式说明或项目上下文。
多轮对话尤其容易造成输入费用增长:每次请求都可能携带部分或全部历史上下文。Claude 的 Token counting 文档说明,统计接口支持系统提示、工具、图片和 PDF 等结构化输入;Gemini 文档也指出,非文本模态同样会被 Token 化。若发现输入费用持续增加,可以缩短历史消息、压缩重复规则、只保留必要检索片段,并在发送前调用官方 Token 统计能力。docs.anthropic.com
重试、流式响应、多轮对话和工具调用怎么计费?
重试:如果客户端确实重新发送了请求,通常应把每次成功或失败请求是否产生用量分别核对,不能只看最终返回的一次结果。服务商规则不同,失败请求是否收费不能一概而论。
流式响应:流式只是把输出分段传回,不代表自动免费。应查看最终响应或服务商规定的 usage 传递方式,并以账单记录为准。
多轮对话:历史上下文可能在后续请求中再次作为输入计量,越长的会话越需要关注输入 Token。
工具调用:工具定义、参数和工具返回结果可能增加输入或输出用量,部分平台还会对工具调用本身采用独立计费单位。OpenAI 定价资料明确区分模型 Token 费用与部分工具能力的计费项目,因此不能只按可见回答长度估算。help.openai.com
API Token 月度预算怎么估算?
可以用下面的表格建立一个简单预算模型:
| 变量 | 含义 | 建议记录方式 |
|---|---|---|
R | 每天请求次数 | 按日志或网关统计 |
I | 每次平均输入 Token | 取真实 usage 的平均值或 P95 值 |
O | 每次平均输出 Token | 按模型实际响应统计 |
P_i | 输入每百万 Token 单价 | 从当前定价页核验 |
P_o | 输出每百万 Token 单价 | 从当前定价页核验 |
D | 统计天数 | 通常按实际账期填写 |
不考虑缓存时,基础估算公式为:月度费用 ≈ R × D × ((I ÷ 1,000,000 × P_i) + (O ÷ 1,000,000 × P_o))。
如果有缓存、推理、工具或多模态输入,应将这些项目拆成独立变量。预算最好同时计算平均值和高位值:平均值用于日常成本,高位值用于防止长上下文、批量任务或异常重试造成预算偏差。不要把聊天产品会员订阅费直接当成 API 用量费用;两者的计费体系可能不同。
降低 Token 成本的可操作检查清单
- 先用真实请求的 usage 统计,而不是用字数或字符数猜测。
- 检查系统提示词是否在每次请求中重复发送。
- 限制历史对话长度,对长期会话做摘要或分段。
- 控制检索结果数量,避免把无关文档整段注入上下文。
- 为输出设置合理上限,避免模型生成不必要的长文本。
- 对高频固定内容核对是否支持 Prompt Caching,以及缓存写入和读取如何计费。
- 把重试、超时、工具调用和批量任务单独统计。
- 每次更换模型、网关或计费平台时,重新核验模型 ID、Token 字段和定价规则。
- API Key 只放在环境变量或安全凭据管理器中,日志中脱敏,不要把完整密钥与 usage 一起保存。
常见问题
API Token 是不是 API Key?
不一定。API Key 是认证凭据,API Token 也可能被某些平台用来指凭据;本文讨论的是模型处理请求时产生的用量 Token。遇到“Token”时,应先看上下文确认它指密钥还是计费单位。
1000 个汉字大约是多少 Token?
不能给出适用于所有模型的固定换算。Token 数量受模型、编码、语言、标点、空格和内容结构影响。可以先做粗略估算,但正式预算应使用目标服务商的 Tokenizer、count tokens 接口或响应 usage。
输入和输出 Token 能用同一个价格计算吗?
不能默认这样做。许多服务商会分别设置输入、缓存输入和输出单价,推理或工具能力还可能有额外计费单位。必须按当前模型定价表逐项计算。
流式输出会不会减少 Token 费用?
流式主要改变数据返回方式,不代表自动减少用量或费用。最终应读取服务商提供的 usage 或账单记录,并核对是否发生重试、工具调用和多轮上下文传递。
为什么 API 返回很短,费用却比预期高?
可能是输入历史、系统提示、检索内容、工具定义或内部推理用量较大,也可能发生了重试或缓存规则变化。建议先查看完整 usage,再按模型、Token 类型和请求次数拆分核算。
API Token 费用和聊天软件会员费是一回事吗?
通常不是一回事。聊天产品订阅与开发者 API 调用可能使用不同的账户、额度和计费规则。做项目预算时,应以实际 API 账单和服务商当前定价页为准。