月账单从 $180 掉到 $55,就改了一个 base_url
月账单从 $180 掉到 $55,就改了一个 base_url
结论先说:把 Claude API 请求转到国内中转,配合 Haiku 做分级路由,账单直接砍掉 70%。
痛点
我有个内部工具,给团队做代码 review 和文档生成。跑了两个月,Claude Sonnet 的账单涨到 $180/月。
细看 token 分布,发现问题很明显:
- 80% 的请求是"格式化输出"、"补全注释"这类简单任务
- 这些任务全在用 Sonnet,完全是杀鸡用牛刀
- 加上国内访问 Anthropic 官方 API 要挂代理,偶尔超时重试,token 浪费不少
两个问题:模型选错了,链路不稳定导致重试成本。
怎么改的
第一步:换 base_url,解决稳定性
把官方 endpoint 换成国内中转,延迟从 800ms 降到 150ms 以内,重试率基本归零。
import anthropic
client = anthropic.Anthropic(
api_key="你的中转 key",
base_url="https://api.api2everything.xyz/v1", # 改这一行
)
# 其他代码完全不动
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "帮我 review 这段代码"}],
)
就这一行,官方 SDK 完全兼容,不用改任何业务逻辑。
第二步:按任务复杂度分级路由
简单任务走 Haiku,复杂任务才上 Sonnet。价格差大概是 1:20。
def get_model_for_task(task_type: str) -> str:
"""按任务类型选模型,省钱的核心逻辑"""
cheap_tasks = {
"format", # 格式化
"comment", # 补全注释
"rename", # 变量命名
"lint_fix", # 简单 lint 修复
}
if task_type in cheap_tasks:
return "claude-haiku-4-5" # 便宜 ~20x
return "claude-sonnet-4-5" # 复杂推理才用
def review_code(code: str, task_type: str = "review"):
model = get_model_for_task(task_type)
response = client.messages.create(
model=model,
max_tokens=512 if "haiku" in model else 2048,
messages=[{"role": "user", "content": f"任务:{task_type}\n\n{code}"}],
)
return response.content[0].text
跑了一周统计下来,80% 的请求落到了 Haiku,Sonnet 只处理真正需要推理的部分。
改完之后的账单
| 项目 | 改前 | 改后 |
|------|------|------|
| 主力模型 | Sonnet 100% | Haiku 80% + Sonnet 20% |
| 月均 token | ~4M | ~4M(没变) |
| 月账单 | $180 | $55 |
| 超时重试 | 偶发 | 基本没有 |
token 用量没变,省的全是"用错模型"和"重试浪费"的钱。
顺带一提
中转平台支持 300+ 模型,OpenAI / Claude / Gemini / DeepSeek 都有,格式统一是 OpenAI 兼容,切模型只改 model 参数名。
我用的是 api2everything.xyz,注册送 ¥1,够跑几百次 Haiku 请求,试试水没什么成本。比官方便宜 65% 左右,SVIP 还有 7.7 折,量大的话值得算一下。
有类似账单问题的可以聊,欢迎分享你们的分级策略。