Hata yönetimi
Ağ geçidinin döndürdüğü durum kodları, kullandığı üç farklı hata gövdesi biçimi ve engellenen bir istemin neden 200 yanıtı üzerinde bir olay olarak geldiği.
- Sürüm: 0.4
- Rol: admin_user, normal_user
Hatalar size iki farklı yoldan ulaşır ve bu fark, onları nasıl ele alacağınızı belirler. Bir istek
sohbet işleyicisine girmeden önce başarısız olursa, bu durum kodu taşıyan sıradan bir HTTP
hatasıdır. Girdikten sonra başarısız olursa, bir 200 OK olay akışının içinde bir olay olarak
gelir; çünkü işleyici, herhangi bir iş yapmadan önce başlıklarını gönderir. Yalnızca
response.ok değerine bakan bir istemci ikinci türü hiç görmez.
Hata gövdesi tek biçimli değildir
Ağ geçidinde genel bir istisna filtresi yoktur; bu nedenle aldığınız gövde, hatayı hangi kod parçasının fırlattığına bağlıdır. Dolaşımda üç biçim vardır.
Bir çerçeve istisnası, örneğin başarısız bir doğrulama veya reddedilen bir belirteç. code
alanı yoktur:
Genel doğrulama işlem hattı gövdeyi reddettiğinde message, başarısız her kısıt için bir tane
olmak üzere bir dizi olur:
Makine tarafından okunabilir bir kod ve durum taşıyan bir koruma. Bunlar code ve bazen ek
bağlam ekler, error alanını ise düşürür:
Bir rol reddi; yalnızca code ve message taşır, başka hiçbir şey — statusCode bile yok.
Durumu gövdeden değil, HTTP yanıt satırından okuyun:
İstemcinizi code, statusCode ve error alanlarının tümünü isteğe bağlı sayacak ve statusCode
yokken HTTP durumuna geri dönecek biçimde yazın.
HTTP durum kodları
| Kod | Anlamı | Ne yapmalı |
|---|---|---|
400 | Gövde doğrulamadan geçmedi veya gerekli bir dosya eksikti | İsteği düzeltin. message bir kısıt hataları dizisi olabilir |
401 | Authorization: Bearer başlığı yok ya da JWT veya cid_key_ reddedildi | Kimlik bilgisini ve Bearer önekini kontrol edin |
402 | LICENSE_EXPIRED — lisans geçersiz veya süresi dolmuş | Bir yönetici Ayarlar → Lisans altından yenileme kurar. Sohbeti, guardrails'i, incelemeyi, görüntü ve belge analizini engeller |
403 | Bir rol veya lisans reddi — READ_ONLY_ROLE, ROLE_NOT_FOR_CHAT veya FEATURE_NOT_LICENSED | Yeniden denemeyin. İçerik engelleri 403 değildir |
404 | Böyle bir rota yok ya da bu kiracı için böyle bir kaynak yok | Yol önekini ve kimliği kontrol edin |
415 | Eski veya makro etkin bir hesap tablosu yüklendi (xls, xlsm, xlsb, xlt, xltm) | xlsx biçimine dönüştürün; bu biçimler güvenle redakte edilemez |
423 | SETUP_REQUIRED — ilk açılış kurulumu tamamlanmamış | Kurulum sihirbazını tamamlayın. Küçük bir izin listesi dışındaki her şey kilitlidir |
429 | Çok fazla oturum açma denemesi | Yalnızca POST /auth/login (IP başına 10/dk) ve parola sıfırlama rotaları (5/dk) sınırlıdır |
500 | JSON döndüren bir rotada ele alınmamış sunucu hatası | Geri çekilmeyle yeniden deneyin, sonra ağ geçidi günlüklerine bakın |
503 | Bir bağımlılığa ulaşılamıyor — oturum açmada dizin ya da bir rapor veya analiz rotasının arkasındaki yardımcı servis | Daha sonra yeniden deneyin. Bir dizin kesintisi yerel oturum açmayı etkilemez |
Warning
/chat/completions ve /sessions/:id/messages hiçbir zaman 500 veya 503 döndürmez. Her ikisi
de herhangi bir iş yapılmadan önce SSE başlıklarını yazar; bu nedenle bir sağlayıcı kesintisi, bir
kimlik bilgisi sorunu ve ele alınmamış bir istisna, 200 yanıtı üzerinde bir hata olayı olarak
gelir.
Kimlik doğrulama hataları
Ağ geçidi, aynı başlık üzerinde ya bir kullanıcı JWT'si ya da bir ağ geçidi API anahtarı kabul eder. Reddetmelerinin hepsi birbirine benzer:
Görebileceğiniz mesajlar şunlardır: Missing or invalid authorization header, Invalid token,
Invalid or expired token, Invalid API key ve Invalid or expired API key. Bunlardan birini
aldığınızda:
- Başlığın
Bearerönekiyle birlikteAuthorization: Bearer <credential>olduğunu doğrulayın.X-API-Keybaşlığı yoktur. - Anahtarın hâlâ
cid_key_ile başladığını ve yeniden oluşturulmadığını doğrulayın. Yeniden oluşturma önceki değeri anında geçersiz kılar. - JWT'nin süresinin dolmadığını ve iptal edilmediğini doğrulayın. Belirteçler
JWT_EXPIRES_INboyunca, varsayılan olarak 24 saat yaşar; çıkış, parola değişikliği, yöneticinin Her yerden çıkış yap komutu veya hesabın devre dışı bırakılması ile daha erken sona erer (code: SESSION_EXPIRED). - Uç noktanın kullandığınız kimlik bilgisini kabul ettiğini doğrulayın.
/sessions/*,/image-analysis/*ve/document-analysis/*yalnızca JWT kabul eder; bir API anahtarı/chat/completionsve/modelsüzerinde çalışsa bile burada reddedilir.
code: "ROLE_NOT_FOR_CHAT" taşıyan bir 403 kimlik doğrulama hatası değildir. auditor rolü sohbet
ve oturum yazma işlemlerinde tasarım gereği reddedilir ve aynı belirteçle yeniden denemek başarılı
olamaz.
Engellenen içerik
İçerik politikası kararları HTTP hatası değildir. Sohbet yüzeyinde akış olayı, tespit yüzeyinde ise
bir action alanı taşıyan başarılı bir yanıttır.
Sohbet, girdi reddedildi. İstem sağlayıcıya hiç ulaşmaz, dolayısıyla token harcanmaz:
Sohbet, yanıt reddedildi — model yanıtladıktan sonra çıktı filtresi tarafından. Yanıt atılır ve hiç gönderilmez:
Oturum mesajları farklı reddeder. POST /sessions/:id/messages kendi girdi reddini hiç error
alanı olmadan yayar; bu nedenle error alanına bakan bir işleyici bunu kaçırır:
Tespit uç noktası. POST /api/v1/guardrails/detect 200 döndürür ve kararı gövdede belirtir:
Warning
action: "reject" değerini ve bir content_rejected olayını hata değil, politika sonucu olarak
ele alın. Aynı metni yeniden denemek aynı kararı üretir. Girdiyi değiştirin ya da filtreyi
değiştirin.
Akışı güvenle okumak
Akıştan yapılan tek bir okuma birkaç data: çerçevesi ya da bir çerçevenin yarısını getirebilir.
Çözülmüş metni tamponlayın ve tek bir okumanın döndürdüğünü ayrıştırmak yerine çerçeve sınırından
bölün. Dört şeyi ele alın: sonlandırıcı [DONE], bir error alanı, tipli reddetme olayları ve tek
içerik olayı.
Bağlantı, içerik olayından önce akış ortasında kopar ise kurtaracak kısmi bir yanıt yoktur — cevap tek parça hâlinde yayılır. Kesilen bir akışı başarısız bir çağrı sayın.
Hangi hatalar yeniden denenir
| Hata | Yeniden dene | Nasıl |
|---|---|---|
| Bağlantı reddedildi, TLS hatası, hiç bayt gelmeden zaman aşımı | Evet | Üstel geri çekilme |
JSON rotasında 500 | Evet | Üstel geri çekilme, ardından ağ geçidi günlüklerini okuyun |
JSON rotasında 503 | Evet | Üstel geri çekilme; sorun sizin isteğinizde değil, bağımlılıkta |
POST /auth/login üzerinde 429 | Evet, yavaşça | Bir dakikalık pencerenin dolmasını bekleyin. Retry-After başlığı gönderilmez |
400 doğrulama hatası | Hayır | Gövdeyi düzeltin. Sessizce çıkarılmış bilinmeyen alanlara bakın |
401 | Bir kez | JWT'yi yenileyin veya anahtarı kontrol edin. Aynı kimlik bilgisiyle tekrarlamak işe yaramaz |
402, 403, 423 | Hayır | Önce bir lisans, rol veya kurulum durumu değişmelidir |
415 | Hayır | Dosyayı desteklenen bir türe dönüştürün |
content_rejected / output_content_rejected | Hayır | Aynı girdi aynı kararı üretir |
| Sohbet akışındaki hata olayı | Dikkatle | Sağlayıcı zaten faturalandırılmış olabilir. Yeniden denemek harcamayı tekrarlar |
Note
Ağ geçidinde hiçbir yer Retry-After, X-RateLimit-Limit veya X-RateLimit-Remaining yaymaz. Bu
başlıkları okuyan yeniden deneme mantığı her yanıtta null okur.
Sınırlar ve bilinen eksikler
- Tek biçimli hata zarfı yok. Üç gövde biçimi bir arada bulunur ve yalnızca korumaların
ürettiği hatalar
codetaşır.codealanını zorunlu sayan bir istemci yazmayın. - İçerik kararları için hata kodu sınıflandırması yok. Bir engelleme, üzerinde dallanma
yapabileceğiniz kalıcı bir kodla değil, bir olay tipi ve serbest metinli bir
reasonile anlatılır. - Sohbet hataları 200'ün arkasına saklanır. 2xx dışı yanıtları sayan izleme,
/chat/completionsüzerindeki bir sağlayıcı kesintisini başarı olarak kaydeder. - İki sohbet yüzeyi birbiriyle uyuşmaz.
/chat/completionsgirdiyi birerroralanıyla reddeder;/sessions/:id/messagesisetype: "content_rejected"ve birreasonile. Ortak bir istemcinin her ikisini de ele alması gerekir. - Genel sohbet hata mesajı belirsizdir. Denetleyicideki ele alınmamış bir istisna, hiçbir
ayrıntı içermeyen
{"error":"An error occurred"}yazar; nedeni yalnızca ağ geçidi günlüğündedir. - Hız sınırı bildirimi yok. Yalnızca oturum açma rotaları sınırlı olduğu için, istek yolunda bir istemciyi hizalayabileceğiniz bir kota başlığı yoktur.
İlgili sayfalar
- En iyi uygulamalar — kimlik bilgisi yönetimi, yeniden deneme politikası ve tamponlanan akışın arayüzünüz için anlamı.
- Entegrasyon örnekleri — burada gösterilen ele alma biçimini uygulayan istemciler.
- Sohbet API'si —
/chat/completionsiçin tam olay listesi.
Son güncelleme