省钱实战 · 阅读约 3 分钟

月花 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 够先跑几百个请求试试手感。

余额永久有效,不用担心月底清零。