Việc xử lý lỗi CometAPI sẽ dễ hơn khi bạn tách riêng các vấn đề về cấu trúc request, các vấn đề về xác thực, lỗi đường dẫn, và các lỗi nền tảng có thể thử lại. Hãy dùng kết hợp HTTP status, error.code, và error.message để quyết định nên sửa request hay thử lại.
Phân loại nhanh
Cấu trúc bao lỗi
Nhiều lỗi của CometAPI sử dụng phần thân lỗi như sau:
Một số phản hồi để trống code. Khi status là 500, hãy xem error.code và error.message là tín hiệu quyết định.
400 Bad Request
400 thường có nghĩa là request body không vượt qua bước xác thực trước khi request có thể được xử lý bình thường.
Các nguyên nhân phổ biến:
- Thiếu các trường bắt buộc như
model
- Cấu trúc JSON không hợp lệ
- Gửi một trường với sai kiểu dữ liệu
- Tái sử dụng các tham số dành riêng cho provider mà endpoint đã chọn không chấp nhận
Hãy bắt đầu từ một request tối giản đã biết là hợp lệ, rồi thêm lại các trường tùy chọn từng trường một. So sánh payload với schema của endpoint trong tài liệu tham chiếu API.
Sử dụng một request tối giản như sau:
Thay your-model-id bằng bất kỳ model ID hiện có nào từ trang Models của CometAPI.
Đừng giả định rằng mọi chat request sai định dạng đều trả về 400. Thiếu các trường chat bắt buộc như messages cũng có thể xuất hiện dưới dạng 500 với error.code: invalid_request.
500 Internal Server Error
Phần lớn phản hồi 500 cho thấy lỗi nền tảng hoặc provider. Đối với Chat Completions, một số request sai định dạng cũng có thể xuất hiện dưới dạng 500 nhưng vẫn mang error.code: invalid_request.
Một ví dụ là request bỏ qua messages:
Nếu phản hồi 500 có error.code: invalid_request, hãy xem đó là vấn đề của request:
- Sửa request body.
- So sánh payload với schema của endpoint.
- Chỉ thử lại sau khi đã sửa đúng payload.
Nếu phản hồi 500 không chỉ ra request không hợp lệ, hãy giữ lại request id và sử dụng backoff.
401 Invalid Token
Lỗi token thường trông như thế này:
Những điều cần kiểm tra:
- Header phải chính xác là
Authorization: Bearer $COMETAPI_KEY.
- Đảm bảo ứng dụng của bạn không tải một key cũ từ
.env, lịch sử shell hoặc kho secret đã triển khai.
- Nếu một key bị lỗi và một key khác hoạt động với cùng request đó, hãy xem đây là vấn đề token, không phải vấn đề endpoint.
403 Forbidden
403 thường là một trong các tình huống sau:
- Request bị chặn bởi một quy tắc phía nền tảng như lọc WAF
- Token hoặc route không được phép sử dụng model hoặc dạng request được yêu cầu
- Model được chọn từ chối một trong các tham số nâng cao mà bạn đã truyền vào
Việc nên làm trước tiên:
- Thử lại với một request văn bản rất đơn giản trên một model đã biết là hoạt động tốt.
- Xóa các trường nâng cao và tham số riêng của nhà cung cấp, sau đó thêm lại dần dần.
- Nếu phản hồi có kèm request id, hãy lưu lại trước khi liên hệ bộ phận hỗ trợ.
Nếu thông báo nhắc đến các thuật ngữ nội bộ như group hoặc channel, hãy coi đó là chi tiết định tuyến, không phải thứ đầu tiên cần chẩn đoán từ phía client. Cách xử lý thực tế vẫn là kiểm tra token, model và dạng request trước.
Sai base URL hoặc sai path
Trên Comet, lỗi path có thể xuất hiện dưới dạng:
- Một redirect
- Một phản hồi HTML không phải JSON nếu client của bạn tự động theo redirect
- Một lỗi phân tích cú pháp bên trong SDK của bạn
- Một request không bao giờ đến được tầng API một cách trọn vẹn
Hãy dùng chính xác base URL này:
Các bước kiểm tra được khuyến nghị:
- Xác nhận rằng base URL có bao gồm
/v1.
- Xác nhận rằng path endpoint khớp chính xác với tài liệu.
- Tắt tính năng tự động theo redirect khi debug các vấn đề về path.
413 Request Entity Too Large
Nếu bạn thấy 413, trước hết hãy xem đây là vấn đề về kích thước request. Các nguyên nhân thường gặp gồm:
- Payload base64 lớn
- Ảnh hoặc âm thanh quá lớn được nhúng inline
- Body multipart hoặc JSON rất lớn
Việc cần làm:
- Giảm kích thước hoặc nén nội dung đính kèm.
- Chia các tác vụ lớn thành các request nhỏ hơn.
- Đừng cho rằng độ dài văn bản thuần là nguyên nhân duy nhất.
429 Too Many Requests
Hãy coi 429 là lỗi có thể retry:
- Sử dụng exponential backoff kèm jitter.
- Giảm mức concurrency đột biến.
- Bật logging request để bạn có thể thấy route và model nào bị bão hòa trước.
Để có một mẫu retry có thể tái sử dụng, xem ví dụ backoff trong Chat Completions.
503, 504, và 524
Các mã trạng thái này là các lỗi phía máy chủ hoặc thuộc nhóm timeout.
Hướng dẫn thực tế:
503: route hoặc dịch vụ nhà cung cấp tạm thời không khả dụng
504 và 524: lỗi thuộc nhóm timeout giữa nền tảng, edge hoặc dịch vụ nhà cung cấp
Việc cần làm:
- Thử lại với backoff.
- Lưu lại
request id, endpoint, model và timestamp.
- Nếu cùng một lỗi lặp lại qua nhiều lần retry, hãy liên hệ bộ phận hỗ trợ kèm theo ngữ cảnh đó.
Trước khi bạn liên hệ bộ phận hỗ trợ
Hãy thu thập trước các thông tin sau:
- Phương thức HTTP
- Đường dẫn endpoint
- Model ID
- JSON request body đã được ẩn thông tin nhạy cảm (đây là mục hữu ích nhất trong hầu hết các lệnh gọi API)
- Query parameters nếu request bị lỗi có sử dụng chúng
- Response body chính xác nếu client của bạn đã ghi nhận được
- HTTP status đầy đủ
error.message chính xác
- Bất kỳ
request id nào
- Dấu thời gian ước lượng
- Liệu cùng request đó có hoạt động với model khác hoặc token khác hay không
Nếu route bị lỗi chấp nhận tải tệp lên (chỉnh sửa hình ảnh, tải âm thanh lên, tạo video, v.v.) thay vì chỉ một JSON body thuần, hãy gửi payload tương đương đã được submit:
- Tên các trường và giá trị văn bản bạn đã gửi kèm theo tệp
- Tên tệp, loại tệp và kích thước tệp ước lượng
- Tệp được tải lên trực tiếp, tham chiếu bằng URL hay được nhúng dưới dạng base64
Cách hiệu quả nhất để tái hiện một lỗi là payload request chính xác đã được ẩn thông tin nhạy cảm. Với hầu hết các lệnh gọi API, điều đó có nghĩa là raw request body JSON. Với các route tải tệp lên, điều đó có nghĩa là danh sách trường cộng với metadata của tệp.
Điều này sẽ rút ngắn đáng kể thời gian xử lý của bộ phận hỗ trợ.