Maison développement back-end Tutoriel Python Construisez-le : comment nous concevons Streamlit pour vous inciter à progresser

Construisez-le : comment nous concevons Streamlit pour vous inciter à progresser

Aug 13, 2024 pm 12:24 PM

Publié à l'origine sur le blog Streamlit par Thiago Teixeira

Si vous lisez ceci, vous connaissez probablement déjà Streamlit. Sinon, voici un résumé : Streamlit est un framework Python pour créer des applications de données. Il est opiniâtre, il comprend des piles et il est profondément lié à un système de conception spécifique.

  • Il se concentre sur les applications de données. Tout ce que nous faisons découle de cela. Nous ne ciblons pas les applications génériques comme celles de votre téléphone ou de votre SaaS préféré, mais les types d'applications dont les data scientists et les ingénieurs ML ont besoin pour que leur travail ait un impact sur leur organisation.
  • C'est opiniâtre parce que nous voulons promouvoir un flux de travail rapide et itératif et respecter ce que nous pensons être les meilleures pratiques en ingénierie.
  • Les piles sont incluses donc la plupart de ce dont vous avez besoin pour commencer se trouve dans la bibliothèque elle-même.
  • Et enfin, il est lié à un système de conception afin que vous ne perdiez pas de temps à créer une bibliothèque de composants, un langage visuel ou une identité. Vous venez tout juste de commencer — et rapidement.

À ce stade, je pourrais vous raconter comment nous avons lancé Streamlit. Comment tout est parti d’une bonne intuition, basée sur notre expérience antérieure dans l’industrie et le monde universitaire. Sur la façon dont nous avons plongé en profondeur dans différentes entreprises et observé leurs data scientists et ingénieurs ML au travail afin de façonner Streamlit. Mais Adrien l’a déjà très bien fait il y a 5 ans, et je ne pense pas pouvoir faire mieux !

Au lieu de cela, je parlerai de la façon dont notre concentration profonde sur les applications de données se traduit dans les décisions de produits que nous prenons chaque jour. Et pour cela, je vais commencer par un conte…

La 10x nouvelle recrue

Il était une fois une équipe de Data Science qui construisait un puissant modèle de prévision des indicateurs les plus importants de l’entreprise. L'équipe financière l'a vu et l'a adoré, puis a demandé une version en direct qu'elle pourrait utiliser lors de ses réunions hebdomadaires. L'équipe Data a donc déposé une demande auprès de l'équipe Tools pour créer une application de données, et l'équipe Tools l'a mise dans sa file d'attente.

Trois mois et de nombreuses rencontres plus tard, l'application était livrée et elle était magnifique.

Mais il y avait un problème : lorsque le ministère des Finances l’a essayé, ce n’était pas tout à fait ce dont ils avaient besoin. Ils ont donc déposé une autre demande auprès de l'équipe Données, qui l'a transmise à l'équipe Outils, et l'équipe Outils l'a mise dans sa file d'attente. Plusieurs mois se sont écoulés.

À ce moment-là, une nouvelle recrue sans méfiance a rejoint l'équipe de données et s'est vu confier un projet de démarrage : créer une application de données rapide pour débloquer l'équipe financière en attendant la vraie application de l'équipe d'outils. .

Après quelques recherches sur Google, le nouvel employé a découvert Streamlit et, en une journée, a pu partager une application minimale avec ses collègues. Ce n’était pas parfait, mais elle a répondu à certains commentaires et a mis à jour l’application. Le lendemain, elle l'a montré à son contact au sein de l'équipe financière, a reçu davantage de retours et a affiné l'application en conséquence.

En trois jours, l'équipe financière utilisait régulièrement l'application lors de ses réunions. Ils ont eu plus de commentaires et les nouveaux employés y ont rapidement répondu dans des versions plus récentes.

En une semaine, le PDG utilisait l'application et le nouvel employé était salué comme un héros ?

Pourquoi cela arrive

Nous avons vu cette histoire se produire d’innombrables fois. La raison pour laquelle l’application des nouveaux employés gagne en fin de compte est que une application simple d’aujourd’hui vaut mieux qu’une application surconçue avec 3 mois de retard.

En fait, c’est exactement ainsi que les meilleures startups construisent leurs produits ! Ils expédient un produit minimum viable (MVP), le mettent entre les mains des clients dès que possible et itèrent sans relâche.

Et ce faisant, ils renforcent progressivement l’infrastructure sous-jacente. Parce qu'il y a un corollaire à l'histoire du nouvel employé : à mesure que l'équipe continue d'utiliser l'application, elle la produit progressivement.

