这份清单适合谁
- 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 迁 中转最怕把法律主体、收款工具和产品代码混成一个问题。动手前看清费用影响、权限变化和公司主体,金额较大或涉及税务时应交给专业顾问处理。
一个人运营时可以用表格压住复杂度:负责人、后台入口、到期日、费用来源和回滚动作各占一列,避免换服务商时才发现资料缺口。
| 项目 | 看什么 | 不宜继续的信号 |
|---|---|---|
| 费用影响 | 当前后台、日志或设置页里能直接看到的字段 | 页面提示和手头资料对不上 |
| 权限变化 | 费用、权限、地区或设备造成的实际影响 | 已经影响付款、审核、生产环境或家庭使用 |
| 公司主体 | 回退入口、旧配置、官方支持材料 | 找不到回滚方式,或责任人无法确认 |