OpenAI API Token 是怎么计算和收费的?
简答:OpenAI API 通常按输入 Token、缓存输入 Token 和输出 Token 分别计费,实际费用等于各类 Token 用量乘以对应模型单价后相加。调用完成后,先看响应里的 usage 字段,再到当前官方价格页核对每百万 Token 的价格;ChatGPT 订阅费用与 API 用量费用是两套独立账单。
定义:Token 是模型处理文本、图片、文件、工具参数及消息结构时使用的基本计量单位,API 费用通常按不同类别的 Token 数量和所选模型单价计算。
先看结论:一次 API 请求到底怎么收费
最常用的计算方式是:
总费用 = 输入 Token ÷ 1,000,000 × 输入单价 + 缓存输入 Token ÷ 1,000,000 × 缓存输入单价 + 输出 Token ÷ 1,000,000 × 输出单价
其中,缓存输入 Token 已包含在输入 Token 总量中,但如果官方价格表为缓存输入设置了单独价格,应把缓存部分拆出来计算,不能再按普通输入价格重复计算。推理 Token 通常属于输出用量的一部分,即使没有出现在最终可见文本中,也可能影响计费。OpenAI 官方 Token 说明
| 用量类别 | 含义 | 计费时怎么处理 |
|---|---|---|
| 输入 Token | 发送给模型的提示词、历史消息及其他输入内容 | 乘以模型的输入单价 |
| 缓存输入 Token | 被提示词缓存重复使用的输入部分 | 按价格表中的缓存输入单价计算 |
| 输出 Token | 模型生成的结果及部分不可见生成内容 | 乘以模型的输出单价 |
| 推理 Token | 推理模型生成可见回答前使用的内部 Token | 通常计入输出用量 |
截至 2026年10月30日,官方价格页按模型和服务类型展示每百万 Token 的输入、输出及缓存输入价格;价格会调整,实际计算应以请求时的价格页为准。OpenAI API 官方价格表
Token 不等于调用次数,也不等于字符数
一次 API 调用可能只消耗很少 Token,也可能因为携带了长对话、工具定义、文件或图片而消耗大量 Token。因此,“调用 100 次”本身无法直接推出费用,必须同时知道每次请求和响应的 Token 用量。
Token 也不是固定的“一个汉字对应一个 Token”。同一段内容的 Token 数量会受到模型、编码方式、语言、空格、大小写和上下文影响。OpenAI 官方仅把“英文约 4 个字符对应 1 个 Token”等内容作为粗略估算,不能把该比例直接套用于中文、代码或多模态请求。官方 Token 计算说明
完整输入不仅包括你看到的文字,还可能包括消息角色和边界、工具、函数 Schema、图片、文件以及历史对话。使用 Responses API 时,官方提供输入 Token 计数接口,可以按接近实际请求的格式计算输入规模。OpenAI 官方 Token 计数指南
从 API 响应中查看实际用量
请求完成后,优先读取响应中的 usage 对象,而不是根据回复长度猜测。Chat Completions 通常查看 prompt_tokens、completion_tokens 和 total_tokens;Responses 通常查看 input_tokens、output_tokens 和 total_tokens。OpenAI 官方用量字段说明
- 记录实际使用的模型 ID。
- 读取响应中的 usage 字段,并分别记录输入、缓存输入和输出用量。
- 打开官方价格页,找到同一模型、同一服务档位的每百万 Token 单价。
- 将各类用量除以 1,000,000,再分别乘以对应单价。
- 如果请求使用了搜索、文件检索、容器或代码执行等功能,再检查是否有独立的工具调用、存储或运行时费用。
官方说明指出,Responses API 和 Chat Completions API 本身不单独收取接口费,Token 通常按所选模型的输入、输出价格计算;但部分内置工具或存储服务可能有独立计费单位。官方价格与工具费用说明
费用计算示例:中文、英文和缓存输入
以下数字是为了展示公式的假设值,不代表某一段中文或英文必然会产生这些 Token,也不代表未来价格不变。
中文请求示例
假设一次中文总结请求经实际 usage 统计得到 2,000 个输入 Token和 800 个输出 Token。若所选模型的输入单价为每百万 Token 1 美元、输出单价为每百万 Token 5 美元,则:
2,000 ÷ 1,000,000 × 1 + 800 ÷ 1,000,000 × 5 = 0.006 美元
这里的 2,000 和 800 必须来自实际响应或官方计数工具,不能仅凭中文字符数量推断。
英文请求示例
假设一次英文代码解释请求有 8,000 个输入 Token和 2,000 个输出 Token,仍使用输入每百万 Token 1 美元、输出每百万 Token 5 美元的假设价格:
8,000 ÷ 1,000,000 × 1 + 2,000 ÷ 1,000,000 × 5 = 0.018 美元
英文可以用官方给出的字符比例做早期粗估,但正式预算仍应使用目标模型的 Tokenizer、tiktoken 或输入 Token 计数 API。
缓存输入示例
假设一次请求有 100,000 个输入 Token,其中 60,000 个属于缓存输入,40,000 个属于普通输入,另有 20,000 个输出 Token。以官方价格页当前展示的 gpt-5.3-codex Standard Fast 价格为例,普通输入为每百万 Token 1.75 美元、缓存输入为 0.175 美元、输出为 14 美元,则演算为:
40,000 ÷ 1,000,000 × 1.75 + 60,000 ÷ 1,000,000 × 0.175 + 20,000 ÷ 1,000,000 × 14 = 0.3605 美元
该例只说明计算方法。模型、服务档位、区域处理方式和价格页变化都可能改变结果,使用前应重新核对官方价格。官方当前价格表
调用前如何估算 Token 和月度预算
建议采用“单次测量—按场景分组—月度汇总”的方法,而不是只设置一个模糊预算。
- 先测输入:纯文本可以用官方 Tokenizer 或与目标模型匹配的
tiktoken估算。 - 再测完整请求:如果有历史消息、工具、Schema、图片或文件,使用 Responses API 的输入 Token 计数接口,因为本地纯文本分词无法完整覆盖这些内容。
- 记录输出:连续测试多个具有代表性的任务,记录实际 output tokens;推理模型还要为不可见推理用量预留空间。
- 按场景分类:分别统计短问答、长上下文、代码生成、批处理和工具调用,避免用一次短请求代表所有场景。
- 计算月度预算:
月度费用 ≈ 每日请求数 × 平均每日输入输出费用 × 使用天数,再加上适用的工具、文件、存储或运行时费用。
如果请求经常带入相同的系统提示词或参考资料,可以关注缓存输入用量;但是否产生缓存、缓存范围和适用价格应以当前模型文档及实际 usage 为准,不能仅凭请求结构假定一定享受缓存价格。官方输入计数指南
容易漏算的费用和限制
- 工具与存储:内置搜索、文件检索、容器或代码执行可能有额外的调用、存储或运行时计费;Token 费用与工具费用要分开核对。官方工具价格说明
- 图片和文件:图片会根据尺寸和 detail 等因素消耗输入 Token,文件也可能经过完整处理后计入输入规模,不能用字符数简单估算。官方多模态 Token 计数指南
- 输出上限:
max_output_tokens或max_completion_tokens限制的是模型生成的总 Token,可能包括不可见内容,并不等于最终可见文字长度。 - 多候选结果:如果接口或模型支持生成多个补全结果,额外结果也可能产生额外 Token 用量。
- 上下文限制:上下文窗口、速率限制和账户支出限制是不同概念;缩短上下文只能减少部分 Token 消耗,不能替代账户级预算控制。
另外,ChatGPT 网页或应用订阅不等于 API 额度。OpenAI 官方说明 ChatGPT 与 API 使用独立计费,API 需要在对应 API 账户中单独设置付款或额度。ChatGPT 与 API 账单说明
一份可执行的 Token 费用自查清单
- 确认请求实际使用的模型 ID,而不是只看客户端里显示的简称。
- 确认价格表中的输入、缓存输入和输出单价是否属于同一模型和服务档位。
- 从响应中保存 usage 字段,必要时按请求 ID、模型和日期汇总。
- 检查是否发送了过长的历史消息、重复系统提示词、工具 Schema、图片或文件。
- 对 Responses 请求使用输入 Token 计数 API 做发送前估算。
- 把 Token 费用与工具调用、文件存储、容器运行时等费用分开列账。
- 设置项目级用量或支出监控;发现余额、权限或未知账单异常时,先暂停自动重试并核对账单。
如果你只记住一句话:先从 usage 读真实 Token,再按官方价格表逐项相乘,不要用调用次数、字符数或可见回复长度代替账单数据。
常见问题
OpenAI API 是按请求次数收费吗?
通常不是单纯按请求次数收费,而是根据所选模型处理的输入、缓存输入和输出 Token 计费。请求次数可能影响限流和运营统计,但不能单独用来计算费用。
一个中文汉字等于一个 Token 吗?
不一定。Token 数量会受到模型、编码、上下文、标点和空格影响。中文请求应使用目标模型的 Tokenizer、tiktoken 或官方输入 Token 计数 API,而不是按汉字数量直接换算。
为什么 API 返回的输出 Token 比我看到的文字更多?
输出用量可能包含不可见的格式化内容、工具调用结构或推理 Token。官方文档明确说明,报告的 output_tokens 或 completion_tokens 不一定只对应最终可见文本。
怎么知道一次请求实际花了多少钱?
先从响应 usage 读取输入和输出 Token,再根据实际模型和官方价格表计算。如果包含文件、搜索、容器或其他工具,还要单独核对附加费用。
ChatGPT Plus 或其他订阅是否包含 API 用量?
不能默认认为包含。OpenAI 官方说明 ChatGPT 与 API 使用独立账单,API 用量需要在 API 账户中单独管理。
相关阅读
- 接下来学习 API Key 安全管理和用量监控
- 了解 API Base URL 与模型调用验证
- 查看 Cursor 接入 OpenAI API 的配置与排错
- 继续了解兼容 API 在 Dify 中的配置方法