API最佳实践第四篇-4 备用模型和网络排查

API工程 实践API最佳实践第四篇-4 备用模型和…openstarry.com

主模型挂了怎么办?备用模型 + 网络排查

单模型总有波动的时候——上游维护、高峰拥堵、临时故障。这篇讲怎么配置备用模型实现自动Failover,以及出问题时怎么快速排查网络。核心就一件事:用户不应该感知到模型挂了。

为什么需要备用模型

上游波动是常态。维护窗口、高峰拥堵、临时故障——单模型总有不可用的时候。

自动Failover

python

MODEL_CHAIN = ["glm-5.2", "deepseek-v4", "qwen3.7-max"]

def call_with_fallback(messages):

for model in MODEL_CHAIN:
    try:
        return client.chat.completions.create(
            model=model, messages=messages
        ), model
    except Exception as e:
        status = getattr(e, 'status_code', None)
        if status in {400, 401, 402, 403, 404}:
            raise
        continue
raise RuntimeError("所有模型不可用")

按任务类型配不同的备用链:

python

FALLBACK_MAP = {

"code": ["glm-5.2", "deepseek-v4"],
"chat": ["glm-5.2", "kimi-k2.6", "deepseek-v4"],
"writing": ["kimi-k2.6", "glm-5.2"],

} 网络排查

检查项 操作

关代理 直连,代理增加延迟且容易断

确认节点 国内用户走国内节点

检查防火墙 企业网络可能切断长连接

DNS预热 启动时先发一个请求 快速诊断:

bash

延迟

ping api.openstarry.com

TLS握手

curl -w "TLS: %{time_appconnect}s\n" -o /dev/null -s
https://api.openstarry.com/v1/models

完整请求 curl -w "总耗时: %{time_total}s\n"
-H "Authorization: Bearer sk-xxx"
-H "Content-Type: application/json"
-d '{"model":"glm-5.2","messages":[{"role":"user","content":"Hi"}],"max_tokens":10}'
https://api.openstarry.com/v1/chat/completions 这篇解决一个问题:模型不可用时服务怎么办。

备用模型部分:自动Failover的Python实现、按任务类型配置不同的备用链、Failover日志怎么记录方便追踪。

网络排查部分:代理、防火墙、DNS等常见坑的检查清单,以及用ping和curl快速诊断的脚本。