省钱实战 · 阅读约 3 分钟

月账单从 $180 掉到 $55,就改了一个 base_url

月账单从 $180 掉到 $55,就改了一个 base_url

结论先说:把 Claude API 请求转到国内中转,配合 Haiku 做分级路由,账单直接砍掉 70%。


痛点

我有个内部工具,给团队做代码 review 和文档生成。跑了两个月,Claude Sonnet 的账单涨到 $180/月。

细看 token 分布,发现问题很明显:

  • 80% 的请求是"格式化输出"、"补全注释"这类简单任务
  • 这些任务全在用 Sonnet,完全是杀鸡用牛刀
  • 加上国内访问 Anthropic 官方 API 要挂代理,偶尔超时重试,token 浪费不少

两个问题:模型选错了,链路不稳定导致重试成本。


怎么改的

第一步:换 base_url,解决稳定性

把官方 endpoint 换成国内中转,延迟从 800ms 降到 150ms 以内,重试率基本归零。


import anthropic



client = anthropic.Anthropic(

    api_key="你的中转 key",

    base_url="https://api.api2everything.xyz/v1",  # 改这一行

)



# 其他代码完全不动

response = client.messages.create(

    model="claude-sonnet-4-5",

    max_tokens=1024,

    messages=[{"role": "user", "content": "帮我 review 这段代码"}],

)

就这一行,官方 SDK 完全兼容,不用改任何业务逻辑。


第二步:按任务复杂度分级路由

简单任务走 Haiku,复杂任务才上 Sonnet。价格差大概是 1:20。


def get_model_for_task(task_type: str) -> str:

    """按任务类型选模型,省钱的核心逻辑"""

    cheap_tasks = {

        "format",      # 格式化

        "comment",     # 补全注释

        "rename",      # 变量命名

        "lint_fix",    # 简单 lint 修复

    }

    if task_type in cheap_tasks:

        return "claude-haiku-4-5"   # 便宜 ~20x

    return "claude-sonnet-4-5"      # 复杂推理才用



def review_code(code: str, task_type: str = "review"):

    model = get_model_for_task(task_type)

    response = client.messages.create(

        model=model,

        max_tokens=512 if "haiku" in model else 2048,

        messages=[{"role": "user", "content": f"任务:{task_type}\n\n{code}"}],

    )

    return response.content[0].text

跑了一周统计下来,80% 的请求落到了 Haiku,Sonnet 只处理真正需要推理的部分。


改完之后的账单

| 项目 | 改前 | 改后 |

|------|------|------|

| 主力模型 | Sonnet 100% | Haiku 80% + Sonnet 20% |

| 月均 token | ~4M | ~4M(没变) |

| 月账单 | $180 | $55 |

| 超时重试 | 偶发 | 基本没有 |

token 用量没变,省的全是"用错模型"和"重试浪费"的钱。


顺带一提

中转平台支持 300+ 模型,OpenAI / Claude / Gemini / DeepSeek 都有,格式统一是 OpenAI 兼容,切模型只改 model 参数名。

我用的是 api2everything.xyz,注册送 ¥1,够跑几百次 Haiku 请求,试试水没什么成本。比官方便宜 65% 左右,SVIP 还有 7.7 折,量大的话值得算一下。


有类似账单问题的可以聊,欢迎分享你们的分级策略。