错误处理
网关返回与 OpenAI 兼容的错误结构,并通过 DeepToken 错误分类帮助客户端判断责任归属与处理方式,无需解析错误文案。
错误结构
{
"error": {
"message": "可读的错误说明",
"type": "category_name",
"code": "specific_code"
}
}
响应头 X-Gateway-Error-Category 会包含以下分类之一:
| 分类 | 含义 | 建议 |
|---|---|---|
platform_error | DeepToken 数据库、配置或内部服务异常 | 可使用指数退避重试 |
upstream_error | 上游供应商限流、超时或服务异常 | 根据错误子类型决定;网关可能已执行故障转移 |
quota_error | 钱包、预算窗口或速率限制被触发 | 充值、调整预算或等待窗口恢复 |
user_error | 认证、权限、模型或请求参数错误 | 修正请求后再调用 |
常见错误码
401 invalid_api_key:API Key 不存在、已吊销或无效403 model_not_allowed:API Key 的模型允许列表不包含该模型403 ip_not_allowed:请求来源 IP 不在允许列表402 org_wallet_empty:严格计费模式下组织钱包余额不足403 budget_limit_exceeded:项目或 API Key 的预算上限已达到429 rate_limit_exceeded:请求速率超过限制503 no_available_channel:当前没有可用渠道可服务该模型
上游超时、过载和 5xx 错误会根据路由策略尝试其他候选渠道。客户端最终收到错误时,应结合 HTTP 状态、error.code、分类和子类型判断是否继续重试。
何时重试
- 对
platform_error的 5xx 响应使用带抖动的指数退避。 - 对上游限流、过载或超时,仅在请求具备幂等性且响应明确允许时重试。
- 对
budget_limit_exceeded,需要调整预算或等待预算周期恢复;对rate_limit_exceeded,等待对应限流窗口后重试。 - 对认证、权限、模型和参数错误,先修正配置或请求;原样重试不会成功。
对于可能产生副作用的请求,请使用幂等键或在业务层记录请求状态,避免网络重试造成重复执行。