编辑
2025-10-12
大模型学习
00
请注意,本文编写于 59 天前,最后修改于 59 天前,其中某些信息可能已经过时。

目录

大语言模型(LLM)中的 Token 详解
一、什么是 Token?
二、Token 是如何生成的?——分词(Tokenization)
三、为什么需要 Token?
四、Token 的实际影响
五、如何查看 Token 数量?
总结

大语言模型(LLM)中的 Token 详解

在大语言模型(Large Language Models, LLM)中,Token 是模型处理和理解自然语言的基本单位,也是其“思考”和“表达”的最小单元。理解 Token 对于掌握大模型的工作原理、使用限制以及成本计算至关重要。


一、什么是 Token?

Token 并不严格等同于“一个字”或“一个词”,而是由特定分词(Tokenization)算法决定的文本片段。它可以是:

  • 一个完整的单词(如英文 "cat")
  • 一个汉字(如中文 "猫")
  • 一个子词(subword),例如 "unhappiness" 可能被拆分为 ["un", "happi", "ness"]
  • 一个标点符号(如 "."、"!")
  • 一个数字或特殊符号(如 "2025"、"$")

在 LLM 中,token 代表模型可以理解和生成的最小意义单位,是模型的基础单元 。根据所使用的特定标记化方案,token 可以表示单词、单词的一部分,甚至只表示字符 。


二、Token 是如何生成的?——分词(Tokenization)

大模型在接收文本前,会先通过一个叫 Tokenizer(分词器) 的组件将原始文本转换为一系列 Token。这个过程称为 Tokenization

常见的分词方法包括:

  • Word-based(基于词):按完整单词切分(适用于英文,但词表庞大)。
  • Character-based(基于字符):每个字符作为一个 Token(词表小但序列长)。
  • Subword-based(基于子词):如 Byte Pair Encoding (BPE)WordPiece,在词和字符之间取得平衡,能有效处理未登录词(OOV)。

例如,使用 BPE 的模型(如 GPT 系列)可能会这样分词:

  • 输入:"I love natural language processing."
  • Token 序列:["I", " love", " natural", " language", " processing", "."]

注意:空格通常被合并到后续 Token 中(如 " love")。

对于中文,由于没有天然的空格分隔,主流模型(如 ChatGPT、Claude)通常将每个汉字视为一个 Token,部分高频词也可能作为一个整体 Token。


三、为什么需要 Token?

  1. 模型输入标准化
    神经网络只能处理数字,不能直接处理文本。Token 被映射为唯一的整数 ID(如 "cat" → 50256),再通过嵌入层(Embedding)转换为向量,供模型计算 。

  2. 控制上下文长度
    大模型有最大上下文长度限制(如 GPT-4o 支持 128,000 Token)。这个限制决定了模型一次能“看到”多少内容。Token 数量直接影响对话历史、文档长度等使用场景 。

  3. 计费与性能评估
    几乎所有商用大模型 API(如 OpenAI、Anthropic)都按 输入 + 输出的总 Token 数计费。理解 Token 有助于预估成本和优化提示(Prompt)。


四、Token 的实际影响

场景影响
长文档处理一篇 1 万字的中文文章 ≈ 10,000 Token;英文文章 ≈ 7,000–8,000 Token(因单词更长)
多轮对话对话历史会累积 Token,可能很快达到上下文上限
Prompt 工程精简 Prompt 可节省 Token,降低成本并为输出留出空间
模型输出限制即使上下文很长,模型单次输出也有 Token 上限(如 4,096)

通常 1 个中文词语、1 个英文单词、1 个数字或 1 个符号计为 1 个 token 。但实际数量需通过官方 Tokenizer 工具精确计算。


五、如何查看 Token 数量?

你可以使用官方工具估算 Token:

  • OpenAI 提供 Tokenizer 工具
  • Hugging Face 的 tiktoken(用于 GPT)或 transformers 库(用于开源模型)

示例(Python):

python
import tiktoken enc = tiktoken.encoding_for_model("gpt-4") tokens = enc.encode("你好,世界!") print(len(tokens)) # 输出 Token 数量

总结

Token 是大语言模型的“语言乐高积木” 。它不仅是模型理解世界的基石,也是开发者与用户在使用大模型时必须关注的核心概念。掌握 Token 的本质,有助于:

  • 更高效地设计 Prompt
  • 合理控制成本
  • 避免上下文溢出错误
  • 深入理解模型能力边界

正如一句业内共识所说:“不懂 Token,就无法真正驾驭大模型。”

本文作者:aifsci

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!