错误

HTTP 状态码、错误响应结构、常见错误与解决方案

Nexaxis 完全沿用 OpenAI 错误响应格式。SDK 抛错时直接 catch 对应异常即可。

错误响应结构

所有错误响应都是这个格式:

{
  "error": {
    "message": "你的 API Key 没有访问 gpt-5 的权限",
    "type": "permission_denied",
    "code": "model_not_allowed",
    "param": "model"
  }
}
字段含义
message人类可读的错误描述
type错误类别(见下表)
code细粒度错误码(用于程序判断)
param出错的字段名(如果有)

HTTP 状态码速查

状态码类型常见原因
400invalid_request_error请求体格式错、参数非法、model 名拼错
401authentication_errorAPI Key 缺失 / 错误 / 已被吊销
402insufficient_quota余额不足
403permission_deniedKey 被禁用、模型未授权、IP 不在白名单
404not_found接口路径错、模型 ID 错
408request_timeout上游超时(通常 > 60s 无响应)
413payload_too_large请求体过大(图像、文件)
415unsupported_media_typeContent-Type 不对
422invalid_request_error请求体能解析但语义不对
429rate_limit_exceeded触发限流,降低请求频率后重试
500server_error平台内部错(罕见)
502bad_gateway上游服务异常
503service_unavailable上游过载,建议稍后重试
504gateway_timeout上游响应超时

常见错误与解决

401 — Invalid API key

{ "error": { "message": "Incorrect API key provided", "type": "authentication_error" } }

排查清单

  1. Authorization 头是不是 Bearer sk-xxx 格式(注意有空格)
  2. Key 是不是从控制台复制时带了空格 / 换行
  3. Key 是不是已删除 / 已禁用 / 已过期
  4. 是不是把测试 Key 提交进生产了

402 — Insufficient quota

{ "error": { "message": "Insufficient quota", "type": "insufficient_quota" } }

充值 → 控制台「钱包管理」。开启 余额预警 避免再发生。

403 — Model not allowed

{ "error": { "message": "Model gpt-5 not allowed for this key", "code": "model_not_allowed" } }

创建令牌时勾了「可用模型」白名单,请求的 model 不在里面。改令牌设置或换 Key。

404 — Model not found

{ "error": { "message": "The model 'gpt-4-turbo-2024-04-09' does not exist", "code": "model_not_found" } }

模型 ID 拼错或已下线。去模型广场确认当前可用 ID。

429 — Rate limit exceeded

响应头 Retry-After 告诉你多少秒后重试。降低并发与请求频率即可恢复。

500 / 502 / 503 — 服务异常

通常是上游波动。自动重试 2-3 次通常能成功。如果持续 5 分钟以上:

  1. 状态页(如有)
  2. 联系客服

408 / 504 — 超时

请求超过 60s 无响应。常见原因:

  • prompt 太长,让模型"思考"超时
  • 流式输出未启用(长响应建议加 stream: true

解决

  • 缩短 prompt
  • 开启流式:{ "model": "...", "messages": [...], "stream": true }
  • 切到更快的模型(如从 gpt-4ogpt-4o-mini

SDK 错误处理示例

Python

from openai import OpenAI, APIError, RateLimitError, AuthenticationError

client = OpenAI(api_key="sk-xxx", base_url="https://nexaxis.ai/v1")

try:
    resp = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": "hi"}],
    )
except AuthenticationError:
    print("Key 错了")
except RateLimitError as e:
    print(f"被限流,{e.response.headers.get('Retry-After')}s 后重试")
except APIError as e:
    print(f"其他 API 错误:{e.status_code} {e.message}")

Node.js

import OpenAI, { APIError } from 'openai';

const client = new OpenAI({
  apiKey: 'sk-xxx',
  baseURL: 'https://nexaxis.ai/v1',
});

try {
  const resp = await client.chat.completions.create({ ... });
} catch (err) {
  if (err instanceof APIError) {
    console.log(err.status, err.code, err.message);
  }
}

重试与降级建议

错误类型建议处理
400 / 401 / 402 / 403 / 404不重试,代码 / 配置错,先排查
429Retry-After 重试,指数退避
500 / 502 / 503 / 504 / 408立刻重试 1-3 次,间隔 1-5s

OpenAI 官方 SDK 默认有合理的重试策略,生产代码直接用 SDK 不要自己 fetch