Token 用量
Token(词元)是大语言模型处理文本的基本单位。理解 Token 计数与优化对控制 API 成本和提升响应速度至关重要。
什么是 Token
Token 是 LLM 的文本分词单元。一个 Token 可以是一个词、一个子词或一个字符,取决于分词器(Tokenizer)的实现。
| 语言 | 近似比例 |
|---|---|
| 英文 | 1 Token ≈ 0.75 个单词 |
| 中文 | 1 Token ≈ 0.5-1.5 个汉字 |
| 代码 | 1 Token ≈ 3-4 个字符 |
中文 Token 成本
中文文本通常比等量英文消耗更多 Token。同一段话的中文版本 Token 数可能是英文版的 1.5-3 倍。
各模型的 Token 计数
不同模型使用不同的分词器:
| 模型系列 | 分词器 | 特点 |
|---|---|---|
| GPT-4o / GPT-4o-mini | o200k_base | 对中文优化较好 |
| Claude 3.x | 自定义 BPE | 中英文平衡 |
| DeepSeek | 自定义 | 对中文友好,Token 效率高 |
| 通义千问 | 自定义 | 中文 Token 效率最优 |
Token 计数工具
bash
# 使用 OpenClaw CLI 估算 Token 数
openclaw tokens count "你好,请帮我查一下订单状态"
# 指定模型
openclaw tokens count --model gpt-4o "Hello, world!"
# 从文件计数
openclaw tokens count --file ./prompts/system.mdToken 用量估算
单次对话的 Token 消耗
总消耗 = 系统提示词 Token + 上下文历史 Token + 用户消息 Token + 模型输出 Token| 组件 | 典型 Token 数 |
|---|---|
| 系统提示词(System Prompt) | 500 - 3000 |
| 工作区文件(AGENTS.md 等) | 200 - 2000 |
| 工具定义(Tool Definitions) | 100 - 1000 / 每个工具 |
| 对话历史 | 持续增长 |
| 用户消息 | 20 - 500 |
| 模型输出 | 50 - 2000 |
隐藏成本
系统提示词和工具定义在每次调用中都会消耗 Token。即使用户只发了一句话,系统提示词的 Token 也要计费。
上下文窗口利用
每个模型有固定的上下文窗口(Context Window)大小:
┌─────────────────────────────────────────┐
│ 上下文窗口(128K Tokens) │
│ │
│ ┌─────────────────┐ │
│ │ 系统提示词 ~2000 │ │
│ ├─────────────────┤ │
│ │ 工具定义 ~1000 │ │
│ ├─────────────────┤ │
│ │ │ │
│ │ 对话历史 │ ← 占比最大,持续增长│
│ │ │ │
│ ├─────────────────┤ │
│ │ 用户消息 ~200 │ │
│ └─────────────────┘ │
│ ↕ │
│ 剩余空间用于模型输出 │
└─────────────────────────────────────────┘Token 优化建议
1. 精简系统提示词
markdown
<!-- ❌ 冗长 -->
你是一个非常有帮助的、友好的、专业的客服助手,你总是会尽最大努力帮助用户...
<!-- ✅ 精炼 -->
你是客服助手。简洁回答,查询订单时使用 order_query 工具。2. 启用会话压缩
yaml
session:
compaction:
enabled: true
threshold: 4000 # Token 超过阈值时自动压缩早期对话
strategy: 'summary'3. 限制工具定义
只给 Agent 必要的工具,减少工具定义的 Token 开销:
yaml
agents:
- name: simple-bot
tools:
include: [knowledge_search] # 仅加载需要的工具4. 控制输出长度
yaml
model:
maxTokens: 512 # 限制模型最大输出 Token 数5. 利用 Prompt 缓存
启用 Prompt Caching(提示缓存)避免重复计算系统提示词。详见 Prompt 缓存。
监控 Token 使用
bash
# 查看实时 Token 消耗
openclaw usage tokens --live
# 按 Agent 查看 Token 统计
openclaw usage tokens --by agent --period today
# 导出详细日志
openclaw usage export --format csv --output tokens.csv