Cet ensemble de transformations Pandas sur mesure qui sont super lentes ? Ils l'intègrent dans un pipeline de données séparé et dans des tables matérialisées.

Ce calcul complexe que d'autres applications veulent utiliser ? Ils le déplacent vers un service RESTful. Ils refactorisent l'application en plusieurs pages à mesure qu'elle se développe. Ils écrivent des tests, ils mettent en place CI. Et l'application devient à l'épreuve des balles.

Les avantages de ce flux sont clairs :

  1. Vous créez de meilleures applications parce que vous ne savez souvent pas ce dont vous avez besoin jusqu'à ce que vous l'essayiez. Ainsi, en créant et en testant les utilisateurs, et en créant et en testant à nouveau les utilisateurs, vous obtenez une meilleure application que si vous aviez tout planifié à l'avance pour vous rendre compte tardivement que ce n'est pas la solution que vous pensiez.
  2. Vous obtenez de la valeur dès le premier jour. Au fur et à mesure que vous créez et testez les utilisateurs, vous déjà disposez d'une application utile. Et cela devient de plus en plus utile au fur et à mesure.
  3. Vous ne construisez pas trop. Au lieu de créer un pipeline en même temps que vous créez votre application, il vous suffit de sortir l'application, puis de la renforcer au fur et à mesure qu'elle prouve son utilité. Cependant, toutes les applications ne sont pas utiles, et toutes les applications utiles ne durent pas assez longtemps pour nécessiter un renforcement. Vous consacrez donc uniquement vos précieux cycles cérébraux à des applications à la fois utiles et durables.

La façon de commencer est simple : vous il suffit de le construire.

Conception intentionnelle

Nous aimons penser que ce n’est pas un hasard si l’histoire des nouveaux employés se produit dans tant d’entreprises différentes. Nous aimons penser que cette histoire se produit parce que nous concevons intentionnellement Streamlit pour promouvoir le progrès.

Lorsque vous commencez à écrire une application, avancer la progression signifie avoir un brouillon en 5 minutes qui est déjà utile d'une d'une certaine manière. Et ce qui rend définitivement une application plus utile, c’est l’interactivité. Dès le début, nous avons eu le sentiment fort que nous devions rendre l’interactivité aussi simple que possible.

