Token是AI模型处理文本的最小单位,也是计费和数量计算单位,可以是单词、字符、标点符号或子词。1个Token的计算方式取决于语言和分词算法:英文中1个Token大约为3-4个字母,中文中1个Token大约为1个汉字,具体数值因模型算法而异,此为通用估算标准。模型的输入输出token数量直接决定使用成本,目前主流的token计算方法包括BPE、WordPiece、SentencePiece三种,其中GPT系列采用BPE算法,Gemini系列采用SentencePiece方法。大模型不直接接收原始字符,只接收字符映射后的id数组,例如"杭州天气怎么样"会先被拆分为["杭州","天气","怎么样"],再映射为[75232, 10452, 184901]这样的数字数组传入模型。


一、Token的基本定义与作用

在人工智能领域,特别是自然语言处理和大语言模型应用中,Token是文本处理的最小基本单位。它可以是一个完整单词、单个字符、标点符号,甚至是一个子词。Token的具体定义和划分方式完全取决于所使用的分词算法和模型规则。

简单来说,Token就是文本经过Tokenizer(分词器)编码后得到的基本处理单元,也是大模型进行计算和服务商计费的基础单位。Token与单词并非一一对应关系,例如英文句子"Hello, world!"会被拆分为["Hello", ",", "world", "!"]四个独立Token,每个Token再映射为对应的数字id,最终传入模型的是这些数字组成的数组。

Token的三大核心作用

  1. 标准化处理:将任意文本分解为统一格式的Tokens后,模型可以进行标准化的处理和分析,消除不同文本格式带来的差异。
  2. 降低计算复杂度:直接处理原始文本会导致计算量呈指数级增长,Token化后的文本更易于存储和高效处理。
  3. 提升模型性能:Token化有助于模型更好地识别和学习文本中的语言模式和语义结构,显著提升理解和生成能力。

二、Token的单位与计量标准

在大模型计费体系中,K和M代表的是数量单位,而非存储容量单位。例如GPT-4o模型计费标准中"输入1M/2.5美元",指的是每输入1百万个token收费2.5美元,而非每1MB存储容量收费。

我们常说的128k、32k、1M等参数,代表模型允许的上下文窗口(context window)大小,即128000token、32000token和1000000token。换算关系为:1k等于1000个token,1M等于1百万个token。上下文窗口指的是单次交互中输入给大模型的token与大模型输出token的总和上限。

三、主流Token分词算法详解

1. 按词划分(Word-level Tokenization)

这种方法的原理是把句子拆分成完整的单词或词组,在英文场景中较为常用,通过空格或标点进行切分。但中文由于没有天然空格分隔,这种方法并不适用。

优点:实现简单直观,易于理解 缺点:无法处理未登录词(OOV)问题,模型生成能力受限

未登录词(Out-Of-Vocabulary)指的是模型词表中没有出现过的词或符号,就像中文中的生僻字不在标准字库中无法输入一样。这种分词方法目前已基本被淘汰,因为无论多大的词库都无法100%覆盖所有语言场景。

2. 按字符划分(Character-level Tokenization)

这种方法将每个单独字符作为一个Token,中文天然适用这种划分方式,英文中每个字母也会成为独立token。

优点:不存在未登录词问题,灵活性极高 缺点:Token数量急剧增加,计算成本和显存占用大幅提升

这种方法同样已被主流模型淘汰,不仅计算成本高昂,还会导致按token数量计费时使用成本显著增加。

3. 按子词/字节对划分(Subword Tokenization)

这是当前大模型的主流分词方案,核心实现包括BPE、WordPiece、SentencePiece三种算法。

工作原理

  • 从最基础的字符级别开始
  • 迭代合并高频出现的邻接字符或子词组合
  • 最终构建固定大小的词表

优点:完美兼顾未登录词处理与Token数量控制,中英文场景均适用 缺点:拆分规则高度依赖训练语料,不同文本的Token数量不固定

其中GPT全系列模型采用BPE算法,Gemini系列模型采用SentencePiece方法。例如"unbelievable"会被拆分为["un", "believ", "able"],"机器学习"可能被拆分为["机器学习"]或["机器", "学习"]。

4. 混合分词方法

主要由Google提出,支持纯字符模式、BPE模式、Unigram模式的混合使用,特别适合中文、日文、韩文等无天然空格分隔的东亚语言。

四、Token的实际应用场景

1. 大模型计费标准

几乎所有大模型服务商都按照Tokens数量进行计费,输入和输出的Tokens总数即为总消耗量。不同模型、输入输出的计费标准各不相同:

  • GPT-4o:输入每1M token约2.5美元,输出每1M token约10美元
  • GPT-5:输入每1M token约1.25美元,输出每1M token约10美元

2. 上下文窗口限制

上下文窗口(context window)决定了模型单次交互能够处理的最大Tokens数量,包含输入和输出总和:

  • 8k上下文窗口模型:可处理约8000个汉字,如GPT-4标准版
  • 32k上下文窗口模型:可处理约32000个汉字,如GPT-4-32k
  • 128k上下文窗口模型:可处理约128000个汉字,如GPT-4o

实际可处理的汉字数量会因文本中英文、标点、高频词组占比而有所波动。

3. 文本到模型输入的完整流程

大模型不直接接收原始字符,只接收字符映射后的id数组,完整处理流程如下:

  1. 原始文本经过分词器拆分为Token列表
  2. 每个Token在词表中查找对应的数字id
  3. 将id数组传入大模型核心推理算法
  4. 模型输出结果再反向映射为可读文本

以"杭州天气怎么样"为例,完整流程为:原始文本 → ["杭州", "天气", "怎么样"] → [75232, 10452, 184901] → 传入模型。这个数组包含3个元素,即代表3个token。

4. Token计算代码实现

开发者可以通过代码自行计算Token数量,以下是主流编程语言的实现方式:

JavaScript(BPE算法,与GPT系列一致)

const tiktoken = require('tiktoken');
const encoding = tiktoken.get_encoding('cl100k_base');
const text = "Hello, world! 你好,世界!";
const tokens = encoding.encode(text);
const tokenCount = tokens.length;
console.log(`Token 数: ${tokenCount}`);

Python实现

from transformers import GPT2Tokenizer
tokenizer = GPT2Tokenizer.from_pretrained("gpt2")
text = "Hello, world! 你好,世界!"
tokens = tokenizer.encode(text)
token_count = len(tokens)
print(f"Token 数: {token_count}")

需要注意的是,以上计算基于BPE算法,不同模型采用的分词算法不同,计算结果会存在差异。


如果您正在开发AI应用,需要稳定、高效地调用各类大模型API,推荐使用TreeRouter API中转站。TreeRouter支持GPT、Gemini、Claude、DeepSeek等主流大模型的统一接入,提供智能负载均衡、故障自动切换、Token用量统计等功能,帮助开发者大幅降低接入成本,提升API调用稳定性。