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:
{
"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:
{
"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.