Title: Streaming %E2%80%94 LLM EU Canonical: https://llmeu.com/it/docs/streaming/ Markdown mirror: https://llmeu.com/it/docs/streaming.md Machine-readable: https://llmeu.com/llms.txt (index) - https://llmeu.com/llms-full.txt (full catalogue) - https://llmeu.com/llms-catalogue.json Inizia - [Avvio rapido](/it/docs/quickstart/) - [Console](/it/docs/console/) - [Migrazione](/it/docs/migration/) - [Riferimento API](/it/docs/api/) Riferimento - [Autenticazione](/it/docs/authentication/) - [Endpoint](/it/docs/endpoints/) - [Errori](/it/docs/errors/) - [Limiti di frequenza](/it/docs/rate-limits/) - [Streaming](/it/docs/streaming/) - [Policy](/it/docs/policies/) - [Routing e policy](/it/docs/routing/) - [Residenza e regioni](/it/docs/residency/) - [Prove e verifica](/it/docs/evidence/) - [Compatibilit%C3%A0 OpenAI](/it/docs/openai-compat/) Operazioni - [Self-hosting](/it/docs/self-hosting/) # Streaming Come arriva una completion in streaming sulla rete, cosa contiene l'ultimo frame e cosa succede quando un client si disconnette. ## Il trasporto Imposta stream: true e la risposta %C3%A8 text/event-stream: un oggetto JSON per riga data:, ciascuna seguita da una riga vuota. Il buffering %C3%A8 disabilitato in modo che un proxy non trattenga i frame. ``` HTTP/1.1 200 OK content-type: text/event-stream; charset=utf-8 cache-control: no-cache, no-transform connection: keep-alive ``` ## I frame Il primo frame contiene il ruolo assistant, poi un frame per ogni delta, poi un frame con finish_reason e il blocco di routing, poi esattamente un terminatore. Un client che segue il formato legge il terminatore e si ferma; non deve trattare un terminatore mancante come una risposta completa. ``` data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]} data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hallo"},"finish_reason":null}]} data: {"id":"chatcmpl-%E2%80%A6","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"llmeu":{%E2%80%A6}} data: [DONE] ``` ## Il blocco di routing viaggia con l'ultimo frame Il frame finale contiene lo stesso oggetto llmeu che la risposta non in streaming restituisce: trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention e la stima dei costi. In modalit%C3%A0 streaming l'utilizzo %C3%A8 noto solo alla fine, motivo per cui il blocco viaggia con l'ultimo frame anzich%C3%A9 con il primo. ## Disconnessioni del client Chiudere la connessione interrompe il lavoro e scrive la traccia con ci%C3%B2 che %C3%A8 stato effettivamente prodotto. Una richiesta annullata %C3%A8 comunque una chiamata che %C3%A8 avvenuta, quindi appare nell'utilizzo; non %C3%A8 registrata come una completion completata. ## Cosa non pu%C3%B2 essere trasmesso in streaming Gli embedding e l'API della piattaforma sono risposte JSON singole. stream: true su una rotta non in streaming %C3%A8 un errore di validazione, non un fallback silenzioso a un frame.