关于“Token”这个概念,在人工智能(尤其是大语言模型)的语境下,它是一个非常核心且基础的单位。理解Token,是理解AI模型工作原理、成本控制和性能限制的关键。

下面从基础概念、为什么需要Token、以及具体案例三个部分来详解。


一、 什么是Token?

核心定义:
Token是AI模型处理文本时的最小基本单元。你可以把它理解为计算机“读取”和理解人类语言时的“单词碎片”。

人类阅读时,最小单位是字或词;但AI模型(如GPT、Claude、DeepSeek等)并不直接识别原始的文字字符串,它们先将文本拆解成一个个Token,再将这些Token转换成数字(ID),进行数学运算。

Token的三种常见形式:

  1. 单词(Word): 对于英文等使用空格分隔的语言,常见的高频单词(如 applerun)常被作为一个完整的Token。

  2. 子词(Subword): 这是最常见的形态。对于长单词、生僻词或复合词,模型会将其拆解为有意义的词根或词缀。例如 unhappiness 可能会被拆成 unhappiness 或 unhappiness

  3. 字符(Character): 对于中文这类没有天然空格分隔的语言,或者遇到特殊符号、标点时,Token可能对应单个汉字、标点符号或单个英文字母。


二、 为什么要将文本拆成Token?

  1. 处理效率与词汇量平衡:
    如果只以“单词”为单位,词汇表会无限大(新词、拼写错误、专业术语无穷尽)。如果只以“字符”为单位,虽然词汇表很小(几百个汉字或字母),但模型需要处理的序列会变得非常长(一句话变成几十个点),计算量暴增且难以捕捉词义关联。
    子词分词法 平衡了这两者:既能用常见词覆盖大部分文本,又能用词根组合来应对生僻词。

  2. 上下文窗口的限制:
    AI模型有一个“上下文长度”,例如1M(百万)或128K。这里的单位不是“汉字数”或“单词数”,而是Token数

    • 比如,一个模型宣称上下文是 128K Tokens,意味着它一次最多能处理约 128,000 个Token。超过这个数量,模型就会“遗忘”最早输入的内容。

  3. 计费依据:
    目前市面上绝大多数商业AI模型API(应用程序编程接口)是按 Token数量 来计费的。无论是输入(Prompt)还是输出(Completion),都会消耗Token。


三、 详细案例解析

为了让你更直观地理解,我们来看几个不同语言和场景下的Token拆分案例。假设我们使用的是OpenAI的GPT系列模型(通常使用cl100k_base分词器)或类似的现代大模型分词逻辑。

案例 1:英文文本

原文: I love artificial intelligence.

Token拆分结果:

  1. I (1个Token)

  2. love (注意前面有空格,算作Token的一部分) (1个Token)

  3. artificial (1个Token)

  4. intelligence (1个Token)

  5. . (1个Token)

总计:5 个 Tokens

解析: 在英文中,常见的单词通常占用1个Token,但像 artificial intelligence 这种长词,如果模型词库里没有完整的词,也可能会被拆成 artificial 等。


案例 2:中文文本

原文: 你好,世界!

Token拆分结果(根据模型不同会有差异,但逻辑类似):

  • 你好 (1个Token)

  •  (1个Token)

  • 世界 (1个Token)

  •  (1个Token)

总计:4 个 Tokens

特殊情况(中英文混合):
原文: 我喜欢用DeepSeek写代码。

可能的Token拆分:

  1. 我喜欢 (1个Token)

  2.  (1个Token)

  3. Deep (1个Token)

  4. Se (1个Token) -> 英文专有名词常被拆成更小的子词

  5. ek (1个Token)

  6.  (1个Token)

  7. 代码 (1个Token)

  8.  (1个Token)

总计:8 个 Tokens

重要规律:

  • 中文通常比英文更“耗”Token。 在大多数模型中,1个汉字大约占用 1.5 ~ 2 个 Tokens。而英文中,1个单词通常只占 1~1.3 个 Tokens。

  • 这意味着,如果你用中文写一本书输入给AI,消耗的Token数大约是英文的1.5倍以上。


案例 3:代码与特殊格式

原文(Python代码):

python

def hello():
    print("Hello")

Token拆分结果:

  1. def (1)

  2. hello (1)

  3. () (1)

  4. : (1)

  5. \n (换行符) (1)

  6.  (4个空格,有些模型视为1个Token) (1)

  7. print (1)

  8. (" (1)

  9. Hello (1)

  10. ") (1)

解析: 代码中的缩进(空格)、换行符、括号都会消耗Token。这也是为什么在代码生成任务中,如果代码量很大,Token消耗会非常快。


四、 如何计算Token?(实用技巧)

如果你在使用AI API或想精确控制成本,可以使用以下工具:

  1. 官方Tokenizer工具:

    • OpenAI 提供了在线工具 OpenAI Tokenizer,你可以粘贴文本,它会高亮显示每个Token的边界。

    • DeepSeek 等模型通常也在开发者文档中提供类似的Token计数说明或库。

  2. 编程计算:

    • 如果你在使用Python开发,可以安装 tiktoken(OpenAI的分词库)或对应模型的 transformers 库来精确计算。

    python

    import tiktoken
    enc = tiktoken.get_encoding("cl100k_base")
    text = "你好,世界!"
    tokens = enc.encode(text)
    print(len(tokens)) # 输出数字,比如 4 或 5

五、 总结:理解Token的三大要点

  1. Token ≠ 字数:
    不要用“写了多少个字”去估算Token数。中文文本的Token数通常 大于 汉字数(大约1汉字=1.5~2 Token)。英文文本的Token数通常 小于 字符数,接近单词数。

  2. Token限制决定记忆容量:
    当AI“忘记”你对话开头的内容时,通常不是因为时间过去太久,而是因为你们的对话总Token数超过了模型的上下文窗口(即上下文长度)。

  3. Token即成本:
    无论是调用API的金钱成本,还是运行模型时的显存占用和计算时间,都与Token数量成正比。优化Prompt的精简度(减少Token),是降本增效的有效手段。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