【AI基础学习系列】七、LLM基础-Token(2026最实用版)
欢迎来到系列第七讲!
前面我们聊了注意力机制,这次直击LLM最底层、最容易被忽略却最影响成本、速度、效果的部分——Token(令牌)。
2026年的现实认知:
- 你以为模型读的是“字”或“词”?错!它读的是token
- Token数量直接决定:上下文长度、推理成本、速度、甚至模型对不同语言的“友好度”
- 很多人用大模型半年,还不知道自己的prompt到底吃了多少token → 浪费钱 + 上下文溢出
我们用最白话的方式拆解:什么是token → 怎么产生的 → 常见误区 → 中英文/代码差异 → 2026主流模型token规则 → 怎么自己算/省token
一、Token到底是什么?一句话定义(2026版)
Token = LLM能一次性“看到”和“处理”的最小文本单元(通常是数字ID,对应一小段子词/词/标点/字节)。
- 不是字符(太碎,序列太长)
- 不是完整单词(太稀疏,新词/OOV问题严重)
- 而是subword(子词)级别的智能切分
模型的整个世界就是:一串数字ID序列(token IDs) → 通过Embedding查表变成向量 → 进Transformer
二、主流分词方式:为什么几乎全用BPE / SentencePiece?(2026标配)
| 分词类型 | 原理简述 | 优点 | 缺点/痛点 | 代表模型(2026) |
|---|---|---|---|---|
| Word-level | 直接按空格/标点切完整词 | 简单、直观 | 词汇表爆炸、新词/OOV多 | 基本淘汰 |
| Char-level | 每个字符/字节一个token | 无OOV、支持任意语言 | 序列超长(注意力O(n²)爆炸) | 极少数实验模型 |
| Subword (主流) | BPE / WordPiece / Unigram / SentencePiece | 平衡长度 + 覆盖率 + 处理新词 | 语言不平等(中日韩/代码多token) | 几乎全部:GPT、Claude、Llama、Qwen、Grok、DeepSeek |
| Byte-level BPE | 从UTF-8字节开始合并 | 零OOV、支持emoji/乱码/多语言 | 英文稍多token | GPT-4+ cl100k_base、Llama3+、RoBERTa |
BPE(Byte Pair Encoding)工作原理超简版(生活类比:拼乐高)
- 把所有文本拆成单个字符/字节
- 统计最常一起出现的相邻pair(比如 ‘t’+’h’ → “th”)
- 把最常见的pair合并成一个新“零件”(新token)
- 重复合并,直到词汇表达到目标大小(通常3万–25万)
- 常见词(如”the”)变成1个token,稀有词(如”tokenization”)拆成[“token”,”ization”]
结果:高频 → 1 token,低频/新词 → 几token,未知字符fallback到字节
三、Token vs Word:常见误区 & 真实换算(2026数据)
| 语言/类型 | 粗略换算(token ≈ ? 个英文单词) | token ≈ ? 个中文字符 | 为什么?(2026观察) | 例子(用GPT-4 cl100k_base tokenizer) |
|---|---|---|---|---|
| 英文普通文本 | 1 token ≈ 0.75–1 word | — | 常见词1 token,空格/标点常单独或合并 | “Hello world!” → ≈4 tokens |
| 中文 | — | 1 token ≈ 1.3–2 字 | 中文无空格,每个汉字常1 token,常见词组可能合并 | “你好,世界!” → ≈6–8 tokens |
| 代码(Python) | 1 token ≈ 0.5–0.8 word | — | 变量名、缩进、符号常拆分,但新tokenizer优化了空格序列 | “def add(a,b): return a+b” → ≈10–14 tokens |
| 数字/日期 | 波动大 | — | “2026-02-25” 可能1–5 tokens(取决于tokenizer) | “20250225” → 可能2–4 tokens |
| Emoji/特殊符号 | 常多token | — | 😊 常拆成多个字节 | 😊 → 可能2–5 tokens |
误区Top5(很多人踩):
- “中文一个字=一个token” → 错!常见字1 token,但组合/生僻字多token
- “token数 ≈ 字数 / 2” → 英文≈字数×1.3–1.5,中文≈字数×1.5–2.5(视tokenizer)
- “所有模型token数一样” → 错!同一个句子在Claude、Grok、DeepSeek token数可能差30–50%
- “上下文长度是按字/词算” → 全是token!128k token ≈ 英文10万字 ≈ 中文6–8万字
- “token越少越好” → 不一定!太碎(char-level)序列长,注意力成本高
四、2026主流模型Token & 上下文长度速查表(实用版)
| 模型家族 | Tokenizer类型 | 词汇表大小(约) | 典型上下文长度(2026.2主流) | token效率(英文/中文相对) | 备注 |
|---|---|---|---|---|---|
| GPT-5 / GPT-4o系列 | cl100k_base / 更新版 BPE | ~100k–200k | 128k–400k+ | 高(英文最优) | OpenAI tiktoken可直接算 |
| Claude 4 / 4.5 | Claude专用 | ~100k+ | 200k(部分beta 1M) | 高 | 标点/空格优化好 |
| Grok 4.1 | Grok专用 | 大 | 2M(行业最大之一) | 高 | 长上下文神器,价格亲民 |
| DeepSeek R1 / V3 | BPE变体 | ~100k+ | 128k–512k | 中–高(中文友好) | 性价比王,中文token效率好 |
| Qwen 3 / Qwen-Max | SentencePiece | ~150k+ | 128k–1M+ | 高(中文极优) | 中文token最省之一 |
| Llama 4 / Gemma 3 | SentencePiece BPE | 32k–256k | 128k–10M(部分变体) | 中 | 开源最长上下文选项 |
| Gemini 3 / 2.5 | SentencePiece变体 | ~256k | 1M–2M | 高 | 多模态token统一计算 |
一句话总结2026:上下文从128k → 2M+已成为标配,长上下文 + 高效tokenization 是竞争焦点。
五、怎么自己算token?(零代码/有代码两种方式)
- 最简单:直接粘贴到模型官网tokenizer工具
- OpenAI: platform.openai.com/tokenizer
- Grok / Claude / Gemini:聊天界面常有token计数器
- 代码方式(Python推荐,tiktoken最方便)
# pip install tiktoken
import tiktoken
enc = tiktoken.get_encoding("cl100k_base") # GPT-4 tokenizer
text = "【AI基础学习系列】七、LLM基础-Token"
tokens = enc.encode(text)
print(len(tokens)) # token数量
print(enc.decode(tokens)) # 还原文本
其他模型:用HuggingFace tokenizers库加载对应模型的tokenizer。
六、Token省钱/省上下文小技巧(2026实战)
- 用结构化Prompt(XML/JSON)减少废token
- 删掉不必要的空格/换行/礼貌语(”请”、”谢谢”吃token)
- 中文场景优先Qwen/DeepSeek(token更省)
- 长文档用RAG而非全塞上下文
- 监控API返回的usage → prompt_tokens + completion_tokens
下一讲预告:
【AI基础学习系列】八、Embeddings & 向量数据库基础(RAG前置知识)
(为什么RAG能大幅减少幻觉?因为向量相似度找最相关chunk)
你现在最想先搞哪一块?
- Token计算实战(给我一段文本,我帮你拆token)
- 中英文token差异可视化例子
- 怎么用tiktoken批量算prompt成本
- 2026超长上下文模型(2M+)实际体验分享
- 直接跳到Embeddings / 向量搜索
告诉我,我下一讲就按你的需求展开~ 😄