错误与重试
先确认发生了什么,再决定修改参数、继续等待或重新调用。
读取完整错误
同时保存 HTTP 状态、原协议错误体和可用的请求标识。流式响应还需要读取流内错误事件,不能只根据 HTTP 200 判断成功。
常见状态码
| 状态码 | 常见原因 | 建议处理 |
|---|---|---|
400 | 参数、请求格式或模型规格不支持 | 核对模型详情和所选协议,修正请求体 |
401 | Key 无效、停用或过期 | 检查 Key 状态、认证头与环境变量 |
402 | 账户资源不足等计费拒绝 | 检查余额、可用资源与 Key 限制 |
403 | 模型、IP 或权限限制 | 检查模型可用性和 Key 访问设置 |
404 | 路径、模型或任务不存在于当前访问范围 | 检查地址和 ID,查询原任务时使用原 Key |
409 | 请求冲突或资源尚未就绪 | 读取错误内容,继续原任务或更新明确冲突的输入 |
429 | 限流、并发或额度限制 | 阅读具体错误;若是限流,遵循 Retry-After |
5xx | 服务或上游暂时异常 | 先确认原请求状态,不盲目重发生成 |
具体错误体遵循接口协议。额度相关错误可能有不同状态码,应结合错误内容处理。
哪些操作可以重试
读取模型目录、查询原任务、重新下载已完成结果,通常可以在适当间隔后重试。给读取请求设置退避与最大等待时间,避免高频轮询。
对创建生成的 POST,请先区分:
- 明确在提交前被拒绝:修正错误后,由用户或应用明确发起新的请求。
- 已取得任务 ID:查询同一个原任务,不重新创建。
- 提交后超时或响应丢失:检查控制台记录和原请求;不能据此断言没有执行或没有费用。
幂等与客户端重试
不同协议和模型入口的幂等支持可能不同。只在对应接口明确支持时使用幂等机制,并将键与同一份请求内容一起持久保存。不要依赖一个未被接口支持的请求头来避免重复生成。
接入 SDK 时建议先关闭生成请求的自动重试。确定重试策略前,完整验证异常、超时和原任务结果读取流程。
长时间等待
非流式请求已开始后,即使客户端关闭,原请求仍继续处理。媒体任务处理中时继续查询原任务。流式取消按实际费用计费,连接中断不自动退款。
等待时间较长时,通过控制台检查原调用,并携带脱敏信息 获取帮助。