☰
大模型Token学习指南
2026/10/11 5:26:38 网站建设 项目流程

做过大模型后端开发的人,几乎都踩过Token的坑:估算1000字的文档刚好塞进32K上下文,结果调用直接被截断;按通用公式算好的API成本,月底账单直接超了50%;同一段代码在Qwen里Token数明明够用,换到LLaMA里直接触发长度超限。

本质上,很多开发者对Token的认知还停留在“1个汉字约等于2个Token”的粗略估算阶段,完全没意识到不同模型的分词器差异,才是Token相关问题的核心根源。今天我们就从最基础的换算规则讲起,一步步拆解到跨模型精准计数的工程实现,彻底把Token这件事搞透。

1. 入门 — Token的基础换算逻辑

大模型并不直接 "读文字",它处理的基本单位是Token(词元)。Token是分词器(Tokenizer)对文本拆分后的最小语义单元,它既不是单个汉字,也不是单个英文单词。

输入文本:"我爱自然语言处理" ↓ 分词器切分 Token 序列:["我", "爱", "自然", "语言", "处理"] 关键认知:Token 不是字,也不是词,而是介于两者之间的 "子词(Subword)" 单位。

行业通用的经验换算规律,适合日常快速预估场景:

老一代英文优化分词器,代表模型:GPT-3.5/4 早期版本(cl100k_base)

  • 中文场景:1 个汉字约等于 1.5~2 个 Token,1 个 Token 约对应 0.5~0.7 个汉字,1000 个汉字大约消耗 1500~2000 个 Token。
  • 英文场景:1 个英文单词约等于 1.2~1.3 个 Token,1 个 Token 约对应 0.75~0.85 个英文单词,1000 个英文单词大约消耗 1200~1300 个 Token。

新一代多语言优化分词器,代表模型:GPT-4o、Qwen、DeepSeek

  • 中文场景:1 个汉字约等于 0.6~1 个 Token,1 个 Token 约对应 1~1.7 个汉字,1000 个汉字大约消耗 600~1000 个 Token。
  • 英文场景:1 个英文单词约等于 0.7~1 个 Token,1 个 Token 约对应 1~1.4 个英文单词,1000 个英文单词大约消耗 700~1000 个 Token。
  • 特殊字符:标点、数字、换行符常常单独占用 1 个 Token,中文标点也常单独占 1 个 Token,英文空格通常与后一个词合并,代码、专业术语、生僻字、emoji 的 Token 消耗通常高于普通文本,但整体压缩率通常略好于老一代英文优化分词器。

注意:上面所有的换算比例,都只是快速估算用的经验值,绝对不能直接用于生产环境的成本核算和上下文边界判断。

2. 进阶 — 不同模型的分词器差异,才是Token数不同的核心原因

为什么同一段1000字的中文文本,在GPT-4里要1800个Token,在Qwen3里只要1000个Token?根本原因是不同大模型的自研分词器,底层拆分规则完全不一样。

目前主流的分词算法主要分三类,不同算法的Token拆分逻辑天差地别:

① BPE(Byte Pair Encoding,字节对编码)

代表模型:GPT 系列、LLaMA 系列、Claude

核心思想:从最基础的字节开始,反复合并出现频率最高的相邻字节对,直到词表达到目标大小。

初始:h e l l o h e l l o ↓ "l"+"l" 出现2次,合并 h e ll o h e ll o ↓ "h"+"e" 出现2次,合并 he ll o he ll o ↓ "he"+"ll" 出现2次,合并 hello hello

特点:

  • 词表通常 50K 左右(GPT-3 为 50257)
  • 对中文不友好,因为中文字符多,每个字可能占多个字节,导致中文 token 膨胀
  • 未登录词会被拆成字节级,保证任何文本都能编码

② WordPiece

代表模型:BERT、Claude早期版本

核心思想:与 BPE 类似,但合并依据不是 "频率最高",而是 "能最大化语言模型似然的对"。

判断是否合并 "un" + "likely": 合并前 P(un) × P(likely) 合并后 P(unlikely) 如果合并后似然提升更大 → 合并

特点:

  • 用##前缀标记子词(如un+##likely)
  • 词表通常 30K 左右
  • 对中文同样按字或子词切分

③ Unigram / SentencePiece

代表模型:T5、ALBERT、部分多语言模型

核心思想:先构建一个大词表,然后反复移除 "对语言模型损失影响最小" 的词,直到词表达标。

