Titre RNCP Niveau 7

Maîtrisez pipelines, cloud & IA pour devenir Data Engineer opérationnel.

Devenez Data Engineer

DataScientist.fr

Formations

L'équipeLa plateforme
Offre entreprises

🇫🇷

Streaming avec LangChain : Créer des applications LLM réactives
Artificial Intelligence
LLM
Python

Streaming avec LangChain : Créer des applications LLM réactives

Romain DE LA SOUCHÈRE

Lead Developer, Expert Cloud et DevOps

Publié le 15 mai 2025 · 5 min de lecture

Les applications alimentées par des LLM (Large Language Models) comme GPT-4 peuvent offrir des réponses d’une grande qualité. Toutefois, si la réponse met plusieurs secondes à apparaître, l’expérience utilisateur risque fortement d'en être dégradée. Dans des applications interactives ou conversationnelles, cette latence peut suffire à faire perdre l’attention ou la confiance de l’utilisateur. La solution ? Le streaming. Dans cet article, nous vous expliquons comment le streaming fonctionne avec LangChain et comment l’implémenter efficacement pour améliorer l'expérience utilisateur.

Qu’est-ce que le streaming dans LangChain ?

Le streaming consiste à afficher les réponses d'un LLM au fur et à mesure de leur génération, plutôt que d'attendre que l'ensemble de la réponse soit disponible. Cela rend l’application plus réactive, plus fluide, et plus plaisante à utiliser.
LangChain propose deux approches principales via l’interface Runnable :
stream (sync) / astream (async) : streaming du résultat final uniquement, en le recevant par petits morceaux (chunks).
astream_events / astream_log : streaming à la fois des étapes intermédiaires et du résultat final, permettant une granularité plus fine.
Ces mécanismes permettent de créer des applications dynamiques, interactives et plus robustes face aux erreurs ou aux ralentissements.

Exemple de base avec un ChatModel

python
Sortie :
|Le| ci|el| peut| para|ître| de| différentes| cou|leurs| en| fonction| de| plusieurs| fact|eurs| t|els| que| le| moment| de| la| journée|,| les| conditions| mét|é|or|olog|iques| et| l|'|end|roit| où| l|'on| se| trouve|.| C|epend|ant|,| sous| un| ci|el| cl|air| et| en| plein| jour|,| la| couleur| la| plus| commune| du| ci|el| est| le| ble|u|.
Chaque chunk est un AIMessageChunk contenant une partie de la réponse textuelle. Le flux peut être affiché en direct à l'utilisateur, rendant l'interaction plus naturelle.

Streaming dans une chaîne LCEL

LLangChain Expression Language (LCEL) permet de chaîner prompts, modèles et parsers de manière déclarative. Le streaming est pris en charge automatiquement si chaque composant du pipeline le permet.
python
Dans cet exemple, chaque morceau de texte humoristique est transmis dès qu'il est disponible, ce qui favorise une expérience utilisateur engageante.

Streaming de JSON avec JsonOutputParser

Quand le modèle doit produire un résultat structurant comme du JSON, on peut utiliser JsonOutputParser pour commencer à traiter les données avant que le JSON ne soit complètement formé.
python
Extrait de sortie :
{}
{'pays': []}
{'pays': [{}]}
{'pays': [{'nom': ''}]}
{'pays': [{'nom': 'France'}]}
{'pays': [{'nom': 'France', 'population': 674}]}
{'pays': [{'nom': 'France', 'population': 674800}]}
...
Ce comportement est utile dans les cas où l'application a besoin d'extraire ou de traiter les données partiellement disponibles, par exemple pour afficher un tableau en construction.

Streaming cassé par des composants non-streamables

Certaines fonctions personnalisées ou composants ne savent pas opérer sur des flux de données partiels, mais seulement sur une entrée complète. Cela interrompt le processus de streaming.
Toutefois, on peut contourner ce problème en écrivant une fonction génératrice asynchrone qui travaille sur chaque morceau d’entrée dès qu'il est disponible :
python
Ce type de fonction est idéal pour analyser un flux de données en temps réel sans bloquer l'affichage ou le traitement en aval.

Aller plus loin avec astream_events

L’API astream_events permet de capter tous les événements de streaming produits à chaque étape d’exécution : modèles, parsers, chaînes, outils, etc.
python
Cela permet de déboguer finement, de tracer l'exécution, voire de construire des interfaces de supervision en temps réel. Il est aussi possible de filtrer les événements selon leur type (chat_model, parser, tool, etc.), leur nom ou des tags personnalisés.

Bonnes pratiques

Utilisez autant que possible des composants compatibles streaming : prompts LCEL, modèles LLM, parsers asynchrones.
Évitez les composants qui agissent uniquement sur des résultats complets.
Privilégiez astream pour un usage simple, et astream_events pour les cas complexes ou le débogage.
Créez vos fonctions personnalisées sous forme de générateurs asynchrones pour tirer parti du streaming.
Testez chaque chaîne pour vous assurer que tous les composants transmettent bien les flux.

Conclusion

Le streaming avec LangChain permet de créer des applications LLM bien plus réactives, fluides et ergonomiques. Que ce soit via stream, astream ou astream_events, vous avez un contrôle total sur le déroulement et l'affichage de vos chaînes. C'est un outil précieux pour toute application conversationnelle ou interactive moderne.
Commencez avec un simple appel LLM, puis intégrez prompt, parsing et analyse en temps réel. Vous pouvez aller jusqu'à monitorer chaque événement de la chaîne. Le streaming est non seulement un gain de confort pour l'utilisateur, mais aussi un atout de performance et de robustesse pour vos systèmes.
Pour aller plus loin, explorez la documentation officielle de LangChain : Streaming Guide.
Vous hésitez encore ou avez besoin d'un accompagnement spécifique, notre équipe est à votre écoute

Partager avec

💙 Merci d'avoir parcouru l'article jusqu'à la fin !

Romain DE LA SOUCHÈRE

Romain DE LA SOUCHÈRE - Lead Developer, Expert Cloud et DevOps

Ingénieur de formation avec plus de 11 ans d'expérience dans le développement back-end et le data engineering. Expert dans l’industrialisation des projets data dans le cloud.

» En savoir plus

Formations associés

Toutes nos formations

Préparez la certification PL‑300
Préparez la certification PL‑300
24 heures
Débutant
Garantie
Préparez la certification AZ-900
Préparez la certification AZ-900
10 heures
Débutant
Garantie
Préparez la certification DP‑700
Préparez la certification DP‑700
24 heures
Débutant
Garantie
Préparez la certification DP‑900
Préparez la certification DP‑900
10 heures
Débutant
Garantie

DataScientist.fr

By AXI Technologies

128 Rue de la Boétie,
75008, Paris, France

bonjour@datascientist.fr

+33 1 70 39 08 31

+33 6 86 99 34 78

© 2026 DataScientist.fr - AXI Technologies - Tous droits réservés