ANALYSIS
概述
Token(词元)是 AI 模型处理文本的最小单元。理解 Token 对于控制 AI 使用成本和优化输入至关重要。
当你说”你好”时,模型实际处理的不是这 2 个字,而是若干个 Token。理解 Token 的计算方式,能帮助你:
- 准确估算 API 成本
- 优化 Prompt,减少浪费
- 合理规划上下文使用
Token 的基本原理
什么是 Tokenization
Tokenization(分词)是将文本转换为 Token 的过程。
主流 Tokenizer 类型:
| 类型 | 代表模型 | 特点 |
|---|---|---|
| BPE | GPT 系列、ChatGPT | 子词级别,平衡效果好 |
| WordPiece | BERT | 基于词频的子词切分 |
| SentencePiece | 多语言模型 | 无预分词,支持混合语言 |
| Unigram | Llama | 概率模型,更灵活 |
Token 的划分方式
英文 Token:
- 1 个 Token ≈ 4 个英文字符
- 1 个英文单词 ≈ 1-2 个 Token
- “hello world” → 约 2 个 Token
中文 Token:
- 中文 Tokenization 更复杂
- 1 个汉字 ≈ 1-2 个 Token
- “人工智能” → 约 2-4 个 Token
特殊情况:
| 内容 | Token 消耗 | 说明 |
|---|---|---|
| 普通标点 | 1 个 | , . ! ? |
| 空格 | 通常不计 | 部分模型会计入 |
| URL | 可能大量 | 通常被拆分为多个 Token |
| 代码 | 视内容而定 | 缩进、空行也会消耗 |
为什么 Token 很重要
按 Token 计费
大多数 LLM API 按 Token 总数计费:
| 模型 | 输入价格 | 输出价格 | 单位 |
|---|---|---|---|
| GPT-4o | $2.5 | $10 | 每 1M Token |
| GPT-4o-mini | $0.15 | $0.6 | 每 1M Token |
| Claude 3.5 Sonnet | $3 | $15 | 每 1M Token |
| Claude 3 Haiku | $0.25 | $1.25 | 每 1M Token |
成本计算示例:
PRTCL // PLAINTEXT
场景:处理一篇 2000 字的中文文章
Token 估算:2000 × 1.8 = 3600 Token(输入)假设需要生成 1000 字回答:1000 × 1.8 = 1800 Token(输出)总 Token:5400
费用(GPT-4o-mini):输入:5400 / 1,000,000 × $0.15 = $0.00081输出:1800 / 1,000,000 × $0.6 = $0.00108总计:约 $0.002上下文窗口限制
每个模型有最大 Token 限制(Context Window):
| 模型 | 上下文窗口 | 约等于 |
|---|---|---|
| GPT-4o | 128K | 约 10 万汉字 |
| Claude 3.5 | 200K | 约 16 万汉字 |
| Gemini 2.0 Flash | 1M | 约 80 万汉字 |
| Llama-3.1 8B | 128K | 约 10 万汉字 |
| Qwen-7B | 32K | 约 2.5 万汉字 |
超出上下文的代价:
- 无法输入超长内容
- 早期信息可能被”遗忘”
- 需要额外的截断 / 摘要处理
Token 计算方法
精确计算工具
Python(tiktoken):
PRTCL // PYTHON
import tiktoken
# GPT-4/ChatGPT 使用 cl100k_base 编码enc = tiktoken.get_encoding("cl100k_base")tokens = enc.encode("Hello, world!")print(f"Token 数: {len(tokens)}") # 2
# 中文的 Token 数估算chinese_text = "人工智能是未来的发展趋势"tokens_zh = enc.encode(chinese_text)print(f"中文 Token 数: {len(tokens_zh)}") # 通常 6-10 个Python(中文推荐):
PRTCL // PYTHON
# 使用 jina-tokenizerfrom jina import Tokenizertok = Tokenizer()tokens = tok.encode("人工智能")print(f"Token 数: {len(tokens)}") # 约 4 个在线工具
| 工具 | 链接 | 特点 |
|---|---|---|
| OpenAI Tokenizer | platform.openai.com/tokenizer | 官方,可视化 |
| Tokenizer Calculator | tiktokenizer.vercel.app | 快速,支持批量 |
| Llama Tokenizer | huggingface.co/… | Llama 专用 |
估算公式
| 语言 | 公式 | 示例 |
|---|---|---|
| 英文 | Token ≈ 字符数 / 4 | 1000 字符 ≈ 250 Token |
| 中文 | Token ≈ 字数 × 1.5~2.0 | 1000 字 ≈ 1800 Token |
| 混合 | 使用工具精确计算 | — |
Token 与上下文窗口
对话历史的 Token 消耗
PRTCL // PLAINTEXT
对话示例:用户:你好,请介绍一下 Python [50 Token]助手:Python 是一种高级编程语言... [200 Token]用户:它和 Java 有什么区别? [80 Token]助手:Python 和 Java 的区别主要在... [300 Token]
当前对话总 Token:630
上下文窗口:128K可用 Token:128K - 630 = 127,370超长对话的问题
当对话历史超过上下文窗口时:
- 早期消息被截断(丢失上下文)
- 模型”遗忘”之前的讨论
- 回答变得不一致
解决方案
| 方案 | 说明 | 适用场景 |
|---|---|---|
| 摘要压缩 | 定期总结对话历史 | 长对话 |
| 滑动窗口 | 只保留最近 N 条消息 | 资源受限 |
| 分话题对话 | 新话题开启新会话 | 多主题讨论 |
| RAG | 将历史存入外部知识库 | 需要参考历史 |
成本优化策略
Prompt 精简
| 优化方法 | 效果 | 示例 |
|---|---|---|
| 删除冗余描述 | 减少输入 Token | ”请帮我” → 直接描述任务 |
| 使用缩写 | 减少字符 | ”Machine Learning” → “ML” |
| 移除格式标记 | 减少辅助内容 | 移除多余空行 |
| 合并请求 | 减少重复上下文 | 多个问题合并为一个 |
模型选择
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 简单问答 | GPT-4o-mini | 便宜 90% |
| 代码生成 | GPT-4o | 能力更强 |
| 长文本总结 | Claude 3.5 | 上下文更长 |
| 创意写作 | GPT-4o | 质量更高 |
缓存策略
| 策略 | 说明 | 节省比例 |
|---|---|---|
| 系统提示缓存 | 固定系统提示只传一次 | 取决于系统提示长度 |
| 对话摘要 | 定期压缩历史 | 取决于压缩比 |
| 结果复用 | 相似问题用缓存 | 取决于重复率 |
输出控制
PRTCL // PYTHON
# 方法 1:限制 max_tokensresponse = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "写一篇 500 字文章"}], max_tokens=1000 # 限制输出长度)
# 方法 2:在 Prompt 中明确字数"请用不超过 200 字回答"Token 与模型能力的关系
| Token 数 | 典型场景 | 模型能力 |
|---|---|---|
| < 2K | 简单问答、翻译 | 单轮简单任务 |
| 8K | 邮件撰写、代码片段 | 中等长度任务 |
| 32K | 文档分析、短篇文章 | 较复杂任务 |
| 128K | 书籍总结、代码库分析 | 复杂长程任务 |
| 200K+ | 多文档对比、长篇小说 | 超长上下文任务 |
常见问题
| 问题 | 解答 |
|---|---|
| 为什么中文 Token 数比英文多? | 中文一个字符就是一个词根,不像英文有空格分词 |
| URL 消耗多少 Token? | 取决于 URL 长度,通常几十到上百个 Token |
| 表格消耗 Token 吗? | 消耗,转换为文本后按字符计 |
| 代码注释计 Token 吗? | 计入,所有文本都计 Token |
| max_tokens 和 Token 总数是一回事吗? | 不是,max_tokens 限制输出,Token 总数 = 输入 + 输出 |
总结
理解 Token 是高效使用 AI 的基础。它决定了你能输入多少内容、花多少钱、处理多复杂的任务。掌握 Token 的概念,能帮你更好地规划 AI 应用的成本和效果。
关于我
| 项目 | 内容 |
|---|---|
| 编辑 | echowang |
| 来源 | echospace |
| 邮箱 | echohaoran@gmail.com |
| 简介 | AI 爱好者,专注于大语言模型应用与智能体开发,分享技术与实践心得 |
| 社交 | 欢迎交流讨论,共同成长 |
R P
Rhine Lab Pioneer Division
Auth_Verified: 2026.03.21
Auth_Verified: 2026.03.21
