import{S as ln,i as un,s as cn,e as r,k as p,w as x,t as a,M as pn,c as n,d as s,m as d,a as l,x as $,h as o,b as c,N as _s,G as t,g as u,y as z,L as dn,q as j,o as M,B as P,v as mn}from"../../chunks/vendor-hf-doc-builder.js";import{Y as fn}from"../../chunks/Youtube-hf-doc-builder.js";import{I as At}from"../../chunks/IconCopyLink-hf-doc-builder.js";import{C as Es}from"../../chunks/CodeBlock-hf-doc-builder.js";import{D as hn}from"../../chunks/DocNotebookDropdown-hf-doc-builder.js";function vn(Fo){let D,Dt,O,F,Pe,ae,ys,Le,ks,Ot,oe,It,E,ws,Se,xs,$s,Re,Ce,zs,js,Ae,De,Ms,Ps,Gt,be,Ls,Tt,I,B,Oe,re,Ss,_e,Rs,Ie,Cs,Nt,G,ne,Bo,As,le,Uo,Ht,U,Ds,Ge,Os,Is,Ft,v,X,Te,Gs,Ts,Ne,Ns,Hs,Fs,Ee,He,Bs,Us,Xs,Q,Fe,Qs,Ws,Be,Vs,Js,Ys,m,Ue,Ks,Zs,Xe,ea,ta,Qe,sa,aa,We,oa,ra,Ve,na,la,Je,ia,ua,Ye,ca,pa,Ke,da,ma,fa,W,Ze,ha,va,et,ga,qa,ba,V,tt,_a,Ea,st,ya,ka,Bt,ie,Ut,ye,wa,Xt,b,Xo,Qt,T,J,at,ue,xa,ot,$a,Wt,ce,Vt,y,za,rt,ja,Ma,nt,Pa,La,lt,Sa,Ra,Jt,Y,Ca,it,Aa,Da,Yt,N,K,ut,pe,Oa,ke,Ia,ct,Ga,Kt,we,Ta,Zt,f,pt,Na,Ha,dt,Fa,Ba,mt,Ua,Xa,ft,Qa,Wa,ht,Va,Ja,vt,Ya,Ka,de,Za,eo,es,me,ts,H,Z,gt,fe,to,qt,so,ss,L,ao,xe,oo,ro,bt,no,lo,as,q,io,he,uo,co,ve,po,mo,_t,fo,ho,Et,vo,go,os,ge,rs,S,qo,yt,bo,_o,kt,Eo,yo,ns,qe,ls,_,Qo,is,R,ko,wt,wo,xo,xt,$o,zo,us,k,jo,$t,Mo,Po,zt,Lo,So,jt,Ro,Co,cs,C,Ao,Mt,Do,Oo,Pt,Io,Go,ps;return ae=new At({}),oe=new hn({props:{classNames:"absolute z-10 right-0 top-0",options:[{label:"Google Colab",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/chapter9/section4.ipynb"},{label:"Aws Studio",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/chapter9/section4.ipynb"}]}}),re=new At({}),ie=new Es({props:{code:`title = "Ask Rick a Question" # "Posez une question \xE0 Rick"
description = 
"""
The bot was trained to answer questions based on Rick and Morty dialogues. Ask Rick anything!
# Le robot a \xE9t\xE9 entra\xEEn\xE9 \xE0 r\xE9pondre \xE0 des questions bas\xE9es sur les dialogues de Rick et Morty.
# Demandez \xE0 Rick ce que vous voulez !
<img src="https://huggingface.co/spaces/course-demos/Rick_and_Morty_QA/resolve/main/rick.png" width=200px>
"""

article = "Check out [the original Rick and Morty Bot](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) that this demo is based off of."
# Jetez un coup d'\u0153il au [bot original Rick et Morty](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) sur lequel cette d\xE9mo est bas\xE9e.

gr.Interface(
    fn=predict, 
    inputs="textbox", 
    outputs="text",
    title=title, 
    description=description, 
    article=article,
    examples=[["What are you doing?"], ["Where should we time travel to?"]] 
	# ["Que faites-vous ?"], ["O\xF9 devrions-nous voyager dans le temps ?"]
).launch() `,highlighted:`title = <span class="hljs-string">&quot;Ask Rick a Question&quot;</span> <span class="hljs-comment"># &quot;Posez une question \xE0 Rick&quot;</span>
description = 
<span class="hljs-string">&quot;&quot;&quot;
The bot was trained to answer questions based on Rick and Morty dialogues. Ask Rick anything!
# Le robot a \xE9t\xE9 entra\xEEn\xE9 \xE0 r\xE9pondre \xE0 des questions bas\xE9es sur les dialogues de Rick et Morty.
# Demandez \xE0 Rick ce que vous voulez !
&lt;img src=&quot;https://huggingface.co/spaces/course-demos/Rick_and_Morty_QA/resolve/main/rick.png&quot; width=200px&gt;
&quot;&quot;&quot;</span>

article = <span class="hljs-string">&quot;Check out [the original Rick and Morty Bot](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) that this demo is based off of.&quot;</span>
<span class="hljs-comment"># Jetez un coup d&#x27;\u0153il au [bot original Rick et Morty](https://huggingface.co/spaces/kingabzpro/Rick_and_Morty_Bot) sur lequel cette d\xE9mo est bas\xE9e.</span>

gr.Interface(
    fn=predict, 
    inputs=<span class="hljs-string">&quot;textbox&quot;</span>, 
    outputs=<span class="hljs-string">&quot;text&quot;</span>,
    title=title, 
    description=description, 
    article=article,
    examples=[[<span class="hljs-string">&quot;What are you doing?&quot;</span>], [<span class="hljs-string">&quot;Where should we time travel to?&quot;</span>]] 
	<span class="hljs-comment"># [&quot;Que faites-vous ?&quot;], [&quot;O\xF9 devrions-nous voyager dans le temps ?&quot;]</span>
).launch() `}}),ue=new At({}),ce=new Es({props:{code:'gr.Interface(classify_image, "image", "label").launch(share=True)',highlighted:'gr.Interface(classify_image, <span class="hljs-string">&quot;image&quot;</span>, <span class="hljs-string">&quot;label&quot;</span>).launch(share=<span class="hljs-literal">True</span>)'}}),pe=new At({}),me=new fn({props:{id:"LS9Y2wDVI0k"}}),fe=new At({}),ge=new Es({props:{code:`from pathlib import Path
import torch
import gradio as gr
from torch import nn

LABELS = Path("class_names.txt").read_text().splitlines()

model = nn.Sequential(
    nn.Conv2d(1, 32, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Conv2d(32, 64, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Conv2d(64, 128, 3, padding="same"),
    nn.ReLU(),
    nn.MaxPool2d(2),
    nn.Flatten(),
    nn.Linear(1152, 256),
    nn.ReLU(),
    nn.Linear(256, len(LABELS)),
)
state_dict = torch.load("pytorch_model.bin", map_location="cpu")
model.load_state_dict(state_dict, strict=False)
model.eval()


def predict(im):
    x = torch.tensor(im, dtype=torch.float32).unsqueeze(0).unsqueeze(0) / 255.0
    with torch.no_grad():
        out = model(x)
    probabilities = torch.nn.functional.softmax(out[0], dim=0)
    values, indices = torch.topk(probabilities, 5)
    return {LABELS[i]: v.item() for i, v in zip(indices, values)}`,highlighted:`<span class="hljs-keyword">from</span> pathlib <span class="hljs-keyword">import</span> Path
<span class="hljs-keyword">import</span> torch
<span class="hljs-keyword">import</span> gradio <span class="hljs-keyword">as</span> gr
<span class="hljs-keyword">from</span> torch <span class="hljs-keyword">import</span> nn

LABELS = Path(<span class="hljs-string">&quot;class_names.txt&quot;</span>).read_text().splitlines()

model = nn.Sequential(
    nn.Conv2d(<span class="hljs-number">1</span>, <span class="hljs-number">32</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">&quot;same&quot;</span>),
    nn.ReLU(),
    nn.MaxPool2d(<span class="hljs-number">2</span>),
    nn.Conv2d(<span class="hljs-number">32</span>, <span class="hljs-number">64</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">&quot;same&quot;</span>),
    nn.ReLU(),
    nn.MaxPool2d(<span class="hljs-number">2</span>),
    nn.Conv2d(<span class="hljs-number">64</span>, <span class="hljs-number">128</span>, <span class="hljs-number">3</span>, padding=<span class="hljs-string">&quot;same&quot;</span>),
    nn.ReLU(),
    nn.MaxPool2d(<span class="hljs-number">2</span>),
    nn.Flatten(),
    nn.Linear(<span class="hljs-number">1152</span>, <span class="hljs-number">256</span>),
    nn.ReLU(),
    nn.Linear(<span class="hljs-number">256</span>, <span class="hljs-built_in">len</span>(LABELS)),
)
state_dict = torch.load(<span class="hljs-string">&quot;pytorch_model.bin&quot;</span>, map_location=<span class="hljs-string">&quot;cpu&quot;</span>)
model.load_state_dict(state_dict, strict=<span class="hljs-literal">False</span>)
model.<span class="hljs-built_in">eval</span>()


<span class="hljs-keyword">def</span> <span class="hljs-title function_">predict</span>(<span class="hljs-params">im</span>):
    x = torch.tensor(im, dtype=torch.float32).unsqueeze(<span class="hljs-number">0</span>).unsqueeze(<span class="hljs-number">0</span>) / <span class="hljs-number">255.0</span>
    <span class="hljs-keyword">with</span> torch.no_grad():
        out = model(x)
    probabilities = torch.nn.functional.softmax(out[<span class="hljs-number">0</span>], dim=<span class="hljs-number">0</span>)
    values, indices = torch.topk(probabilities, <span class="hljs-number">5</span>)
    <span class="hljs-keyword">return</span> {LABELS[i]: v.item() <span class="hljs-keyword">for</span> i, v <span class="hljs-keyword">in</span> <span class="hljs-built_in">zip</span>(indices, values)}`}}),qe=new Es({props:{code:`interface = gr.Interface(
    predict,
    inputs="sketchpad",
    outputs="label",
    theme="huggingface",
    title="Sketch Recognition",
    description="Who wants to play Pictionary? Draw a common object like a shovel or a laptop, and the algorithm will guess in real time!",
    # Qui veut jouer au Pictionary ? Dessinez un objet courant comme une pelle ou un ordinateur portable, et l'algorithme le devinera en temps r\xE9el !
    article="<p style='text-align: center'>Sketch Recognition | Demo Model</p>",
    live=True,
)
interface.launch(share=True)`,highlighted:`interface = gr.Interface(
    predict,
    inputs=<span class="hljs-string">&quot;sketchpad&quot;</span>,
    outputs=<span class="hljs-string">&quot;label&quot;</span>,
    theme=<span class="hljs-string">&quot;huggingface&quot;</span>,
    title=<span class="hljs-string">&quot;Sketch Recognition&quot;</span>,
    description=<span class="hljs-string">&quot;Who wants to play Pictionary? Draw a common object like a shovel or a laptop, and the algorithm will guess in real time!&quot;</span>,
    <span class="hljs-comment"># Qui veut jouer au Pictionary ? Dessinez un objet courant comme une pelle ou un ordinateur portable, et l&#x27;algorithme le devinera en temps r\xE9el !</span>
    article=<span class="hljs-string">&quot;&lt;p style=&#x27;text-align: center&#x27;&gt;Sketch Recognition | Demo Model&lt;/p&gt;&quot;</span>,
    live=<span class="hljs-literal">True</span>,
)
interface.launch(share=<span class="hljs-literal">True</span>)`}}),{c(){D=r("meta"),Dt=p(),O=r("h1"),F=r("a"),Pe=r("span"),x(ae.$$.fragment),ys=p(),Le=r("span"),ks=a("Partager ses d\xE9mos avec les autres"),Ot=p(),x(oe.$$.fragment),It=p(),E=r("p"),ws=a("Maintenant que vous avez construit une d\xE9mo, vous voudrez probablement la partager \xE0 d\u2019autres personnes. Les d\xE9mos "),Se=r("em"),xs=a("Gradio"),$s=a(" peuvent \xEAtre partag\xE9es de deux fa\xE7ons : en utilisant un lien de partage temporaire ("),Re=r("strong"),Ce=r("em"),zs=a("temporary share link"),js=a(") ou un h\xE9bergement permanent ("),Ae=r("strong"),De=r("em"),Ms=a("permanent hosting on Spaces"),Ps=a(")."),Gt=p(),be=r("p"),Ls=a("Nous aborderons ces deux approches sous peu. Mais avant de partager votre d\xE9mo, vous voudrez peut-\xEAtre la peaufiner \u{1F485}."),Tt=p(),I=r("h3"),B=r("a"),Oe=r("span"),x(re.$$.fragment),Ss=p(),_e=r("span"),Rs=a("Polir votre d\xE9mo "),Ie=r("i"),Cs=a("Gradio"),Nt=p(),G=r("div"),ne=r("img"),As=p(),le=r("img"),Ht=p(),U=r("p"),Ds=a("Pour ajouter du contenu suppl\xE9mentaire \xE0 votre d\xE9mo, la classe "),Ge=r("code"),Os=a("Interface"),Is=a(" supporte quelques param\xE8tres optionnels :"),Ft=p(),v=r("ul"),X=r("li"),Te=r("code"),Gs=a("title"),Ts=a(" : vous pouvez donner un titre \xE0 votre d\xE9mo, qui appara\xEEt "),Ne=r("em"),Ns=a("au-dessus"),Hs=a(" des composants d\u2019entr\xE9e et de sortie."),Fs=p(),Ee=r("li"),He=r("code"),Bs=a("description"),Us=a(" : vous pouvez donner une description (en texte, Markdown, ou HTML) pour l\u2019interface, qui appara\xEEt au-dessus des composants d\u2019entr\xE9e et de sortie et en dessous du titre."),Xs=p(),Q=r("li"),Fe=r("code"),Qs=a("article"),Ws=a(" : vous pouvez \xE9galement \xE9crire un article \xE9tendu (en texte, Markdown ou HTML) expliquant l\u2019interface. S\u2019il est fourni, il appara\xEEt "),Be=r("em"),Vs=a("sous"),Js=a(" les composants d\u2019entr\xE9e et de sortie."),Ys=p(),m=r("li"),Ue=r("code"),Ks=a("theme"),Zs=a(" : vous n\u2019aimez pas les couleurs par d\xE9faut ? D\xE9finissez le th\xE8me pour utiliser une des couleurs suivantes : "),Xe=r("code"),ea=a("default"),ta=a(", "),Qe=r("code"),sa=a("huggingface"),aa=a(", "),We=r("code"),oa=a("grass"),ra=a(", "),Ve=r("code"),na=a("peach"),la=a(". Vous pouvez \xE9galement ajouter le pr\xE9fixe "),Je=r("code"),ia=a("dark-"),ua=a(", par exemple "),Ye=r("code"),ca=a("dark-peach"),pa=a(" pour un th\xE8me sombre (ou juste "),Ke=r("code"),da=a("dark"),ma=a(" pour le th\xE8me sombre par d\xE9faut)."),fa=p(),W=r("li"),Ze=r("code"),ha=a("examples"),va=a(" : pour rendre votre d\xE9mo "),et=r("em"),ga=a("beaucoup plus facile \xE0 utiliser"),qa=a(", vous pouvez fournir quelques exemples d\u2019entr\xE9es pour la fonction. Ceux-ci apparaissent sous les composants de l\u2019interface utilisateur et peuvent \xEAtre utilis\xE9s pour remplir l\u2019interface. Ils doivent \xEAtre fournis sous forme de liste imbriqu\xE9e, dans laquelle la liste ext\xE9rieure est constitu\xE9e d\u2019exemples et chaque liste int\xE9rieure est constitu\xE9e d\u2019une entr\xE9e correspondant \xE0 chaque composant d\u2019entr\xE9e."),ba=p(),V=r("li"),tt=r("code"),_a=a("live"),Ea=a(" : si vous voulez que votre mod\xE8le soit relanc\xE9 \xE0 chaque fois que l\u2019entr\xE9e change, vous pouvez mettre "),st=r("code"),ya=a("live=True"),ka=a(`. Ceci est utile pour les mod\xE8les rapides (nous verrons un exemple \xE0 la fin de cette section).
En utilisant les options ci-dessus, nous obtenons une interface plus compl\xE8te. Ex\xE9cutez le code ci-dessous pour pouvoir discuter avec Rick et Morty :`),Bt=p(),x(ie.$$.fragment),Ut=p(),ye=r("p"),wa=a("En utilisant les options ci-dessus, nous obtenons une interface plus compl\xE8te. Essayez l\u2019interface ci-dessous :"),Xt=p(),b=r("iframe"),Qt=p(),T=r("h3"),J=r("a"),at=r("span"),x(ue.$$.fragment),xa=p(),ot=r("span"),$a=a("Partager votre d\xE9mo avec des liens temporaires"),Wt=a(`

Maintenant que nous avons une d\xE9mo fonctionnelle de notre mod\xE8le d'apprentissage automatique, apprenons \xE0 partager facilement un lien vers notre interface.
Les interfaces peuvent \xEAtre facilement partag\xE9es publiquement en mettant \`share=True\` dans la m\xE9thode \`launch()\` :

	`),x(ce.$$.fragment),Vt=p(),y=r("p"),za=a("Cela g\xE9n\xE8re un lien public et partageable que vous pouvez envoyer \xE0 n\u2019importe qui ! Lorsque vous envoyez ce lien, l\u2019utilisateur de l\u2019autre c\xF4t\xE9 peut essayer le mod\xE8le dans son navigateur pendant 72 heures au maximum. Le traitement s\u2019effectuant sur votre appareil (tant qu\u2019il reste allum\xE9 !), vous n\u2019avez pas \xE0 vous soucier de la mise en place de d\xE9pendances. Si vous travaillez \xE0 partir d\u2019un "),rt=r("em"),ja=a("notebook"),Ma=a(" Google Colab, un lien de partage est toujours cr\xE9\xE9 automatiquement. Il ressemble g\xE9n\xE9ralement \xE0 quelque chose comme ceci : "),nt=r("strong"),Pa=a("XXXXX.gradio.app"),La=a(". Bien que le lien soit servi par un lien "),lt=r("em"),Sa=a("Gradio"),Ra=a(", nous ne sommes qu\u2019un proxy pour votre serveur local, et nous ne stockons pas les donn\xE9es envoy\xE9es par les interfaces."),Jt=p(),Y=r("p"),Ca=a("Gardez cependant \xE0 l\u2019esprit que ces liens sont accessibles au public, ce qui signifie que n\u2019importe qui peut utiliser votre mod\xE8le pour la pr\xE9diction ! Par cons\xE9quent, assurez-vous de ne pas exposer d\u2019informations sensibles \xE0 travers les fonctions que vous \xE9crivez, ou de permettre que des changements critiques se produisent sur votre appareil. Si vous d\xE9finissez "),it=r("code"),Aa=a("share=False"),Da=a(" (la valeur par d\xE9faut), seul un lien local est cr\xE9\xE9."),Yt=p(),N=r("h3"),K=r("a"),ut=r("span"),x(pe.$$.fragment),Oa=p(),ke=r("span"),Ia=a("H\xE9bergement de votre d\xE9mo sur "),ct=r("i"),Ga=a("Hugging Face Spaces"),Kt=p(),we=r("p"),Ta=a("Un lien de partage que vous pouvez passer \xE0 vos coll\xE8gues est cool, mais comment pouvez-vous h\xE9berger de fa\xE7on permanente votre d\xE9mo et la faire exister dans son propre \xAB espace \xBB sur internet ?"),Zt=p(),f=r("p"),pt=r("em"),Na=a("Hugging Face Spaces"),Ha=a(" fournit l\u2019infrastructure pour h\xE9berger de fa\xE7on permanente votre d\xE9mo "),dt=r("em"),Fa=a("Gradio"),Ba=a(" sur internet et "),mt=r("strong"),Ua=a("gratuitement"),Xa=a(" ! "),ft=r("em"),Qa=a("Spaces"),Wa=a(" vous permet de cr\xE9er et de pousser vers un d\xE9p\xF4t (public ou priv\xE9) le code de votre interface "),ht=r("em"),Va=a("Gradio"),Ja=a(". Il sera plac\xE9 dans un fichier "),vt=r("code"),Ya=a("app.py"),Ka=a(". "),de=r("a"),Za=a("Lisez ce tutoriel \xE9tape par \xE9tape"),eo=a(" pour commencer ou regardez la vid\xE9o ci-dessous."),es=p(),x(me.$$.fragment),ts=p(),H=r("h2"),Z=r("a"),gt=r("span"),x(fe.$$.fragment),to=p(),qt=r("span"),so=a("\u270F\uFE0F Appliquons \xE7a !"),ss=p(),L=r("p"),ao=a("En utilisant ce que nous avons appris dans les sections pr\xE9c\xE9dentes, cr\xE9ons la d\xE9mo de reconnaissance de croquis que nous avons d\xE9crit dans la "),xe=r("a"),oo=a("section un de ce chapitre"),ro=a(". Ajoutons quelques personnalisations \xE0 notre interface et d\xE9finissons "),bt=r("code"),no=a("share=True"),lo=a(" pour cr\xE9er un lien public que nous pouvons faire circuler."),as=p(),q=r("p"),io=a("Nous pouvons charger les \xE9tiquettes depuis "),he=r("a"),uo=a("class_names.txt"),co=a(" et charger le mod\xE8le Pytorch pr\xE9-entra\xEEn\xE9 depuis "),ve=r("a"),po=a("pytorch_model.bin"),mo=a(". T\xE9l\xE9chargez ces fichiers en suivant le lien et en cliquant sur \xAB "),_t=r("em"),fo=a("download"),ho=a(" \xBB dans le coin sup\xE9rieur gauche de l\u2019aper\xE7u du fichier. Regardons le code ci-dessous pour voir comment nous utilisons ces fichiers pour charger notre mod\xE8le et cr\xE9er une fonction "),Et=r("code"),vo=a("predict()"),go=a(" :"),os=p(),x(ge.$$.fragment),rs=p(),S=r("p"),qo=a("Maintenant que nous avons une fonction "),yt=r("code"),bo=a("predict()"),_o=a(". La prochaine \xE9tape est de d\xE9finir et de lancer notre interface "),kt=r("em"),Eo=a("Gradio"),yo=a(" :"),ns=p(),x(qe.$$.fragment),ls=p(),_=r("iframe"),is=p(),R=r("p"),ko=a("Remarquez le param\xE8tre "),wt=r("code"),wo=a("live=True"),xo=a(" dans "),xt=r("code"),$o=a("Interface"),zo=a(", qui signifie que la d\xE9mo de sketchs fait une pr\xE9diction chaque fois que quelqu\u2019un dessine sur le bloc (pas de bouton de soumission !)."),us=p(),k=r("p"),jo=a("De plus, nous avons \xE9galement d\xE9fini l\u2019argument "),$t=r("code"),Mo=a("share=True"),Po=a(" dans la m\xE9thode "),zt=r("code"),Lo=a("launch()"),So=a(`.
Cela cr\xE9era un lien public que vous pourrez envoyer \xE0 n\u2019importe qui ! Lorsque vous envoyez ce lien, l\u2019utilisateur de l\u2019autre c\xF4t\xE9 peut essayer le mod\xE8le de reconnaissance de croquis. Pour r\xE9it\xE9rer, vous pouvez \xE9galement h\xE9berger le mod\xE8le sur `),jt=r("em"),Ro=a("Hugging Face Spaces"),Co=a(", ce qui nous permet d\u2019int\xE9grer la d\xE9mo ci-dessus."),cs=p(),C=r("p"),Ao=a("La prochaine fois, nous couvrirons d\u2019autres fa\xE7ons dont "),Mt=r("em"),Do=a("Gradio"),Oo=a(" peut \xEAtre utilis\xE9 avec l\u2019\xE9cosyst\xE8me d\u2019"),Pt=r("em"),Io=a("Hugging Face"),Go=a(" !"),this.h()},l(e){const i=pn('[data-svelte="svelte-1phssyn"]',document.head);D=n(i,"META",{name:!0,content:!0}),i.forEach(s),Dt=d(e),O=n(e,"H1",{class:!0});var ds=l(O);F=n(ds,"A",{id:!0,class:!0,href:!0});var Wo=l(F);Pe=n(Wo,"SPAN",{});var Vo=l(Pe);$(ae.$$.fragment,Vo),Vo.forEach(s),Wo.forEach(s),ys=d(ds),Le=n(ds,"SPAN",{});var Jo=l(Le);ks=o(Jo,"Partager ses d\xE9mos avec les autres"),Jo.forEach(s),ds.forEach(s),Ot=d(e),$(oe.$$.fragment,e),It=d(e),E=n(e,"P",{});var ee=l(E);ws=o(ee,"Maintenant que vous avez construit une d\xE9mo, vous voudrez probablement la partager \xE0 d\u2019autres personnes. Les d\xE9mos "),Se=n(ee,"EM",{});var Yo=l(Se);xs=o(Yo,"Gradio"),Yo.forEach(s),$s=o(ee," peuvent \xEAtre partag\xE9es de deux fa\xE7ons : en utilisant un lien de partage temporaire ("),Re=n(ee,"STRONG",{});var Ko=l(Re);Ce=n(Ko,"EM",{});var Zo=l(Ce);zs=o(Zo,"temporary share link"),Zo.forEach(s),Ko.forEach(s),js=o(ee,") ou un h\xE9bergement permanent ("),Ae=n(ee,"STRONG",{});var er=l(Ae);De=n(er,"EM",{});var tr=l(De);Ms=o(tr,"permanent hosting on Spaces"),tr.forEach(s),er.forEach(s),Ps=o(ee,")."),ee.forEach(s),Gt=d(e),be=n(e,"P",{});var sr=l(be);Ls=o(sr,"Nous aborderons ces deux approches sous peu. Mais avant de partager votre d\xE9mo, vous voudrez peut-\xEAtre la peaufiner \u{1F485}."),sr.forEach(s),Tt=d(e),I=n(e,"H3",{class:!0});var ms=l(I);B=n(ms,"A",{id:!0,class:!0,href:!0});var ar=l(B);Oe=n(ar,"SPAN",{});var or=l(Oe);$(re.$$.fragment,or),or.forEach(s),ar.forEach(s),Ss=d(ms),_e=n(ms,"SPAN",{});var To=l(_e);Rs=o(To,"Polir votre d\xE9mo "),Ie=n(To,"I",{});var rr=l(Ie);Cs=o(rr,"Gradio"),rr.forEach(s),To.forEach(s),ms.forEach(s),Nt=d(e),G=n(e,"DIV",{class:!0});var fs=l(G);ne=n(fs,"IMG",{class:!0,src:!0,alt:!0}),As=d(fs),le=n(fs,"IMG",{class:!0,src:!0,alt:!0}),fs.forEach(s),Ht=d(e),U=n(e,"P",{});var hs=l(U);Ds=o(hs,"Pour ajouter du contenu suppl\xE9mentaire \xE0 votre d\xE9mo, la classe "),Ge=n(hs,"CODE",{});var nr=l(Ge);Os=o(nr,"Interface"),nr.forEach(s),Is=o(hs," supporte quelques param\xE8tres optionnels :"),hs.forEach(s),Ft=d(e),v=n(e,"UL",{});var w=l(v);X=n(w,"LI",{});var Lt=l(X);Te=n(Lt,"CODE",{});var lr=l(Te);Gs=o(lr,"title"),lr.forEach(s),Ts=o(Lt," : vous pouvez donner un titre \xE0 votre d\xE9mo, qui appara\xEEt "),Ne=n(Lt,"EM",{});var ir=l(Ne);Ns=o(ir,"au-dessus"),ir.forEach(s),Hs=o(Lt," des composants d\u2019entr\xE9e et de sortie."),Lt.forEach(s),Fs=d(w),Ee=n(w,"LI",{});var No=l(Ee);He=n(No,"CODE",{});var ur=l(He);Bs=o(ur,"description"),ur.forEach(s),Us=o(No," : vous pouvez donner une description (en texte, Markdown, ou HTML) pour l\u2019interface, qui appara\xEEt au-dessus des composants d\u2019entr\xE9e et de sortie et en dessous du titre."),No.forEach(s),Xs=d(w),Q=n(w,"LI",{});var St=l(Q);Fe=n(St,"CODE",{});var cr=l(Fe);Qs=o(cr,"article"),cr.forEach(s),Ws=o(St," : vous pouvez \xE9galement \xE9crire un article \xE9tendu (en texte, Markdown ou HTML) expliquant l\u2019interface. S\u2019il est fourni, il appara\xEEt "),Be=n(St,"EM",{});var pr=l(Be);Vs=o(pr,"sous"),pr.forEach(s),Js=o(St," les composants d\u2019entr\xE9e et de sortie."),St.forEach(s),Ys=d(w),m=n(w,"LI",{});var h=l(m);Ue=n(h,"CODE",{});var dr=l(Ue);Ks=o(dr,"theme"),dr.forEach(s),Zs=o(h," : vous n\u2019aimez pas les couleurs par d\xE9faut ? D\xE9finissez le th\xE8me pour utiliser une des couleurs suivantes : "),Xe=n(h,"CODE",{});var mr=l(Xe);ea=o(mr,"default"),mr.forEach(s),ta=o(h,", "),Qe=n(h,"CODE",{});var fr=l(Qe);sa=o(fr,"huggingface"),fr.forEach(s),aa=o(h,", "),We=n(h,"CODE",{});var hr=l(We);oa=o(hr,"grass"),hr.forEach(s),ra=o(h,", "),Ve=n(h,"CODE",{});var vr=l(Ve);na=o(vr,"peach"),vr.forEach(s),la=o(h,". Vous pouvez \xE9galement ajouter le pr\xE9fixe "),Je=n(h,"CODE",{});var gr=l(Je);ia=o(gr,"dark-"),gr.forEach(s),ua=o(h,", par exemple "),Ye=n(h,"CODE",{});var qr=l(Ye);ca=o(qr,"dark-peach"),qr.forEach(s),pa=o(h," pour un th\xE8me sombre (ou juste "),Ke=n(h,"CODE",{});var br=l(Ke);da=o(br,"dark"),br.forEach(s),ma=o(h," pour le th\xE8me sombre par d\xE9faut)."),h.forEach(s),fa=d(w),W=n(w,"LI",{});var Rt=l(W);Ze=n(Rt,"CODE",{});var _r=l(Ze);ha=o(_r,"examples"),_r.forEach(s),va=o(Rt," : pour rendre votre d\xE9mo "),et=n(Rt,"EM",{});var Er=l(et);ga=o(Er,"beaucoup plus facile \xE0 utiliser"),Er.forEach(s),qa=o(Rt,", vous pouvez fournir quelques exemples d\u2019entr\xE9es pour la fonction. Ceux-ci apparaissent sous les composants de l\u2019interface utilisateur et peuvent \xEAtre utilis\xE9s pour remplir l\u2019interface. Ils doivent \xEAtre fournis sous forme de liste imbriqu\xE9e, dans laquelle la liste ext\xE9rieure est constitu\xE9e d\u2019exemples et chaque liste int\xE9rieure est constitu\xE9e d\u2019une entr\xE9e correspondant \xE0 chaque composant d\u2019entr\xE9e."),Rt.forEach(s),ba=d(w),V=n(w,"LI",{});var Ct=l(V);tt=n(Ct,"CODE",{});var yr=l(tt);_a=o(yr,"live"),yr.forEach(s),Ea=o(Ct," : si vous voulez que votre mod\xE8le soit relanc\xE9 \xE0 chaque fois que l\u2019entr\xE9e change, vous pouvez mettre "),st=n(Ct,"CODE",{});var kr=l(st);ya=o(kr,"live=True"),kr.forEach(s),ka=o(Ct,`. Ceci est utile pour les mod\xE8les rapides (nous verrons un exemple \xE0 la fin de cette section).
En utilisant les options ci-dessus, nous obtenons une interface plus compl\xE8te. Ex\xE9cutez le code ci-dessous pour pouvoir discuter avec Rick et Morty :`),Ct.forEach(s),w.forEach(s),Bt=d(e),$(ie.$$.fragment,e),Ut=d(e),ye=n(e,"P",{});var wr=l(ye);wa=o(wr,"En utilisant les options ci-dessus, nous obtenons une interface plus compl\xE8te. Essayez l\u2019interface ci-dessous :"),wr.forEach(s),Xt=d(e),b=n(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),l(b).forEach(s),Qt=d(e),T=n(e,"H3",{class:!0});var vs=l(T);J=n(vs,"A",{id:!0,class:!0,href:!0});var xr=l(J);at=n(xr,"SPAN",{});var $r=l(at);$(ue.$$.fragment,$r),$r.forEach(s),xr.forEach(s),xa=d(vs),ot=n(vs,"SPAN",{});var zr=l(ot);$a=o(zr,"Partager votre d\xE9mo avec des liens temporaires"),zr.forEach(s),vs.forEach(s),Wt=o(e,`

Maintenant que nous avons une d\xE9mo fonctionnelle de notre mod\xE8le d'apprentissage automatique, apprenons \xE0 partager facilement un lien vers notre interface.
Les interfaces peuvent \xEAtre facilement partag\xE9es publiquement en mettant \`share=True\` dans la m\xE9thode \`launch()\` :

	`),$(ce.$$.fragment,e),Vt=d(e),y=n(e,"P",{});var te=l(y);za=o(te,"Cela g\xE9n\xE8re un lien public et partageable que vous pouvez envoyer \xE0 n\u2019importe qui ! Lorsque vous envoyez ce lien, l\u2019utilisateur de l\u2019autre c\xF4t\xE9 peut essayer le mod\xE8le dans son navigateur pendant 72 heures au maximum. Le traitement s\u2019effectuant sur votre appareil (tant qu\u2019il reste allum\xE9 !), vous n\u2019avez pas \xE0 vous soucier de la mise en place de d\xE9pendances. Si vous travaillez \xE0 partir d\u2019un "),rt=n(te,"EM",{});var jr=l(rt);ja=o(jr,"notebook"),jr.forEach(s),Ma=o(te," Google Colab, un lien de partage est toujours cr\xE9\xE9 automatiquement. Il ressemble g\xE9n\xE9ralement \xE0 quelque chose comme ceci : "),nt=n(te,"STRONG",{});var Mr=l(nt);Pa=o(Mr,"XXXXX.gradio.app"),Mr.forEach(s),La=o(te,". Bien que le lien soit servi par un lien "),lt=n(te,"EM",{});var Pr=l(lt);Sa=o(Pr,"Gradio"),Pr.forEach(s),Ra=o(te,", nous ne sommes qu\u2019un proxy pour votre serveur local, et nous ne stockons pas les donn\xE9es envoy\xE9es par les interfaces."),te.forEach(s),Jt=d(e),Y=n(e,"P",{});var gs=l(Y);Ca=o(gs,"Gardez cependant \xE0 l\u2019esprit que ces liens sont accessibles au public, ce qui signifie que n\u2019importe qui peut utiliser votre mod\xE8le pour la pr\xE9diction ! Par cons\xE9quent, assurez-vous de ne pas exposer d\u2019informations sensibles \xE0 travers les fonctions que vous \xE9crivez, ou de permettre que des changements critiques se produisent sur votre appareil. Si vous d\xE9finissez "),it=n(gs,"CODE",{});var Lr=l(it);Aa=o(Lr,"share=False"),Lr.forEach(s),Da=o(gs," (la valeur par d\xE9faut), seul un lien local est cr\xE9\xE9."),gs.forEach(s),Yt=d(e),N=n(e,"H3",{class:!0});var qs=l(N);K=n(qs,"A",{id:!0,class:!0,href:!0});var Sr=l(K);ut=n(Sr,"SPAN",{});var Rr=l(ut);$(pe.$$.fragment,Rr),Rr.forEach(s),Sr.forEach(s),Oa=d(qs),ke=n(qs,"SPAN",{});var Ho=l(ke);Ia=o(Ho,"H\xE9bergement de votre d\xE9mo sur "),ct=n(Ho,"I",{});var Cr=l(ct);Ga=o(Cr,"Hugging Face Spaces"),Cr.forEach(s),Ho.forEach(s),qs.forEach(s),Kt=d(e),we=n(e,"P",{});var Ar=l(we);Ta=o(Ar,"Un lien de partage que vous pouvez passer \xE0 vos coll\xE8gues est cool, mais comment pouvez-vous h\xE9berger de fa\xE7on permanente votre d\xE9mo et la faire exister dans son propre \xAB espace \xBB sur internet ?"),Ar.forEach(s),Zt=d(e),f=n(e,"P",{});var g=l(f);pt=n(g,"EM",{});var Dr=l(pt);Na=o(Dr,"Hugging Face Spaces"),Dr.forEach(s),Ha=o(g," fournit l\u2019infrastructure pour h\xE9berger de fa\xE7on permanente votre d\xE9mo "),dt=n(g,"EM",{});var Or=l(dt);Fa=o(Or,"Gradio"),Or.forEach(s),Ba=o(g," sur internet et "),mt=n(g,"STRONG",{});var Ir=l(mt);Ua=o(Ir,"gratuitement"),Ir.forEach(s),Xa=o(g," ! "),ft=n(g,"EM",{});var Gr=l(ft);Qa=o(Gr,"Spaces"),Gr.forEach(s),Wa=o(g," vous permet de cr\xE9er et de pousser vers un d\xE9p\xF4t (public ou priv\xE9) le code de votre interface "),ht=n(g,"EM",{});var Tr=l(ht);Va=o(Tr,"Gradio"),Tr.forEach(s),Ja=o(g,". Il sera plac\xE9 dans un fichier "),vt=n(g,"CODE",{});var Nr=l(vt);Ya=o(Nr,"app.py"),Nr.forEach(s),Ka=o(g,". "),de=n(g,"A",{href:!0,rel:!0});var Hr=l(de);Za=o(Hr,"Lisez ce tutoriel \xE9tape par \xE9tape"),Hr.forEach(s),eo=o(g," pour commencer ou regardez la vid\xE9o ci-dessous."),g.forEach(s),es=d(e),$(me.$$.fragment,e),ts=d(e),H=n(e,"H2",{class:!0});var bs=l(H);Z=n(bs,"A",{id:!0,class:!0,href:!0});var Fr=l(Z);gt=n(Fr,"SPAN",{});var Br=l(gt);$(fe.$$.fragment,Br),Br.forEach(s),Fr.forEach(s),to=d(bs),qt=n(bs,"SPAN",{});var Ur=l(qt);so=o(Ur,"\u270F\uFE0F Appliquons \xE7a !"),Ur.forEach(s),bs.forEach(s),ss=d(e),L=n(e,"P",{});var $e=l(L);ao=o($e,"En utilisant ce que nous avons appris dans les sections pr\xE9c\xE9dentes, cr\xE9ons la d\xE9mo de reconnaissance de croquis que nous avons d\xE9crit dans la "),xe=n($e,"A",{href:!0});var Xr=l(xe);oo=o(Xr,"section un de ce chapitre"),Xr.forEach(s),ro=o($e,". Ajoutons quelques personnalisations \xE0 notre interface et d\xE9finissons "),bt=n($e,"CODE",{});var Qr=l(bt);no=o(Qr,"share=True"),Qr.forEach(s),lo=o($e," pour cr\xE9er un lien public que nous pouvons faire circuler."),$e.forEach(s),as=d(e),q=n(e,"P",{});var A=l(q);io=o(A,"Nous pouvons charger les \xE9tiquettes depuis "),he=n(A,"A",{href:!0,rel:!0});var Wr=l(he);uo=o(Wr,"class_names.txt"),Wr.forEach(s),co=o(A," et charger le mod\xE8le Pytorch pr\xE9-entra\xEEn\xE9 depuis "),ve=n(A,"A",{href:!0,rel:!0});var Vr=l(ve);po=o(Vr,"pytorch_model.bin"),Vr.forEach(s),mo=o(A,". T\xE9l\xE9chargez ces fichiers en suivant le lien et en cliquant sur \xAB "),_t=n(A,"EM",{});var Jr=l(_t);fo=o(Jr,"download"),Jr.forEach(s),ho=o(A," \xBB dans le coin sup\xE9rieur gauche de l\u2019aper\xE7u du fichier. Regardons le code ci-dessous pour voir comment nous utilisons ces fichiers pour charger notre mod\xE8le et cr\xE9er une fonction "),Et=n(A,"CODE",{});var Yr=l(Et);vo=o(Yr,"predict()"),Yr.forEach(s),go=o(A," :"),A.forEach(s),os=d(e),$(ge.$$.fragment,e),rs=d(e),S=n(e,"P",{});var ze=l(S);qo=o(ze,"Maintenant que nous avons une fonction "),yt=n(ze,"CODE",{});var Kr=l(yt);bo=o(Kr,"predict()"),Kr.forEach(s),_o=o(ze,". La prochaine \xE9tape est de d\xE9finir et de lancer notre interface "),kt=n(ze,"EM",{});var Zr=l(kt);Eo=o(Zr,"Gradio"),Zr.forEach(s),yo=o(ze," :"),ze.forEach(s),ns=d(e),$(qe.$$.fragment,e),ls=d(e),_=n(e,"IFRAME",{src:!0,frameborder:!0,height:!0,title:!0,class:!0,allow:!0,sandbox:!0}),l(_).forEach(s),is=d(e),R=n(e,"P",{});var je=l(R);ko=o(je,"Remarquez le param\xE8tre "),wt=n(je,"CODE",{});var en=l(wt);wo=o(en,"live=True"),en.forEach(s),xo=o(je," dans "),xt=n(je,"CODE",{});var tn=l(xt);$o=o(tn,"Interface"),tn.forEach(s),zo=o(je,", qui signifie que la d\xE9mo de sketchs fait une pr\xE9diction chaque fois que quelqu\u2019un dessine sur le bloc (pas de bouton de soumission !)."),je.forEach(s),us=d(e),k=n(e,"P",{});var se=l(k);jo=o(se,"De plus, nous avons \xE9galement d\xE9fini l\u2019argument "),$t=n(se,"CODE",{});var sn=l($t);Mo=o(sn,"share=True"),sn.forEach(s),Po=o(se," dans la m\xE9thode "),zt=n(se,"CODE",{});var an=l(zt);Lo=o(an,"launch()"),an.forEach(s),So=o(se,`.
Cela cr\xE9era un lien public que vous pourrez envoyer \xE0 n\u2019importe qui ! Lorsque vous envoyez ce lien, l\u2019utilisateur de l\u2019autre c\xF4t\xE9 peut essayer le mod\xE8le de reconnaissance de croquis. Pour r\xE9it\xE9rer, vous pouvez \xE9galement h\xE9berger le mod\xE8le sur `),jt=n(se,"EM",{});var on=l(jt);Ro=o(on,"Hugging Face Spaces"),on.forEach(s),Co=o(se,", ce qui nous permet d\u2019int\xE9grer la d\xE9mo ci-dessus."),se.forEach(s),cs=d(e),C=n(e,"P",{});var Me=l(C);Ao=o(Me,"La prochaine fois, nous couvrirons d\u2019autres fa\xE7ons dont "),Mt=n(Me,"EM",{});var rn=l(Mt);Do=o(rn,"Gradio"),rn.forEach(s),Oo=o(Me," peut \xEAtre utilis\xE9 avec l\u2019\xE9cosyst\xE8me d\u2019"),Pt=n(Me,"EM",{});var nn=l(Pt);Io=o(nn,"Hugging Face"),nn.forEach(s),Go=o(Me," !"),Me.forEach(s),this.h()},h(){c(D,"name","hf:doc:metadata"),c(D,"content",JSON.stringify(gn)),c(F,"id","partager-ses-dmos-avec-les-autres"),c(F,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(F,"href","#partager-ses-dmos-avec-les-autres"),c(O,"class","relative group"),c(B,"id","polir-votre-dmo-igradioi"),c(B,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(B,"href","#polir-votre-dmo-igradioi"),c(I,"class","relative group"),c(ne,"class","block dark:hidden"),_s(ne.src,Bo="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter9/gradio-demo-overview.png")||c(ne,"src",Bo),c(ne,"alt","Overview of a gradio interface"),c(le,"class","hidden dark:block"),_s(le.src,Uo="https://huggingface.co/datasets/huggingface-course/documentation-images/resolve/main/en/chapter9/gradio-demo-overview-dark.png")||c(le,"src",Uo),c(le,"alt","Overview of a gradio interface"),c(G,"class","flex justify-center"),_s(b.src,Xo="https://hf.space/gradioiframe/course-demos/Rick_and_Morty_QA/+")||c(b,"src",Xo),c(b,"frameborder","0"),c(b,"height","800"),c(b,"title","Gradio app"),c(b,"class","container p-0 flex-grow space-iframe"),c(b,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),c(b,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads"),c(J,"id","partager-votre-dmo-avec-des-liens-temporaires"),c(J,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(J,"href","#partager-votre-dmo-avec-des-liens-temporaires"),c(T,"class","relative group"),c(K,"id","hbergement-de-votre-dmo-sur-ihugging-face-spacesi"),c(K,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(K,"href","#hbergement-de-votre-dmo-sur-ihugging-face-spacesi"),c(N,"class","relative group"),c(de,"href","https://huggingface.co/blog/gradio-spaces"),c(de,"rel","nofollow"),c(Z,"id","appliquons-a"),c(Z,"class","header-link block pr-1.5 text-lg no-hover:hidden with-hover:absolute with-hover:p-1.5 with-hover:opacity-0 with-hover:group-hover:opacity-100 with-hover:right-full"),c(Z,"href","#appliquons-a"),c(H,"class","relative group"),c(xe,"href","/course/fr/chapter9/1"),c(he,"href","https://huggingface.co/spaces/dawood/Sketch-Recognition/blob/main/class_names.txt"),c(he,"rel","nofollow"),c(ve,"href","https://huggingface.co/spaces/dawood/Sketch-Recognition/blob/main/pytorch_model.bin"),c(ve,"rel","nofollow"),_s(_.src,Qo="https://hf.space/gradioiframe/course-demos/Sketch-Recognition/+")||c(_,"src",Qo),c(_,"frameborder","0"),c(_,"height","650"),c(_,"title","Gradio app"),c(_,"class","container p-0 flex-grow space-iframe"),c(_,"allow","accelerometer; ambient-light-sensor; autoplay; battery; camera; document-domain; encrypted-media; fullscreen; geolocation; gyroscope; layout-animations; legacy-image-formats; magnetometer; microphone; midi; oversized-images; payment; picture-in-picture; publickey-credentials-get; sync-xhr; usb; vr ; wake-lock; xr-spatial-tracking"),c(_,"sandbox","allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts allow-downloads")},m(e,i){t(document.head,D),u(e,Dt,i),u(e,O,i),t(O,F),t(F,Pe),z(ae,Pe,null),t(O,ys),t(O,Le),t(Le,ks),u(e,Ot,i),z(oe,e,i),u(e,It,i),u(e,E,i),t(E,ws),t(E,Se),t(Se,xs),t(E,$s),t(E,Re),t(Re,Ce),t(Ce,zs),t(E,js),t(E,Ae),t(Ae,De),t(De,Ms),t(E,Ps),u(e,Gt,i),u(e,be,i),t(be,Ls),u(e,Tt,i),u(e,I,i),t(I,B),t(B,Oe),z(re,Oe,null),t(I,Ss),t(I,_e),t(_e,Rs),t(_e,Ie),t(Ie,Cs),u(e,Nt,i),u(e,G,i),t(G,ne),t(G,As),t(G,le),u(e,Ht,i),u(e,U,i),t(U,Ds),t(U,Ge),t(Ge,Os),t(U,Is),u(e,Ft,i),u(e,v,i),t(v,X),t(X,Te),t(Te,Gs),t(X,Ts),t(X,Ne),t(Ne,Ns),t(X,Hs),t(v,Fs),t(v,Ee),t(Ee,He),t(He,Bs),t(Ee,Us),t(v,Xs),t(v,Q),t(Q,Fe),t(Fe,Qs),t(Q,Ws),t(Q,Be),t(Be,Vs),t(Q,Js),t(v,Ys),t(v,m),t(m,Ue),t(Ue,Ks),t(m,Zs),t(m,Xe),t(Xe,ea),t(m,ta),t(m,Qe),t(Qe,sa),t(m,aa),t(m,We),t(We,oa),t(m,ra),t(m,Ve),t(Ve,na),t(m,la),t(m,Je),t(Je,ia),t(m,ua),t(m,Ye),t(Ye,ca),t(m,pa),t(m,Ke),t(Ke,da),t(m,ma),t(v,fa),t(v,W),t(W,Ze),t(Ze,ha),t(W,va),t(W,et),t(et,ga),t(W,qa),t(v,ba),t(v,V),t(V,tt),t(tt,_a),t(V,Ea),t(V,st),t(st,ya),t(V,ka),u(e,Bt,i),z(ie,e,i),u(e,Ut,i),u(e,ye,i),t(ye,wa),u(e,Xt,i),u(e,b,i),u(e,Qt,i),u(e,T,i),t(T,J),t(J,at),z(ue,at,null),t(T,xa),t(T,ot),t(ot,$a),u(e,Wt,i),z(ce,e,i),u(e,Vt,i),u(e,y,i),t(y,za),t(y,rt),t(rt,ja),t(y,Ma),t(y,nt),t(nt,Pa),t(y,La),t(y,lt),t(lt,Sa),t(y,Ra),u(e,Jt,i),u(e,Y,i),t(Y,Ca),t(Y,it),t(it,Aa),t(Y,Da),u(e,Yt,i),u(e,N,i),t(N,K),t(K,ut),z(pe,ut,null),t(N,Oa),t(N,ke),t(ke,Ia),t(ke,ct),t(ct,Ga),u(e,Kt,i),u(e,we,i),t(we,Ta),u(e,Zt,i),u(e,f,i),t(f,pt),t(pt,Na),t(f,Ha),t(f,dt),t(dt,Fa),t(f,Ba),t(f,mt),t(mt,Ua),t(f,Xa),t(f,ft),t(ft,Qa),t(f,Wa),t(f,ht),t(ht,Va),t(f,Ja),t(f,vt),t(vt,Ya),t(f,Ka),t(f,de),t(de,Za),t(f,eo),u(e,es,i),z(me,e,i),u(e,ts,i),u(e,H,i),t(H,Z),t(Z,gt),z(fe,gt,null),t(H,to),t(H,qt),t(qt,so),u(e,ss,i),u(e,L,i),t(L,ao),t(L,xe),t(xe,oo),t(L,ro),t(L,bt),t(bt,no),t(L,lo),u(e,as,i),u(e,q,i),t(q,io),t(q,he),t(he,uo),t(q,co),t(q,ve),t(ve,po),t(q,mo),t(q,_t),t(_t,fo),t(q,ho),t(q,Et),t(Et,vo),t(q,go),u(e,os,i),z(ge,e,i),u(e,rs,i),u(e,S,i),t(S,qo),t(S,yt),t(yt,bo),t(S,_o),t(S,kt),t(kt,Eo),t(S,yo),u(e,ns,i),z(qe,e,i),u(e,ls,i),u(e,_,i),u(e,is,i),u(e,R,i),t(R,ko),t(R,wt),t(wt,wo),t(R,xo),t(R,xt),t(xt,$o),t(R,zo),u(e,us,i),u(e,k,i),t(k,jo),t(k,$t),t($t,Mo),t(k,Po),t(k,zt),t(zt,Lo),t(k,So),t(k,jt),t(jt,Ro),t(k,Co),u(e,cs,i),u(e,C,i),t(C,Ao),t(C,Mt),t(Mt,Do),t(C,Oo),t(C,Pt),t(Pt,Io),t(C,Go),ps=!0},p:dn,i(e){ps||(j(ae.$$.fragment,e),j(oe.$$.fragment,e),j(re.$$.fragment,e),j(ie.$$.fragment,e),j(ue.$$.fragment,e),j(ce.$$.fragment,e),j(pe.$$.fragment,e),j(me.$$.fragment,e),j(fe.$$.fragment,e),j(ge.$$.fragment,e),j(qe.$$.fragment,e),ps=!0)},o(e){M(ae.$$.fragment,e),M(oe.$$.fragment,e),M(re.$$.fragment,e),M(ie.$$.fragment,e),M(ue.$$.fragment,e),M(ce.$$.fragment,e),M(pe.$$.fragment,e),M(me.$$.fragment,e),M(fe.$$.fragment,e),M(ge.$$.fragment,e),M(qe.$$.fragment,e),ps=!1},d(e){s(D),e&&s(Dt),e&&s(O),P(ae),e&&s(Ot),P(oe,e),e&&s(It),e&&s(E),e&&s(Gt),e&&s(be),e&&s(Tt),e&&s(I),P(re),e&&s(Nt),e&&s(G),e&&s(Ht),e&&s(U),e&&s(Ft),e&&s(v),e&&s(Bt),P(ie,e),e&&s(Ut),e&&s(ye),e&&s(Xt),e&&s(b),e&&s(Qt),e&&s(T),P(ue),e&&s(Wt),P(ce,e),e&&s(Vt),e&&s(y),e&&s(Jt),e&&s(Y),e&&s(Yt),e&&s(N),P(pe),e&&s(Kt),e&&s(we),e&&s(Zt),e&&s(f),e&&s(es),P(me,e),e&&s(ts),e&&s(H),P(fe),e&&s(ss),e&&s(L),e&&s(as),e&&s(q),e&&s(os),P(ge,e),e&&s(rs),e&&s(S),e&&s(ns),P(qe,e),e&&s(ls),e&&s(_),e&&s(is),e&&s(R),e&&s(us),e&&s(k),e&&s(cs),e&&s(C)}}}const gn={local:"partager-ses-dmos-avec-les-autres",sections:[{local:null,sections:[{local:"polir-votre-dmo-igradioi",title:"Polir votre d\xE9mo <i>Gradio</i>"},{local:"partager-votre-dmo-avec-des-liens-temporaires",title:"Partager votre d\xE9mo avec des liens temporaires"},{local:"hbergement-de-votre-dmo-sur-ihugging-face-spacesi",title:"H\xE9bergement de votre d\xE9mo sur <i>Hugging Face Spaces</i>"}],title:null},{local:"appliquons-a",title:"\u270F\uFE0F Appliquons \xE7a !"}],title:"Partager ses d\xE9mos avec les autres"};function qn(Fo){return mn(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class wn extends ln{constructor(D){super();un(this,D,qn,vn,cn,{})}}export{wn as default,gn as metadata};
