什么是 Token?
Token 是大型语言模型(LLM)处理文本的基本单位。模型不会直接理解单词或字符,而是将文本拆分为一系列 token 来处理。一个 token 可以是一个完整的单词(如 hello),也可以是单词的一部分(如 un + believ + able),甚至是单个字符或标点符号。
对于中日韩(CJK)字符,每个字符通常会被编码为 1-2 个 token,因此同样语义的中文文本通常比英文消耗更多 token。
Token 示例
| 文本 | 大约 Token 数 | 说明 |
|---|---|---|
Hello world | 2 | 常见英文单词各占 1 token |
你好世界 | 4 | 每个汉字约 1-2 token |
unbelievable | 3 | 长单词被拆分为子词 |
ChatGPT is amazing! | 5 | 专有名词可能被拆分 |
const x = 42; | 5 | 代码中符号和数字各占 token |
https://example.com/path | 7-9 | URL 会被拆分为多个 token |
各模型 Token 限制与定价
以下是 2026 年主流 AI 模型的上下文窗口大小和 API 定价参考(每百万 token 价格,美元):
| 模型 | 上下文窗口 | 输入价格 / 1M | 输出价格 / 1M |
|---|---|---|---|
| GPT-4o | 128K | $2.50 | $10.00 |
| GPT-4 Turbo | 128K | $10.00 | $30.00 |
| GPT-3.5 Turbo | 16K | $0.50 | $1.50 |
| Claude 3.5 Sonnet | 200K | $3.00 | $15.00 |
| Claude 3 Opus | 200K | $15.00 | $75.00 |
| Claude 3 Haiku | 200K | $0.25 | $1.25 |
| Gemini 1.5 Pro | 1M | $1.25 | $5.00 |
| Gemini 1.5 Flash | 1M | $0.075 | $0.30 |
| Llama 3.1 405B | 128K | 因服务商而异 | |
| Llama 3.1 70B | 128K | 因服务商而异 | |
Tokenization(分词)的工作原理
现代 LLM 大多使用 BPE(Byte Pair Encoding,字节对编码) 或其变体来将文本转化为 token。BPE 的核心思路是:
- 从字节开始:最初将每个字节视为一个独立的 token。
- 迭代合并:统计所有相邻 token 对的出现频率,将最频繁的一对合并为一个新 token。
- 重复直到词表达标:不断合并,直到词表大小达到预设上限(如 cl100k_base 有约 10 万个 token)。
不同模型使用不同的 tokenizer:
- OpenAI GPT-4/4o:使用
cl100k_base编码器,词表约 10 万 token。 - Anthropic Claude:使用自研 tokenizer,性能与 cl100k_base 类似,对自然语言效率略高。
- Google Gemini:使用 SentencePiece tokenizer,对多语言优化,CJK 效率稍好。
- Meta Llama 3:使用基于 BPE 的 tokenizer,词表约 12.8 万 token。
本工具使用启发式算法对 token 数量进行近似估算。如需精确计数,请使用各模型官方的 tokenizer 库(如 OpenAI 的 tiktoken)。
减少 Token 消耗的实用技巧
- 精简提示词:去掉冗余的措辞和重复说明。直接、简洁的 prompt 消耗更少 token,效果往往更好。
- 使用系统消息:将固定的背景指令放在 system message 中,避免在每次对话中重复。
- 控制输出长度:通过
max_tokens参数限制回复长度,或在 prompt 中明确要求简短回答。 - 避免大段代码:只粘贴相关的代码片段,而不是整个文件。代码通常 2-3 字符消耗 1 个 token,效率较低。
- 利用摘要压缩:对于长对话,定期让模型总结之前内容,用摘要替代完整历史。
- 选择合适的模型:简单任务使用 GPT-3.5 或 Claude Haiku 等性价比高的模型,复杂推理再用 GPT-4o 或 Claude Opus。
相关工具
- 文本高级统计 — 字符数、词频、可读性评分等
- AI API 价格对比 — 各大模型 API 定价一览
- AI 模型对比 — 各模型能力、上下文、速度横向比较