4点51分,我看着API账单上那串数字。世界上有一种痛叫Token太贵,就像你打车去隔壁小区——不是去不起,而是不值当。
而Token Optimization,就是那个让你花最少的钱,办最多事的魔法。
💸 Token成本解析
📊 GPT-4 定价(2026年)
| 模型 | 输入Token价格 | 输出Token价格 |
|---|---|---|
| GPT-4 Turbo | $0.01 / 1K tokens | $0.03 / 1K tokens |
| GPT-4o | $0.005 / 1K tokens | $0.015 / 1K tokens |
| Claude 3 Opus | $0.015 / 1K tokens | $0.075 / 1K tokens |
月成本 = (输入Token数 × 输入单价 + 输出Token数 × 输出单价) × 调用次数
示例计算:
# 场景:每天调用100次GPT-4o 每天输入Token:500 tokens × 100次 = 50,000 tokens 每天输出Token:300 tokens × 100次 = 30,000 tokens 每天成本: = (50,000 × $0.005/1K) + (30,000 × $0.015/1K) = $0.25 + $0.45 = $0.70 每月成本:$0.70 × 30 = $21 # 如果优化后减少40% Token: 新成本:$21 × 0.6 = $12.6 每月节省:$8.4 💰
🔧 优化技巧1:Prompt压缩
问题:啰嗦的Prompt
# 优化前(啰嗦版)
prompt = f"""
你好!我是一个AI助手。我现在需要你帮我完成一个任务。
这个任务是关于分析一段文本的。
文本内容如下:
{text}
请你仔细分析这段文本,然后给我一个详细的总结。
总结需要包含以下几个方面:
1. 主要观点
2. 重要细节
3. 可能的结论
谢谢你的帮助!
"""
# Token数:约250 tokens
# 成本:$0.00125(输入)
优化后:简洁版
# 优化后(简洁版)
prompt = f"""
分析以下文本,总结主要观点、重要细节和结论:
{text}
"""
# Token数:约80 tokens
# 成本:$0.0004(输入)
# 节省:68% 💰
💡 周星驰式吐槽: 就像你约女神吃饭,不用从"今天天气真好"聊到"你觉得人生意义是什么"。直接说"吃饭去?"就行!
🔧 优化技巧2:Context缓存
如果多次对话都使用相同的Context(如系统提示词、背景知识),可以缓存起来。
import hashlib
import json
class ContextCache:
def __init__(self):
self.cache = {}
def get_cache_key(self, context):
"""生成缓存key"""
context_str = json.dumps(context, sort_keys=True)
return hashlib.md5(context_str.encode()).hexdigest()
def get_or_compute(self, context, compute_fn):
"""获取缓存或计算"""
key = self.get_cache_key(context)
if key in self.cache:
print("✅ 缓存命中!")
return self.cache[key]
print("❌ 缓存未命中,计算...")
result = compute_fn(context)
self.cache[key] = result
return result
# 使用示例
cache = ContextCache()
def expensive_llm_call(context):
"""模拟昂贵的LLM调用"""
# 实际中这里会调用API
return f"LLM结果:{context}"
# 第一次调用(未缓存)
result1 = cache.get_or_compute("系统提示词 + 背景知识", expensive_llm_call)
# 第二次调用(命中缓存)
result2 = cache.get_or_compute("系统提示词 + 背景知识", expensive_llm_call)
# 节省了一次API调用!💰
🔧 优化技巧3:选择合适模型
📋 模型选择策略
- 简单任务(分类、提取): 用GPT-3.5或开源模型
- 中等任务(总结、翻译): 用GPT-4o
- 复杂任务(推理、创作): 用GPT-4 Turbo
- 超长文本: 用Claude 3(200K context)
# 根据任务复杂度选择模型
def select_model(task_type, text_length):
"""智能选择模型"""
if task_type == "simple":
if text_length < 2000:
return "gpt-3.5-turbo" # 最便宜
else:
return "gpt-4o" # 支持长文本
elif task_type == "medium":
return "gpt-4o" # 性价比高
elif task_type == "complex":
if text_length > 50000:
return "claude-3-opus" # 超大context
else:
return "gpt-4-turbo" # 最强推理
else:
return "gpt-4o" # 默认
# 使用
model = select_model("medium", len(text))
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}]
)
📈 优化效果对比
📊 实际案例:新闻摘要服务
| 优化策略 | 平均Token数 | 单次成本 | 月成本(1万次) |
|---|---|---|---|
| 优化前 | 1,500 tokens | $0.0225 | $225 |
| + Prompt压缩 | 900 tokens | $0.0135 | $135 |
| + Context缓存 | 600 tokens | $0.009 | $90 |
| + 模型选择 | 500 tokens | $0.0025 | $25 |
| 总节省 | 67% | 89% | $200/月 💰 |