LLM Tokenizer详解2026

📘 教程 2026-08-11 · 更新于 2026-10-21 约 9 分钟阅读

模型不读汉字也不读单词,它读token。同一段话换一个模型,切出来的token数可能差一倍,账单和上下文上限也跟着差一倍。这篇讲清tokenizer怎么切、怎么自己数、哪些写法在偷偷烧钱。

📜 目录

LLM Tokenizer详解2026:为什么你的提示词比想象中贵

模型不读汉字也不读单词,它读token。同一段话换一个模型,切出来的token数可能差一倍,账单和上下文上限也跟着差一倍。这篇讲清tokenizer怎么切、怎么自己数、哪些写法在偷偷烧钱。

一、tokenizer在做什么

tokenizer是"文本→整数序列"的翻译层,主流做法是BPE(字节对编码):从单个字节开始,统计语料里最常一起出现的字节对,反复合并,最后得到一张几万到二十万条的词表。模型看到的永远是一串编号,不是字。

三个后果直接影响成本:

词表各模型不同:OpenAI 用 tiktoken 公开词表(如 o200k_base),Claude、Gemini 和国内各家基本不公开。所以不同模型的token数不能互相代用,算成本必须用对应模型的tokenizer。

二、几组能自查的比例

内容类型 大致换算 说明
英文自然语言 1 token ≈ 4个字符,≈0.75个单词 即1个英文词约1.3 token
中文 1个汉字约1-1.7 token 模型词表差异大,常用字接近1
代码、JSON 每个字符约0.3-0.5 token 缩进空格、引号、括号都算钱
emoji 每个2-4 token UTF-8四字节,常被拆碎
长数字 每3-4位约1 token 不要指望它逐位精确

这些是估算用的锚点,真正掏钱前用tokenizer数一次,误差就没了。

三、自己数token的三条路

路线1:OpenAI 系(tiktoken)

# pip install tiktoken
import tiktoken
enc = tiktoken.get_encoding("o200k_base")   # GPT-4o 一代用的词表
print(enc.encode("把这段提示词数一下token"))
print(len(enc.encode("把这段提示词数一下token")))

路线2:开源模型(Hugging Face tokenizers)

from transformers import AutoTokenizer
tok = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-7B-Instruct")
ids = tok("把这段提示词数一下token")["input_ids"]
print(len(ids))

词表要联网下载,离线机器把模型目录指到本地路径,加 local_files_only=True 就不联网。

路线3:不写代码

OpenAI 平台上有个 tokenizer 页面,把文本粘进去直接看切分结果和总数,调到哪一段被切碎一目了然。Hugging Face 上各模型的 "Tokenizer" 页面也能在线试。

四、上下文窗口折算成字

标称窗口 英文约 中文约
32K token 2.4万词 2.6万汉字
128K token 9.6万词 10.6万汉字
200K token 15万词 16.6万汉字
1M token 75万词 83万汉字

(按1 token≈0.75英文词、1汉字≈1.2 token折算,换模型请重算。)

注意窗口容量不等于可用质量:能装进去,不代表模型能用好。中间位置的信息经常被忽略,详见文末上下文窗口那篇。

五、四个立刻省钱的写法

  1. 裁历史:只带最近几轮完整对话,更早的压成一段摘要。多轮Agent里历史每轮重发,不裁等于重复付费。
  2. 压JSON:去掉缩进、缩短字段名、只传下游真用到的字段。缩进用的空格按输入计费,纯浪费。
  3. 静态前缀缓存:system prompt、工具定义、知识库背景放在最前面并且一字不改,很多家对缓存命中的输入单独计价,折扣幅度以各官网为准。
  4. 卡输出长度:给 max_tokens 一个合理上限,并在提示词里要求"只给结论,不要过程复述"。输出单价普遍比输入贵数倍。

还有一个常被忽略的乘法:一份2000 token 的 system prompt,每天1万次请求,就是每天2000万输入token。它一个字没改,你却付了1万遍。

六、一份对账的完整算法

拿一个具体场景过一遍:中文长文摘要接口,每次带2000 token的 system prompt、3000字正文,输出600 token。

  1. 估输入:3000汉字按1.2 token/字约3600 token,加 system 的2000,合计5600。
  2. 加输出:单次约6200 token。
  3. 乘量:每天500次,日消耗约310万token,月约9300万token。
  4. 套单价:拿这个token量去乘官网的输入、输出单价,才是真账单。

再换一个:RAG问答,上下文5000 token、问题100 token、输出300 token,单次5400 token,每天2000次就是日1080万、月3.24亿token。量一大,档位选择比提示词技巧重要得多。

七、常见问题

Q:同一段文字两次token数不一样? A:多半是提示词里混了动态内容:时间戳、随机ID、检索结果顺序、工具定义顺序。把可变部分挪到最后,数量就稳定了。

Q:中文是不是比英文贵? A:看模型。同样信息量下,汉字覆盖好的词表token数更少。跨模型比较请用各自tokenizer实测同一段材料,别拿经验值互相换算。

Q:本地模型怎么数token? A:用该模型的 AutoTokenizer,或 llama.cpp 自带的 tokenize 接口。别用 OpenAI 的词表估算本地模型。

Q:为什么输出比输入贵好几倍? A:生成是一个token一个token串行出的,占用的算力时间远高于并行处理的输入。各家定价结构不同,具体倍数以官网定价页为准。

Q:词表越大越好吗? A:不是。词表大,同样文本的token数少、序列短;但嵌入矩阵和输出层更大,小设备上反而吃显存。这是权衡,不是单向优化。

注:各模型词表与定价随版本变化,具体数值以官方文档和定价页为准。

相关文章

延伸阅读 · 含推广链接

免费额度适合验证想法,不适合跑常驻任务。按量付费按实际用量结算,比包年更不容易浪费。

对比按量与包年 →

相关文章
2026-07-16
Ollama vs vLLM vs TGI:2026年LLM推理引擎怎么选?
2026-08-01
YouTube计算机视觉教程:8个频道排名
2026-08-07
AI语音助手:用开源工具打造自己的Jarvis
2026-08-02
自托管向量数据库2026:Qdrant vs Milvus vs Chroma怎么选
2026-08-01
Perplexity AI搜索API教程
2026-08-01
Azure ML机器学习管道:分步教程

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论