Login
Back to Blog
Token 与字节的区别:AI 大模型到底怎么读你的文字

Token 与字节的区别:AI 大模型到底怎么读你的文字

C
Crazyrouter Team
March 29, 2026
3 views中文Tutorial
Share:

Token 与字节的区别:AI 大模型到底怎么读你的文字#

你给 GPT-5 发了一句"你好 Hello"——7 个字符。但模型实际处理的是 2 个 Token,而你的账单也是按 Token 收费的。

与此同时,你的电脑把这句话存储为 12 个字节

那么字节、字符、单词和 Token 到底有什么区别?为什么 AI 不直接读字节?为什么同一句话,中文比英文更贵?

这篇文章从最底层讲起,带你看清从硬盘上的字节到 AI 实际处理的 Token 的完整链路。


从最底层开始:什么是字节#

字节(Byte) 是计算机存储数据的最小单位。1 字节 = 8 位(bit)= 一个 0 到 255 之间的数字。

当你把文字保存到文件时,计算机会按照 UTF-8 编码标准,把每个字符转换成字节:

字符UTF-8 字节字节数十六进制
H72148
e101165
228, 189, 1603e4 bd a0
229, 165, 1893e5 a5 bd
🚀240, 159, 154, 1284f0 9f 9a 80

规律很清楚:

  • 英文字母:1 个字节
  • 中日韩字符:3 个字节
  • Emoji:4 个字节

所以"你好 Hello"存储为 12 个字节:

code
你       好       空格  H   e   l   l   o
e4 bd a0  e5 a5 bd  20   48  65  6c  6c  6f
(3字节)  (3字节)  (1)  (1) (1) (1) (1) (1) = 12 字节

字节是计算机存储文本的方式。但 AI 模型并不直接读字节。


四级阶梯:字节 → 字符 → 单词 → Token#

同一段文本,有四种不同粒度的拆分方式:

英文示例:"Hello, World"

层级拆分结果数量说明
字节48 65 6c 6c 6f 2c 20 57 6f 72 6c 6412原始存储单位
字符H e l l o , ␣ W o r l d12人类可读的字母
单词Hello, World2按空格分割
TokenHello , World3AI 实际处理的单位

中文示例:"你好世界"

层级拆分结果数量说明
字节e4 bd a0 e5 a5 bd e4 b8 96 e7 95 8c12每个汉字 3 字节
字符你 好 世 界4每个字就是一个字符
单词你好 世界2按语义分词
Token你好 世界2取决于 tokenizer

从字节到字符到单词到Token的四级文本表示层次图

核心结论:Token 不是字节,不是字符,也不是单词。 它是一种介于字符和单词之间的"子词"单位,是效率和覆盖率的最佳平衡点。


为什么不直接用字节或单词?#

既然字节和单词更简单,为什么 AI 要发明 Token 这个概念?因为两个极端都有严重问题。

字节的问题:序列太长#

"Hello"是 5 个字节,一篇 1000 字的文章是约 5000 个字节,一本小说是 50 万个字节。

AI 模型需要计算序列中每个位置之间的关系(注意力机制),计算量随序列长度呈平方增长(O(n²))。序列翻倍 → 计算量翻四倍。

如果直接用字节,序列会比 Token 长 3-4 倍,AI 的运行成本将高得离谱。

单词的问题:词表爆炸#

英语常用词超过 17 万个,加上技术术语、人名、URL、代码和其他语言,词表可能膨胀到数百万。

巨大的词表意味着:

  • 嵌入表(embedding table)占用海量内存
  • 大多数词出现频率极低,模型根本学不好
  • 任何不在词表中的词完全无法处理(OOV 问题)

Token:最佳平衡点#

Token 把文本拆分成子词单元——比字节大,比单词小:

code
"unbelievable" → ["un", "bel", "ievable"]    (3 个 Token)
"tokenization" → ["Token", "ization"]         (2 个 Token)
"Hello"        → ["Hello"]                    (1 个 Token —— 足够常见,保留完整)
"你好"         → ["你好"]                      (1 个 Token —— 高频词组合为一个)

这样既保证了短序列(高效处理),又维持了小词表(约 10-20 万条),还不会遇到未知词(任何文本都能拆成已知的子词)。


