Streamlit est une bibliothèque Python open-source qui permet aux développeurs de créer des applications web interactives pour des projets de science des données et d'intelligence artificielle. Elle a été conçue pour permettre aux data scientists et aux ingénieurs en apprentissage automatique de transformer des scripts Python en applications web partageables en quelques minutes, sans nécessiter une expertise en développement web front-end. Le framework met l'accent sur la simplicité, permettant aux utilisateurs de construire des interfaces en écrivant du code Python standard qui génère automatiquement les composants de l'interface utilisateur.
Le projet a été créé par Adrien Treuille, Amanda Kelly et Thiago Teixeira, et la première version a été publiée en octobre 2019. Streamlit Inc., l'entreprise derrière le framework, a été fondée en 2018 et a son siège social à San Francisco, en Californie. Le framework a rapidement gagné en adoption au sein de la communauté de la science des données grâce à sa facilité d'utilisation et à sa capacité à s'intégrer de manière transparente avec des bibliothèques Python populaires telles que Pandas, NumPy et Matplotlib. En 2022, Streamlit a été acquis par Snowflake, une entreprise d'entreposage de données dans le cloud, qui a continué à développer et à soutenir le framework.
Fonctionnalités principales et architecture
Streamlit fonctionne sur un modèle d'exécution simple : chaque fois qu'un utilisateur interagit avec un widget, l'intégralité du script Python s'exécute de haut en bas. Cette approche, bien que potentiellement moins efficace que les architectures client-serveur traditionnelles, simplifie considérablement le processus de développement. Le framework fournit un ensemble de fonctions intégrées pour les éléments d'interface courants, notamment les curseurs, les boutons, les champs de texte et les dataframes, qui gèrent automatiquement la gestion de l'état et les réexécutions.
L'une des décisions architecturales clés est l'utilisation d'un modèle de programmation réactive. Lorsqu'un utilisateur modifie la valeur d'un widget, Streamlit réexécute le script, en mettant à jour uniquement les parties de l'application qui dépendent de la valeur modifiée. Cela permet une itération et un débogage rapides. Le framework prend également en charge la mise en cache via les décorateurs @st.cache_data et @st.cache_resource, ce qui peut améliorer considérablement les performances pour les calculs coûteux, tels que le chargement de grands ensembles de données ou l'exécution d'inférences de modèles Machine learning.
Intégration avec l'IA et l'apprentissage automatique
Streamlit est devenu un outil populaire pour déployer des modèles d'Artificial intelligence et de Machine learning. Sa capacité à gérer du code natif Python facilite l'intégration avec des frameworks comme TensorFlow, PyTorch et scikit-learn. Les développeurs peuvent créer des démos interactives pour des applications de Large language model, permettant aux utilisateurs de saisir des invites et de visualiser les réponses générées en temps réel. Le framework prend également en charge le téléchargement de fichiers, permettant aux utilisateurs de tester des modèles sur leurs propres données.
Pour les applications de Generative AI, Streamlit fournit des composants pour afficher du texte, des images et de l'audio, ce qui le rend adapté à la création d'interfaces pour les modèles basés sur Transformer (architecture). Il est souvent utilisé en conjonction avec des services cloud comme Amazon Web Services, Microsoft Azure et Google Cloud pour déployer des applications évolutives. La simplicité du framework en a fait un choix standard pour le prototypage d'outils d'IA dans les environnements académiques et industriels, avec de nombreux exemples d'API OpenAI et Anthropic utilisant Streamlit pour des démos rapides.
Communauté et écosystème
L'écosystème Streamlit comprend un riche ensemble de composants tiers, étendant ses fonctionnalités au-delà de la bibliothèque principale. Ces composants, disponibles via la galerie de composants Streamlit, fournissent des widgets supplémentaires tels que des cartes, des graphiques et des visualisations personnalisées. La communauté a également développé des modèles et des tutoriels pour des cas d'utilisation courants, notamment les tableaux de bord, les outils d'exploration de données et les interfaces de surveillance de modèles.
Le framework a une forte présence sur GitHub, avec des milliers d'étoiles et des contributions de développeurs du monde entier. Streamlit héberge un forum actif et un appel communautaire mensuel, où les utilisateurs partagent les meilleures pratiques et présentent leurs applications. La documentation est complète, couvrant tout, de l'utilisation de base aux sujets avancés comme le thème et le déploiement. En 2024, Streamlit est l'un des outils les plus largement utilisés pour créer des applications de données en Python, avec un nombre croissant d'adoptants en entreprise.
Déploiement et performances
Les applications Streamlit peuvent être déployées de plusieurs manières. La méthode la plus simple est via Streamlit Community Cloud, un service d'hébergement gratuit qui s'intègre aux référentiels GitHub. Pour les environnements de production, les applications peuvent être conteneurisées à l'aide de Docker et déployées sur des plateformes comme AWS, Microsoft Azure ou Google Cloud. Le framework prend également en charge l'exécution derrière des proxys inverses et dans des clouds privés virtuels, ce qui le rend adapté aux outils d'entreprise internes.
Les considérations de performance sont importantes pour les applications à grande échelle. Bien que le modèle de réexécution de Streamlit soit simple, il peut devenir un goulot d'étranglement pour les applications avec des calculs lourds ou de grands ensembles de données. Les mécanismes de mise en cache aident à atténuer ce problème, mais les développeurs peuvent avoir besoin d'optimiser leur code ou d'utiliser des bases de données externes pour les scénarios à fort trafic. Streamlit prend également en charge les applications multipages, permettant aux développeurs d'organiser des applications complexes en pages séparées avec un menu de navigation partagé.
Orientations futures
Sous la propriété de Snowflake, Streamlit continue d'évoluer avec des versions régulières qui ajoutent de nouvelles fonctionnalités et améliorations. Les mises à jour récentes se sont concentrées sur l'amélioration des performances, l'expérience développeur et l'expansion de l'intégration avec le cloud de données de Snowflake. Le framework devrait maintenir sa position en tant qu'outil de premier plan pour la création d'applications de données et d'IA, en particulier à mesure que la demande pour des interfaces interactives de Machine learning augmente. Son accent sur la simplicité et le développement natif Python s'aligne bien avec la tendance plus large vers la démocratisation des outils d'Artificial intelligence.