错误与重试
API 错误在可能的情况下使用与 OpenAI 兼容的 JSON 结构:
{
"error": {
"message": "A human-readable explanation",
"type": "invalid_request_error",
"param": null,
"code": "invalid_request"
}
}
在 MVP 集成阶段,客户端应能容忍额外的请求标识符或提供商元数据,且不应依赖精确的消息文本。
| 状态码 | 含义 | 是否重试? |
|---|---|---|
400 | JSON 无效、参数不受支持或请求校验失败 | 否;请修正请求。 |
401 | API 密钥缺失、格式错误、已被吊销或无效 | 否;请验证或更换密钥。 |
402 | 账户额度已耗尽 | 否;请充值或联系账户所有者。 |
403 | 已通过身份验证,但无权访问该资源或模型 | 否;请核实账户权限。 |
413 | 请求体超出端点允许的大小 | 否;请缩减提示词或请求负载。 |
429 | 触发了速率或并发限制 | 是;若存在 Retry-After 请遵循其值。 |
500 | 意外的 Corion 应用或网关错误 | 通常可以;请谨慎重试。 |
502 | 上游提供商返回了不可用的响应 | 通常可以;退避后重试。 |
503 | 当前没有可用的提供商容量 | 是;退避后重试。 |
在公共网关契约最终确定之前,状态码映射可能会发生变化。客户端应主要根据 HTTP 状态类别以及发布后稳定的机器可读 error.code 值进行分支处理。
重试策略
对 429、500、502 和 503 使用指数退避加随机抖动进行重试。遵循 Retry-After;否则从约一秒开始并设置延迟上限。限制最大尝试次数,并在达到上限后明确报告失败,而非无限重试。
不要自动重试 400、401、402、403 或 413。在不更改请求或账户状态的情况下重试不太可能成功。
对于非流式请求,如果未来的 API 版本文档中定义了应用级幂等标识符,请发送该标识符。MVP 目前尚未保证聊天补全接口的幂等性。
对于流式请求,请保留已接收的部分响应,并在出现重复文本可能造成不良影响时先询问用户再重新开始。流中断并不能证明提供商没有执行工作,计费用量可能仍然已经发生。
