Lỗi

Mọi mã trạng thái mà gateway trả về, nguyên nhân thực tế và cách khắc phục.

Lỗi trả về JSON kèm theo một type và một thông báo dễ đọc message. Mã trạng thái tuân theo quy ước của Anthropic và OpenAI.

{"type": "error", "error": {"type": "authentication_error", "message": "invalid api key"}}

Mã trạng thái

MãÝ nghĩaNguyên nhân thực tế thường gặp nhấtCách khắc phục
400Yêu cầu không hợp lệThiếu max_tokens trong Messages, hoặc có một giá trị sai định dạng messages mảngĐối chiếu phần thân yêu cầu với Messages
401Chưa xác thựcKhóa được gửi trong header không phù hợp với định dạngx-api-key cho Messages, Bearer cho Chat Completions
402Yêu cầu thanh toánSố dư đã hết hoặc gói đã hết hạnNạp tiền hoặc mua gói
403Bị cấm truy cậpKhóa đã bị thu hồi, hoặc mô hình chưa được bật cho tài khoảnTạo khóa mới; kiểm tra /v1/models
404Không tìm thấySai URL cơ sở — thường do lặp hoặc thiếu /v1Xem URL cơ sở
429Bị giới hạn tốc độQuá nhiều yêu cầu đồng thờiTăng thời gian chờ theo cấp số nhân trước mỗi lần thử lại; xem Giới hạn tốc độ
500Lỗi cổng kết nốiLỗi nội bộ ngoài dự kiếnThử lại một lần; nếu lỗi vẫn tiếp diễn, liên hệ bộ phận hỗ trợ kèm mã định danh yêu cầu
529Dịch vụ thượng nguồn quá tảiDo năng lực xử lý của nhà cung cấp, không phải do tài khoản của bạnThử lại với thời gian chờ tăng dần — thường hết lỗi sau vài giây

Loại lỗi

loạiÝ nghĩa
invalid_request_errorPhần thân yêu cầu sai định dạng hoặc thiếu trường bắt buộc
authentication_errorKhóa bị thiếu, sai định dạng hoặc đã bị thu hồi
permission_errorKhóa hợp lệ nhưng không được phép sử dụng mô hình đó
not_found_errorĐường dẫn hoặc mã định danh mô hình không xác định
rate_limit_errorBị hạn chế tốc độ
api_errorLỗi nội bộ
overloaded_errorNăng lực xử lý của dịch vụ thượng nguồn đã cạn

Thử lại đúng cách

Thử lại 429, 500, 502, 503 và 529. Không bao giờ thử lại một cách mù quáng 400, 401, 402 hoặc 403 — cùng một yêu cầu sẽ thất bại theo cùng một cách, và với phản hồi đã được tạo một phần, bạn có thể phải trả phí hai lần.

import time, httpx

def call(body, key, tries=4):
    for i in range(tries):
        r = httpx.post(class="s">"https://aiprimetech.io/v1/messages", json=body, timeout=120,
                       headers={class="s">"x-api-key": key,
                                class="s">"anthropic-version": class="s">"2023-06-01"})
        if r.status_code in (429, 500, 502, 503, 529):
            time.sleep(2 ** i)          class=class="s">"c"># 1s, 2s, 4s, 8s
            continue
        r.raise_for_status()
        return r.json()
    raise RuntimeError(class="s">"upstream unavailable after retries")
Thêm độ ngẫu nhiên vào thời gian chờ trong môi trường vận hành thực tế. Khi nhiều tiến trình xử lý đồng loạt thử lại, một trục trặc nhỏ sẽ biến thành một đợt yêu cầu dồn dập tới cùng dịch vụ thượng nguồn.