Przejdź do treści

Błędy

Poznaj odpowiedzi błędów Webway, kody stanu i zasady bezpiecznego ponawiania żądań.

Błędy mają prosty format JSON, który mogą przetwarzać zestawy SDK zgodne z OpenAI:

json
{
  "error": {
    "message": "insufficient credit",
    "type": "insufficient_quota",
    "code": "insufficient_quota"
  }
}

type to ogólna wartość, na podstawie której biblioteki klienckie wybierają sposób obsługi. code jest bardziej szczegółowa i różni się od type tylko wtedy, gdy źródłem błędu jest dostawca.

Format odpowiedzi zależy od punktu końcowego. /v1/messages zwraca format Anthropic, dzięki czemu zestawy SDK Anthropic i Claude Code mogą go przetworzyć oraz zastosować własną logikę ponawiania bez specjalnej obsługi tej bramy:

json
{
  "type": "error",
  "error": {
    "type": "overloaded_error",
    "message": "the provider is over capacity, retry shortly (request 4f2ab910)",
    "code": "overloaded"
  }
}

Kody stanu

Stan Znaczenie Ponowić?
400 Nieprawidłowy JSON, pola lub parametry Nie; popraw żądanie
401 Brak klucza API albo klucz jest nieprawidłowy, wygasł lub został unieważniony Nie; zastąp klucz
402 Twoje saldo nie wystarcza do pokrycia żądania Po doładowaniu salda
403 Model wymaga własnego klucza API dostawcy Nie; dodaj go w panelu
404 Nie znaleziono modelu lub punktu końcowego Nie; sprawdź identyfikator i ścieżkę
413 Treść żądania jest zbyt duża Nie; zmniejsz ilość danych
429 Osiągnięto limit częstotliwości Tak; odczekaj i ponów
502 / 503 Dostawca jest niedostępny Tak; ponawiaj z opóźnieniem
504 Dostawca przekroczył limit czasu Tak; ponawiaj z opóźnieniem

Kod 402 zawsze dotyczy wyłącznie twojego salda. Problem z rozliczeniem między Webway a dostawcą ma kod 502, ponieważ nie masz na niego wpływu.

Błędy dostawców

Gdy źródłem błędu jest dostawca, a nie twoje żądanie, wartość code wskazuje jego rodzaj:

code Stan Znaczenie Ponowić?
model_unavailable 502 Dostawca nie obsłuży tego modelu. To my musimy to naprawić Nie
context_length_exceeded 400 Żądanie jest dłuższe niż okno kontekstu modelu Nie
content_filtered 400 Warstwa bezpieczeństwa dostawcy odrzuciła żądanie Nie
invalid_request 400 Dostawca odrzucił żądanie Nie
rate_limited 429 Limit częstotliwości po stronie dostawcy Tak
overloaded 503 Dostawca nie ma wolnych zasobów Tak
timeout 504 Dostawca nie odpowiedział na czas Tak
transport_error 502 Połączenie z dostawcą nie powiodło się Tak
upstream_error 502 Błąd niesklasyfikowany. Zawsze go badamy Być może

Tekst błędu dostawcy nigdy nie jest przekazywany bez zmian. Dostawcy opisują awarie własnym słownictwem, czasem w innym języku, często wymieniając elementy infrastruktury, które nie należą do ciebie, a tekst ten zmienia się bez ostrzeżenia. Każdy błąd jest klasyfikowany według powyższego zestawu i zapisywany na nowo, dzięki czemu otrzymujesz komunikat wystarczająco stabilny do użycia w logach.

Każdy komunikat kończy się identyfikatorem żądania Webway. Podaj go w zgłoszeniu do pomocy technicznej — to identyfikator, który można rzeczywiście wyszukać.

Błędy podczas przesyłania strumieniowego

Żądanie może zakończyć się błędem już po wysłaniu nagłówków odpowiedzi. Nie można wtedy zmienić kodu stanu, więc błąd pojawia się jako zdarzenie w strumieniu, w tym samym protokole co pozostałe dane — event: error w /v1/messages, zdarzenie error w /v1/responses oraz fragment error w /v1/chat/completions. Wartości code są takie same jak w tabeli.

Traktuj strumień zakończony bez zdarzenia końcowego jako błąd, a nie krótką odpowiedź.

Zasady ponawiania

Ponawiaj tylko odpowiedzi 429 i przejściowe odpowiedzi 5xx. Stosuj wykładniczo rosnące opóźnienie z losowym rozrzutem, ogranicz liczbę prób i przestrzegaj Retry-After, gdy ten nagłówek jest obecny.

Nie ponawiaj bez zmian żądań zakończonych kodem 400, 401, 402, 403, 404 lub 413. To samo żądanie ponownie zakończy się błędem.

Za żądania odrzucone przed rozpoczęciem pracy przez dostawcę nie jest naliczana opłata. Żądanie, które zakończy się błędem po rozpoczęciu generowania, może zostać rozliczone za już wygenerowane tokeny; dotyczy to także żądania anulowanego w trakcie przesyłania strumieniowego.