AI学习笔记
首页 > 大模型笔记 > Token 到底是什么?一文看懂大模型的「最小计量单位」
Token 到底是什么?一文看懂大模型的「最小计量单位」

Token 到底是什么?一文看懂大模型的「最小计量单位」

大模型笔记 · 2026-10-12 · AI学习笔记 整理
导读:搞懂token的概念、切分逻辑和计数方法,学会估算用量、看懂计费与上下文限制。

先说结论

你跟大模型的每一次交互,模型都不是按「字」或「词」处理的,而是按 token。它是最小的处理单位,也是几乎所有大模型计费、上下文上限、输出长度的统一计量单位。

我一开始也搞不懂,明明输入的是中文,怎么就变成一堆数字了?后来发现,只要把 token 这一层搞明白,很多问题会瞬间通透:为什么长文档会超限、为什么图片输入也收费、为什么输出总被「截断」。

这篇文章,我们把这件事彻底讲清楚。


一、Token 到底是什么

简单说:token 是文本被切分后的最小片段。

大模型不能直接读文字,它只认数字。所以输入的文字会先经过一个叫 tokenizer(分词器) 的部件,被切成一个个 token,再每个 token 映射成一个编号(token id),模型真正处理的就是这些编号。

你可以把 tokenizer 理解成「文字 → 编号」的翻译官:

你输入的文本 → tokenizer 切分 → token 序列 → 编号 → 模型处理

一个 token 可能是:

  • 一个完整的英文单词,比如 hello
  • 一个单词的一部分,比如 learning 可能被切成 learn + ing
  • 一个中文汉字(有时是两个字合一个 token)
  • 一个标点、空格或符号

二、Token 和「字数」是什么关系

这是初学者最容易踩的坑:token 数不等于字数。

我整理了一个粗略的对应关系(不同模型、不同语言差异很大,仅作估算参考,精确数值以各模型官方说明为准):

文本类型粗略换算经验说明
英文1 个 token ≈ 4 个字符 ≈ 0.75 个单词英文对 tokenizer 最友好
中文1 个汉字 ≈ 1~2 个 token中文消耗明显高于英文
代码差异大,缩进和符号都会占 token空格缩进也计费
空白与标点同样占 token别以为空格不要钱

要点:同样的内容,中文的 token 消耗通常是英文的 2~3 倍。 我自己在处理长文档时,如果内容量大,会先意识到这一点,再去规划怎么拆分。


三、为什么要搞懂 Token(三个直接原因)

1. 它直接决定你的花费

几乎所有按量计费的 API,都是按「输入 token 数 + 输出 token 数」分开计价的。单价和具体金额各平台不同,以官方定价页为准,但规律是通用的:

你的成本 ≈ 输入 token 数 × 输入单价 + 输出 token 数 × 输出单价

注意两点:

  • 输出单价通常高于输入,所以让模型「少废话、直接给结果」是省钱的关键。
  • 提示词写得越冗长、历史对话堆得越多,每次请求的输入 token 就越多,重复付费。

2. 它决定你的上下文上限

模型有一个 上下文窗口(context window),单位就是 token。它同时装得下:你的历史对话 + 你的新输入 + 模型的输出。

举个直观的例子:

上下文窗口大约能装多少中文体感
较小窗口约几千~一两万 token几篇文章就满了
超大窗口可达几十万甚至上百万 token能塞下整本书(以官方为准)

一旦接近上限,常见的表现是:开头内容被遗忘、被压缩,或者直接报错提示超限。

3. 它决定你的输出上限

上下文窗口是「总容量」:

剩余可用空间 = 上下文上限 − 输入 token − 已生成的输出 token

所以当你输入特别长时,能生成的输出就变短。很多人遇到「模型写到一半就不写了」,十有八九是这个原因,而不是模型「偷懒」。


四、动手数一数:免费的 Token 计数方法

方法一:用官方 Tokenizer 工具(推荐零基础)

主流厂商都提供在线的 token 计数或试玩页面,在搜索引擎搜「tokenizer + 模型名」就能找到,直接把文本粘进去就能看到切分结果。不同模型用的 tokenizer 不一样,数出来的结果也不同,这一点很重要。

方法二:用代码自己数

如果你想批量估算文档消耗,可以用开源的分词库。以 OpenAI 系列模型常用的编码为例(注意:不同模型可能使用不同编码,以官方文档为准):

# 先安装:pip install tiktoken
import tiktoken

# 以某编码为例,其他模型请查阅官方文档确认
enc = tiktoken.get_encoding("cl100k_base")

text = "你好,AI学习笔记!Hello world."
tokens = enc.encode(text)

print("token 数量:", len(tokens))
print("token 编号:", tokens)
print("逐个拆解:", [enc.decode([t]) for t in tokens])

跑一下你会发现:中文字符被切得比英文碎得多。这就是「同样内容,中文更贵」的底层原因。

方法三:快速估算法(心算)

没工具在手时,用这个粗糙公式先估个量级:

英文:token 数 ≈ 字符数 ÷ 4
中文:token 数 ≈ 字数 × 1.5(取 1~2 之间)

估算结果只用来判断「够不够用」,别拿去做精确计费预测。


五、六个省 Token 的实用技巧

这些是我自己反复验证有效的方法,零基础也能立刻用:

  1. 删掉客套话。「请帮我」「作为一个AI」这类话不写,模型照样干活,结果不会变差。
  2. 明确输出格式。直接说「用表格输出」「只给代码」,避免模型先铺垫一大段解释。
  3. 别把整个文件都贴进去。先自己摘出关键段落,或者让模型分块处理。
  4. 控制对话轮数。超长对话记得开新会话,或者用平台的「清除上下文」功能。
  5. 输出方向尽量用英文。如果你不介意,英文输出的 token 更少、成本更低。
  6. 分批处理大文本。一篇长文拆成几段分别处理,既避免超限,也方便检查结果。

六、一张表总结:Token 相关的三个关键量

概念含义和 token 的关系
输入 token你发给模型的内容按次计费,影响花费
输出 token模型生成的内容单价更高,影响花费与速度
上下文窗口单次能处理的总容量输入加输出都不能超过它

记住一条主线就够了:一切以 token 计量,一切受窗口约束。


最后的建议

你不需要精通分词算法(比如 BPE 到底怎么合并词块),但一定要建立「token 直觉」:看到一段文本,能大致判断它值多少 token、会不会超限、成本高不高。

这个直觉不用背,就是用一次数一次。拿你手头的真实文档去 tokenizer 工具里跑几遍,两三天你就有了。

常见问题 FAQ

Q:Token 和「字」「词」到底该怎么换算?
A:没有固定公式,因为不同模型的分词器不一样。英文大约 1 个 token 对应 4 个字符或 0.75 个单词;中文大约 1 个汉字对应 1 到 2 个 token。想得到准确数字,用官方 tokenizer 工具或代码实测最靠谱。
Q:不同模型的 token 数量为什么不一样?
A:因为每个模型家族训练了自己的分词器,切分规则不同,同一段文字切出的 token 数就有差异。所以 A 模型显示 500 token,换到 B 模型可能是 600,估算时务必用对应模型的工具,并以官方说明为准。
Q:上下文窗口快满了怎么办?
A:有三个办法:一是精简输入,删掉无关的历史对话;二是开一个新会话重新开始;三是把长文拆成几段分批处理。另外注意输出也占窗口,输入太长会导致输出空间不足。

相关文章