AI API 錯誤診斷:401、403、429 與 5xx
依驗證、存取政策、速率限制、用戶端取消與上游失敗分層診斷 AI API 錯誤,並安全決定是否重試。
診斷 AI API 錯誤時,狀態碼只是起點。重試前保留請求 ID、UTC 時間、端點、模型、Key 名稱、群組、錯誤內容與時間資料,再判斷失敗來自用戶端、驗證、存取政策、協定、路由、模型後端或下游連線。
常見狀態碼
| 狀態 | 優先判斷 | 建議動作 |
|---|---|---|
| 400 | 請求結構或協定錯誤 | 修正內容,不原樣重試 |
| 401 | Key 缺失、錯誤、停用或過期 | 核對 Authorization 與目前 Key |
| 403 | 模型、群組、IP 或帳號政策拒絕 | 先檢查 Key 的存取限制 |
| 404 | 路徑或模型 ID 不存在 | 核對 Base URL 與模型清單 |
| 429 | 額度、速率或路由限制 | 找出限制層級,進行有界退避 |
| 499 | 下游在完成前取消 | 檢查 Deadline、Abort、Proxy 與首輸出 |
| 502/503/504 | 上游回應、可用性或時間預算問題 | 保留路由證據,有限次回退或重試 |
依層級排查
401 通常在模型路由前發生。確認 Authorization: Bearer ... 格式、Key 狀態、Host,以及部署是否仍使用舊憑據;完整 Key 不應出現在日誌或工單。
403 不代表供應商一定拒絕了請求。模型限制、IP 白名單、群組權限或帳號政策可能在選擇渠道前阻止請求。使用相同 Key 取得 /v1/models 並查看精確錯誤;尚未選中渠道時,更換上游無法修復前置政策。
遇到 429 時先判斷限制屬於 Key、帳號、模型群組或路由。遵循 Retry-After,使用帶抖動的指數退避,限制嘗試次數、總時間與並行數。建立更多 Key 不一定能繞過帳號級限制。
499 表示 Modelflare 觀察到下游連線提早結束。從呼叫方的 Abort、CDN、負載平衡與 Proxy 逾時開始排查,並比較首個有效輸出。單一 499 不足以證明渠道故障。
決定是否重試
- 無效請求、無效 Key 或拒絕存取:修正原因,不原樣重試。
- Rate Limit:只在允許時有界退避。
- 暫時性 502、503、504:僅對可安全重複的工作有限次重試。
- 用戶端取消:確認使用者仍需要結果且不會重複副作用。
- 工具或寫入操作:先建立應用層冪等性。
每次嘗試都可能產生工作與成本。安全證據包括請求 ID、時間、端點、串流模式、模型、群組、狀態、錯誤碼與時間指標;不要附上完整 Key、Prompt、Response Body、郵件或明文 IP。
定位失敗層後,可使用可靠的 AI API 路由設計備援,並以串流指南處理事件與逾時問題。
依層級執行精確檢查
遇到 401
檢查 Authorization: Bearer ...、多餘的引號或空白、Key 是否啟用,以及部署是否仍使用舊憑證。這類錯誤通常發生在模型路由之前。
遇到 403
使用同一把 Key 檢查允許模型、IP 白名單、群組權限與帳號政策。若尚未選中渠道,更換供應商無法修復更早發生的拒絕。
遇到 429
先判斷限制屬於 Key、帳號、群組或路由。遵循 Retry-After,使用帶隨機抖動的指數退避,並限制次數、總時間與並行數。
遇到 499
從用戶端開始查:取消訊號、已關閉的分頁、CDN、負載平衡器與 Proxy 期限。把取消時間和首個有效輸出比較;單一 499 不能證明渠道故障。
區分不同的 5xx
500 可能是可重現的轉接錯誤,502 可能是無效或不完整的上游回應,503 可能是暫時沒有合格路由,504 則表示某層時間預算耗盡。保留原始狀態,只對可安全重複的操作做有限次重試。
安全保留診斷證據
- 請求 ID 與 UTC 時間;
- 端點與串流模式;
- 指定模型與實際群組;
- HTTP 狀態與結構化錯誤碼;
- 總耗時與首個有效輸出時間;
- 用戶端是否取消;
- 工具或圖片等功能的去識別描述。
除非已進入明確核准的安全流程,否則不要附上完整 Key、提示詞、回應、原始 Body、電子郵件或明文 IP。
常見問題
403 能證明供應商故障嗎?
不能。帳號、Key、模型、群組、IP 或功能政策都可能在選擇供應商前拒絕請求。
499 是標準的上游模型錯誤嗎?
不是。在 Modelflare 紀錄中,它代表回應完成前觀察到的下游取消。
所有 5xx 都應該重試嗎?
不應該。只重試可安全重複的工作,限制次數與總時間,並保留第一次錯誤。