平台概念
错误码
HTTP 错误状态码、错误响应结构与重试策略
所有错误返回 JSON,error 对象含 type、message,部分含 code/param。
状态码
| 状态码 | type 示例 | 含义 | 排查 |
|---|---|---|---|
400 | invalid_request_error | 请求格式/参数错误 | 检查 body、必填字段、model |
401 | authentication_error | API Key 缺失或无效 | 确认 Authorization: Bearer 头 |
402 | insufficient_quota | 余额不足 | 充值,见 计费 |
403 | permission_denied | 无权访问该模型/操作 | 确认 Key 权限或模型开放范围 |
404 | not_found | 模型/资源不存在 | 用 GET /v1/models 核对 ID |
408 | request_timeout | 请求超时 | 重试;长任务用异步接口 |
413 | invalid_request_error | 请求体过大 | 减少 token / 用分片上传 |
422 | invalid_request_error | 参数语义无法处理 | 检查 tools/response_format 等 |
429 | rate_limit_error | 触发限流或配额 | 降并发,看 Retry-After,见 限流 |
500 | server_error | 网关/路由异常 | 平台会自动 failover;持续报错联系支持 |
502/503 | server_error | 上游不可用 | 平台自动切换上游;稍后重试 |
504 | server_error | 网关等待上游超时 | 重试 |
错误响应
{
"error": {
"type": "invalid_request_error",
"code": "model_not_found",
"param": "model",
"message": "model not found: foo-1"
}
}| 字段 | 说明 |
|---|---|
error.type | 错误类别(见上表) |
error.code | 细分错误码(可选) |
error.param | 出错的参数名(可选) |
error.message | 人可读的说明 |
重试策略
平台对 5xx / 上游超时 已自动 failover 切换上游,无需客户端激进重试。客户端只需对 429(限流)和极少数 503 做指数退避重试。
import time
def call_with_retry(fn, tries=4):
for i in range(tries):
try:
return fn()
except RateLimitError:
time.sleep(2 ** i) # 1, 2, 4, 8s
raise