Referensi
Error
Setiap exception yang dimunculkan intura_ai, kapan masing-masing terjadi, dan apa yang perlu dilakukan. predict pada model yang sudah dimuat tidak memunculkan satu pun.
Satu kelas dasar
Semua yang dimunculkan paket ini turunan dari InturaError, jadi Anda cukup menangkap satu kelas:
from intura_ai import Intura, InturaError
try:
model = Intura().models.load("chat-commerce-intent-id")
except InturaError as exc:
print(f"Could not get the model: {exc}")Hanya panggilan API dan unduhan yang memunculkannya. Begitu model dimuat, predict tidak memunculkan satu pun dari daftar ini, karena ia berjalan di proses Anda.
Yang akan Anda temui
| Exception | Kapan |
|---|---|
MissingAPIKey | Unduhan dibutuhkan dan tidak ada kunci yang diatur |
AuthenticationError | Kunci salah atau sudah dicabut |
NotFound | Model yang bukan milik Anda, atau versi yang tidak ada |
RateLimited | Terlalu banyak panggilan dalam waktu singkat. Dicoba ulang otomatis lebih dulu, dan retry_after menyebut kapan mencoba lagi |
TransferError | Cloud Storage menolak atau memutus sebuah berkas. Tidak ada yang masuk cache, jadi aman dicoba ulang |
APIConnectionError / APITimeoutError | API tidak bisa dihubungi. Model yang sudah ada di cache tetap bisa dimuat |
Setiap pesan menjelaskan apa yang perlu dilakukan, bukan hanya apa yang salah. MissingAPIKey, misalnya, menunjukkan kedua cara mengatur kunci dan menautkan ke halaman akun Anda.
Anggota keluarga lainnya
Setiap error yang dijawab API dengan kode status adalah APIError. Ia membawa status_code, message (teks yang ditulis layanan), dan request_id, string yang perlu Anda sebutkan saat meminta bantuan.
| Exception | Status | Kapan |
|---|---|---|
InvalidRequest | 400 | Permintaan tidak bisa dibaca |
AuthenticationError | 401 | Tanpa kunci, kunci tidak dikenal, atau kunci yang dicabut |
PermissionDenied | 403 | Kunci valid yang tidak boleh melakukan ini |
NotFound | 404 | Model yang bukan milik Anda, versi yang tidak ada, atau base_url yang sudah berisi path |
InvalidParameters | 422 | Ada nilai yang salah; pesannya menyebut field-nya |
RateLimited | 429 | Terlalu banyak panggilan terlalu cepat |
ServerError | 5xx | Layanan gagal. Dicoba ulang otomatis sebelum sampai ke Anda |
APIConnectionError (dan subkelasnya APITimeoutError) serta TransferError bukan APIError: layanan tidak pernah menjawab, atau berkasnya datang dari Cloud Storage, bukan dari Intura. TransferError juga punya status_code, yaitu milik bucket.
Percobaan ulang
Klien mencoba ulang error koneksi, timeout, dan respons 408, 429, 500, 502, 503, dan 504 untuk Anda, hingga max_retries kali (default 2), dengan jeda di antaranya (selama yang diminta Retry-After layanan, jika dikirim). Melihat RateLimited atau ServerError berarti percobaan ulang itu sudah habis. Permintaan yang ditolak karena isinya tidak pernah dicoba ulang. Lihat Konfigurasi untuk mengubah jumlahnya.
Error di luar keluarga ini
| Exception | Kapan |
|---|---|
FileNotFoundError | LocalModel.load(path) diberi folder yang bukan model hasil unduhan |
ValueError | load diberi version= dan refresh=True sekaligus, atau slug atau versi yang tidak valid |
TypeError | predict diberi selain str, atau predict_batch diberi satu str |
Tetap jalan saat API tidak bisa dihubungi
Model yang sudah ada di cache bisa dimuat tanpa API. Jika meminta versi terbaru gagal, kembali ke versi terbaru yang sudah Anda punya:
from intura_ai import APIConnectionError, Intura
client = Intura()
try:
model = client.models.load("chat-commerce-intent-id", refresh=True)
except APIConnectionError:
model = client.models.load("chat-commerce-intent-id") # the newest cached version