这是"从 LLM 到 Agent Skill"系列的第二篇。上一篇我们讲了 LLM 的本质是"文字接龙",但模型不认识汉字——它只认识数字。那么文字是怎么变成数字的?这就要聊 Token 和 Tokenizer。


一、一个根本问题:模型不识字

你有没有想过一个很基本的问题:

大语言模型里面全是矩阵运算、浮点数乘法——这玩意儿怎么处理"床前明月光"五个汉字?

答案是:它处理不了。

模型不认识汉字。模型只认识数字。所以在你输入的每一个字到达模型内部之前,它必须被"翻译"成数字。

这个翻译官,就叫 Tokenizer


二、Tokenizer 是什么?

Tokenizer(分词器) 是连接人类语言和机器语言的一座桥梁。它做两件事:

人类文字  ──编码(Encode)──→  数字(Token ID)
数字(Token ID) ──解码(Decode)──→  人类文字

2.1 编码(Encode)

当你在 ChatGPT 里输入"你好,世界",在你按下发送键之后、模型开始计算之前,Tokenizer 会先把这 5 个字变成一串数字,例如:

"你好,世界" → [12345, 678, 91011]

这串数字进入模型内部进行矩阵运算,模型预测出下一个 Token ID,再由 Tokenizer 解码回汉字,呈现在你眼前。

2.2 解码(Decode)

模型输出的也是一串数字。Tokenizer 负责反向翻译:

[12345, 678, 91011] → "你好,世界"

同样的 Tokenizer,同一套编码/解码规则,确保输入和输出使用相同的"语言"。


三、Token:文本的最小单位

3.1 Token ≠ 词

Token 是 AI 处理文本的最小基本单元

这里有一个最常见的误区:Token 就是"词语"。不是的。

Token 和词不是一一对应的。Tokenizer 有自己的切分规则,而这个规则是模型在训练过程中自己"学会"的,不是人工定义的。

举个例子:

文本 可能的 Token 切分
"程序员" [程序, 员][程序员] (看模型)
"running" [run, ning]
"unbelievable" [un, believe, able]

Tokenizer 会把常见词或词根作为一个 Token,把罕见词拆成更小的子词(subword)。

3.2 中英文的 Token 差异

一个很有用的经验公式:

语言 1 个 Token 大约等于
英文 ~0.75 个单词
中文 ~1.5~2 个汉字

也就是说,同样的信息量,中文比英文消耗更多 Token。这是一些中文 AI 应用成本更高的原因之一。


四、为什么 Token 这么重要?

你可能觉得 Token 只是一个底层技术细节。但实际上,它在应用层面有三个直接影响:

4.1 计费

绝大多数大模型 API 都按 Token 计费。你输入的 Token(Input Token)和模型输出的 Token(Output Token)都算钱。

知道了中英文的 Token 差异,你就明白为什么优化 Prompt 的长度能直接省钱。

4.2 能力上限

模型的 Context Window 是用 Token 数量来衡量的。比如一个模型的 Context Window 是 128K Token,翻译成中文大约是 19 万~25 万汉字。

超过这个长度,模型就"看不见"了。

4.3 生成质量

模型生成文本的过程,就是逐个 Token 预测的过程。一些你看到的"AI 胡言乱语",本质上是预测链条中某一个 Token 走偏了,然后偏差在后续的接龙中不断放大。


五、常见 Tokenizer 与在线工具

不同模型使用不同的 Tokenizer,切分结果也不同。常见的 Tokenizer 包括:

Tokenizer 使用者
cl100k_base GPT-4 / GPT-3.5
o200k_base GPT-4o
Claude Tokenizer Claude 系列

你可以用在线工具直观感受 Token 的切分:

  • OpenAI Tokenizer:platform.openai.com/tokenizer

  • Tiktokenizer:tiktokenizer.vercel.app (开源可视化工具)

随便输入一段文本,你就能看到它被切成了多少个 Token、每个 Token 是什么。


六、一个具体的例子

我们以中文"我爱吃苹果"为例,某 Tokenizer 可能这样处理:

原文:我爱吃苹果
​
Token 1: "我"      → ID: 23412
Token 2: "爱"      → ID: 18903
Token 3: "吃"      → ID: 3321
Token 4: "苹果"    → ID: 45021    ← 注意,这里"苹果"是一个 Token,没有被拆成"苹"+"果"

再看英文"unstoppable":

Token 1: "un"      → ID: 489
Token 2: "stop"    → ID: 1245
Token 3: "pable"   → ID: 28934    ← 被拆成了 3 个子词

这就是子词分词(Subword Tokenization)——把罕见词拆成更小的常见片段。


七、总结

Token 和 Tokenizer 是连接人类和 AI 的翻译层。记住三点:

  1. 模型只认数字,Tokenizer 负责把文字变成数字(编码),再把数字变回文字(解码)。

  2. Token 是文本的最小处理单元,不等于"词",切分规则由模型自己学习。

  3. Token 直接影响计费、能力上限和生成质量,是理解和优化 AI 应用的基础。

下一篇,我们聊聊 LLM 的"记忆"是怎么一回事——Context 与 Context Window


本系列文章:

  1. LLM 大语言模型

  2. Token 与 Tokenizer ← 你在这里

  3. Context 与 Context Window(待发布)

  4. Prompt 提示词(待发布)

  5. Tool 工具调用(待发布)

  6. MCP 模型上下文协议(待发布)

  7. Agent 智能体(待发布)

  8. Agent Skill(待发布)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