BPE 分词算法:Token 是怎么产生的#

几乎所有主流大模型都用 BPE(Byte Pair Encoding,字节对编码) 算法来构建 tokenizer。原理并不复杂:

第一步:拆成单个字符#

把训练语料中的所有文本拆成最小单位:

code
"low"    → ["l", "o", "w"]
"lower"  → ["l", "o", "w", "e", "r"]
"newest" → ["n", "e", "w", "e", "s", "t"]

第二步:统计最高频的相邻对#

扫描所有相邻字符对,找出出现次数最多的:

code
("l", "o") 出现 2 次  ← 最高频
("o", "w") 出现 2 次
("e", "w") 出现 1 次
...

第三步:合并最高频的对#

把所有 ("l", "o") 替换为新 Token "lo":

code
"low"   → ["lo", "w"]
"lower" → ["lo", "w", "e", "r"]

第四步:重复数万次#

不断统计、合并,直到达到目标词表大小(通常 5-20 万)。

经过大量合并后,"the"、"Hello"、"你好"这些高频词会变成单个 Token,而罕见词则被拆成多个子词片段。

BPE 字节对编码分词过程的逐步可视化,展示字符拆分、频率统计和合并步骤

用 tiktoken 亲手验证#

你可以用 OpenAI 的 tiktoken 库查看 GPT-5 实际的分词结果:

python
import tiktoken

# o200k_base 是 GPT-4o / GPT-5 使用的 tokenizer
enc = tiktoken.get_encoding("o200k_base")

text = "你好 Hello"
tokens = enc.encode(text)
token_strings = [enc.decode([t]) for t in tokens]

print(f"原文: {text}")
print(f"UTF-8 字节数: {len(text.encode('utf-8'))}")
print(f"Token 数 ({len(tokens)}): {token_strings}")
print(f"Token ID: {tokens}")

实测输出:#

code
原文: 你好 Hello
UTF-8 字节数: 12
Token 数 (2): ['你好', ' Hello']
Token ID: [177519, 32949]

12 个字节压缩成了 2 个 Token。这就是 BPE 的威力——高频词组会被合并成单个 Token,大幅缩短序列长度。


不同模型,不同 Tokenizer#

每个 AI 模型家族都有自己的 tokenizer 和词表。同一段文字在不同模型上的 Token 数可能不同:

文本cl100k_base (GPT-4)o200k_base (GPT-4o/5)UTF-8 字节
Hello, how are you today?7725
Explain quantum computing7641
你好,请用中文解释一下什么是token15947
こんにちは、トークンとは何ですか?121051
Python fibonacci 函数(5行)282892

关键发现:GPT-5 的 tokenizer(o200k_base)对中文和日文的效率显著提升——同一句中文,GPT-4 需要 15 个 Token,GPT-5 只需要 9 个,节省了 40%。

Claude 使用自研 tokenizer,Gemini 使用 SentencePiece。不同模型处理同一段文字的 Token 数不同,这意味着同样的 prompt 在不同模型上的费用也不同


Token 数量如何影响你的账单#

AI API 按 Token 计费,不是按字节也不是按字数。而不同语言的 Token 效率差异很大:

各语言 Token 效率对比(o200k_base)#

语言文本Token 数字节数字节/Token
英文"Hello, how are you today?"7253.6
中文"你好,今天怎么样?"5275.4
日文"こんにちは"11515.0
韩文"안녕하세요"2157.5
代码def fibonacci(n): (5行)28923.3

在 GPT-5 的 tokenizer 下,日文实际上是 Token 效率最高的语言——"こんにちは"把 15 个字节压缩成了 1 个 Token。

实际成本对比#

假设你用 GPT-5(输入 $1.25/百万 Token)处理 100 万字符的文本:

语言约 Token 数费用
英文~33 万$0.41
中文~50 万$0.63
中英混合~40 万$0.50

中文文本比英文贵约 50%——因为平均每个汉字消耗的 Token 更多。

优化建议:先比较再决定用哪个模型#

不同模型有不同的 tokenizer、不同的价格、不同的能力。最划算的选择可能出乎你的意料。

