Pretakanje
Kako prispe dokončanje s pretakanjem 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. Medpomnjenje je onemogočeno, da posrednik ne zadržuje okvirov.
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 s finish_reason in blokom usmerjanja, nato natanko en zaključni znak. Odjemalec, ki sledi formatu, prebere zaključni znak in se ustavi; manjkajočega zaključnega znaka 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
Končni okvir nosi isti objekt llmeu, ki ga vrne nepretakajoči se odgovor: 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 uporaba 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 uporabi; ni zabeležena kot dokončano dokončanje.
Česa ni mogoče pretakati
Vdelave in platforma API so enojni odgovori JSON. stream: true na poti brez pretakanja je napaka pri preverjanju, ne pa tiho preklapljanje na en okvir.