Skip to content
广告 · 本站推荐广告

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-minio200k_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.md

Token 用量估算

单次对话的 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

基于MIT协议开源 | 内容翻译自 官方文档,同步更新