引言
2023 年夏天,一家 AI 创业公司的 CTO 打开账单页面,看到的数字让他心跳加速:第一个月花了 $5,200。他们只是一个三人的小团队,做了一个 AI 写作助手,用户不到 500 人。
问题出在哪里?不是 bug,不是滥用——而是他们根本不理解 token。
大模型 API 的计价单位不是「次调用」、不是「字符数」、不是「字数」——而是 token。不理解 token,就像去日本旅游不知道日元和人民币的汇率一样,你根本不知道自己花了多少钱。
理解 token,是理解大模型 API 经济学的第一步。
什么是 Token?
最简单的解释
Token 是大模型处理文本的最小单位。你可以把它理解为「介于字符和单词之间的东西」。
英文的 token 化(大致规则):
"Hello world"
→ ["Hello", " world"] ← 2 个 token
"I love artificial intelligence"
→ ["I", " love", " artificial", " intelligence"] ← 4 个 token
常见英文单词 = 1 token
不常见单词可能被拆成多个 token
中文的 token 化:
"你好世界"
→ ["你好", "世界"] ← 2 个 token(运气好的时候)
"人工智能改变世界"
→ ["人工", "智能", "改变", "世界"] ← 4 个 token
或者更碎片化:
→ ["人", "工", "智能", "改变", "世界"] ← 5 个 token经验法则
估算公式(大致准确):
英文:1 token ≈ 4 个字符 ≈ 0.75 个单词
中文:1 token ≈ 1-2 个汉字
所以:
1000 个英文字 ≈ 1,300 tokens
1000 个中文字 ≈ 1,500-2,000 tokens
中文比英文贵约 50%-100%!为什么中文更贵?
这不是歧视——而是 BPE(Byte Pair Encoding)分词算法的训练数据以英文为主。
BPE 分词原理(简化版):
第 1 步:从字符级别开始
"lower" → ['l', 'o', 'w', 'e', 'r']
第 2 步:合并最频繁的字符对
'l' + 'o' 出现最多 → 'lo'
['lo', 'w', 'e', 'r']
第 3 步:继续合并
'lo' + 'w' → 'low'
['low', 'e', 'r']
第 4 步:继续
'e' + 'r' → 'er'
['low', 'er']
结果:"lower" = 2 tokens
关键:BPE 的词表是从训练语料中学习的。
训练语料以英文为主 → 英文分词效率更高 → token 更少。
中文在词表中占比小 → 分词更碎片 → token 更多。Token 计数实战
用 tiktoken 计算 token 数
python
# pip install tiktoken
import tiktoken
# 选择编码器(不同模型用不同编码)
encoding = tiktoken.encoding_for_model("gpt-4")
# 计算 token 数
text = "你好,世界!Hello, World!"
tokens = encoding.encode(text)
print(f"文本: {text}")
print(f"Token 数: {len(tokens)}")
print(f"Tokens: {tokens}")
# 解码单个 token(看看模型怎么切分的)
for token_id in tokens:
print(f" {token_id} → {encoding.decode([token_id])}")输出示例
文本: 你好,世界!Hello, World!
Token 数: 9
Tokens: [57668, 10844, 11562, 244, 11410, 9454, 33093, 5700, 0]
你 → 你
好 → 好
, → ,
世界 → 世界
! → !
Hello → Hello
, → ,
World → World
! → !各家模型的分词差异
| 模型 | 编码方式 | "你好世界" 的 token 数 |
|---|---|---|
| GPT-4/GPT-4o | cl100k_base / o200k_base | 2-4 |
| Claude | 自有分词器 | 2-3 |
| DeepSeek | 自有分词器 | 2-4 |
不同模型的分词器不同,同样的文本在不同模型中消耗的 token 数可能不一样。
定价:每 1000 个 token 多少钱?
2025 年主流模型定价对比
| 模型 | 输入价格 | 输出价格 | 备注 |
|---|---|---|---|
| GPT-4o | $2.50/1M | $10.00/1M | 性价比旗舰 |
| GPT-4o mini | $0.15/1M | $0.60/1M | 超低成本 |
| Claude 4 Sonnet | $3.00/1M | $15.00/1M | 长上下文强 |
| Gemini 2.5 Pro | $1.25/1M | $10.00/1M | ≤200K prompt 此价 |
| DeepSeek-V3 | $0.14/1M | $0.28/1M | 开源最低价 |
价格经常变动,以官方页面为准。单位:美元/百万 token
成本计算器
python
def calculate_cost(
input_tokens: int,
output_tokens: int,
model: str = "gpt-4o"
) -> float:
prices = {
"gpt-4o": (2.50, 10.00),
"gpt-4o-mini": (0.15, 0.60),
"claude-sonnet": (3.00, 15.00),
"deepseek-v3": (0.14, 0.28),
}
input_price, output_price = prices[model]
cost = (
input_tokens * input_price / 1_000_000 +
output_tokens * output_price / 1_000_000
)
return cost
# 示例:每天 1000 次调用
daily_calls = 1000
avg_input = 500 # 平均每次输入 500 token
avg_output = 300 # 平均每次输出 300 token
for model in ["gpt-4o", "gpt-4o-mini", "deepseek-v3"]:
daily_cost = calculate_cost(
daily_calls * avg_input,
daily_calls * avg_output,
model
)
monthly_cost = daily_cost * 30
print(f"{model:20s} 日费: ${daily_cost:.2f} 月费: ${monthly_cost:.2f}")
# 输出:
# gpt-4o 日费: $4.25 月费: $127.50
# gpt-4o-mini 日费: $0.26 月费: $7.65
# deepseek-v3 日费: $0.12 月费: $3.78那家创业公司后来怎样了?
回到开头的故事。CTO 审计了他们的 API 调用后发现:
问题诊断:
1. 每次调用都在 messages 里塞了 3000 token 的 system prompt
→ 每次调用的输入成本是预期的 6 倍
2. 没有限制 max_tokens,模型有时输出 2000+ token
→ 输出成本不可控
3. 用 GPT-4 做简单任务(关键词提取)
→ 应该用更便宜的模型
优化后:
├── 精简 system prompt 到 500 token
├── 限制 max_tokens=500
├── 简单任务切换到 GPT-4o mini
└── 月费从 $5,200 降到 $380这就是理解 token 经济学的价值——同样的产品,成本降了 93%。
本节小结
| 概念 | 要点 |
|---|---|
| Token 定义 | 大模型处理文本的最小单位,介于字符和单词之间 |
| 中文成本 | 中文 token 效率比英文低 50%-100%,因为 BPE 词表以英文为主 |
| tiktoken | OpenAI 的官方分词工具,可以精确计算 token 数 |
| 定价模型 | 输入和输出价格不同(输出通常贵 4 倍) |
| 成本优化 | 精简 prompt、限制 max_tokens、选择合适的模型 |
思考题
- 如果你的应用需要处理 10 万字的中文文档,用 GPT-4o 和 DeepSeek-V3 分别要花多少钱?
- 为什么模型的输出价格通常比输入价格贵?想想模型在生成输出时和读取输入时做了什么不同的工作。
- 如果你可以改进分词器让中文 token 效率翻倍,这会对整个 AI 产业产生什么影响?