每个 LLM API 都按 token 计费,每个 context window 都用 token 算大小,每次「为什么账单这么贵」的 debug 最后都会回到 token。但大多数人每天用 LLM,从来没看过一个 token 长什么样。这篇讲清楚。
Token 大致等于一个字的片段
LLM 读文本的时候,第一件事就是用 tokenizer 把文本切成 token。Tokenizer 是一个固定的查找表 — 通常有 5 万到 20 万个条目 — 模型训练时就建好,之后永远用同一个。
英文的话,一个 token 通常是:
- 一个常见的词(”the”、”computer”、”running”)— 一个词一个 token
- 一个常见的子词片段(”-ing”、”un-”、”ization”)— 一个 token
- 罕见字或不在词表里的字,会被拆成单字符
粗略换算:1 token ≈ 0.75 个英文词。所以 1,000 tokens 大约 750 词,差不多两页英文文章。
中文(以及日文、韩文)不一样。现代主流的 tokenizer(Claude、GPT、Gemini)大多把一个中文字算成 1 到 2 个 token。也就是说 1,000 个中文字 ≈ 1,500 到 2,000 tokens。中文每个字比英文每个词贵。
代码的 token 比较小,一行 Python 大概 5-15 个 token。
你可以看到实际的切法
想真的看一下,有 tokenizer 试玩工具:
- OpenAI:tiktokenizer.vercel.app 或 platform.openai.com/tokenizer
- Anthropic:
count_tokensAPI - Hugging Face:任何 tokenizer 都能用
AutoTokenizer.from_pretrained(...)加载
贴一段你的文字,直接看模型实际看到哪些 chunk。常常吓到人:
- “strawberry” 在 GPT 的词表是一个 token。所以 GPT 以前常数错字母 r。
- 数字切法很怪 — “1234” 可能是一个 token,但 “12345” 可能拆成 “123” + “45”。
- 结尾的空格有差。”hello” 跟 ” hello”(前面有空格)是不同 token。
- 代码结构前后的空白(
{、},等)常常自己占一个 token,这就是为什么代码的 token 数比字符数推估的还多。
对成本的影响
API 计价以「每百万 tokens」为单位,输入跟输出分开:
- Input token 是你送进去的所有东西:system prompt + 对话历史 + 这次消息。比较便宜。
- Output token 是模型吐出来的。比较贵(通常贵 3-5 倍)。
2026 年常见价格(每百万 tokens):
- Claude Sonnet:约 $3 input,$15 output
- GPT-5:差不多,看 tier 而定
- Gemini 2.5 Pro:便宜些,约 $1-3 input
- DeepSeek V3:超便宜,通常 input 不到 $1
- 自架的 Llama 70B:按 GPU-hour 算,不按 token
这代表 prompt 长度就是你的账单。每次都送 50K tokens 的 system prompt,单位经济学会直接烂。
缓解方式:prompt caching(重复 prefix 便宜 5-10 倍)、缩短 system prompt、用 RAG 取代整个知识库塞进去、简单问题改用便宜模型(也就是 LLM routing)。
对 context window 的影响
模型有 200K context window,这个上限是 token,不是页数。所以:
- 100 页英文文档(约 5 万词 ≈ 65K tokens)轻松塞得下
- 100 页中文文档(约 5 万字 ≈ 75K-100K tokens)勉强塞得下
- 100 页的 Python 项目,看密度差很多
设计 app 时请估 token 预算。不要想「这份文档 5MB」 — 算 token。
对输出速度的影响
模型一个一个 token 生出来。速度的单位是 tokens per second(tps)。
- 前沿 API(像 Claude Sonnet)输出大约 50-80 tps
- 小模型(Haiku、Flash)能到 100-300 tps
- 自架 + vLLM / TensorRT-LLM,7B 模型可以推到 500+ tps
如果用户想要 1,000 tokens 的回答,模型 50 tps 的话,实际墙钟时间是 20 秒。Chat UI 为什么一定要 stream — 就是这个原因,不要等整段生完再显示。
估算速查表
背一下:
- 1 页英文 ≈ 500 词 ≈ 650 tokens
- 1 页中文 ≈ 500 字 ≈ 750-1000 tokens
- 1 个一般用户消息 ≈ 50-200 tokens
- 1 个正式 app 的 system prompt ≈ 500-3000 tokens
- 1 次 RAG(5 个 ~300 tokens 片段)≈ 1500 tokens
- 1 份长 PDF 报告 ≈ 10K-50K tokens
乘以你的月请求量,你就有一个粗估的月成本 — 在你 ship 任何严肃产品前先算一下。
什么时候不需要太计较 token
如果你只是用 chat 产品(ChatGPT、Claude.ai)的月费版,你不是按 token 付钱 — 一个月 $20,公平使用。在这个场景里执着于 token 只是浪费时间。
随意聊天时,你花在优化 prompt 长度的时间,比省下来的 token 钱还贵。
延伸阅读
- 什么是 LLM
- 什么是 context window
- Tokens vs 字数:LLM 计价怎么算
- 为什么 input token 比 output token 便宜
- LLM routing:把简单问题丢给便宜模型