𝗗𝗲𝗯𝘂𝗴𝗼𝘄𝗮𝗻𝗶𝗲 𝗦𝘁𝗿𝗲𝗮𝗺𝗶𝗻𝗴𝘂 𝗔𝗜: 𝗖𝗵𝘂𝗻𝗸𝘀 𝗶 𝗧𝗶𝗺𝗲𝗼𝘂𝘁𝘀
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