LogoToRouter 文档
LogoToRouter 文档
首页ToRouter 是什么5 分钟快速开始核心概念
常见 HTTP 错误被限流:如何处理Key 被冻结或撤销上游错误与失败转移生产最佳实践
故障排查

生产最佳实践

让 ToRouter 在生产环境里平淡无奇的八个习惯。

ToRouter 生产部署的简短清单。没有玄学,都是事故后才后悔没做的事。

1. 每个环境一把 Key

为 dev、staging、prod 各建一把 Key。dev Key 漏了顶多烦人,prod Key 不设上限漏了就是账单。

2. 生产 Key 配 IP 白名单

在 /keys 加上生产出口的 CIDR(Fly.io 区域、VPC NAT、k8s egress gateway 等)。白名单之外泄漏的 Key 不可用。

3. 每把 Key 设支出上限

每把 Key 都在控制台设一个花费上限(可按 USD 或 CNY)。失控循环短时间刷爆账单时,网关会拦在 429,而不是默默扣款。

建议大致档位:生产 约为月度预算的九成;预发 几十美元量级;开发 十美元左右即可。具体数字按团队习惯在 /keys 里调整。

4. 固定模型版本

# 好
model="claude-opus-4-7"
model="gpt-5.3-codex"

# 不好 —— 行为会随时间静默漂移
model="claude"
model="gpt-4"

固定版本让你按自己的节奏 A/B 下一个版本,而不是被供应商推着走。

5. 对 429 和瞬时 5xx 做指数退避重试

OpenAI / Anthropic 官方 SDK 设 max_retries 即可;裸 HTTP 见 被限流 里的最小实现。4xx(400/401/403/404)不要重试 —— 结果不会变。

6. 始终记录 x-request-id

resp = client.chat.completions.with_raw_response.create(...)
print(resp.headers["x-request-id"])

提工单时,这一项数据能让支持团队几秒钟内串起网关、调度器、上游的完整链路。

7. 准备一个兜底模型

主用 gpt-5 时,全网宕机情况下你希望代码先自动切到 claude-opus-4-7(或同分组其他模型),而不是直接呼工程师:

兜底
def chat(messages, primary="gpt-5", fallback="claude-opus-4-7"):
    try:
        return client.chat.completions.create(model=primary, messages=messages)
    except Exception:
        return client.chat.completions.create(model=fallback, messages=messages)

8. 关注用量与仪表盘

  • 每周打开 /dashboard,注意按模型/按 Key 的异常支出峰值。
  • 大流量前通过 充值 保持充足余额,降低突发 402 风险。
  • 用量异常时在 用量明细 下钻到逐请求行核对。

就算没事故,也每季度轮换一次 Key。例行轮换让泄漏检测(审计日志对不上、"这个 Key 怎么还在用?")变得简单。

下一步

Key 限制

本文推荐的开关都在这里配。

用量仪表盘

支出、配额与趋势。

充值

避免 402 突袭。

上游错误与失败转移

上游供应商出问题时 ToRouter 如何自动切换渠道 —— 以及它无能为力的边界。

完整错误码参考

网关常见错误类型与处理建议(按场景分组,便于检索)。

目录

1. 每个环境一把 Key2. 生产 Key 配 IP 白名单3. 每把 Key 设支出上限4. 固定模型版本5. 对 429 和瞬时 5xx 做指数退避重试6. 始终记录 x-request-id7. 准备一个兜底模型8. 关注用量与仪表盘下一步