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

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

WBOY
WBOYoriginal
2024-08-13 12:24:36521parcourir

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:
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