月账单从 $200 砍到 $60,我只改了两处配置
月账单从 $200 砍到 $60,我只改了两处配置
结论先说:把 Claude Opus 换成 Haiku + 开 prompt caching,账单直接掉到三分之一。
背景
我在做一个文档处理的小工具,核心是 Claude 做长文本理解。刚开始图省事,全链路都跑 claude-opus-4,上个月账单 $196,看了一眼心里一凉。
仔细 breakdown 了一下账单,发现两个问题:
1. 90% 的调用是分类和摘要任务,根本用不着 Opus 的推理能力
2. 每次请求都在重复发 system prompt,那是一段 2000 token 的指令,每次都计费
操作一:模型降级 + 分流
Haiku 的定价大概是 Opus 的 1/20,速度还更快。对于我的场景——批量跑文档分类、抽关键字——Haiku 完全够用。
改法很简单,加一个 model 路由参数:
def call_claude(prompt, task_type="classify"):
model = "claude-haiku-4-5" if task_type in ("classify", "summary") else "claude-opus-4"
response = client.messages.create(
model=model,
max_tokens=512,
messages=[{"role": "user", "content": prompt}]
)
return response.content[0].text
只有真正需要复杂推理的任务才走 Opus,其他全走 Haiku。
操作二:开 Prompt Caching
这个是 Anthropic 官方支持的功能,把固定不变的 system prompt 标记为可缓存,重复命中不计 input token 费。
import anthropic
client = anthropic.Anthropic(
base_url="https://api2everything.xyz/v1", # 换成这个,其他不动
api_key="your_key_here"
)
response = client.messages.create(
model="claude-haiku-4-5",
max_tokens=512,
system=[
{
"type": "text",
"text": "你是一个专业的文档分类助手,以下是分类规则:\n[...2000 token 的规则...]",
"cache_control": {"type": "ephemeral"} # 加这一行
}
],
messages=[{"role": "user", "content": "请对以下文档分类:..."}]
)
第一次请求会有 cache write 费用(比普通 input 贵一点),之后命中缓存基本不计费。批量跑几百条文档的场景,这个收益很明显。
V2EX 有帖子提到有人两个月缓存命中率 96%,我这边跑下来大概 80%+,场景合适的话真能省不少。
两步加起来效果
| 改动前 | 改动后 |
|---|---|
| 全 Opus,无 cache | Haiku 分流 + cache |
| $196/月 | $58/月 |
主要节省来自模型降级,cache 额外再砍了 15% 左右。
顺便一提
国内调 Claude/GPT 本来就有延迟和封号风险,我现在走的是 api2everything.xyz,直连不用挂梯子,比官方价格便宜 65%,base_url 一换就行,SDK 完全兼容,注册送 ¥1 够试很久。
有类似账单优化需求的可以评论区交流,感觉还有压缩空间,比如 batch API 那块还没研究透。