第 9 课,共 28 课 · 语言模型与聊天助手
AI 中的 Token 是什么?
Token(词元)是语言模型读取和生成文本时使用的小片段,可以是一个词、词的一部分、一个标点或一个空格。模型在处理文本之前会先把所有内容切分成 Token,生成回复时也是一个 Token 接一个 Token。Token 还是用量的计量单位:上下文限制和 API 价格都按 Token 计算。
模型为什么用 Token 而不是单词
计算机处理的是数字,所以模型需要一本固定的“字典”(称为词表),把文本片段对应成数字。如果按整词建词表,词表会极其庞大,而且仍然收录不了新词、人名和错别字;如果按字母逐个拼写,每个句子又会变得很长。Token 就是两者的折中:常用词单独占一个 Token,生僻词则由更小的片段拼成。
可以把它想象成乐高积木:常用词是现成的整块积木,生僻词则用几块小积木拼起来。字节对编码(BPE)是构建这类词表的常用方法,Sennrich 等人在 2015 年把它用于神经机器翻译,如今它在语言模型中十分普遍。
文本如何变成 Token
在模型“看到”文本之前,会先由一个叫“分词器”的工具完成切分。粗略来说,OpenAI 的分词器页面给出的经验是:对于常见英文文本,一个 Token 大约相当于 4 个字符,或四分之三个英文单词。其他语言和其他模型会有差别,准确数字请用分词工具查看。常见的规律有:
- 英文中简短常用的词,比如“the”或“cat”,通常只占一个 Token。
- 较长或生僻的词会被拆开,比如“tokenization”拆成“token”和“ization”。
- 空格、标点和数字同样计入 Token,较长的数字常被拆成几段。
- 中文的切分很依赖分词器:一个汉字可能是一个 Token,几个汉字可能合成一个 Token,一个汉字也可能占用不止一个 Token。
- 多模态模型也会把图片和音频转换成 Token,所以一张图片同样会占用上下文窗口。
Token 和你有什么关系
AI 产品页和价格页上的大多数数字,背后的计量单位都是 Token:
- 成本:AI API 按 Token 收费,输入(你发送的内容)和输出(模型写的内容)通常分开计价。
- 限制:上下文窗口(模型一次能读取的内容量)以 Token 计,单次回复的最大长度也是。
- 速度:模型一次生成一个 Token,所以回答越长,耗时越久。
- 语言:同样的内容换一种语言或换一个模型,Token 数可能不同。
Token 不是什么
Token 既不是单词,也不是字符,尽管有时恰好和它们一致。在 AI 语境中,它也和这个词的其他常见含义无关:加密货币里的 Token(代币)是记录在区块链上的数字资产,访问令牌或 API Token 则是向服务证明身份的、类似密码的密钥。在大语言模型的价格页面上,“Token”指的就是文本片段。
示例
把一句话切分成 Token
演示示例文本:“我喜欢学习人工智能” 一种可能的切分(示意): [我] [喜欢] [学习] [人工] [智能] → 9 个汉字,5 个 Token 有的分词器会切得更碎,甚至把一个汉字拆成多个 Token。 每个 Token 随后会被替换成词表里的编号,模型实际看到的只是这些数字。
不同模型的切分方式各不相同。把你自己的文本粘贴到分词工具(例如 OpenAI 提供的分词器)中,就能看到真实的切分位置和 Token 数量。
要点
- Token 是一小段文本:一个词、词的一部分、标点或空格。
- 模型读写的是 Token,而不是单词或字符。
- 上下文窗口和 API 价格都以 Token 计量。
- 同样的文本在不同模型、不同语言下,Token 数可能不同。
- AI 里的 Token 与加密代币、登录令牌毫无关系。
在 Mindber 上试试
相关术语
相关主题
常见问题
1,000 个 Token 大约是多少字?
这取决于语言和模型的分词器。对于常见英文文本,OpenAI 的经验值是每个 Token 约等于四分之三个单词,所以 1,000 个 Token 大约是 750 个英文单词。中文等其他语言可能相差很大。要得到准确数字,请使用服务商的分词工具,或查看 API 返回结果中的用量数据。
AI 服务商为什么按 Token 收费?
Token 反映了模型实际完成的工作量:每个输入 Token 都要处理,每个输出 Token 都要生成。按 Token 收费,能让成本随使用量增减。输出 Token 的单价通常高于输入 Token,因为生成文本比读取文本需要更多计算。
AI 里的 Token 和加密货币的 Token 是一回事吗?
不是。在语言模型中,Token 是一小段文本;在区块链中,Token 是记录在账本上的数字资产;在软件安全领域,访问令牌(Access Token)是证明你身份的凭证。用的是同一个词,含义却毫不相干。
来源
- Neural Machine Translation of Rare Words with Subword Units. Sennrich et al., arXiv, 2015年8月
- Tokenizer. OpenAI
最后更新