错误码与限流
网关错误分两类:网关自身(鉴权/额度/渠道)与上游透传(模型供应商原始错误)。
常见错误
| HTTP | 错误/提示 | 含义 | 处理 |
|---|---|---|---|
| 400 | invalid request | 请求体格式/参数错误 | 检查 JSON 与字段 |
| 401 | invalid token / unauthorized | 令牌缺失、错误或被删 | 核对 Authorization 与令牌 |
| 403 | 无权限 / forbidden | 令牌无该模型权限或分组受限 | 检查令牌可用模型与分组 |
| 404 | model not found | 模型不存在或未对你的分组开放 | 查 /v1/models,联系管理员 |
| 429 | rate limited / too many requests | 触发频率/并发限制 | 退避重试,降低速率 |
| 402/其它 | insufficient quota | 额度用尽 | 充值或换令牌 |
| 500/502/503 | upstream error | 上游渠道异常 | 稍后重试;持续则联系管理员 |
| 504 | timeout | 上游超时 | 重试或换模型/渠道 |
限流机制
- 网关可能对单个令牌或用户做请求频率与并发限制;超限返回
429。 - 部分上游自身也有限流,网关会把其上错误透传。
- 建议实现指数退避 + 抖动,并尊重
Retry-After头。
def backoff(i): return min(2 ** i, 30) * 0.5 # 带随机更佳
"transport failure" 类错误
客户端看到 transport failure ... HTTP 403 之类,通常是:Base URL 写错、被防火墙/CORS 拦截、或(对 DSH 等自建前端)请求域名未被信任。确认 base_url 正确、从服务端发起请求、并检查网络出口。
排障三步
- 用
curl最小化复现(只留 model 和一句 messages),排除代码问题。 - 看返回体的
error.message与x-oneapi-request-id。 - 带 request id 联系管理员定位是网关还是上游问题。