strumieniowanie odpowiedzi

Wysyłanie odpowiedzi modelu fragmentami, w miarę jak powstają, zamiast czekania na całość. Nie przyspiesza generowania — maskuje jego czas, którego nie da się usunąć, bo wynika z sekwencyjnej natury fazy decode.

W Polsce nazywane też:

strumieniowanie odpowiedzistreamingodpowiedź strumieniowatoken po tokenie

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ść.