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.