AI 入门指南
输入与输出 token:AI API 向你收取什么费用
为什么 AI API 分别统计输入和输出 token,在哪里从 usage 字段读取它们,以及如何计算一次请求的成本。

如果你刚刚完成了对语言模型的第一次 API 调用,你很可能在响应中看到了一个 usage 块,并想知道它到底统计了什么。简短的回答是:每个请求都有两个计量器。一个统计你发送的 token(输入),另一个统计模型写回的 token(输出)。每个计量器都有自己的价格,而一次请求的成本是两者之和。
本指南说明在哪里找到这些数字、如何把它们换算成美元,以及你可以改变什么来减少花费。如果“token”这个词对你来说仍然模糊,请先阅读什么是 AI 中的 token?。
什么算作输入,什么算作输出#
输入 token 是模型为了回答你而必须读取的一切:
- 你最新的消息;
- 系统提示词(例如“用英语简短回答”之类的指令);
- 对话中较早的消息,如果你再次发送它们;
- 你粘贴到请求中的文档、代码或搜索结果。
输出 token 是模型在回复中生成的一切。在 OpenAI 兼容格式中,这就是 choices[0]. 中的文本。一些处于思考模式的模型还会在最终答案之前生成推理 token;请查看模型的定价页面,了解它们是否按输出计费。
对初学者来说重要的一点是:模型不会在请求之间记住你的聊天。聊天应用每次都会重新发送整个历史记录,因此长对话的输入会随着每一轮而增长,即使你的新消息只有一行。
在哪里读取这些数字:usage 块#
来自 OpenAI 兼容 API 的每个非流式响应都以一个 usage 对象结尾。这是一个展示其结构的教学示例:
{
"choices": [
{ "message": { "role": "assistant", "content": "..." }, "finish_reason": "stop" }
],
"usage": {
"prompt_tokens": 2000,
"completion_tokens": 500,
"total_tokens": 2500
}
}向右滚动表格 →
| 字段 | 含义 | 计费方式 |
|---|---|---|
prompt_tokens |
你发送的所有内容中的 token | 输入 |
completion_ |
模型生成的 token | 输出 |
total_tokens |
prompt_tokens + completion_ |
不是单独的价格:它只是总和 |
初学者常犯的一个错误是把 total_tokens 乘以一个价格。由于输入和输出价格不同,你需要分别使用这两个数字。
一些提供商会添加额外字段。例如,DeepSeek 自己的 API 还会把 prompt_tokens 拆分为 prompt_ 和 prompt_,并且在思考模式下会报告 reasoning_tokens(来源:DeepSeek API 文档,查阅于 2026 年 10 月 21 日)。表中的三个字段是你在任何 OpenAI 兼容响应中都可以依赖的字段。
当你流式传输答案时,usage 在开始时是未知的。在 DeepSeek 自己的 API 中,它会在 data: [DONE] 之前的最后一个内容块中到达(DeepSeek API 文档,查阅于 2026 年 10 月 21 日);其他 API 可能以不同方式发送它,或仅在请求时发送,因此请检查你的客户端收到什么。流式传输本身在 Python 中的流式响应中介绍。
为什么两侧价格不同#
读取你的提示词和写出答案是不同的工作。模型会一次性处理整个提示词,但它必须一次一个 token 地生成答案,而且每个新 token 都依赖于之前的 token。这就是为什么提供商通常将输出定价高于输入,也是为什么你在任何价格表中都会看到每个模型有两个数字。
我们在下面用作示例的模型 MiniMax-M2.7(id minimax-m2.7)遵循这一模式。当前每 1M token 的价格是输入 $0.05、输出 $0.15。
公式#
价格按每 100 万 token 报价,因此一次请求的成本是:
cost = input_tokens × input_price ÷ 1,000,000
+ output_tokens × output_price ÷ 1,000,000下面用虚构的整数价格展示,仅用于说明算术(示例,请用下表中的当前价格替换):
# example, substitute current prices from the table
price_in = 0.20 # USD per 1M input tokens
price_out = 0.80 # USD per 1M output tokens
prompt_tokens = 2000
completion_tokens = 500
cost = (prompt_tokens * price_in + completion_tokens * price_out) / 1_000_000
# 2000 × 0.20 ÷ 1,000,000 = 0.0004 (input)
# 500 × 0.80 ÷ 1,000,000 = 0.0004 (output)
# 0.0004 + 0.0004 = 0.0008 USD一个使用真实模型的完整示例#
以上面 usage 示例中的请求为例:2,000 个输入 token 和 500 个输出 token。在 CheapTokens 上通过 MiniMax-M2.7,它花费 $0.00018。该数字在每次显示页面时根据当前价格表计算。
单个请求很小,因此扩大规模会有帮助。一个发送 10,000 个这种规模请求的小型应用使用 20,000,000 个输入 token 和 5,000,000 个输出 token,总计 $1.75。
同样的请求在我们列表中的其他模型上:
| 模型 | 输入 $/1M | 输出 $/1M | 费用 | OpenRouter |
|---|---|---|---|---|
| GLM-5.3-Flash | $0.02 | $0.04 | $0.00006 | $0.00012 |
| DeepSeek-V4-Flash | $0.015 | $0.10 | $0.00008 | $0.00017 |
| MiniMax-M2.7 | $0.05 | $0.15 | $0.00018 | $0.0012 |
总计 2,000 个输入 token 和 500 个输出 token。每 100 万 token 的价格为当前价格,会随我们的资费一同变动;OpenRouter 列显示相同工作负载的参考价格。
请注意,输出在这里的 token 数量中只占一小部分(2,500 中的 500),但在账单中占比高于其 token 份额,因为输出 token 定价更高(见表格)。对于这个模型,输出侧也是相对于 OpenRouter 参考价格节省得到确认的地方,如果你的应用会写长答案,这很有用。
在代码中使用#
你可以通过将官方 openai Python 包指向 CheapTokens 基础 URL,从中读取 usage:
from openai import OpenAI
client = OpenAI(
base_url="https://api.cheaptokens.dev/v1",
api_key="YOUR_API_KEY",
)
response = client.chat.completions.create(
model="MiniMaxAI/MiniMax-M2.7",
messages=[{"role": "user", "content": "Explain input and output tokens in two sentences."}],
)
usage = response.usage
print("input:", usage.prompt_tokens)
print("output:", usage.completion_tokens)
print("total:", usage.total_tokens)
# example, substitute current prices from the table above
price_in, price_out = 0.20, 0.80
cost = (usage.prompt_tokens * price_in + usage.completion_tokens * price_out) / 1_000_000
print(f"approx. cost: ${cost:.6f}")如果你还没有发送过请求,请先按照使用 CheapTokens 的第一次 API 请求操作。
如何减少 token 消耗#
- 缩短提示词。 精简系统提示词,删除模型不需要的指令。你发送的每个 token 都会在每次请求中计费。
- 精简历史记录。 在长聊天中,保留最后几轮或简短摘要,而不是整个对话。
- 只发送文档的相关部分。 一页文本比整个文件更便宜。
- 要求你需要的格式。 “用三个要点回答”比开放式文章产生更少的输出 token。
- 有意识地设置
max_tokens。 它只限制输出。设置太低会导致答案被截断;详情见为什么 AI 的回答会在句子中间停止? CheapTokens 上的 MiniMax-M2.7 每个答案最多允许 8,192 个输出 token,并具有 180K 上下文窗口。
要估算更大工作流的成本,请参阅如何估算 AI 智能体的成本。
需要记住的要点#
- 每个请求都有输入 token(
prompt_tokens)和输出 token(completion_)。tokens - 它们有各自的价格,通常输出更高。
- 成本 = 输入 token × 输入价格 + 输出 token × 输出价格,价格按每 1M token 计。
- 从响应中的
usage读取这些数字,而不是猜测。
在 CheapTokens 上,一个预付费余额覆盖所有模型,每个模型的价格固定,没有高峰时段定价,并且 API 兼容 OpenAI Chat Completions 和 Anthropic Messages。要尝试上面的示例,请获取 API 密钥并发送你的第一个请求。
每个模型的当前价格:CheapTokens 定价。



