月花 200 刀调 Claude 的我,改了一行配置后现在只花 70
月花 200 刀调 Claude 的我,改了一行配置后现在只花 70
结论先说:把 Base URL 换成中转,同样的代码、同样的模型,账单直接打三折。
背景
最近两个月一直在用 Claude Sonnet 做代码 review 和文档生成,跑了个小工具每天自动处理几百个文件。账单从 50 刀涨到 150,上个月直接到了 210 刀。
问题不在于"用多了",是没意识到自己在哪里浪费:
- 所有请求都走 claude-3-5-sonnet,包括那些只需要判断 yes/no 的逻辑
- context window 没控制,每次都把完整历史塞进去
- 官方 API 没有 cache,重复的 system prompt 每次都算钱
操作一:换 Base URL,代码零改动
找了个支持 OpenAI 格式的中转服务,改的地方就一行:
from openai import OpenAI
client = OpenAI(
api_key="你的中转 key",
base_url="https://api2everything.xyz/v1" # 改这里
)
response = client.chat.completions.create(
model="claude-sonnet-4-5", # 模型名不变
messages=[{"role": "user", "content": "帮我 review 这段代码"}]
)
curl 版本:
curl https://api2everything.xyz/v1/chat/completions \
-H "Authorization: Bearer 你的key" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"messages": [{"role": "user", "content": "hello"}]
}'
格式完全兼容,LangChain / LlamaIndex / 自己封的 wrapper 都不用动。
操作二:按任务选模型,不要一律上旗舰
这个才是真正省钱的地方。我现在的分层逻辑:
| 任务类型 | 原来用的 | 现在用的 | 费用变化 |
|---|---|---|---|
| 复杂推理、代码生成 | claude-sonnet-4-5 | claude-sonnet-4-5 | 不变 |
| 简单分类、格式化 | claude-sonnet-4-5 | claude-haiku-4-5 | 降 ~90% |
| 摘要、抽取字段 | claude-sonnet-4-5 | gemini-flash-2.0 | 降 ~85% |
Haiku 处理简单任务的准确率和 Sonnet 差距极小,但价格是 1/20。
代码层面加个 router 函数:
def pick_model(task_type: str) -> str:
if task_type in ("classify", "format", "extract"):
return "claude-haiku-4-5"
elif task_type == "summarize":
return "gemini-flash-2.0"
else:
return "claude-sonnet-4-5"
操作三:控制 context,别把历史全塞进去
多轮对话场景里,context 长度是费用的直接乘数。简单策略:
MAX_HISTORY = 6 # 只保留最近 3 轮
def trim_messages(messages: list) -> list:
system = [m for m in messages if m["role"] == "system"]
history = [m for m in messages if m["role"] != "system"]
return system + history[-MAX_HISTORY:]
对于我的场景,这一步单独砍掉了 30% 的 token 消耗。
最终账单对比
| | 改之前 | 改之后 |
|---|---|---|
| 月均费用 | ~$200 | ~$65 |
| 代码改动 | - | base_url + model router + context trim |
三个改动加起来两小时,之后每个月省 130 刀。
我用的中转是 api2everything.xyz,支持 Claude / GPT / Gemini / DeepSeek 300+ 模型,OpenAI 格式兼容。注册送 ¥1,够试很久。余额永久不过期,不用担心充了用不完。