省钱实战 · 阅读约 3 分钟

月花 $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 的事,不妨试试。