月账单从 $200 砍到 $60,就改了一个 base_url
月账单从 $200 砍到 $60,就改了一个 base_url
结论先说:把 Claude API 请求转到国内中转,配合模型降级策略,账单直接打三折。
痛点
我有个每天跑的代码审查 bot,用的 claude-3-5-sonnet,上个月账单 $214。
拆开看:
- 70% 的请求是"这段代码有没有明显 bug"这种简单判断
- 20% 是稍微复杂的重构建议
- 只有 10% 真的需要 Sonnet 级别的推理
但因为懒,全部打到同一个模型。钱就这么烧掉了。
另外一个问题:国内直连 Anthropic 不稳,隔三差五超时,bot 报错我还得半夜爬起来看日志。
怎么改的
第一步:换 base_url,解决连通性
找了个支持 OpenAI 格式的中转,改一行:
import anthropic
client = anthropic.Anthropic(
api_key="你的中转 key",
base_url="https://api2everything.xyz/v1",
)
或者如果你用 openai 库直接调 Claude:
from openai import OpenAI
client = OpenAI(
api_key="你的中转 key",
base_url="https://api2everything.xyz/v1",
)
response = client.chat.completions.create(
model="claude-3-5-sonnet-20241022",
messages=[{"role": "user", "content": "review this code: ..."}],
)
格式完全兼容,原来怎么写现在还怎么写。
第二步:按复杂度路由模型
简单判断走 claude-3-haiku,复杂任务才上 Sonnet。Haiku 比 Sonnet 便宜大概 20 倍,速度还更快。
def get_model(task_type: str) -> str:
routing = {
"simple_check": "claude-3-haiku-20240307",
"refactor": "claude-3-5-sonnet-20241022",
"architecture": "claude-3-5-sonnet-20241022",
}
return routing.get(task_type, "claude-3-haiku-20240307")
def review_code(code: str, task_type: str = "simple_check"):
response = client.chat.completions.create(
model=get_model(task_type),
messages=[
{"role": "system", "content": "You are a code reviewer."},
{"role": "user", "content": f"Review:\n{code}"},
],
max_tokens=512,
)
return response.choices[0].message.content
第三步:控 max_tokens
之前没设 max_tokens,模型有时候回一大段废话。加个上限,简单任务 256 够了,账单又砍一刀。
改完之后
| | 改之前 | 改之后 |
|---|---|---|
| 月账单 | ~$214 | ~$58 |
| 超时率 | 偶发 | 基本没有 |
| 代码改动 | — | 3 行 |
70% 的请求现在走 Haiku,剩下的才上 Sonnet。效果没有明显差异,毕竟"这里有个空指针"不需要 Sonnet 来发现。
用的中转
我用的是 无量 API(api2everything.xyz),支持 Claude / GPT / Gemini / DeepSeek 300+ 模型,国内直连,OpenAI 格式兼容。注册送 ¥1,够试很久,余额永久不过期。
有类似账单问题的可以试试,改动成本几乎为零。