月花 $200 调 Claude 的我,改了一行代码后账单直接砍掉 70%
月花 $200 调 Claude 的我,改了一行代码后账单直接砍掉 70%
结论先说:把 base_url 换掉,同样的代码跑同样的模型,费用能省 60%+。
痛点
我有个内部工具,每天跑几千次 Claude 请求——文档摘要、代码 review、日志分类。上个月账单 $210,看着有点肉疼。
更烦的是:Anthropic 官方在国内访问不稳定,代理时不时抽风,CI/CD 里偶尔超时报错,排查半天发现是网络问题不是代码问题。
排查账单的过程
翻了一下日志,发现几个问题:
1. 模型选错了:大量摘要任务在用 claude-3-5-sonnet,其实 claude-haiku-3-5 完全够用,价格差 5 倍
2. max_tokens 给太高:默认写了 4096,实际输出平均 300 token,白白计费
3. 没做缓存:同一段系统 prompt 每次都重新发,prompt cache 没开
这三个问题加一起,账单虚高不是一点点。
具体操作
第一步:换 base_url
原来的代码:
import anthropic
client = anthropic.Anthropic(api_key="sk-ant-xxx")
改成:
import anthropic
client = anthropic.Anthropic(
api_key="你的中转 key",
base_url="https://api.api2everything.xyz"
)
就这一行,其他代码不动。OpenAI SDK 同理,改 base_url 就行。
第二步:摘要任务降级到 Haiku
response = client.messages.create(
model="claude-haiku-3-5", # 从 sonnet 换成 haiku
max_tokens=512, # 按实际需求收紧,别给 4096
messages=[{"role": "user", "content": doc_text}]
)
Haiku 处理摘要、分类、简单问答完全够用,sonnet 留给真正需要推理的任务。
第三步:开 prompt cache(长系统 prompt 必开)
response = client.messages.create(
model="claude-haiku-3-5",
max_tokens=512,
system=[
{
"type": "text",
"text": "你是一个文档摘要助手,输出 JSON 格式...",
"cache_control": {"type": "ephemeral"} # 加这个
}
],
messages=[{"role": "user", "content": doc_text}]
)
系统 prompt 超过 1024 token 时,cache hit 能省 90% 的 input token 费用。
一个可以直接跑的 curl
curl https://api.api2everything.xyz/v1/messages \
-H "x-api-key: 你的key" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-haiku-3-5",
"max_tokens": 256,
"messages": [{"role": "user", "content": "用一句话总结:API 费用优化的核心是什么"}]
}'
结果
同样的工作量,这个月账单大概在 $55 左右。主要省在:
- 模型降级:省了约 60%
- max_tokens 收紧:省了约 15%
- prompt cache:省了约 10%
- 中转比官方便宜:再省一截
我用的中转是 api2everything.xyz,支持 Claude / GPT / Gemini / DeepSeek 300+ 模型,国内直连不用挂代理,注册送 ¥1 够试很久。改一行 base_url 的事,不妨试试。