5 rzeczy, w których AI się myli w przypadku Fetch API

Asystenci programowania AI piszą kod, który wygląda poprawnie. Nie piszą jednak kodu, który jest poprawny.

Większość modeli sugeruje prosty fragment kodu fetch. Działa on w wersji demo, ale zawodzi w środowisku produkcyjnym. Fetch API to narzędzie niskopoziomowe, a nie kompletny klient HTTP. Wymaga ono od Ciebie podjęcia decyzji architektonicznych, których AI nie jest w stanie podjąć.

Oto 5 sposobów, w których AI zawodzi w przypadku fetch:

  • Obsługa błędów AI zakłada, że nieudane żądanie odrzuca (reject) promise. To błąd. Błąd 404 lub 500 nie uruchamia bloku catch. Musisz ręcznie sprawdzić response.ok. Jeśli tego nie zrobisz, Twoja aplikacja potraktuje strony błędów jako poprawne dane.

  • Anulowanie żądań AI często zapomina o użyciu AbortController. Powoduje to wycieki pamięci i wyścigi (race conditions) w frameworkach takich jak React. Jeśli użytkownik szybko klika przez listę, stare żądania mogą zostać rozwiązane po nowych. Powoduje to wyświetlanie nieaktualnych danych w interfejsie użytkownika (UI). Musisz również filtrować błędy typu AbortError, aby nie wyświetlać komunikatów o błędach podczas celowego anulowania żądania.

  • Strumieniowanie danych AI traktuje odpowiedzi jako pojedyncze bloki. To zawodzi przy obsłudze dużych plików lub odpowiedzi z modeli LLM. Fragmenty sieciowe (chunks) mogą dzielić pojedynczy znak lub linię JSON na pół. Musisz użyć TextDecoderStream oraz bufora, aby poprawnie obsługiwać bajty w różnych fragmentach.

  • Odporność i ponawianie prób AI dostarcza naiwne pętle ponawiania prób (retry loops). Te pętle są niebezpieczne. Często ponawiają żądania POST, co może prowadzić do podwójnego naliczenia opłat lub duplikowania danych. Brakuje im również mechanizmów backoff i jitter. To zmienia małą chwilową awarię serwera w potężną przerwę w działaniu usługi. Powinieneś ponawiać jedynie żądania idempotentne i stosować wykładniczy backoff (exponential backoff).

  • Różnice w środowiskach AI miesza zasady przeglądarki z zasadami Node.js. Node.js nie wymusza CORS. Node.js ma inne domyślne limity czasu (timeouts). W Node.js musisz skonsumować body, aby uniknąć wycieków połączeń. AI nie wie, w jakim środowisku uruchomieniowym będziesz pracować, więc często podaje kod, który działa w jednym, ale zawodzi w drugim.

Strategia:

Używaj AI do tworzenia szkieletu (scaffolding). Pozwól mu pisać kod powtarzalny (boilerplate) i podstawową strukturę.

Musisz kontrolować semantykę. To Ty decydujesz, czy 404 jest błędem. Ty decydujesz o budżecie na ponawianie prób. Ty decydujesz, jak obsługiwać nagłówki uwierzytelniające (auth headers).

AI optymalizuje pod kątem kodu, który wygląda prawdopodobnie. Ty musisz optymalizować pod kątem poprawności.

Source: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e