Token 是大模型读写文本的单位。模型看到 prompt 之前,分词器先把文本切成小段,再把每一段换成词表里的一个编号。API 按 token 计费,限速按 token 计算,上下文窗口也是 token 数的上限。下面的数字都来自 Token 计算器,与 OpenAI tiktoken、DeepSeek 官方分词器的结果一致。

一句中文被切成了什么

用 DeepSeek V4 的官方 tokenizer.json 切「什么是 AI 里的 token?」:

片段什么是 AI 里的 token?
token id2504377032237210178401148

16 个字符,6 个 token。「什么是」「里的」各占一个 token;「里」前面的空格单独成了一个 token,因为 DeepSeek 的分词规则先把连续的汉字和假名切成独立片段,空格不会和后面的汉字合并。同一句话在 GPT-4o 等模型用的 o200k_base 下是 7 个,在 GPT-4 用的 cl100k_base 下是 10 个。

cl100k_base 词表里没有的汉字会被拆成字节。「你好,世界!」在 cl100k_base 下是 7 个 token,其中「世」拆成了 E4 B8 和 96 两段,两段单独都不是完整的字。

分词器怎样决定切在哪里

GPT 和 DeepSeek 用的都是字节级 BPE(byte pair encoding,Sennrich 等人 2016 年的论文)。先用正则表达式把文本粗切成词、数字、标点、空白等片段,片段之间不会合并;再在每个片段内部从单个字节开始,反复合并词表里排名最靠前的相邻一对,直到没有可合并的对为止。

词表大小不同:cl100k_base 有 100,277 项,o200k_base 有 200,019 项,DeepSeek V4 有 129,280 项(都含特殊 token)。词表越大,能整块收下的中文词越多。

按字数估算差多少

各家文档都给了经验值:DeepSeek 说 1 个中文字符约 0.6 个 token、1 个英文字符约 0.3 个;Google 说 Gemini 约 4 个字符一个 token;Anthropic 说英文约 4 个字符一个 token。它们都补了一句「以接口返回为准」。用 Token 计算器自带的 192 字中英混排示例对比:

方法token 数
按「4 个字符一个 token」估算48
DeepSeek V4 精确111
o200k_base 精确133
cl100k_base 精确172

按 4 个字符估算只有实际的一半不到;三个分词器之间也差了 55%。比较不同厂商的价格,要先用各自的分词器数,再乘单价。

Claude 和 Gemini 没有公开可在本地运行的分词器。Anthropic 说明 Claude 4.7 及以后的模型换了新分词器,同一段文本约多 30% 的 token,所以去年模型上数出的 token 数不能直接套到今年的模型上。

在代码里精确计数

OpenAI 模型用 tiktoken(0.14.0):

import tiktoken

enc = tiktoken.get_encoding("o200k_base")
print(len(enc.encode_ordinary("你好,世界!")))  # 4
print(tiktoken.encoding_name_for_model("gpt-5.5"))  # o200k_base

用户输入请用 encode_ordinary();encode() 遇到 <|endoftext|> 会抛 ValueError。tiktoken 的对照表里没有 GPT-6,OpenAI 没有公开它的分词器。

DeepSeek 用离线计数包里的 tokenizer.json:

from tokenizers import Tokenizer

tok = Tokenizer.from_file("deepseek_v4_tokenizer/tokenizer.json")
print(tok.encode("什么是 AI 里的 token?").ids)
# [25043, 7703, 223, 7210, 17840, 1148]

计数包的示例脚本用 transformers 加载。2026 年 10 月 1 日实测,transformers 5.18.0 对这个包里的中文文本返回空列表,4.57.6 与 tokenizers 0.23.2 返回上面的结果。离线脚本请固定 transformers 4.x,或像上面这样直接用 tokenizers。

Claude 用 POST /v1/messages/count_tokens(免费,文档称结果是估算),Gemini 用 models.countTokens。OpenAI 的 POST /v1/responses/input_tokens 会把消息角色、分隔符、图片、文件和工具定义一起算进去,这部分本地分词器看不到。

计费时的几处坑

  • DeepSeek 分时段计价:中文价格页(2026-10-01)中 deepseek-flash 输入 2 元、输出 8 元每百万 token,北京时间工作日 9:00–12:00、14:00–18:00 以外半价。
  • 输出比输入贵:上面的 192 字示例加 1,000 个输出 token,在 gpt-5.5 上约 0.0307 美元,其中 0.03 美元是输出。
  • 长上下文加价:gpt-5.5 与 GPT-6 输入超过 272,000 token 时整次请求按 2 倍输入、1.5 倍输出计价;gemini-3.1-pro-preview 超过 200,000 token 也会加价。
  • 向量模型:text-embedding-3 系列用 cl100k_base,单条输入上限 8,192 token。

相关工具:字数统计工具、API Key 脱敏工具。