月账单从 $200 砍到 $60,就改了一个 base_url
月账单从 $200 砍到 $60,就改了一个 base_url
结论先说:把 Claude API 请求转到国内中转,配合 Haiku 做分级路由,账单直接打三折。
痛点
我有个内部工具,给团队做代码 review + 文档生成。跑了两个月,Claude Sonnet 的账单涨到 $200+/月。
细看 token 分布,发现问题很明显:
- 80% 的请求是「格式化输出」「补全注释」这类简单任务
- 真正需要 Sonnet 推理能力的不超过 20%
- 但我全部走的
claude-sonnet-4-5,没做任何分级
另外还有个隐性成本:国内访问 Anthropic 官方 API 需要挂代理,CI/CD 环境里配代理很麻烦,偶尔还会超时重试,浪费 token。
具体怎么改的
第一步:换 base_url,解决连通性问题
找了个支持 OpenAI 格式的中转服务,改一行配置:
import anthropic
client = anthropic.Anthropic(
api_key="你的中转 key",
base_url="https://api2everything.xyz/v1",
)
或者用 OpenAI SDK 直接调 Claude(中转做了格式兼容):
from openai import OpenAI
client = OpenAI(
api_key="你的中转 key",
base_url="https://api2everything.xyz/v1",
)
response = client.chat.completions.create(
model="claude-haiku-4-5", # 简单任务走 Haiku
messages=[{"role": "user", "content": "帮我补全这段注释..."}],
)
curl 版本:
curl https://api2everything.xyz/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-haiku-4-5",
"messages": [{"role": "user", "content": "你好"}]
}'
第二步:按任务复杂度分级路由
def get_model(task_type: str) -> str:
routing = {
"format": "claude-haiku-4-5", # 格式化、补全注释
"summary": "claude-haiku-4-5", # 摘要、简单问答
"review": "claude-sonnet-4-5", # 代码 review
"architect":"claude-opus-4-5", # 架构设计(很少用)
}
return routing.get(task_type, "claude-haiku-4-5")
Haiku 比 Sonnet 便宜约 20 倍,把 80% 的简单请求切过去,账单自然就下来了。
改完之后
- 月账单:$200 → ~$60
- CI/CD 里不用再配代理,超时问题消失
- Haiku 处理注释补全的质量完全够用,没有明显退步
唯一要注意的是,分级路由需要在业务层做 task_type 标注,有一点接入成本,但一次性的。
补充
中转服务选的是 无量Api,支持 Claude / GPT / Gemini / DeepSeek 300+ 模型,国内直连,OpenAI 格式兼容。注册送 ¥1,够跑几百次 Haiku 请求,先试试再说。