省钱实战 · 阅读约 3 分钟

月花 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 够试很久,余额永久不过期。有兴趣的可以去看看。