Nikt nie wymyślił wyświetlania odpowiedzi po kawałku dlatego, że tak ładnie wygląda. Wymyślono to, bo generowanie trwa i bez strumienia użytkownik siedziałby kilkadziesiąt sekund przed pustym ekranem.
Czym jest strumieniowanie
Strumieniowanie to tryb odpowiedzi, w którym serwer wysyła kolejne fragmenty wygenerowanego tekstu w miarę ich powstawania, zamiast odsyłać całość po zakończeniu generowania. Technicznie realizowane najczęściej przez zdarzenia wysyłane przez serwer.
Czego nie robi
Nie przyspiesza generowania ani o milisekundę. Faza decode jest sekwencyjna z natury — token siódmy wymaga znajomości szóstego i żaden sprzęt tego nie obejdzie.
Nie skraca też czasu do pierwszego tokena. Cisza przed pierwszym słowem to sieć, kolejka i prefill; strumień zaczyna się dopiero po niej.
Strumieniowanie jest plastrem na ograniczenie fizyczne: zamienia jedno długie oczekiwanie na serię krótkich, z których żadne nie jest nieznośne.
Konsekwencje praktyczne
Odpowiedź może zostać przerwana w połowie — przez filtr wyjścia, przez limit, przez zerwane połączenie. Część tokenów została już wysłana i policzona, a wynik jest niekompletny. Obsługa tego przypadku jest wymagana, nie opcjonalna.
Parsowanie ustrukturyzowanego wyjścia ze strumienia jest trudniejsze, bo przez większość czasu masz niekompletny dokument. Tam, gdzie wynik trafia do kodu, a nie do człowieka, strumień zwykle nie jest wart komplikacji.
Skąd bierze się wrażenie szybkości
Od chwili, gdy tekst zaczyna płynąć, użytkownik przestaje oceniać szybkość. Dlatego czas do pierwszego tokena jest metryką ważniejszą dla doświadczenia niż tempo generowania — a strumieniowanie przesuwa całą uwagę na tę pierwszą wartość.