一个汉字对应多少个token
一个汉字对应的 Token 数量并不是固定的,它高度依赖于你使用的模型及其对应的分词器(Tokenizer)。
这里是针对主流模型的估算数据:
1. 简要结论(估算用)
- GPT-3.5 / GPT-4: 1 个汉字 1.3 ~ 2 个 Token(通常建议按 2 来估算成本以防万一)。
- GPT-4o: 1 个汉字 0.6 ~ 1 个 Token(分词效率大幅提升)。
- 国产模型(如通义千问、ChatGLM): 1 个汉字 0.5 ~ 0.8 个 Token(因为词表针对中文优化,常见词如“经济”可能只占1个Token)。
- Llama 2 / Llama 3(英文原生模型): 1 个汉字 2 ~ 3 个 Token(对中文支持较弱,经常把一个字拆成多个字节编码)。
2. 详细对比与例子
为了让你更直观地理解,我们可以对比一下不同模型对中文的处理方式。
情况 A:OpenAI 系列 (GPT-3.5, GPT-4 Classic)
使用的分词器是 cl100k_base。虽然比早期模型进步了,但大多数常用汉字还是一个字对应一个 Token,生僻字对应多个。
- 文本:
你好世界(4个字) - 分词结果:
[你, 好, 世, 界] - 消耗: 4 个 Token (平均 1字=1Token,但加上标点和复杂文本,平均约 1.5)。
情况 B:OpenAI GPT-4o
GPT-4o 采用了新的分词器,大大压缩了非英语语言的 Token 数量。
- 文本:
你好世界 - 消耗: 可能会被合并为更少的 Token(具体取决于词表更新,通常比 GPT-4 节省 1.4倍左右的 Token)。
情况 C:国产模型 (Qwen, Yi, DeepSeek 等)
这些模型的词表中包含大量中文词组。
- 文本:
人工智能(4个字) - 分词结果:
[人工智能](可能直接作为一个 Token) 或者[人工, 智能](2个 Token) - 消耗: 1~2 个 Token (平均 1字 < 1Token)。
情况 D:英文为主的开源模型 (早期 Llama 等)
它们主要针对英文优化,汉字往往被当做 Unicode 字节流拆碎。
- 文本:
你好(2个字) - 分词结果: 可能会被拆成 4 到 6 个碎片段。
- 消耗: 4~6 个 Token (非常昂贵且占用上下文)。
3. 如何精确计算?
如果你需要精确计算(例如为了省钱或卡上下文长度),不要靠猜,可以使用官方提供的 Token 计算工具:
- OpenAI 官方计算器(Tiktoken):
你可以在 OpenAI 的官方页面或使用 Python 库tiktoken来计算。- Python 代码示例:
import tiktoken encoding = tiktoken.get_encoding("cl100k_base") # GPT-4/3.5 len(encoding.encode("你好世界"))
- Python 代码示例:
总结
如果你在做 API 成本预算:
- 粗略估算: 把汉字字数乘以 1.5 到 2。
- 如果包含大量英文: 英文单词数 1.3 + 汉字数 1.6。