一文搞懂 Token 和字节的区别——AI 大模型到底在读什么?(附实测数据)
一文搞懂 Token 和字节的区别——AI 大模型到底在读什么?(附实测数据)
你给 AI 发了 7 个字符,它只看到 2 个 Token,账单却按 Token 收费。同一句话中文比英文贵 50%?这篇文章把字节、字符、单词、Token 四层结构讲透。
💡 先给结论
| 概念 | 是什么 | “Hello” | “你好” | API 计费? |
|---|---|---|---|---|
| 字节 | 存储最小单位 | 5 | 6 | ❌ |
| 字符 | 人类可读符号 | 5 | 2 | ❌ |
| 单词 | 空格/语义分割 | 1 | 1 | ❌ |
| Token | AI 处理的子词单位 | 1 | 1 | ✅ |
划重点:Token ≠ 字节 ≠ 字符 ≠ 单词。AI 模型只认 Token,你的钱也是按 Token 花的。
一、从最底层说起:什么是字节
字节(Byte) 是计算机存储数据的最小单位。1 字节 = 8 位 = 一个 0~255 的数字。
UTF-8 编码下,不同字符占的字节数不同:
| 字符 | UTF-8 字节 | 字节数 | 十六进制 |
|---|---|---|---|
H |
72 | 1 | 48 |
e |
101 | 1 | 65 |
你 |
228, 189, 160 | 3 | e4 bd a0 |
好 |
229, 165, 189 | 3 | e5 a5 bd |
🚀 |
240, 159, 154, 128 | 4 | f0 9f 9a 80 |
规律:英文 1 字节,中日韩 3 字节,Emoji 4 字节。
所以 “你好 Hello” = 3+3+1+1+1+1+1+1 = 12 字节:
你 好 空格 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” 和 “你好世界” 为例:
英文 “Hello, World”:
| 层级 | 拆分结果 | 数量 |
|---|---|---|
| 字节 | 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 |
12 |
| 字符 | H e l l o , ␣ W o r l d |
12 |
| 单词 | Hello, World |
2 |
| Token | Hello , World |
3 |
中文 “你好世界”:
| 层级 | 拆分结果 | 数量 |
|---|---|---|
| 字节 | e4 bd a0 e5 a5 bd e4 b8 96 e7 95 8c |
12 |
| 字符 | 你 好 世 界 |
4 |
| 单词 | 你好 世界 |
2 |
| Token | 你好 世界 |
2 |

核心结论:Token 是介于字符和单词之间的"子词"单位,是效率和覆盖率的最佳平衡点。
三、为什么不直接用字节或单词?
字节的问题:序列太长
“Hello” 5 个字节还行,一篇 1000 字文章 ~5000 字节,一本小说 50 万字节。
Transformer 的注意力机制计算量是 O(n²)——序列翻倍,计算量翻四倍。字节序列比 Token 长 3~4 倍,成本直接起飞。
单词的问题:词表爆炸
英语常用词 17 万+,加上代码、URL、各国语言,词表轻松突破百万:
- 嵌入表内存爆炸
- 低频词学不好
- 新词/打错的字完全无法处理(OOV 问题)
Token:完美折中
"unbelievable" → ["un", "bel", "ievable"] # 3 个 Token
"tokenization" → ["Token", "ization"] # 2 个 Token
"Hello" → ["Hello"] # 1 个 Token(高频词,完整保留)
"你好" → ["你好"] # 1 个 Token(高频组合)
短序列(高效) + 小词表(1020 万) + 无未知词 = Token 方案胜出。
四、BPE 分词算法详解
几乎所有主流大模型(GPT、Claude、Gemini)都用 BPE(Byte Pair Encoding) 构建 tokenizer。
第一步:拆成单个字符
"low" → ["l", "o", "w"]
"lower" → ["l", "o", "w", "e", "r"]
"newest" → ["n", "e", "w", "e", "s", "t"]
第二步:统计最高频相邻对
("l", "o") 出现 2 次 ← 最高频
("o", "w") 出现 2 次
("e", "w") 出现 1 次
第三步:合并最高频的对
"low" → ["lo", "w"]
"lower" → ["lo", "w", "e", "r"]
第四步:重复数万次
不断统计、合并,直到词表达到目标大小(5~20 万)。最终 “the”、“Hello”、“你好” 这些高频词会变成单个 Token。

