排障时先定位问题在哪一层:鉴权、参数、模型、网络、余额、限流、上游服务或图片存储。
先收集这些信息
不要先猜原因。每个问题先收集一份固定排障包:
request_id 可以从响应头 X-Oneapi-Request-Id、错误信息或控制台用量日志里找到。
如果控制台日志里有 upstream_request_id,也一起保留;它用于定位上游侧的问题。
任务和视频接口的失败不一定是 OpenAI 风格的 { "error": ... },也可能直接返回顶层 code、message 和 data。
按场景再补充这些字段:
快速定位表
决策流程
先分清错误结构:
error.code 可能为空、缺失或由上游透传,不要只依赖单个字段做排障和重试。
图片问题再加一层判断:
常见判断
常见场景
文本接口无输出或流式中断
先确认请求是否真正成功:
- 看 HTTP 状态码和
request_id
- 如果是流式,记录最后一个收到的事件片段
- 区分空
delta、保活事件和真正的模型内容
- 看用量日志里是否有消费记录和
upstream_request_id
- 如果前端无显示,确认前端没有把有效内容过滤掉
如果服务端已经有完整响应,但前端没展示,这是客户端解析或渲染问题,不应重复请求。
图片生成成功但用户看不到
先确认 Tapapi 是否已经返回图片:
- 看 HTTP 是否 200
- 看
data.length
- 看返回的是
url 还是 b64_json
- 看你的后端是否已经转存成功
- 看前端是否读取了正确字段
如果模型已返回有效图片,但你的存储失败,这是保存链路问题,不应重复生成。
视频任务一直没有结果
先不要重复提交同一个生成请求,先查任务:
- 看提交接口是否返回
task_id
- 查询任务状态、进度和失败原因
- 如果状态还在排队或生成中,继续按轮询策略等待
- 如果状态失败,记录顶层
code/message/data
- 如果状态成功但 URL 打不开,先检查是否已经转存和 URL 是否过期
视频结果链接更适合尽快转存到自有存储,避免后续因为上游链接过期而误判为生成失败。
批量任务突然大量失败
先停放量,然后看:
- 是否连续 429
- 是否同一模型大量 5xx 或 timeout
- 是否参数变化导致 400 / 422 增多
- 是否余额不足或触发预扣失败
- 是否对象存储上传失败
觉得扣费不对
按这个顺序对账:
- 找到
request_id
- 查控制台用量日志的最终
quota
- 图片业务再对比你自己业务表里的
requested_n、returned_count、saved_count
- 区分模型生成成功和业务转存失败
- 视频任务再对比任务
status、quota 和最终结果
- 带截图和脱敏请求摘要联系支持
不要把 API Key、完整用户隐私数据、未脱敏图片链接直接贴到公开渠道。支持排障只需要脱敏后的请求体、模型名、时间和错误信息。