特点:

  • 概率化分词,同一文本可能有多种切法
  • 直接基于 Unicode 字符,不依赖预分词
  • 多语言场景表现好

④ 中文专属:字级分词

代表模型:部分中文大模型(如早期的 ERNIE)

核心思想:直接以单个汉字为基本单位。

特点:

  • 1 个汉字 = 1 个 token,换算最简单
  • 但词表利用率低,序列更长

举个实际例子,文本(13 个字):"大语言模型的分词器很重要"

模型分词器类型大致 Token 数可能的切分
GPT-4 (cl100k_base)BPE10-13大语言模型的分词器很重要
LLaMA-2BPE (SentencePiece)13-18每个字可能独立成 token
ClaudeBPE10-14类似 GPT
Qwen(通义千问)BPE8-12中文词表优化,常见词合并更多
DeepSeekBPE8-12中文优化

差异来源:

  1. 词表大小不同:GPT-3 是 50K,LLaMA 是 32K,Qwen 是 151K—— 词表越大,中文常见词越可能被合并成 1 个 token
  2. 训练语料不同:中文语料占比高的模型,中文词合并更充分
  3. 分词算法细节不同:即使都是 BPE,合并顺序、终止条件也不同

3. 如何准确计算不同模型的 Token 数

任何 "1 token = X 个字" 的换算公式都是近似值。要精确统计,必须用对应模型官方提供的专属分词器来统计,绝对不能跨模型混用。

方法一:使用官方 Tokenizer 库

OpenAI 模型(GPT-3.5/4、o1):

官方提供tiktoken库,是目前最成熟的分词统计工具,支持所有GPT-3.5/4/4o模型。示例:

import tiktoken # 选择对应模型的编码 enc = tiktoken.encoding_for_model("gpt-4") # 或手动指定:enc = tiktoken.get_encoding("cl100k_base") text = "大语言模型的分词器很重要" tokens = enc.encode(text) print(f"Token 数: {len(tokens)}") print(f"Token 列表: {tokens}") print(f"解码回看: {[enc.decode([t]) for t in tokens]}")

常见编码对照表:

编码名称适用模型
cl100k_baseGPT-4、GPT-3.5-turbo、text-embedding-ada-002
o200k_baseGPT-4o、o1 系列
p50k_basetext-davinci-003、davinci
r50k_base早期 GPT-3 模型
LLaMA / HuggingFace 模型:
from transformers import AutoTokenizer # LLaMA-2 tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf") # Qwen tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2-7B") # DeepSeek tokenizer = AutoTokenizer.from_pretrained("deepseek-ai/deepseek-llm-7b-base") text = "大语言模型的分词器很重要" tokens = tokenizer.encode(text) print(f"Token 数: {len(tokens)}")
Anthropic Claude:
from anthropic import Anthropic client = Anthropic() text = "大语言模型的分词器很重要" token_count = client.count_tokens(text) print(f"Token 数: {token_count}")

方法二:在线工具

工具支持模型地址
OpenAI TokenizerGPT 系列platform.openai.com/tokenizer
HuggingFace Tokenizer各类开源模型huggingface.co/spaces
各模型官方文档对应模型查看 API 文档中的 token 计数接口

方法三:API 返回值

大多数模型 API 的返回结果中会直接包含 token 使用量:

{ "usage": { "prompt_tokens": 256, "completion_tokens": 128, "total_tokens": 384 } } # 这是最准确的数字,因为它就是模型实际处理时的计数。

跨模型 Token 估算速查表(不要求精确)

模型系列中文经验值(字 /token)英文经验值(词 /token)
GPT-4 / GPT-3.50.6-0.8 字 /token0.75 词 /token
LLaMA 系列0.5-0.7 字 /token0.7 词 /token
Qwen / DeepSeek0.8-1.2 字 /token0.8 词 /token
Claude0.6-0.8 字 /token0.75 词 /token

中文优化的模型(Qwen、DeepSeek、GLM 等)通常中文 token 效率更高,因为词表中中文词占比更大。

4. 总结与最佳实践

核心要点

  1. Token 是子词单位,不是字也不是词,1 token 对应多少字没有固定答案
  2. 中文比英文更耗 Token,通常 1 个中文字 ≈ 1-1.5 个 token
  3. 不同模型分词器差异巨大,同一段文本 token 数可能差 2 倍
  4. 中文优化模型(Qwen、DeepSeek、GLM 等)中文 token 效率更高

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询