Par exemple, vous ne devriez pas avoir à créer une « Vue » avec un curseur dedans, puis un « Contrôleur » avec une fonction de rappel qui modifie le « Modèle » utilisé par le curseur (en d'autres termes, le paradigme MVC ). Au lieu de cela, nous avons proposé une solution sur une seule ligne :

value = st.slider("Choisissez un nombre", 0, 100)

Vous tapez cela et obtenez une application qui fait déjà quelque chose. Progrès en avant !

Puis, lors de la création de Session State deux ans plus tard, nous avons rapidement appris que l'API proposée entraînerait facilement des erreurs ponctuelles, et que la seule solution qui fonctionnait était les rappels. Marqués par nos expériences passées avec MVC et des paradigmes similaires, nous avons passé pas mal de temps sur le problème pour proposer une version résolument « Streamlit-y » des rappels qui évitait toute cette complexité. Et – plus important encore – la solution ne vous oblige pas à utiliser des rappels dès le départ, mais vous permet de les superposer plus tard si nécessaire. Progrès en avant !

Un autre exemple qui nous tient à cœur – et certainement à la communauté – est le style. D'une part, la chose la plus simple à faire serait simplement d'ajouter la prise en charge du CSS directement dans Streamlit, avec quelque chose comme st.css(...) ou st.write(..., style="css go here "). Mais lorsque nous l’expérimentons, nous remarquons que l’accès illimité au style devient rapidement un obstacle au progrès. Plutôt que de diffuser cette première version aux parties prenantes, les gens se retrouvent obligés de parcourir MDN, de lutter contre la cascade, de peaufiner les sélecteurs et d'être obsédés par les pixels uniques. Et, pour couronner le tout, le résultat final est souvent flou et distrayant.

Nous abordons donc ces demandes en nous posant ces questions :

  • « Quel est le problème sous-jacent que les gens essaient de résoudre ? »
  • « Dans quelle mesure ce problème est-il courant ? »
  • « Pouvons-nous le résoudre nous-mêmes et aider à libérer le développeur ? »

En fonction des réponses à ces questions, nous suivons l'une des deux approches suivantes :

  1. Fournir une solution unique et avisée au problème

    Cela s'est produit il y a quelques mois. Nous avons remarqué que des tonnes de développeurs utilisaient des hacks CSS pour placer un logo dans le coin supérieur gauche de leurs applications. Nous avons donc décidé de leur proposer une solution en une seule ligne avec st.logo(). Cette nouvelle commande dessine leur logo personnalisé, le rend réactif à l'état de la barre latérale, s'assure qu'il ne chevauche aucun contenu et a juste une belle apparence par défaut.

    C'est également ainsi que nous avons ajouté des couleurs de texte, des lignes sous les en-têtes, des bordures autour des conteneurs, un alignement vertical, des icônes de matériaux, etc. Ce sont certainement des solutions avisées en termes de visuels et de comportement, mais l'avantage est que vous dites simplement ce que vous voulez, Streamlit le fait et vous passez à l'étape suivante. Progrès en avant !

  2. Fournissez un ensemble de boutons organisés… et regardez

    Quand une solution avisée sur une seule ligne ne suffit pas, nous introduisons un ensemble minimal de « boutons », observons le résultat et itérons. Puisque nous ne voulons pas rompre la compatibilité, la plupart de nos fonctionnalités sont des portes à sens unique, ce qui signifie que nous devons procéder avec prudence.

    Un exemple de ceci est theming. Tout le monde souhaite que ses applications correspondent aux couleurs de son entreprise et, bien entendu, les couleurs exactes varient selon l’entreprise. Mais l’interface de Streamlit est composée de plusieurs dizaines de couleurs, et la sélection d’une combinaison visuellement agréable peut prendre plusieurs heures. Notre première tentative pour résoudre ce problème a donc été de vous permettre de choisir seulement 4 couleurs, et Streamlit calcule toutes les autres pour vous. Progrès en avant !

    Nous sommes maintenant occupés en coulisses à réfléchir à une deuxième tentative pour résoudre ce problème : une solution étendue qui vous donne plus de boutons (au-delà des couleurs, même !) sans sacrifier la vitesse d'itération. De même, nous envisageons également de nouvelles options de mise en page plus flexibles au-delà des colonnes.

    Nous n'avons rien à annoncer pour le moment, mais restez vigilants ?

En résumé, nous ne voulons pas que quelque chose vous détourne de votre progression. À chaque étape que nous prenons, nous faisons de notre mieux pour fournir un cadre qui élimine HTML, JS, CSS, HTTP, les routes, la sérialisation, les rappels et toutes sortes de détails d'ingénierie. De cette façon, vous pouvez vous concentrer sur la mise du pouvoir des données à la portée de vos parties prenantes afin qu'elles puissent elles aussi faire des progrès avant.

Just build it: How we design Streamlit to bias you toward forward progress

L'itération rend parfait

Chez Streamlit, nous sommes nous-mêmes de fervents utilisateurs de Streamlit, ce qui signifie que nous avons nos propres bêtes noires et demandes de fonctionnalités. Nous partageons vos problèmes et nous parcourons toujours la bibliothèque. Nous ne voulons jamais arrêter d’itérer ! Notre engagement en faveur de cet objectif se reflète dans la manière dont nous expédions une nouvelle version chaque mois.

Nous sommes également inspirés par la communauté Streamlit et votre ingéniosité. Nous rencontrons constamment des applications et des composants personnalisés qui repoussent les limites de Streamlit d'une manière que nous n'aurions jamais cru possible, nous donnant de nouvelles idées d'éléments à intégrer dans la bibliothèque principale. La communauté est de loin la meilleure partie de ce travail !

Grâce à cela, nous avons bien plus à vous réserver. Nous développons de manière ouverte, vous pouvez donc toujours trouver notre feuille de route sur roadmap.streamlit.app ou assister à la prochaine vitrine trimestrielle, où nos chefs de produit discutent des dernières nouveautés de Streamlit, comme l'alignement vertical et la thématique avancée.

La beauté de l'itération est que les meilleurs jours sont toujours à venir. Nous sommes honorés de vous accueillir avec nous.

Bon streamlit-ing ! ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

<🎜>: Bubble Gum Simulator Infinity - Comment obtenir et utiliser les clés royales
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
<🎜>: Grow A Garden - Guide de mutation complet
3 Il y a quelques semaines By DDD
Nordhold: Système de fusion, expliqué
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Comment déverrouiller le grappin
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel Java
1673
14
Tutoriel PHP
1278
29
Tutoriel C#
1257
24
Python vs C: courbes d'apprentissage et facilité d'utilisation Python vs C: courbes d'apprentissage et facilité d'utilisation Apr 19, 2025 am 12:20 AM

Python est plus facile à apprendre et à utiliser, tandis que C est plus puissant mais complexe. 1. La syntaxe Python est concise et adaptée aux débutants. Le typage dynamique et la gestion automatique de la mémoire le rendent facile à utiliser, mais peuvent entraîner des erreurs d'exécution. 2.C fournit des fonctionnalités de contrôle de bas niveau et avancées, adaptées aux applications haute performance, mais a un seuil d'apprentissage élevé et nécessite une gestion manuelle de la mémoire et de la sécurité.

Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apprendre Python: 2 heures d'étude quotidienne est-elle suffisante? Apr 18, 2025 am 12:22 AM

Est-ce suffisant pour apprendre Python pendant deux heures par jour? Cela dépend de vos objectifs et de vos méthodes d'apprentissage. 1) Élaborer un plan d'apprentissage clair, 2) Sélectionnez les ressources et méthodes d'apprentissage appropriées, 3) la pratique et l'examen et la consolidation de la pratique pratique et de l'examen et de la consolidation, et vous pouvez progressivement maîtriser les connaissances de base et les fonctions avancées de Python au cours de cette période.

