详细解释
分词器(Tokenizer) 是你和大模型之间的”翻译官”——你写的是汉字/英文/代码,模型计算的是整数 ID([15339, 128000, 49152, ...])。Tokenizer 就是负责把文本切成一个个 Token,再查词表映射到整数 ID 的那个组件;以及反向把模型输出的整数 ID 翻译回文本的组件(Detokenization)。
同一个字在不同 Tokenizer 下对应 Token 数不同:
- 中文 1 个字 ≈ 1–2 个 Token(GPT-4 系列约 1.5;DeepSeek/Qwen 约 1.2)
- 英文 1 词 ≈ 0.75–1.3 Token
- 代码 Token 密度取决于标识符写法(蛇形命名比驼峰更省)
所以 计费($X/M Tokens)的真正口径,是对应模型自家 Tokenizer 的切分结果,不是你本地脚本随便切的结果。
Tokenizer 算法的 3 代演进
| 算法 | 代表模型 | 特点 |
|---|---|---|
| WordPiece | BERT、Google 老模型 | 基于字符频次的子词切分,中文表现一般 |
| BPE(字节对编码) | GPT-3/4、Claude、Llama、多数开源 LLM | 2024 前工业界标准,可预测性好 |
| SentencePiece / UniLM | PaLM、Gemini、Qwen 早期 | 直接对 Unicode 字节流切,不依赖空格分词,中日韩切分更均匀 |
坑:同一个字符串,在不同 Tokenizer 下消耗 Token 数可能差 2–3 倍
- 长中文:国产 Qwen/DeepSeek 的自研 Tokenizer 往往比 GPT 的更”省 Token”(中文粒度更优),成本更低;
- 代码:专门训过代码语料的 Tokenizer(Codestral、DeepSeek-Coder)切标识符更合理,Token 数比通用模型少 20–30%;
- 特殊字符:长串乱码、Base64、URL 会被切得异常碎,Token 消耗飙升,调用前先做预处理。
唯元智创(Weimeta.cn)在控制台「计费计算器」里内置了各家主流模型的 Tokenizer,粘贴文本就能分别看到不同模型的实际 Token 数,方便你做成本估算和模型选型。
常见问题
我怎么在代码里本地用官方 Tokenizer 算 Token?
推荐 tiktoken(OpenAI 官方 Python 库)、tiktoken-rs(Rust/Node 版);国产模型一般 HuggingFace 上有 tokenizer.json 可以加载。生产代码别自己估算字符数×倍率,直接调对应模型的官方 Tokenizer 才精确。