Title: Streaming %E2%80%94 LLM EU Canonical: https://llmeu.com/fr/docs/streaming/ Markdown mirror: https://llmeu.com/fr/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 Premiers pas - [D%C3%A9marrage rapide](/fr/docs/quickstart/) - [Console](/fr/docs/console/) - [Migration](/fr/docs/migration/) - [R%C3%A9f%C3%A9rence de l'API](/fr/docs/api/) R%C3%A9f%C3%A9rence - [Authentification](/fr/docs/authentication/) - [Points de terminaison](/fr/docs/endpoints/) - [Erreurs](/fr/docs/errors/) - [Limites de d%C3%A9bit](/fr/docs/rate-limits/) - [Streaming](/fr/docs/streaming/) - [Politiques](/fr/docs/policies/) - [Routage et politique](/fr/docs/routing/) - [R%C3%A9sidence et r%C3%A9gions](/fr/docs/residency/) - [Preuves et v%C3%A9rification](/fr/docs/evidence/) - [Compatibilit%C3%A9 OpenAI](/fr/docs/openai-compat/) Exploitation - [Auto-h%C3%A9bergement](/fr/docs/self-hosting/) # Streaming Comment une compl%C3%A9tion en streaming arrive sur le fil, ce que porte la derni%C3%A8re trame, et ce qui se passe lorsqu'un client se d%C3%A9connecte. ## Le transport D%C3%A9finissez stream: true et la r%C3%A9ponse est text/event-stream : un objet JSON par ligne data:, chacun suivi d'une ligne vide. La mise en m%C3%A9moire tampon est d%C3%A9sactiv%C3%A9e pour qu'un proxy ne retienne pas les trames. ``` HTTP/1.1 200 OK content-type: text/event-stream; charset=utf-8 cache-control: no-cache, no-transform connection: keep-alive ``` ## Les trames La premi%C3%A8re trame porte le r%C3%B4le assistant, puis une trame par delta, puis une trame avec finish_reason et le bloc de routage, puis exactement un terminateur. Un client qui suit le format lit le terminateur et s'arr%C3%AAte ; il ne doit pas traiter un terminateur manquant comme une r%C3%A9ponse compl%C3%A8te. ``` 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] ``` ## Le bloc de routage voyage avec la derni%C3%A8re trame La trame finale porte le m%C3%AAme objet llmeu que la r%C3%A9ponse non-streaming renvoie : trace_id, model_used, model_version, provider, endpoint_id, inference_region, sovereignty_class, policy_id, retention et l'estimation du co%C3%BBt. En mode streaming, l'utilisation n'est connue qu'%C3%A0 la fin, c'est pourquoi le bloc voyage avec la derni%C3%A8re trame plut%C3%B4t qu'avec la premi%C3%A8re. ## D%C3%A9connexions du client Fermer la connexion arr%C3%AAte le travail et %C3%A9crit la trace avec ce qui a %C3%A9t%C3%A9 r%C3%A9ellement produit. Une requ%C3%AAte annul%C3%A9e est toujours un appel qui a eu lieu, donc elle appara%C3%AEt dans l'utilisation ; elle n'est pas enregistr%C3%A9e comme une compl%C3%A9tion termin%C3%A9e. ## Ce qui ne peut pas %C3%AAtre stream%C3%A9 Les embeddings et l'API de plateforme sont des r%C3%A9ponses JSON uniques. stream: true sur une route non-streaming est une erreur de validation, pas un repli silencieux vers une seule trame.