Python vs. C: Explorer les performances et l'efficacité Python vs. C: Explorer les performances et l'efficacité Apr 18, 2025 am 12:20 AM

Python est meilleur que C dans l'efficacité du développement, mais C est plus élevé dans les performances d'exécution. 1. La syntaxe concise de Python et les bibliothèques riches améliorent l'efficacité du développement. Les caractéristiques de type compilation et le contrôle du matériel de CC améliorent les performances d'exécution. Lorsque vous faites un choix, vous devez peser la vitesse de développement et l'efficacité de l'exécution en fonction des besoins du projet.

Python vs C: Comprendre les principales différences Python vs C: Comprendre les principales différences Apr 21, 2025 am 12:18 AM

Python et C ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1) Python convient au développement rapide et au traitement des données en raison de sa syntaxe concise et de son typage dynamique. 2) C convient à des performances élevées et à une programmation système en raison de son typage statique et de sa gestion de la mémoire manuelle.

Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Quelle partie fait partie de la bibliothèque standard Python: listes ou tableaux? Apr 27, 2025 am 12:03 AM

PythonlistSaReparmentofthestandardLibrary, tandis que les coloccules de colocède, tandis que les colocculations pour la base de la Parlementaire, des coloments de forage polyvalent, tandis que la fonctionnalité de la fonctionnalité nettement adressée.

Python: automatisation, script et gestion des tâches Python: automatisation, script et gestion des tâches Apr 16, 2025 am 12:14 AM

Python excelle dans l'automatisation, les scripts et la gestion des tâches. 1) Automatisation: La sauvegarde du fichier est réalisée via des bibliothèques standard telles que le système d'exploitation et la fermeture. 2) Écriture de script: utilisez la bibliothèque PSUTIL pour surveiller les ressources système. 3) Gestion des tâches: utilisez la bibliothèque de planification pour planifier les tâches. La facilité d'utilisation de Python et la prise en charge de la bibliothèque riche en font l'outil préféré dans ces domaines.

Python pour l'informatique scientifique: un look détaillé Python pour l'informatique scientifique: un look détaillé Apr 19, 2025 am 12:15 AM

Les applications de Python en informatique scientifique comprennent l'analyse des données, l'apprentissage automatique, la simulation numérique et la visualisation. 1.Numpy fournit des tableaux multidimensionnels et des fonctions mathématiques efficaces. 2. Scipy étend la fonctionnalité Numpy et fournit des outils d'optimisation et d'algèbre linéaire. 3. Pandas est utilisé pour le traitement et l'analyse des données. 4.Matplotlib est utilisé pour générer divers graphiques et résultats visuels.

Python pour le développement Web: applications clés Python pour le développement Web: applications clés Apr 18, 2025 am 12:20 AM

Les applications clés de Python dans le développement Web incluent l'utilisation des cadres Django et Flask, le développement de l'API, l'analyse et la visualisation des données, l'apprentissage automatique et l'IA et l'optimisation des performances. 1. Framework Django et Flask: Django convient au développement rapide d'applications complexes, et Flask convient aux projets petits ou hautement personnalisés. 2. Développement de l'API: Utilisez Flask ou DjangorestFramework pour construire RestulAPI. 3. Analyse et visualisation des données: utilisez Python pour traiter les données et les afficher via l'interface Web. 4. Apprentissage automatique et AI: Python est utilisé pour créer des applications Web intelligentes. 5. Optimisation des performances: optimisée par la programmation, la mise en cache et le code asynchrones

See all articles