用统一 API 网关,你可以用同一个 Key 测试多个模型,同时对比质量和成本:

python
from openai import OpenAI

client = OpenAI(
    api_key="your-crazyrouter-key",
    base_url="https://crazyrouter.com/v1"
)

# 同一个 prompt 测试多个模型
for model in ["gpt-5", "gpt-5-mini", "deepseek-v3.2", "claude-sonnet-4"]:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": "用两句话解释什么是 tokenization"}],
        max_tokens=100
    )
    usage = response.usage
    print(f"{model}: {usage.prompt_tokens} 输入 / {usage.completion_tokens} 输出")

通过 Crazyrouter 一个 API Key 即可调用 627+ 模型,轻松找到最适合你的语言和业务场景的高性价比模型。


前沿动态:字节级模型会取代 Token 吗?#

2024 年底,Meta 发布了 BLT(Byte Latent Transformer)——一种直接处理原始字节的模型架构,完全绕过了 tokenizer。

字节级模型的优势:#

  • 真正语言无关——不存在 tokenizer 对英文的偏向
  • 没有未知词问题——任何字节序列都是合法输入
  • 没有 tokenizer-模型不匹配——模型看到的就是你输入的原文

为什么 2026 年仍然是 Token 的天下:#

  • 字节序列长 3-4 倍——处理成本高得多
  • 所有主流商用模型(GPT-5、Claude、Gemini)仍使用 Token 架构
  • BLT 还在研究阶段——没有商用 API 可调用

实际情况:Token 至少还会统治 3-5 年。理解它的工作原理,是每个 AI 开发者的必备技能。


速查表:Token vs 字节 vs 字符 vs 单词#

属性字节字符单词Token
是什么存储最小单位人类可读符号按空格/语义分割AI 处理的子词单位
大小固定 1 字节1-4 字节 (UTF-8)不固定不固定
"Hello"5511
"你好"6211
"unbelievable"121213
用在哪计算机存储人类阅读搜索引擎AI 模型
API 计费?

换算关系:#

  • 1 个英文 Token ≈ 4 个字符 ≈ 4 字节 ≈ 0.75 个单词
  • 1 个中文 Token ≈ 1-3 个汉字 ≈ 3-9 字节
  • 1000 个 Token ≈ 750 个英文单词 ≈ 4000 个字符

实用工具:#


常见问题#

Token 和字节是一回事吗?#

不是。字节是计算机的原始存储单位(1 字节 = 8 位),Token 是 AI 模型处理的最小文本单位。"Hello"是 5 个字节但只有 1 个 Token;"你好"是 6 个字节也只有 1 个 Token。字节和 Token 之间的关系取决于语言和具体的 tokenizer。

为什么 AI 不直接处理字节?#

效率问题。"Hello"用字节表示是长度为 5 的序列,用 Token 表示只有长度 1。对于一篇千字文章,字节级处理的序列会长 3-4 倍。Transformer 注意力机制的计算量是 O(n²),序列越长成本增长越猛。

同一段文字在不同模型上的 Token 数一样吗?#

不一样。GPT-5 用 o200k_base tokenizer,GPT-4 用 cl100k_base,Claude 用自研 tokenizer。同一句中文可能在 GPT-4 上是 15 个 Token,在 GPT-5 上只要 9 个。这意味着同一个 prompt 在不同模型上的费用也不同。

为什么中文比英文更贵?#

两个原因:第一,中文字符在 UTF-8 中每个占 3 字节(英文只有 1 字节);第二,即使用了现代 tokenizer,中文字符的压缩效率也不如英文。一句中文通常比表达相同含义的英文多消耗约 50% 的 Token。

怎么降低 Token 成本?#

五个实用方法:(1)精简 prompt——每多一个字就多一分钱。(2)设置 max_tokens 限制输出长度。(3)选够用的最便宜模型。(4)缓存重复查询。(5)用 Crazyrouter 这样的 API 网关,一个 Key 横向对比 627+ 模型的价格和效果。


延伸阅读#


理解字节与 Token 的区别,是控制 AI 成本的第一步。更多开发者指南和最新模型定价数据,请访问 Crazyrouter 博客

Related Articles