Lỗi API AI trong môi trường Production

Các thông báo lỗi hiếm khi nói lên toàn bộ vấn đề khi tính năng AI của bạn gặp sự cố lúc 2 giờ sáng. Tôi đã vận hành các tích hợp OpenAI và Anthropic trong một năm. Tôi đã học được cách nhóm các lỗi dựa trên ý nghĩa của chúng đối với việc gỡ lỗi (debugging).

Xử lý Giới hạn Tốc độ (Rate Limits)

Các lỗi 429 của OpenAI có những nguyên nhân khác nhau. Bạn phải kiểm tra mã lỗi để biết cách phản ứng.

  • Giới hạn số yêu cầu mỗi phút (RPM) sẽ hồi phục trong vài giây.
  • Giới hạn số token mỗi phút (TPM) sẽ hồi phục trong 60 giây.
  • Việc cạn kiệt hạn mức (quota) hàng tháng sẽ tiếp tục bị lỗi cho đến khi bạn nạp thêm tiền hoặc chu kỳ thanh toán được thiết lập lại.

Đừng sử dụng exponential backoff cho các vấn đề về hạn mức. Nó sẽ chỉ làm lãng phí thời gian của bạn.

Lỗi 529 của Anthropic có nghĩa là nhà cung cấp đang bị quá tải. Hãy xử lý lỗi này giống như lỗi 503. Vấn đề nằm ở phía họ. Hãy tạm dừng yêu cầu và thông báo cho đội ngũ của bạn.

Xử lý Lỗi 400

Những lỗi này thường là do lỗi của bạn. Hãy chú ý đến ba mô hình sau:

  • Không khớp phiên bản mô hình. Bạn đã cập nhật tên ở một nơi nhưng lại quên cập nhật trong trình xử lý thử lại (retry handler).
  • Tràn cửa sổ ngữ cảnh (context window). Lịch sử hội thoại đã trở nên quá lớn. Điều này thường xảy ra do logic cắt bớt (truncation) không tốt.
  • Lỗi xác thực schema. Cấu trúc JSON của bạn có các kiểu dữ liệu không được hỗ trợ hoặc các tham chiếu đệ quy.

Để khắc phục những lỗi này, hãy ghi lại (log) toàn bộ request payload cho các lỗi 400. Hãy ẩn (redact) dữ liệu người dùng trước. Phần thân phản hồi (response body) sẽ cho bạn biết chính xác trường (field) nào bị lỗi.

Xử lý Hết thời gian chờ (Timeouts)

Timeout rất khó theo dõi vì nhà cung cấp không thấy có gì sai sót.

  • Connect timeout. Quá trình bắt tay (handshake) thất bại. Điều này xảy ra trong quá trình nhà cung cấp gặp sự cố chập chờn (brownouts) hoặc lỗi DNS. Hãy kiểm tra mạng đầu ra (outbound network) của bạn.
  • Read timeout. Mô hình đã bắt đầu nhưng không hoàn thành. Ứng dụng của bạn phải xử lý được các đầu ra streaming từng phần.
  • Gateway timeout (504). Proxy của bạn hết thời gian chờ trước. Yêu cầu có thể vẫn đang chạy tại nhà cung cấp. Hãy sử dụng cơ chế khử trùng lặp (deduplication) trước khi thử lại.

Để gỡ lỗi, hãy tách biệt connect timeout và read timeout. Hãy ghi lại thời gian đến token đầu tiên (time-to-first-token) để tìm xem độ trễ (latency) nằm ở đâu.

Xử lý các Vấn đề từ Nhà cung cấp

  • Lỗi 500 thường được giải quyết chỉ với một lần thử lại sau hai giây.
  • Lỗi 503 có nghĩa là dịch vụ đang bị suy giảm chất lượng. Nếu trang trạng thái của nhà cung cấp hiển thị một sự cố, hãy sử dụng cơ chế ngắt mạch (circuit breaker).
  • Luôn ghi lại phiên bản mô hình nào đã bị lỗi. Các mô hình khác nhau có mức độ tin cậy khác nhau.

Đừng nhảy bổ từ log sang Slack. Hãy kiểm tra trang trạng thái của nhà cung cấp trước. Việc này sẽ giúp bạn tiết kiệm 20 phút hoảng loạn.

Source: https://dev.to/void_stitch/production-ai-api-failures-by-category-what-429s-529s-and-timeouts-are-actually-telling-you-5bo1

Optional learning community: https://t.me/GyaanSetuAi