#
Construire votre première démo

Commençons par installer Gradio ! Comme il s’agit d’un package Python, il suffit de l’exécuter :

`$ pip install gradio`

Vous pouvez exécuter Gradio n’importe où, que ce soit dans votre IDE Python préféré, dans des notebooks ou même dans Google Colab 🤯 ! Alors installez Gradio partout où vous exécutez Python !

Commençons par un exemple simple de type « Hello World » pour nous familiariser avec la syntaxe de Gradio :

    import gradio as gr

    def greet(name):
        return "Hello " + name

    demo = gr.Interface(fn=greet, inputs="text", outputs="text")

    demo.launch()

Parcourons le code ci-dessus :

- D’abord, nous définissons une fonction appelée `greet()`. Dans ce cas, c’est une simple fonction qui ajoute « Hello » devant votre nom, mais cela peut être n’importe quelle fonction Python en général. Par exemple, dans les applications d’apprentissage automatique, cette fonction pourrait appeler un modèle pour faire une prédiction sur une entrée et retourner la sortie.
- Ensuite, nous créons une `Interface` Gradio avec trois arguments, `fn`, `inputs`, et `outputs`. Ces arguments définissent la fonction de prédiction, ainsi que le type de composants d’entrée et de sortie que nous souhaitons. Dans notre cas, les deux composants sont de simples boîtes de texte.
- Nous appelons ensuite la méthode `launch()` sur l’`Interface` que nous avons créée.

Si vous exécutez ce code, l’interface ci-dessous apparaîtra automatiquement dans un notebook Jupyter/Colab ou dans un navigateur sur http://localhost:7860 si vous l’exécutez à partir d’un script.

Essayez d’utiliser cette interface maintenant avec votre propre nom ou une autre entrée !

Vous remarquerez que dedans, Gradio a automatiquement déduit le nom du paramètre d’entrée (`name`) et l’a appliqué comme étiquette au dessus de la zone de texte. Que faire si vous souhaitez changer cela ? Ou si vous souhaitez personnaliser la zone de texte d’une autre manière ? Dans ce cas, vous pouvez instancier un objet de classe représentant le composant de saisie.

Jetez un coup d’œil à l’exemple ci-dessous :

    import gradio as gr

    def greet(name):
        return "Hello " + name

    # Nous instancions la classe Textbox
    textbox = gr.Textbox(label="Type your name here:", placeholder="John Doe", lines=2)

    gr.Interface(fn=greet, inputs=textbox, outputs="text").launch()

Ici, nous avons créé une zone de texte d’entrée avec une étiquette, un espace réservé et un nombre de lignes défini. Vous pourriez faire la même chose pour la zone de texte de sortie, mais nous allons laisser cela pour le moment.

Nous avons vu qu’avec seulement quelques lignes de code, Gradio vous permet de créer une interface simple autour de n’importe quelle fonction avec n’importe quel type d’entrées ou de sorties. Dans cette section, nous avons commencé par une simple boîte de texte mais dans les sections suivantes, nous couvrirons d’autres types d’entrées et de sorties. Voyons maintenant comment inclure un peu de NLP dans une application Gradio.

##
🤖 Inclure les prédictions du modèle

Construisons maintenant une interface simple qui permet de faire une démo d’un modèle de génération de texte comme le GPT-2.

Nous allons charger notre modèle en utilisant la fonction `pipeline()` de 🤗 Transformers. Si vous avez besoin d’un rafraîchissement rapide, vous pouvez revenir à cette section du chapitre 1.

Tout d’abord, nous définissons une fonction de prédiction qui prend une invite de texte et renvoie la complétion du texte :

    from transformers import pipeline

    model = pipeline("text-generation")

    def predict(prompt):
        completion = model(prompt)[0]["generated_text"]
        return completion

Cette fonction complète le texte que vous fournissez, et vous pouvez l’exécuter avec les votres pour voir comment elle fonctionne. Voici un exemple (vous obtiendrez peut-être un résultat différent) :

    predict("My favorite programming language is") # Mon langage de programmation préféré est

    >> My favorite programming language is Haskell. I really enjoyed the Haskell language, but it doesn't have all the features that can be applied to any other language. For example, all it does is compile to a byte array.
    #  Mon langage de programmation préféré est Haskell. J'ai vraiment apprécié le langage Haskell, mais il n'a pas toutes les caractéristiques que l'on peut appliquer à n'importe quel autre langage. Par exemple, il ne fait que compiler un tableau d'octets.

Maintenant que nous avons une fonction pour générer des prédictions, nous pouvons créer et lancer une `Interface` de la même manière que nous l’avons fait précédemment :

    import gradio as gr

    gr.Interface(fn=predict, inputs="text", outputs="text").launch()

C’est fait ! Vous pouvez maintenant utiliser cette interface pour générer du texte en utilisant le modèle GPT-2 comme indiqué ci-dessous 🤯.

Continuez votre lecture du cours pour voir comment construire d’autres types de démos avec Gradio !