什么是 Token(令牌)?

Token(令牌)是由特定模型定义、以整数 ID 表示的输入输出单位;它对应的文本片段可能是单词、子词、字节序列、标点、空白模式,也可能是不显示为普通文本的控制符号。

快速了解

创建时间2010 年代(BPE 等现代子词分词技术)
规范文档官方规范

工作原理

Token ID 属于特定模型契约

分词器把文本片段映射为固定词表中的整数 ID,模型真正消费的是 ID,而不是可视化工具展示的字符串。一个 ID 只有结合对应词表、规范化规则、合并模型和特殊 Token 定义才有意义;即使解码文本看起来相同,也不能把 ID 在无关模型之间直接复用。

应统计序列化请求,而不只是可见正文

聊天请求可能通过 Chat Template 添加角色标记、分隔符、起止符、工具 Schema、图片占位符和其他控制 Token。只统计用户消息会低估真实输入。能够取得官方实现时,应使用同一分词器和模板进行预估;请求结束后,则以提供商返回的 Usage 元数据作为计费和限额核对依据。

上下文容量是共享预算

上下文上限覆盖一次生成步骤处理的完整序列,包括系统指令、历史消息、检索证据、工具定义与结果、模板开销以及生成输出。接纳可选上下文前应预留输出容量与安全余量,也不要假设所有提供商都采用相同截断顺序,或在开启不同功能时仍支持同一标称上限。

Token 数同时影响成本与服务性能

输入、输出和缓存命中的 Token 可能采用不同计费方式;提示长度主要影响 Prefill 工作量,生成长度主要影响逐 Token Decode 工作量。比较 Tokens per Second 时必须区分阶段、并发与硬件。字符数或词数换算只能用于粗略容量估计,多语言文本、代码、标识符、数字和空白都可能产生明显偏差。

主要特点

  • 由分词器词表中的整数 ID 标识,而不是由通用单词边界定义
  • 可以表示文本片段、字节、标点、空白或控制符号
  • 依赖准确的分词器、词表版本与序列化模板
  • 与提示开销和生成输出共同占用模型上下文预算
  • 影响 API 用量、Prefill、Decode 长度、缓存行为与存储
  • 无法通过固定的单词数或字符数比例可靠换算

常见用途

  1. 在请求超过模型上下文上限前拒绝、压缩或裁剪输入
  2. 组装 Prompt、检索证据与工具 Schema 时预留输出容量
  3. 核对本地估算与服务端输入、缓存、推理和输出 Usage
  4. 使用部署模型的真实分词器确定 RAG 分块与重叠大小
  5. 在质量要求一致时比较多语言、代码和结构化提示的消耗

示例

loading...
Loading code...

常见问题

一个 Token 是否等于一个单词或固定数量的字符?

不是。Token 边界取决于分词器词表和输入字节。一个常见单词在某个模型中可能是一个 Token,换到另一模型则可能被拆成多个;代码、数字、空白、Emoji 和不同文字系统的表现也不同。字符或单词比例只能粗略规划容量,不能代替精确编码。

为什么 API 报告的输入 Token 比可见提示更多?

序列化请求可能包含系统指令、角色标记、分隔符、特殊 Token、工具或响应 Schema、图片占位符与历史消息。本地计数必须复现提供商的分词器和 Chat Template;本地结果与服务端不一致时,应以响应 Usage 作为计费与限额执行记录。

输入 Token 加最大输出是否总是等于上下文上限?

二者构成核心预算,但精确规则取决于提供商和模型。模板开销、隐藏控制 Token、推理 Token 的计量方式、多模态输入和特定功能限制都可能产生影响。应保留安全余量并实测部署端点,不能套用其他模型的公式或截断行为。

使用 BPE 的模型可以互相复用 Token ID 吗?

不可以。BPE 只描述一类合并方法,并不意味着共享词表。不同模型可能采用不同基础符号、规范化、合并优先级、特殊 Token 或词表版本。某词表中的 ID 42 与另一词表的 ID 42 没有必然关系,ID 和缓存序列必须绑定准确模型契约。

生产环境应该如何测量 Token 用量?

请求前使用准确分词器与序列化 Chat Template 预检,记录准入输入和预留输出;请求后将估算值与响应 Usage 对比。提供商支持时,应分别记录未缓存输入、缓存输入、生成输出和专用推理计量,并在模型、分词器、模板或工具 Schema 变化后监控偏差。

相关术语

相关文章