Pretakanje
Kako pretakano dokončanje prispe po žici, kaj nosi zadnji okvir in kaj se zgodi, ko se odjemalec odklopi.
Transport
Nastavite stream: true in odgovor je text/event-stream: en objekt JSON na vrstico data:, vsaki sledi prazna vrstica. Medpomnenje je onemogočeno, da posrednik ne zadržuje okvirjev.
HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive
Okviri
Prvi okvir nosi vlogo pomočnika, nato en okvir na delta, nato okvir z finish_reason in blokom usmerjanja, nato točno en zaključek. Odjemalec, ki sledi obliki, prebere zaključek in se ustavi; manjkajočega zaključka ne sme obravnavati kot popoln odgovor.
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 usmerjanja potuje z zadnjim okvirom
Zadnji okvir nosi enak objekt llmeu, kot ga vrne odgovor brez pretakanja: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention in oceno stroškov. V načinu pretakanja je poraba znana šele na koncu, zato blok potuje z zadnjim okvirom in ne s prvim.
Odklop odjemalca
Zaprtje povezave ustavi delo in zapiše sled s tem, kar je bilo dejansko proizvedeno. Preklicana zahteva je še vedno klic, ki se je zgodil, zato se pojavi v porabi; ni zabeležena kot dokončano dokončanje.
Česa ni mogoče pretakati
Vdelave in platformski API so posamezni odgovori JSON. stream: true na poti brez pretakanja je napaka preverjanja, ne tiho nadomestilo z enim okvirom.