Striimaus
Miten striimattu vastaus saapuu siirtoon, mitä viimeinen kehys sisältää ja mitä tapahtuu, kun asiakasohjelma katkaisee yhteyden.
Siirtotapa
Aseta stream: true, ja vastaus on text/event-stream: yksi JSON-objekti kutakin data:-riviä kohti, jokaisen jälkeen tyhjä rivi. Puskurointi on poistettu käytöstä, joten välityspalvelin ei pidättele kehyksiä.
HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive
Kehykset
Ensimmäinen kehys sisältää assistant-roolin, sitten yksi kehys kutakin deltaa kohti, sitten kehys, jossa on finish_reason ja reitityslohko, sitten täsmälleen yksi lopetusmerkki. Asiakasohjelma, joka noudattaa muotoa, lukee lopetusmerkin ja pysähtyy; sen ei pidä käsitellä puuttuvaa lopetusmerkkiä täydellisenä vastauksena.
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]
Reitityslohko kulkee viimeisen kehyksen mukana
Viimeinen kehys sisältää saman llmeu-objektin, jonka ei-striimaava vastaus palauttaa: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention ja kustannusarvio. Striimaustilassa käyttö tiedetään vasta lopussa, minkä vuoksi lohko kulkee viimeisen eikä ensimmäisen kehyksen mukana.
Asiakasohjelman yhteyden katkeaminen
Yhteyden sulkeminen pysäyttää työn ja kirjoittaa jäljityksen sillä, mitä todella tuotettiin. Peruutettu pyyntö on silti kutsu, joka tapahtui, joten se näkyy käytössä; sitä ei kirjata valmiina vastauksena.
Mitä ei voi striimata
Upotukset ja alustan API ovat yksittäisiä JSON-vastauksia. stream: true ei-striimaavalla reitillä on validointivirhe, ei hiljainen varakeino yhteen kehykseen.