𝗗𝗲𝗯𝘂𝗴𝗼𝘄𝗮𝗻𝗶𝗲 𝗦𝘁𝗿𝗲𝗮𝗺𝗶𝗻𝗴𝘂 𝗔𝗜: 𝗖𝗵𝘂𝗻𝗸𝘀 𝗶 𝗧𝗶𝗺𝗲𝗼𝘂𝘁𝘀

Zbudowałem interfejs czatu AI. Chciałem, aby odpowiedzi pojawiały się słowo po słowie. Nie udało się. Odpowiedzi urywały się w połowie słowa.

Zwiększyłem timeout. To nie zadziałało. Próbowałem pętli retry. To spowodowało powtarzanie się słów. Próbowałem buforowania. To spowolniło aplikację.

Przyczyną był błąd parsowania. API wysyła linie JSON-LD. Mój kod przestał działać, zanim strumień się zakończył. Zignorował sygnał zakończenia.

Rozwiązanie:

  • Używaj bajtów zamiast linii.
  • Zarządzaj buforem ręcznie.
  • Szukaj sygnału [DONE].
  • Utrzymuj połączenie otwarte.

Wtedy zamarzł frontend. React aktualizował się zbyt szybko. Aby to naprawić, zastosowałem throttling na serwerze.

Wskazówki dla Ciebie:

  • Przeczytaj specyfikację streamingu.
  • Znajdź jawne zdarzenie zakończenia.
  • Używaj bibliotek SSE.
  • Śledź swoje dane.

Nigdy nie ufaj, że strumień zakończy się w sposób uporządkowany.

Jaki jest Twój najdziwniejszy błąd związany ze streamingiem?

Źródło: https://dev.to/__c1b9e06dc90a7e0a676b/debugging-ai-streaming-a-tale-of-chunks-and-timeouts-1p6m