Token 到底是什么:怎么切、谁来切、怎么算钱
文字稿约 2100 字 · 按画面章节整理展开收起
你看到的是字,模型看到的是什么?
先看一句话:“大模型不是一个字一个字地读文字,而是一块一块地读。”你看到的,是 25 个字。但模型看到的,是切好的 17 块,每一块,都换成了一个编号。这样的一块,就叫 token,中文叫词元。
今天我们拿几个真实的分词器,也就是负责切 token 的程序,把 token 拆开来看看。
打个比方:一个特别的活字字盘
先打个比方。想象一个活字印刷的字盘,里面的活字有大有小。常用的词,比如“人工智能”,有一整块现成的活字,一下就排好了;不常用的字,比如“饕餮”,字盘里没有现成的,就用更小的零件拼出来。换成大模型:字盘就是词表,一块活字就是一个 token,活字的编号,就是 token 的编号。
模型读进去的,是一串编号
回到开头那句话。用 Qwen3 的分词器来切,就是这 17 块。每一块,在词表里都有自己的编号。同一块出现两次,编号也一样,比如“字”,两次都是 18600。模型真正读进去的,就是这一串数字。再看一个细节:同样是“一个”,第一次和“不是”连成了一块,第二次却单独成块。因为“不是一个”这四个字,本身就在词表里。Qwen3 的词表里,一共有 151,643 个 token,另外还有 26 个特殊标记。
词表是怎么来的
那这个词表是怎么来的?不是人一条一条编的,是从大量文字里统计出来的。常用的方法叫 BPE,全称 Byte Pair Encoding,中文叫字节对编码。它从最小的零件出发:电脑里的文字,最后都存成字节,一共只有 256 种。然后一遍又一遍地数:哪两块最常挨在一起,就把它们合成一块新的,加进词表。一个常用汉字占 3 个字节,像“人”“工”“智”“能”这样的字,都已经各自合成了一整块。比如,“智”和“能”合成“智能”,“人”和“工”合成“人工”,最后“人工”和“智能”,又合成了一整块。Qwen3 一共合并了 151,387 次,加上最初的 256 种字节,正好是词表里的 151,643 个 token。
一个 token,不一定是一个字
回到比方里的两个例子,看看真实的词表。“人工智能”四个字,在 Qwen3 里真的是一整块,只算 1 个 token;在 OpenAI 的分词器里,是“人工”和“智能”,2 块。“饕餮”两个字,在 Qwen3 里是 2 个 token,一个字一块;在 OpenAI 的分词器里,却被拆成了 4 块,每一块只有一两个字节,凑不成一个完整的字。所以,一个 token 可能比一个字大,也可能比一个字小。
同一句话,换一个分词器
再把开头那句话,交给不同的分词器。OpenAI 的分词器切成 18 块,Qwen3 切成 17 块,切的位置也不一样。Claude 的切法我们看不到,只能读接口返回的总数,减掉每次请求固定多出的 8 个,是 25 个。同样 25 个字,少的 17 个 token,多的 25 个。代码也一样。同一行代码,OpenAI 的分词器把“000”当成一块,Qwen3 却把每个数字都单独切开。结果是 11 块,对 15 块。
中文比英文更费 token 吗?
常听人说,中文比英文费 token。我们拿同一段话的中文版和英文版,试一试。中文版正好 100 个字,英文版是 73 个单词。Qwen3:中文只要 67 个 token,比英文少 20 个;Claude Sonnet 4.6:中文要 121 个,比英文多 27 个;OpenAI 的分词器,中文比英文少 3 个;Claude Sonnet 5.5,中文比英文少 6 个。所以,费不费 token,不能只看语言,要看是哪个分词器。也别再用“一个汉字约等于一个 token”来估算了:同样 100 个字,少的 67 个 token,多的 121 个。
单价便宜了三分之一,账单呢?
这个差别,会直接算进账单。Claude Sonnet 5.5 的输入价格,是每百万 token 2 美元;更早的 Sonnet 4.6 是 3 美元,单价便宜了三分之一。可是 Sonnet 5.5 换了新的分词器,同一段英文,从 94 个 token 变成了 126 个。光算这段英文本身,处理 100 万段:老模型一共 9400 万个 token,要 282 美元;新模型一共 12600 万个 token,要 252 美元。只便宜了 30 美元,也就是百分之 10.6。中文段落只少了 1 个 token,从 363 美元降到 240 美元,便宜了百分之 33.9。官方文档也写了:新分词器处理同样的文字,token 大约多出三成,具体多少,看内容。所以比价格,别只比每个 token 多少钱,拿你自己的文字,去数一数 token。
输入和输出,分开算钱
最后,一次对话里的 token,要分两笔算。我们问 Claude Sonnet 5.5:“token 是什么?用一句话回答。”它回了这么一段。输入是 21 个 token:问题本身 13 个,再加上每次请求固定带的 8 个。输出,是它回的这段话,72 个 token。输入每百万 token 2 美元,输出是 10 美元,输出的单价,是输入的 5 倍。这样的问答做 100 万次,输入是 42 美元,输出是 720 美元。这一次,钱主要花在输出上;反过来,塞进去一份长文档、只要一句话回答,大头就是输入。
总结一下
总结一下。token 是词表里的一块:可能是一个词、一个字,也可能只是几个字节。同样的文字,换一个分词器,token 数就变了,所以按 token 定的价格,不能直接拿来比。输入和输出,分开计数,也分开计价。
下次看到按 token 计价,先问三件事
下次看到按 token 计价,先问三件事:用的是哪个分词器?拿你自己的文字,数一数。你的内容,主要是中文、英文,还是代码?输入和输出,各多少钱?各用了多少?
今天我们把 token 拆开,看了一遍。下一期,聊聊缓存:缓存命中,到底省了什么?