分词器

Tokenizer

Tokenizer(分词器)是把人类可读文本映射成模型能理解的整数 Token ID 的组件,是大模型 API 计费和输入处理的最前端,它决定了 1 个汉字等于多少 Token、1 段代码如何切分。

详细解释

分词器(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 代演进

算法代表模型特点
WordPieceBERT、Google 老模型基于字符频次的子词切分,中文表现一般
BPE(字节对编码)GPT-3/4、Claude、Llama、多数开源 LLM2024 前工业界标准,可预测性好
SentencePiece / UniLMPaLM、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 才精确。