月花 200 刀调 Claude 的我,改了一行代码后现在只花 60
月花 200 刀调 Claude 的我,改了一行代码后现在只花 60
结论先说:把 base_url 换掉,账单直接砍到三分之一。
背景
我司内部有个 RAG pipeline,每天跑几千条文档摘要 + 问答,主力模型是 Claude 3.5 Sonnet。上个月账单出来,$214,我盯着看了好几秒。
问题不是用量大,是用错了地方:
1. 直连 Anthropic 官网,国内访问偶尔超时,代码里加了 retry,反而多花了 token
2. 所有请求都走 Sonnet,其实摘要任务根本不需要这个级别
3. 没做 prompt caching,同一段 system prompt 每次都重新计费
这三个问题,前两个改起来 10 分钟,第三个稍微麻烦一点。
具体怎么改
第一步:换 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", # 改这一行
)
SDK 完全兼容,其他代码一行不动。OpenAI SDK 同理,改 base_url 就行。
第二步:按任务选模型
摘要、分类、打标签这类任务,用 claude-haiku-3-5 完全够用,价格是 Sonnet 的 1/5 左右。
我的做法是加一个简单的路由:
def get_model(task_type: str) -> str:
heavy_tasks = {"reasoning", "code_review", "complex_qa"}
if task_type in heavy_tasks:
return "claude-sonnet-4-5"
return "claude-haiku-3-5" # 默认走便宜的
def call_llm(prompt: str, task_type: str = "summary"):
model = get_model(task_type)
response = client.messages.create(
model=model,
max_tokens=1024,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
摘要任务全切 Haiku 之后,这部分费用直接掉了 80%。
第三步:验证一下没问题
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": 64,
"messages": [{"role": "user", "content": "ping"}]
}'
返回正常就说明链路通了,然后跑一下你自己的 smoke test。
结果
改完之后跑了两周:
- 摘要任务:Haiku 替换 Sonnet,费用 -80%
- 中转价格本身比官方便宜约 65%,SVIP 还有 7.7 折
- 国内直连,超时 retry 少了,实际 token 消耗也降了
两周账单大概 $38,折合人民币不到 280。之前一个月 $214。
补一句
模型路由这个思路不复杂,很多人没做只是因为懒得拆任务类型。其实大部分 pipeline 里,真正需要强模型的请求占比不超过 20%,剩下的全可以用便宜模型顶上。
我用的中转是 api2everything.xyz,支持 300+ 模型,OpenAI / Claude / Gemini / DeepSeek 都有,注册送 ¥1 够试很久,余额永久不过期。有兴趣的可以去看看。