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.