Streamovanie
Ako streamované dokončenie dorazí v prenose, čo nesie posledný rámec a čo sa stane, keď sa klient odpojí.
Transport
Nastavte stream: true a odpoveďou je text/event-stream: jeden JSON objekt na riadok data:, za každým nasleduje prázdny riadok. Bufferovanie je vypnuté, aby proxy nezadržiavala rámce.
HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive
Rámce
Prvý rámec nesie rolu asistenta, potom jeden rámec na deltu, potom rámec s finish_reason a blokom smerovania, potom presne jeden terminátor. Klient, ktorý dodržiava formát, prečíta terminátor a zastaví sa; nesmie chýbajúci terminátor považovať za úplnú odpoveď.
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hallo"},"finish_reason":null}]}
data: {"id":"chatcmpl-…","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"llmeu":{…}}
data: [DONE]
Blok smerovania cestuje s posledným rámcom
Posledný rámec nesie rovnaký objekt llmeu, aký vracia nestreamovaná odpoveď: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention a odhad nákladov. V režime streamovania je využitie známe až na konci, a preto blok cestuje s posledným rámcom, nie s prvým.
Odpojenia klienta
Zatvorenie spojenia zastaví prácu a zapíše trace s tým, čo sa skutočne vytvorilo. Zrušená požiadavka je stále volanie, ktoré sa uskutočnilo, takže sa objaví vo využití; nezaznamená sa ako dokončené dokončenie.
Čo sa nedá streamovať
Embeddingy a platformové API vracajú jedinú JSON odpoveď. stream: true na nestreamovacej trase je validačná chyba, nie tichý fallback na jeden rámec.