Định dạng phản hồi lỗi
Chat Completions, Responses, Messages và Gemini là ranh giới giao thức công khai, không phải API Web. Lỗi giao thức gốc không được bọc trong envelope Web{ success, data, error }. Ví dụ sau áp dụng cho lỗi gateway tương thích OpenAI ở Chat và Responses:
message và type luôn có mặt; code, param và phần mở rộng gợi ý là tùy chọn. Messages và Gemini dùng họ lỗi gốc riêng. Lỗi validation upstream được giữ nguyên khi có thể trả về an toàn; 400/422 xác định không đổi channel và không retry sau khi đã gửi byte đầu tiên.
Mã trạng thái HTTP
Các loại lỗi
Lỗi xác thực (401)
Lỗi thanh toán (402)
Lỗi truy cập (403)
Lỗi xác thực tham số (400)
model_not_found.
Lỗi giới hạn tốc độ (429)
Khi bạn vượt quá giới hạn tốc độ:Retry-After và trường retry_after đều chỉ ra số giây chính xác cần chờ trước khi thử lại.
Dữ liệu tải lên quá lớn (413)
Khi kích thước input hoặc file vượt quá giới hạn:- File ảnh quá lớn (tối đa 20MB)
- File âm thanh quá lớn (tối đa 25MB)
- Văn bản đầu vào vượt quá độ dài ngữ cảnh của model
Lỗi thượng nguồn (502, 503)
Khi tất cả các kênh thất bại, phản hồi bao gồm các model thay thế:
Xử lý lỗi trong Python
Xử lý lỗi trong JavaScript
Thực hành tốt nhất
Áp dụng exponential backoff
Áp dụng exponential backoff
Khi bị giới hạn tốc độ, chờ ngày càng lâu hơn giữa các lần thử lại:
Đặt timeout
Đặt timeout
Luôn đặt timeout hợp lý để tránh các yêu cầu treo:
Ghi nhật ký lỗi để gỡ lỗi
Ghi nhật ký lỗi để gỡ lỗi
Ghi lại toàn bộ phản hồi lỗi bao gồm request ID để hỗ trợ:
Xử lý lỗi riêng cho từng model
Xử lý lỗi riêng cho từng model
Một số model có yêu cầu riêng (ví dụ: số token tối đa, định dạng ảnh).
Kiểm tra hợp lệ đầu vào trước khi thực hiện yêu cầu.