错误码
状态码对照
| 状态码 | 含义 | 处理建议 |
|---|---|---|
400 | 请求格式错误 | 检查 JSON 结构与参数名 |
401 | 密钥无效或已停用 | 检查 Authorization 头,或到控制台重新创建 |
402 | 余额不足 | 到控制台充值 |
404 | 模型或路径不存在 | 检查 model 名称、确认接口路径 |
429 | 并发或限流 | 可直接重试,建议指数退避 |
500 | 服务端错误 | 重试;持续出现请反馈 |
502 | 上游暂时不可用 | 重试 |
503 | 无可用线路 | 重试 |
504 | 上游超时 | 缩短输入或重试 |
429 的两种来源
| 错误码 | 含义 | 是否需要换模型 |
|---|---|---|
gate_concurrency_limit | 平台并发已满 | 否,重试即可 |
rate_limit_exceeded | 上游限流 | 否,退避后重试 |
重试建议
python
import time
import random
def call_with_retry(fn, max_retries=3):
for i in range(max_retries):
try:
return fn()
except Exception as e:
status = getattr(e, "status_code", None)
if status in (429, 500, 502, 503) and i < max_retries - 1:
time.sleep((2 ** i) + random.random())
continue
raise只重试 429 和 5xx,400 / 401 / 402 重试没有意义。
错误响应格式
json
{
"error": {
"message": "Concurrency limit exceeded, please retry later",
"type": "rate_limit_error",
"code": "gate_concurrency_limit"
}
}code 字段是判断具体原因的关键,建议在日志里记录它。