Streamování
Jak streamované dokončení dorazí po drátě, co nese poslední rámec a co se stane, když se klient odpojí.
Transport
Nastavte stream: true a odpověď je text/event-stream: jeden objekt JSON na řádek data:, každý následovaný prázdným řádkem. Bufferování je zakázáno, aby proxy nezdržovalo 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
První rámec nese roli asistenta, pak jeden rámec na delta, pak rámec s finish_reason a blokem směrování, pak přesně jeden terminátor. Klient, který dodržuje formát, přečte terminátor a zastaví se; nesmí považovat chybějící terminátor za úplnou odpověď.
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 směrování cestuje s posledním rámcem
Poslední rámec nese stejný objekt llmeu, který vrací nestreamovaná odpověď: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention a odhad nákladů. Ve streamovacím režimu je využití známo až na konci, a proto blok cestuje s posledním rámcem, nikoli s prvním.
Odpojení klienta
Uzavření spojení zastaví práci a zapíše trasování s tím, co bylo skutečně vyprodukováno. Zrušený požadavek je stále volání, které se stalo, takže se objeví ve využití; není zaznamenán jako dokončené dokončení.
Co nelze streamovat
Embeddingy a platformové API jsou jednotlivé odpovědi JSON. stream: true na nestreamovací trase je chyba validace, nikoli tichý fallback na jeden rámec.