Srautinis perdavimas
Kaip srautu perduodamas užbaigimas atkeliauja tinklu, ką neša paskutinis kadras ir kas nutinka, kai klientas atsijungia.
Perdavimas
Nustatykite stream: true, ir atsakymas bus text/event-stream: vienas JSON objektas kiekvienoje data: eilutėje, o po kiekvieno eina tuščia eilutė. Buferizavimas išjungtas, kad tarpinis serveris neužlaikytų 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 vienam delta, tada kadras su finish_reason ir maršrutizavimo bloku, tada lygiai vienas pabaigos žymeklis. Klientas, kuris laikosi formato, perskaito pabaigos žymeklį ir sustoja; jis neturi laikyti trūkstamo pabaigos žymeklio išsamiu atsakymu.
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 srautu perduodamas 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 sužinomas tik pabaigoje, todėl blokas keliauja su paskutiniu, o ne pirmuoju kadru.
Klientas atsijungia
Ryšio uždarymas sustabdo darbą ir įrašo pėdsaką su tuo, kas iš tikrųjų buvo sukurta. Atšaukta užklausa vis tiek yra įvykęs kvietimas, todėl ji rodoma naudojime; ji neįrašoma kaip užbaigtas užbaigimas.
Ko negalima perduoti srautu
Įterpiniai ir platformos API yra vieni JSON atsakymai. stream: true maršrute be srauto yra validacijos klaida, o ne tylus perėjimas prie vieno kadro.