这份清单适合谁

  • Solopreneur,已经跑在 Anthropic / OpenAI 官方 API
  • 想迁到中转方降本或解决国内访问问题
  • 月营收 500-5000 美金,生产有真实用户
  • 不能停服,迁移必须灰度

第 0 步:决定迁不迁

三个动因评估

动因你符合吗
国内访问不稳,官方偶发限流
想压成本,中转加价 < 官方价 × 你的优化空间
海外公司合规复杂,中转能短期绕开

不该迁的场景

  • B2B 卖给企业,合规审计严格(中转方灰色)
  • 月用量 5000 美金以上,自建官方更划算
  • 实时语音 SaaS,P95 延迟敏感

如果你属于上面任一,这套迁移先别做,把官方账号稳住。

第一步:选中转方

选型清单

  • 支持 Claude Opus 4.7 / Sonnet 4.6 / GPT-5.5(确认模型覆盖)
  • 协议兼容(Anthropic 原生 + OpenAI 原生)
  • 国内可直连
  • 单 key 限额功能
  • 月预算上限设置
  • 用量看板与日账单
  • 故障历史可查

试用阶段

充值 50-100 美金,跑一周低流量灰度,看:

  • 延迟 P50 / P95
  • 错误率
  • streaming / tool_use 是否完整
  • 日账单跟自己埋点的对账偏差

第二步:账号与 key 准备

中转方账号

  • 主账号:用来充值
  • 子 key:按业务模块拆(business / dev / migration)
  • 每个 key 设月限额

保留官方账号

  • 不要注销
  • 保留充值额度
  • 业务代码里官方 baseURL 作为环境变量,可一键回滚

key 安全

  • 写到环境变量,不要 commit 仓库
  • 用 1Password / Doppler / Vault 管理
  • 月度旋转,自动化更好

第三步:代码改造

把 baseURL 改成环境变量

# 之前
client = Anthropic(api_key=os.getenv("ANTHROPIC_API_KEY"))

# 改成
client = Anthropic(
    api_key=os.getenv("ANTHROPIC_API_KEY"),
    base_url=os.getenv("ANTHROPIC_BASE_URL"),  # 默认走官方,中转走中转
)

模型名做映射层

MODEL_MAP = {
    "opus-4.7": "claude-opus-4-7",
    "sonnet-4.6": "claude-sonnet-4-6",
    "haiku-4.5": "claude-haiku-4-5",
}

def resolve_model(short_name: str, provider: str) -> str:
    if provider == "official":
        return MODEL_MAP[short_name]
    # 中转方可能用不同命名,加 if/else
    return ...

tool_use / streaming 容错

中转方对 streaming 截断要做 retry,对 tool_use 失败要 fallback。Solopreneur 加这两段保护代码,迁移更稳。

第四步:日志与监控

日志字段对齐

  • 中转方 response 跟官方差异字段(usage 里的某些 cache 字段)做容错
  • provider 字段标识请求走的哪家(official / relay-A / relay-B)
  • latency_ms 字段方便后续对比

监控告警

  • 错误率(P50 / P95 错误率单独看)
  • 延迟(对比迁移前后)
  • 月预算告警(中转方后台 + 业务侧双告警)

用量看板

  • 自己埋点的累计 token
  • 中转方后台的日 token
  • 两者对比偏差

第五步:灰度发布

第 1 周:1% 流量

  • 通过 feature flag 把 1% 用户路由到中转
  • 监控错误率、延迟、用户反馈
  • 出事立刻回滚

第 2 周:10% 流量

  • 扩大到 10%,看月成本估算
  • 检查中转方与官方的质量差异(同一 prompt 输出对比抽样)
  • 检查 tool_use / 长任务有没有截断问题

第 3 周:50% 流量

  • 跑一周,稳定后再放
  • 这周末做月度对账,看实际省了多少

第 4 周:100% 流量

  • 全量切换
  • 官方账号保留作为兜底
  • 监控继续跑 2 周确认无异常

第六步:计费对账

自己埋点的预估账单

在每次请求后累计:

# 简化伪代码
log_event({
    "model": resolved_model,
    "input_tokens": resp.usage.input_tokens,
    "output_tokens": resp.usage.output_tokens,
    "cache_read_tokens": getattr(resp.usage, "cache_read_input_tokens", 0),
    "provider": "relay-A",
})

跟中转方账单对比

月底用自己累计的 token 数 × 中转方 pricing 算预估账单,跟中转方后台账单对比。偏差 < 3% 可接受,> 5% 找客服对清楚。

注意点

  • 中转方 token 算法可能跟官方 tiktoken 略有差异
  • cache token 计费规则要确认
  • 时区差异(中转方按 UTC 还是按北京时间结算月)

第七步:回滚预案

业务代码里的开关

# .env
# 走中转
ANTHROPIC_BASE_URL=https://中转方/v1
ANTHROPIC_API_KEY=中转key

# 回滚:注释上面,启用下面
# ANTHROPIC_BASE_URL=https://api.anthropic.com
# ANTHROPIC_API_KEY=官方sk-ant-xxx

Runbook

写一份回滚步骤文档,放 README 或 runbook 里:

1. 改 .env 切回官方 baseURL/key
2. 重启服务(blue-green 或 rolling)
3. 监控错误率回到 baseline
4. 通知用户(可选,看影响范围)

CI/CD 一键发布

进阶建议在 CI/CD 里加 deploy-rollback-official 一键 job,5 分钟内切回官方。

迁移完成后的优化

迁到中转后,可以叠加几个降本杠杆:

  • Prompt Caching(中转方支持的话)
  • 模型分级,主路降到 Sonnet 4.6
  • max_tokens 截断
  • 异步任务走 batch

具体见我写的另一篇低成本跑 Claude / GPT 系列文章。Solopreneur 想再省事,可以考虑一条AI SaaS 出海可用的 API 中转,把多模型聚合、限额、灰度几件事打包到一家。

迁移后的运维备忘

迁到中转方后保持每月对账习惯:用自己的埋点数据算预估账单,和中转方后台账单比对,偏差控制在 3% 以内。官方账号别注销,保留最低充值,万一中转方出问题能秒切回去。

一个人管这套东西,建议把中转方账号、官方账号、回滚步骤和环境变量名写进一份简单的 runbook,换电脑或交接时不用从头翻聊天记录。

官方 API 迁 中转的收尾动作

涉及 Stripe、公司注册、税表或签证的内容,只能作为操作参考。当前页面没有覆盖你所在司法辖区的特殊规定时,不应把它当成法律或税务意见。

官方 API 迁 中转最怕把法律主体、收款工具和产品代码混成一个问题。动手前看清费用影响、权限变化和公司主体,金额较大或涉及税务时应交给专业顾问处理。

一个人运营时可以用表格压住复杂度:负责人、后台入口、到期日、费用来源和回滚动作各占一列,避免换服务商时才发现资料缺口。

项目看什么不宜继续的信号
费用影响当前后台、日志或设置页里能直接看到的字段页面提示和手头资料对不上
权限变化费用、权限、地区或设备造成的实际影响已经影响付款、审核、生产环境或家庭使用
公司主体回退入口、旧配置、官方支持材料找不到回滚方式,或责任人无法确认

相关阅读