Поточно предаване

Как пристига поточно предаден отговор по мрежата, какво носи последният кадър и какво се случва, когато клиент се разкачи.

Транспортът

Задайте stream: true и отговорът е text/event-stream: един JSON обект на ред data:, всеки последван от празен ред. Буферирането е изключено, така че проксито не задържа кадри.

HTTP/1.1 200 OK
content-type: text/event-stream; charset=utf-8
cache-control: no-cache, no-transform
connection: keep-alive

Кадрите

Първият кадър носи ролята на асистента, след това един кадър на делта, после кадър с finish_reason и блока за маршрутизиране, накрая точно един терминатор. Клиент, който спазва формата, прочита терминатора и спира; не трябва да приема липсващ терминатор за пълен отговор.

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]

Блокът за маршрутизиране пътува с последния кадър

Последният кадър носи същия обект llmeu, който връща отговорът без поточно предаване: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention и оценката на разходите. В режим на поточно предаване използването се знае само накрая, затова блокът пътува с последния кадър, а не с първия.

Клиентът се разкачва

Затварянето на връзката спира работата и записва следата с това, което действително е произведено. Отменената заявка все още е извикване, което се е случило, затова се появява в използването; не се записва като завършен отговор.

Какво не може да се предава поточно

Embeddings и платформеният API са единични JSON отговори. stream: true на маршрут без поточно предаване е грешка при валидиране, а не тихо връщане към един кадър.