用 tiktoken 亲手验证
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}")
输出:
原文: 你好 Hello
UTF-8 字节数: 12
Token 数 (2): ['你好', ' Hello']
Token ID: [177519, 32949]
12 个字节压缩成 2 个 Token,BPE 的威力就在这里。
五、不同模型的 Tokenizer 差异
同一段文字在不同模型上的 Token 数不同:
| 文本 | cl100k (GPT-4) | o200k (GPT-5) | UTF-8 字节 |
|---|---|---|---|
| Hello, how are you today? | 7 | 7 | 25 |
| Explain quantum computing | 7 | 6 | 41 |
| 你好,请用中文解释token | 15 | 9 | 47 |
| こんにちは、トークンとは何ですか? | 12 | 10 | 51 |
GPT-5 的 tokenizer 对中日文效率大幅提升:同一句中文,GPT-4 要 15 个 Token,GPT-5 只要 9 个,省了 40%!
六、Token 数量直接决定你的账单
各语言 Token 效率对比(o200k_base)
| 语言 | 文本 | Token 数 | 字节数 | 字节/Token |
|---|---|---|---|---|
| 英文 | “Hello, how are you today?” | 7 | 25 | 3.6 |
| 中文 | “你好,今天怎么样?” | 5 | 27 | 5.4 |
| 日文 | “こんにちは” | 1 | 15 | 15.0 |
| 韩文 | “안녕하세요” | 2 | 15 | 7.5 |
| 代码 | def fibonacci(n): (5行) |
28 | 92 | 3.3 |
实际成本对比(GPT-5 输入 $1.25/百万 Token)
| 语言 | 100 万字符约 Token 数 | 费用 |
|---|---|---|
| 英文 | ~33 万 | $0.41 |
| 中文 | ~50 万 | $0.63 |
| 中英混合 | ~40 万 | $0.50 |
中文比英文贵约 50%。 原因:中文字符 UTF-8 编码更长 + tokenizer 压缩率不如英文。
降本秘诀:用统一网关横向对比
不同模型有不同 tokenizer 和价格,最划算的选择可能出乎意料:
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。
优势:
- 真正语言无关
- 没有 OOV 问题
- 模型看到的就是原文
现实:
- 字节序列长 3~4 倍,计算成本更高
- 所有主流商用模型(GPT-5、Claude、Gemini)仍用 Token
- BLT 还在研究阶段
结论:Token 至少还会统治 3~5 年。
八、速查表
| 属性 | 字节 | 字符 | 单词 | Token |
|---|---|---|---|---|
| 是什么 | 存储最小单位 | 人类可读符号 | 空格/语义分割 | AI 的子词单位 |
| 大小 | 固定 1 字节 | 1-4 字节 | 不固定 | 不固定 |
| “Hello” | 5 | 5 | 1 | 1 |
| “你好” | 6 | 2 | 1 | 1 |
| “unbelievable” | 12 | 12 | 1 | 3 |
| API 计费? | ❌ | ❌ | ❌ | ✅ |
换算经验值:
- 1 英文 Token ≈ 4 字符 ≈ 4 字节 ≈ 0.75 个单词
- 1 中文 Token ≈ 1~3 个汉字 ≈ 3~9 字节
- 1000 Token ≈ 750 英文单词 ≈ 4000 字符
在线工具:
- OpenAI Tokenizer — GPT 模型 Token 计数
- tiktoken (Python) — 编程方式计算
- Anthropic Token Counter — Claude Token 计数
常见问题
Q: Token 和字节是一回事吗?
不是。字节是存储单位,Token 是 AI 处理单位。“Hello” = 5 字节 = 1 Token,“你好” = 6 字节 = 1 Token。
Q: 为什么 AI 不直接读字节?
效率问题。字节序列比 Token 长 3~4 倍,Transformer O(n²) 的计算成本扛不住。
Q: 同一段文字不同模型的 Token 数一样吗?
不一样。同一句中文在 GPT-4 上 15 Token,GPT-5 上 9 Token。选模型时要考虑这个差异。
Q: 怎么降低 Token 成本?
5 招:精简 prompt、限制 max_tokens、选够用的便宜模型、缓存重复查询、用 Crazyrouter 一键对比 627+ 模型。
延伸阅读
理解字节和 Token 的区别,是控制 AI 成本的第一步。更多开发者指南请访问 Crazyrouter 博客。
📌 如果觉得有帮助,点个赞 + 收藏,方便以后查阅!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)