一、Token 是什么?
Token,直译为「词元」或「令牌」,是大语言模型(LLM)处理文本的基本单位。
你输入的文字,在进入模型之前,会先经过一个叫做 Tokenizer(分词器) 的程序,把文本切碎成一个个 Token。这些 Token 再被转换为数字 ID,模型才能「读懂」它们。
一个 Token ≠ 一个字。Token 可以是:
- 一个完整的英文单词:
hello→ 1 token - 一个英文词的一部分:
unbelievable→un+believ+able= 3 tokens - 一个中文汉字(有时):
你→ 1 token - 一个标点符号:
,→ 1 token - 几个空格:
→ 1 token
二、Tokenizer 是怎么工作的?
目前主流的分词算法有三种:
1. BPE(Byte Pair Encoding,字节对编码)
最常见的方法,被 GPT 系列、LLaMA、Mistral 等广泛使用。
核心思想:从单个字节出发,反复合并出现频率最高的相邻字节对,直到达到预设词表大小。
举例:
css
语料:"aaabdaaabac"
初始:a a a b d a a a b a c
第1轮合并最频繁的 "aa":aa a b d aa a b a c
第2轮合并 "aa":aaa b d aaa b a c
...
最终词表中就会有 "aa"、"aaa" 这样的合并单元
2. WordPiece
Google BERT 系列使用。与 BPE 类似,但合并标准是「最大化语言模型似然」,而非纯粹频率。
对中文的处理:mBERT 会将中文字符逐字切分,"你好" → ["你", "好"],基本保持 1 字 = 1 token。
3. SentencePiece
Google T5、mT5 使用,也被 LLaMA、BLOOM 等采用。
最大特点:不依赖语言的空格分词习惯,把原始文本当作字节流处理,天然支持中日韩等语言,无需预处理。
三、各大模型 Token 大比拼
同一句话,不同模型切法不同
我们拿这句话做实验:
「人工智能正在改变世界」
| 模型/分词器 | 大致 Token 数 | 说明 |
|---|---|---|
| GPT-3(p50k) | 约 14--18 个 | 旧版 BPE,中文多走 UTF-8 字节,1 字≈2-3 token |
| GPT-4 / GPT-4o(cl100k) | 约 7--9 个 | 优化后的 BPE,CJK 词表扩充 |
| Claude 3.x | 约 7--10 个 | Anthropic 自研 tokenizer,中文效率与 GPT-4 相近 |
| LLaMA 2 | 约 10--14 个 | SentencePiece,中文支持一般 |
| LLaMA 3 | 约 7--9 个 | 词表从 32K 扩展到 128K,大幅改善 CJK |
| Qwen2.5 / 通义千问 | 约 7--8 个 | 针对中文优化的 BPE,接近 1 字 1 token |
| DeepSeek-V3 | 约 7--8 个 | 自研 tokenizer,中文友好 |
| Gemini 1.5 | 约 8--11 个 | Google SentencePiece 衍生,多语言均衡 |
结论:国产大模型(Qwen、DeepSeek)和经过优化的新版国际模型(GPT-4、LLaMA 3)对中文都相当友好,而早期 GPT-3 对中文极不友好------同样的内容要消耗多 2-3 倍的 token。
英文 Token 效率对比
用句子 "The quick brown fox jumps over the lazy dog" 来测试:
| 模型 | Token 数 |
|---|---|
| GPT-4o(cl100k) | 9 |
| Claude 3(Anthropic) | 9 |
| LLaMA 3(128K 词表) | 9 |
| GPT-3(p50k) | 9 |
| BERT(WordPiece) | 10 |
英文差距不大,主要是常见单词基本都在词表里,直接 1 词 1 token。
四、Token 为什么重要?
1. 直接决定 API 费用
所有大模型的 API 计费都以 Token 为单位。
关键洞察:如果你的业务场景大量涉及中文,使用中文友好的模型(Qwen、DeepSeek)不仅价格低,而且 token 效率更高,双重节省!
2. 决定上下文窗口(Context Window)
所谓「上下文长度」,本质上就是模型一次能处理多少个 Token。
| 模型 | 上下文窗口 |
|---|---|
| GPT-4o | 128K tokens |
| Claude 3.5 Sonnet | 200K tokens |
| Claude 3.7 Sonnet | 200K tokens |
| Gemini 1.5 Pro | 1M tokens(实验版 2M) |
| Gemini 2.0 Flash | 1M tokens |
| LLaMA 3.1(70B) | 128K tokens |
| DeepSeek-V3 | 128K tokens |
| Qwen2.5-72B | 128K tokens |
200K tokens ≈ 约 15 万汉字 ≈ 一部长篇小说。
3. 影响模型的「注意力范围」
Token 越多,模型计算的注意力(Attention)矩阵越大,计算量以平方级增长。这也是为什么长上下文模型推理慢、成本高的根本原因。
五、一个有趣的实验:数 Token
你可以亲自去 OpenAI 的 Tokenizer 工具 数数看。
下面是几个有趣的例子(GPT-5 分词器):
arduino
"Hello, world!" → 4 tokens
"你好,世界!" → 4 tokens
"1+1=2" → 5 tokens
"😀" → 1 tokens(emoji 用多个字节表示)
"GPT" → 1 token(常见词直接收录)
"ChatGPT" → 2 tokens:"Chat" + "GPT"
"Supercalifragilistic" → 6 tokens
六、Token 与中文的特殊关系
中文处理是大模型 tokenizer 设计中的一大挑战。
为什么早期模型对中文「不友好」?
早期 GPT-3 的 tokenizer 词表主要基于英文语料训练。中文汉字不在词表里,就会被拆成 UTF-8 字节来表示。一个中文字符在 UTF-8 编码下占 3 个字节,因此变成 3 个 token。
对比:
yaml
"人工智能" (4个汉字)
GPT-3: 约 8 个 token(每字≈2 token)
GPT-4: 约 4-5 个 token(CJK 词表扩充)
Qwen: 约 4 个 token(1字≈1 token)
这意味着:同样的中文内容,在 GPT-3 上的 token 成本是 Qwen 的 2 倍。
国产模型的优势
以 Qwen(通义千问)为例,阿里在训练 tokenizer 时专门加入了大量中文语料,词表中收录了常见汉字和常用词组,实现了接近 1:1 的字-token 比例。
DeepSeek 同样如此,其 tokenizer 词表约 100K,中文字符基本都有专属 token。
总结
AI 在发展,token的计算也在不断优化,本文提到的token数仅供参考!
Token 是 AI 语言模型的「DNA」------一切理解与生成,都从这个最小单位开始。
| 维度 | 核心要点 |
|---|---|
| 是什么 | 文本被切分后的最小处理单元,≠ 字词 |
| 怎么切 | BPE / WordPiece / SentencePiece 三大算法 |
| 中文效率 | 新模型(GPT-5、Qwen、DeepSeek)已接近 1字1token |
| 为什么重要 | 决定 API 费用、上下文长度、推理速度 |
| 开发技巧 | 提前计算、精简 prompt、善用缓存、选合适模型 |