AI学习笔记
首页 > 大模型笔记 > Token到底是什么?一文从切词原理到动手计数讲透它
Token到底是什么?一文从切词原理到动手计数讲透它

Token到底是什么?一文从切词原理到动手计数讲透它

大模型笔记 · 2026-10-13 · AI学习笔记 整理
导读:看完你会明白Token是大模型读文本的最小单位、中文为什么常被切成多个Token,以及如何自己动手数Token来预估上下文占用和输出长度。

先说结论:Token到底是什么

我一开始也觉得Token很玄乎,后来发现一句话就能讲清:Token是大模型处理文本的最小单位。

模型并不会像人一样「读懂」一整段话,它做的事情是:先把你的文字切成一个个小碎片(也就是Token),给每个碎片编号,再用这些编号做计算。所以你可以把Token理解成模型的「字」——只不过这个「字」不是汉字,而是一小块文本。

一块Token可能是:

  • 一个英文单词的一部分,比如 learn、ing
  • 一个完整的短英文单词,比如 the、token
  • 一个汉字,或者半个词组
  • 一个标点、一个空格、一个换行符

要点记住三条:

  • 模型的输入和输出,都是按Token计的
  • 你说的每个字、模型回的每个字,都会消耗Token
  • 上下文窗口、输出上限,单位也都是Token

模型眼里的文字:为什么字数不等于Token数

切Token的主流方法叫子词切分(subword tokenization,常见算法有BPE等)。它的思路很朴素:

  1. 从海量文本里统计哪些小片段出现频率高
  2. 高频片段保留成一个Token,低频的长词拆成多个Token

这带来两个你一定会遇到的现象:

现象一:英文比中文「省」。 英文单词很多本身就是一个Token,中文因为字形组合多,一个汉字经常要占1个甚至更多Token,遇到生僻词组可能拆得更碎。

现象二:标点和空格也占Token。 很多人没意识到,换行、缩进、连续空格都会算进去,写代码、写Markdown时尤其容易低估Token量。

一张粗略的换算感受表(不同模型、不同语言的切法不同,具体以官方Tokenizer为准):

内容类型粗略感受
英文普通文本约4个字符 ≈ 1个Token
中文普通文本约1个汉字 ≈ 1个上下Token
代码空格缩进多,Token偏多
网址、乱码、生僻组合容易被切得很碎,Token暴增

所以「我写了3000字」和「模型收到3000Token」完全是两回事,别再拿字数直接换算了。

动手数一数:三种实用方法

方法一:用tiktoken库本地精确计数

如果你想在自己电脑上数Token,OpenAI开源的tiktoken库是最常用的工具(注意:它统计的是OpenAI系列模型的切法,其他厂商模型的切法可能略有差异)。

安装:

pip install tiktoken

计数代码:

import tiktoken

enc = tiktoken.get_encoding("cl100k_base")

text = "你好,这是一段用于统计Token数量的中文示例。"
ids = enc.encode(text)

print("Token数量:", len(ids))
print("Token编号:", ids)

print("逐块拆开看看:")
for tid in ids:
    print(enc.decode([tid]), end=" | ")

运行后你会直观看到:一句话被切成了哪些小块。这比我讲十遍原理都管用,建议你自己换几段文字试试(比如中英混排、带换行的文本)。

方法二:用官方在线Tokenizer可视化

主流模型厂商基本都提供网页版的Token可视化工具,把文本粘进去就能看到每个Token的颜色分块。适合不确定「这段话到底会被切成什么样」时快速确认,具体入口以各官方文档为准。

方法三:直接看接口返回的usage字段

调用大模型API时,响应里通常会带回本次请求的输入Token数、输出Token数。这是最真实的统计口径,写脚本批量跑任务时,建议把这个字段记录下来,方便你复盘成本和长度分布。

三种方法怎么选:

场景推荐方法
写代码前预估输入长度tiktoken本地统计
想直观看切分效果官方在线Tokenizer
线上任务复盘接口usage字段

Token数如何影响你的使用体验

搞懂Token后,很多使用上的「玄学」都能解释清楚了:

1. 上下文窗口是Token额度,不是字数额度。 模型一次能「看见」的内容有上限,你的历史对话+当前提问+检索到的资料,全都挤在这个额度里。塞太满会触发截断,最早的对话内容可能被丢掉。

2. 输出也有Token上限。 很多人遇到「回答写到一半就停了」,不是模型坏了,而是触到了单次输出的Token上限。解决办法是让它「继续」,或分段生成。

3. 长输入会影响理解和成本。 输入越长,处理越慢、消耗越大,超长无关内容还会稀释重点,让回答变水。

实操建议:写长内容时怎么控制Token

如果你经常让模型写长文、总结长文档,这几条是我自己总结下来最有效的:

  1. 先量再喂。 处理长文档前先统计Token数,超过上下文预算的三分之一就要警惕。
  2. 去重再喂。 把明显的重复段落、无关的页眉页脚、连续空行删掉,Token立省一大截。
  3. 分块处理。 超长文本按主题切块,分批总结再合并,比一次性塞进去效果更好。
  4. 控制对话轮次。 长对话定期开新会话,只把结论性的要点带过去,避免历史冗余堆积。
  5. 代码和JSON单独算。 缩进和符号多,别用「大概几百字」来估。

常见误区小结

  • 误区:中文字数≈Token数。实际中文Token往往比字数多。
  • 误区:只有对话文字算Token。图片、文件内容进模型同样折算成Token。
  • 误区:所有模型切法完全一样。不同厂商、不同版本的Tokenizer有差异,预估时留出余量更稳妥。

把Token当成模型的「计量单位」来理解,你对上下文、输出长度、长文本处理的直觉会立刻清晰很多。

常见问题 FAQ

Q:中文一个字就是1个Token吗?
A:不一定。常见汉字大多接近1个Token,但生僻字、词组、专有名词可能被拆成更多Token,也可能多个高频字合并成一个Token。最靠谱的方式是用Tokenizer工具实际测一下,别靠猜。
Q:Token数量和使用费用是什么关系?
A:大模型API通常按输入Token和输出Token分别计量,输出单价一般高于输入。具体价格以各官方页面为准。想省钱,优先精简输入、减少无关历史、控制输出长度。
Q:上下文窗口塞满Token会怎样?
A:常见情况是最靠前的内容被截断或模型忽略,导致它「忘记」早期对话。建议长任务分块处理、定期开新会话,只保留关键结论,给当前提问留足空间。

相关文章