月花 200 刀调 Claude 的我,改了一行代码后现在只花 60
月花 200 刀调 Claude 的我,改了一行代码后现在只花 60
结论先说:把 base_url 换掉,同样的代码、同样的模型,账单直接砍到三分之一。
痛点
我有个每天跑的 pipeline,大概流程是:拉数据 → 调 Claude 做结构化抽取 → 写库。
跑了两个月,某天看账单,$200+。细看了一下,问题很集中:
1. 所有请求都走 claude-3-5-sonnet,包括一些根本不需要强模型的预处理步骤
2. 没有做 prompt caching,同一段 system prompt 每次都在重复计费
3. 国内访问官方 API 要挂代理,偶尔超时重试,token 白烧
这三个问题叠在一起,账单就很难看。
怎么改的
第一步:换 base_url
我现在用的是国内的中转服务,OpenAI 格式兼容,改一行就行:
from anthropic import Anthropic
client = Anthropic(
api_key="你的key",
base_url="https://api2everything.xyz/v1", # 改这一行
)
不用动其他任何代码。模型名、参数、响应格式全部一样。
第二步:按任务选模型
原来图省事全用 sonnet,现在按复杂度分流:
TASK_MODEL_MAP = {
"extract_fields": "claude-haiku-4-5", # 简单抽取,便宜 20 倍
"summarize": "claude-haiku-4-5",
"reasoning": "claude-sonnet-4-5", # 需要推理才上
"final_review": "claude-opus-4-5", # 只有最终校验用
}
def call_claude(task: str, prompt: str) -> str:
model = TASK_MODEL_MAP[task]
resp = client.messages.create(
model=model,
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return resp.content[0].text
Haiku 处理简单任务完全够用,速度还更快。
第三步:system prompt 复用
如果你的 system prompt 很长(比如带了大量背景文档),可以把它固定下来,走 cache:
resp = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system=[
{
"type": "text",
"text": "你的长 system prompt...",
"cache_control": {"type": "ephemeral"}, # 开启缓存
}
],
messages=[{"role": "user", "content": user_input}],
)
cache hit 之后,cached token 费用是原价的 10%,长 prompt 场景省得很明显。
改完之后的账单
| 改动 | 节省比例 |
|------|----------|
| 换中转(比官方便宜约 65%) | ~65% |
| Haiku 替换 Sonnet 处理简单任务 | 再砍 60%+ |
| Prompt caching | 视 prompt 长度,10-30% |
三个叠加,$200 → $55 左右,现在稳定在这个区间。
顺带说一下
中转服务我用的是 无量Api,支持 Claude / GPT / Gemini / DeepSeek 等 300+ 模型,国内直连不用挂代理,注册送 ¥1 够先跑几百个请求试试手感。
余额永久有效,不用担心月底清零。