Srautas
Kaip srautinis atsakymas ateina per tinklą, ką neša paskutinis kadras ir kas nutinka, kai klientas atsijungia.
Transportas
Nustatykite stream: true, ir atsakymas bus text/event-stream: vienas JSON objektas kiekvienoje data: eilutėje, po kiekvienos eina tuščia eilutė. Buferizavimas išjungtas, kad tarpinis serveris neatidėliotų kadrų.
HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive
Kadrai
Pirmasis kadras neša asistento vaidmenį, tada vienas kadras kiekvienam delta, tada kadras su finish_reason ir maršrutizavimo bloku, tada lygiai vienas terminatorius. Klientas, kuris laikosi formato, perskaito terminatorių ir sustoja; jis neturi traktuoti trūkstamo terminatoriaus kaip užbaigto atsakymo.
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]
Maršrutizavimo blokas keliauja su paskutiniu kadru
Paskutinis kadras neša tą patį llmeu objektą, kurį grąžina ne srautinis atsakymas: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention ir išlaidų sąmatą. Srauto režimu naudojimas žinomas tik pabaigoje, todėl blokas keliauja su paskutiniu, o ne pirmuoju kadru.
Kliento atsijungimai
Ryšio uždarymas sustabdo darbą ir įrašo pėdsaką su tuo, kas iš tikrųjų buvo sukurta. Atšauktas užklausimas vis tiek yra įvykęs kvietimas, todėl jis rodomas naudojime; jis nėra įrašomas kaip užbaigtas atsakymas.
Ko negalima siųsti srautu
Įterpiniai ir platformos API yra pavieniai JSON atsakymai. stream: true ne srauto maršrute yra validavimo klaida, o ne tylus perėjimas prie vieno kadro.