"凌晨3点27分,我看着账单上的数字,终于理解了什么叫'知识就是金钱'——原来每个Token都是钱啊。"
Token优化(Token Optimization)是指通过各种技术手段减少LLM调用中的Token消耗,从而降低成本、提高响应速度的技术。
Token就像时间的刻度。每一次API调用,都在消耗你账户里的"时间"。优化Token,就是让你的Agent在有限的"时间"里,做更多的事情。
就像《重庆森林》里说的:"每天你都有机会跟别人擦身而过,你也许对他一无所知,不过也许有一天他会变成你的朋友或者是知己。"Token也是这样,每一个都可能是成本,也可能是价值。
| 概念 | 说明 | 示例 |
|---|---|---|
| Token | 文本的基本单位 | "Hello world" = 2 tokens |
| 输入Token | 发送给模型的Token | Prompt + Context |
| 输出Token | 模型生成的Token | Response |
| 上下文窗口 | 模型能处理的最大Token数 | GPT-4: 128K tokens |
不同模型的Token计算方式略有不同:
# OpenAI Token计算
import tiktoken
def count_tokens(text, model="gpt-4"):
encoding = tiktoken.encoding_for_model(model)
return len(encoding.encode(text))
# 示例
text = "你好,世界!"
tokens = count_tokens(text)
print(f"'{text}' = {tokens} tokens")
# Claude Token计算(近似)
def count_tokens_claude(text):
# Claude使用不同的分词器
# 近似:1个中文字符 ≈ 2 tokens
chinese_chars = len([c for c in text if '\u4e00' <= c <= '\u9fff'])
english_chars = len(text) - chinese_chars
return chinese_chars * 2 + english_chars // 4
减少Prompt中的冗余信息:
# ❌ 冗余写法
prompt = """
请帮我分析这段代码,并且告诉我这段代码有什么问题,
然后给出修复建议,最后总结一下。
"""
# ✅ 优化写法
prompt = "分析代码,指出问题,给出修复建议。"
只保留相关的上下文信息:
def trim_context(messages, max_tokens=4000):
"""裁剪上下文到指定Token数"""
total_tokens = 0
trimmed = []
# 从最新的消息开始保留
for msg in reversed(messages):
msg_tokens = count_tokens(msg['content'])
if total_tokens + msg_tokens > max_tokens:
break
trimmed.insert(0, msg)
total_tokens += msg_tokens
return trimmed
缓存重复的查询结果:
from functools import lru_cache
import hashlib
@lru_cache(maxsize=1000)
def cached_llm_call(prompt_hash):
"""缓存LLM调用结果"""
# 实际的LLM调用
return call_llm(prompt_hash)
def get_cached_response(prompt):
prompt_hash = hashlib.md5(prompt.encode()).hexdigest()
return cached_llm_call(prompt_hash)
将多个请求合并为一次调用:
# ❌ 多次调用
for item in items:
result = llm_call(f"分析: {item}")
# ✅ 批处理调用
batch_prompt = "分析以下项目:\n" + "\n".join(
f"{i+1}. {item}" for i, item in enumerate(items)
)
results = llm_call(batch_prompt)
OpenClaw内置了多种Token优化机制:
# openclaw.config.js - Token优化配置
module.exports = {
tokenOptimization: {
// 上下文压缩
contextCompression: {
enabled: true,
strategy: 'smart', // 'smart' | 'sliding' | 'summary'
maxTokens: 8000
},
// 缓存
cache: {
enabled: true,
ttl: 3600, // 1小时
maxSize: 1000
},
// 模型路由
modelRouting: {
simple: 'gpt-3.5-turbo',
complex: 'gpt-4',
code: 'claude-3-opus'
},
// Token预算
budget: {
perSession: 100000,
perDay: 1000000,
alertThreshold: 0.8
}
}
}
每百万输入Token
每百万输入Token
每百万输入Token
通过Token优化,通常可以减少30-60%的成本。就像你学会了做饭,比点外卖省钱多了。