import{s as ke,o as Re,n as At}from"../chunks/scheduler.37c15a92.js";import{S as We,i as Xe,g as u,s as n,r as I,m as A,A as He,h as r,f as e,c as a,j as je,u as g,n as N,x as y,k as vt,y as W,a as s,v as f,d as h,t as w,w as b}from"../chunks/index.2bf4358c.js";import{T as $t}from"../chunks/Tip.363c041f.js";import{C as S}from"../chunks/CodeBlock.4f5fc1ad.js";import{C as Le}from"../chunks/CourseFloatingBanner.15ba07e6.js";import{H as Z,E as Ye}from"../chunks/EditOnGithub.8916dc7c.js";function De(z){let J,p,U,c,m,j,T,$,M;return{c(){J=A("Les gabarits de chat sont essentiels pour :"),p=u("br"),U=A(`
- Maintenir une structure de conversation cohérente`),c=u("br"),m=A(`
- Assurer une identification correcte des rôles`),j=u("br"),T=A(`
- Gérer le contexte à travers plusieurs tours`),$=u("br"),M=A(`
- Prendre en charge des fonctions avancées telles que l'utilisation d'outils`)},l(i){J=N(i,"Les gabarits de chat sont essentiels pour :"),p=r(i,"BR",{}),U=N(i,`
- Maintenir une structure de conversation cohérente`),c=r(i,"BR",{}),m=N(i,`
- Assurer une identification correcte des rôles`),j=r(i,"BR",{}),T=N(i,`
- Gérer le contexte à travers plusieurs tours`),$=r(i,"BR",{}),M=N(i,`
- Prendre en charge des fonctions avancées telles que l'utilisation d'outils`)},m(i,C){s(i,J,C),s(i,p,C),s(i,U,C),s(i,c,C),s(i,m,C),s(i,j,C),s(i,T,C),s(i,$,C),s(i,M,C)},p:At,d(i){i&&(e(J),e(p),e(U),e(c),e(m),e(j),e(T),e($),e(M))}}}function Pe(z){let J,p,U="cette configuration",c;return{c(){J=A("Lorsque vous utilisez un modèle instruit, vérifiez toujours que vous utilisez le bon format de gabarits de chat. L'utilisation d'un mauvais gabarit peut conduire à de mauvaises performances du modèle ou à un comportement inattendu. La façon la plus simple de s'en assurer est de vérifier la configuration du *tokenizer* du modèle sur le *Hub*. Par exemple, le modèle `SmolLM2-135M-Instruct` utilise "),p=u("a"),p.textContent=U,c=A("."),this.h()},l(m){J=N(m,"Lorsque vous utilisez un modèle instruit, vérifiez toujours que vous utilisez le bon format de gabarits de chat. L'utilisation d'un mauvais gabarit peut conduire à de mauvaises performances du modèle ou à un comportement inattendu. La façon la plus simple de s'en assurer est de vérifier la configuration du *tokenizer* du modèle sur le *Hub*. Par exemple, le modèle `SmolLM2-135M-Instruct` utilise "),p=r(m,"A",{href:!0,"data-svelte-h":!0}),y(p)!=="svelte-fidsnk"&&(p.textContent=U),c=N(m,"."),this.h()},h(){vt(p,"href","https://huggingface.co/HuggingFaceTB/SmolLM2-135M-Instruct/blob/e2c3f7557efbdec707ae3a336371d169783f1da1/tokenizer_config.json#L146")},m(m,j){s(m,J,j),s(m,p,j),s(m,c,j)},p:At,d(m){m&&(e(J),e(p),e(c))}}}function Oe(z){let J,p,U,c,m="tokens",j,T,$;return{c(){J=A(`Lors de l'implémentation de fonctions avancées :
- Testez minutieusement votre modèle. Les applications de vision et les outils utilisent des gabarits particulièrement variés.`),p=u("br"),U=A(`
- Surveillez attentivement l'utilisation des `),c=u("i"),c.textContent=m,j=A(" entre chaque fonctionnalité et chaque modèle."),T=u("br"),$=A(`
- Documenter le format attendu pour chaque fonctionnalité`)},l(M){J=N(M,`Lors de l'implémentation de fonctions avancées :
- Testez minutieusement votre modèle. Les applications de vision et les outils utilisent des gabarits particulièrement variés.`),p=r(M,"BR",{}),U=N(M,`
- Surveillez attentivement l'utilisation des `),c=r(M,"I",{"data-svelte-h":!0}),y(c)!=="svelte-yka332"&&(c.textContent=m),j=N(M," entre chaque fonctionnalité et chaque modèle."),T=r(M,"BR",{}),$=N(M,`
- Documenter le format attendu pour chaque fonctionnalité`)},m(M,i){s(M,J,i),s(M,p,i),s(M,U,i),s(M,c,i),s(M,j,i),s(M,T,i),s(M,$,i)},p:At,d(M){M&&(e(J),e(p),e(U),e(c),e(j),e(T),e($))}}}function Ke(z){let J,p,U,c,m="token",j,T,$,M,i,C,v;return{c(){J=A(`Les pièges à éviter :
- Mélanger différents gabarits dans la même application`),p=u("br"),U=A(`
- Dépasser la limite du nombre de `),c=u("i"),c.textContent=m,j=A(" avec de longs historiques de conversation"),T=u("br"),$=A(`
- Ne pas escamoter correctement les caractères spéciaux dans les messages`),M=u("br"),i=A(`
- Oublier de valider la structure des messages d'entrée`),C=u("br"),v=A(`
- Ignorer les exigences de gabarits spécifiques à un modèle`)},l(d){J=N(d,`Les pièges à éviter :
- Mélanger différents gabarits dans la même application`),p=r(d,"BR",{}),U=N(d,`
- Dépasser la limite du nombre de `),c=r(d,"I",{"data-svelte-h":!0}),y(c)!=="svelte-nazwxf"&&(c.textContent=m),j=N(d," avec de longs historiques de conversation"),T=r(d,"BR",{}),$=N(d,`
- Ne pas escamoter correctement les caractères spéciaux dans les messages`),M=r(d,"BR",{}),i=N(d,`
- Oublier de valider la structure des messages d'entrée`),C=r(d,"BR",{}),v=N(d,`
- Ignorer les exigences de gabarits spécifiques à un modèle`)},m(d,q){s(d,J,q),s(d,p,q),s(d,U,q),s(d,c,q),s(d,j,q),s(d,T,q),s(d,$,q),s(d,M,q),s(d,i,q),s(d,C,q),s(d,v,q)},p:At,d(d){d&&(e(J),e(p),e(U),e(c),e(j),e(T),e($),e(M),e(i),e(C),e(v))}}}function ts(z){let J,p,U="<li>Chargez le jeu de données :</li>",c,m,j,T,$="<li>Créer une fonction de traitement :</li>",M,i,C,v,d="<li>Appliquer le gabarit de chat en utilisant le <em>tokenizer</em> du modèle choisi.</li>",q,E,Q="N’oubliez pas de vérifier que le format de sortie correspond aux exigences du modèle choisi !",_;return m=new S({props:{code:"ZnJvbSUyMGRhdGFzZXRzJTIwaW1wb3J0JTIwbG9hZF9kYXRhc2V0JTBBJTBBZGF0YXNldCUyMCUzRCUyMGxvYWRfZGF0YXNldCglMjJIdWdnaW5nRmFjZVRCJTJGc21vbHRhbGslMjIp",highlighted:`<span class="hljs-keyword">from</span> datasets <span class="hljs-keyword">import</span> load_dataset

dataset = load_dataset(<span class="hljs-string">&quot;HuggingFaceTB/smoltalk&quot;</span>)`,wrap:!1}}),i=new S({props:{code:"ZGVmJTIwY29udmVydF90b19jaGF0bWwoZXhhbXBsZSklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJtZXNzYWdlcyUyMiUzQSUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJ1c2VyJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMGV4YW1wbGUlNUIlMjJpbnB1dCUyMiU1RCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwZXhhbXBsZSU1QiUyMm91dHB1dCUyMiU1RCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCU3RA==",highlighted:`<span class="hljs-keyword">def</span> <span class="hljs-title function_">convert_to_chatml</span>(<span class="hljs-params">example</span>):
    <span class="hljs-keyword">return</span> {
        <span class="hljs-string">&quot;messages&quot;</span>: [
            {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: example[<span class="hljs-string">&quot;input&quot;</span>]},
            {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: example[<span class="hljs-string">&quot;output&quot;</span>]},
        ]
    }`,wrap:!1}}),{c(){J=A("Suivez les étapes suivantes pour convertir le jeu de données `HuggingFaceTB/smoltalk` au format ChatML :\n"),p=u("ol"),p.innerHTML=U,c=n(),I(m.$$.fragment),j=n(),T=u("ol"),T.innerHTML=$,M=n(),I(i.$$.fragment),C=n(),v=u("ol"),v.innerHTML=d,q=n(),E=u("p"),E.textContent=Q,this.h()},l(o){J=N(o,"Suivez les étapes suivantes pour convertir le jeu de données `HuggingFaceTB/smoltalk` au format ChatML :\n"),p=r(o,"OL",{"data-svelte-h":!0}),y(p)!=="svelte-1obqujb"&&(p.innerHTML=U),c=a(o),g(m.$$.fragment,o),j=a(o),T=r(o,"OL",{start:!0,"data-svelte-h":!0}),y(T)!=="svelte-12q6ydd"&&(T.innerHTML=$),M=a(o),g(i.$$.fragment,o),C=a(o),v=r(o,"OL",{start:!0,"data-svelte-h":!0}),y(v)!=="svelte-1uztmqw"&&(v.innerHTML=d),q=a(o),E=r(o,"P",{"data-svelte-h":!0}),y(E)!=="svelte-1jzrnek"&&(E.textContent=Q),this.h()},h(){vt(T,"start","2"),vt(v,"start","3")},m(o,x){s(o,J,x),s(o,p,x),s(o,c,x),f(m,o,x),s(o,j,x),s(o,T,x),s(o,M,x),f(i,o,x),s(o,C,x),s(o,v,x),s(o,q,x),s(o,E,x),_=!0},p:At,i(o){_||(h(m.$$.fragment,o),h(i.$$.fragment,o),_=!0)},o(o){w(m.$$.fragment,o),w(i.$$.fragment,o),_=!1},d(o){o&&(e(J),e(p),e(c),e(j),e(T),e(M),e(C),e(v),e(q),e(E)),b(m,o),b(i,o)}}}function es(z){let J,p,U,c,m,j,T,$,M,i='Les gabarits de chat sont essentiels pour structurer les interactions entre les modèles de langage et les utilisateurs. Que vous construisiez un simple robot conversationnel ou un <a href="https://huggingface.co/learn/agents-course/fr/unit0/introduction" rel="nofollow">agent complexe</a>, il est essentiel de comprendre comment formater correctement vos conversations pour obtenir les meilleurs résultats en utilisant votre modèle. Dans ce guide, nous allons explorer ce que sont les gabarits de chat, pourquoi ils sont importants et comment les utiliser efficacement.',C,v,d,q,E,Q,_,o,x='Un modèle de base est entraîné sur des données textuelles brutes pour prédire le prochain <em>token</em>, tandis qu’un modèle instruit est finetuné spécifiquement pour suivre des instructions et converser. Par exemple, <a href="https://huggingface.co/HuggingFaceTB/SmolLM2-135M" rel="nofollow"><code>SmolLM2-135M</code></a> est un modèle de base, tandis que <a href="https://huggingface.co/HuggingFaceTB/SmolLM2-135M-Instruct" rel="nofollow"><code>SmolLM2-135M-Instruct</code></a> est sa variante finetunée sur des instructions.',Nt,X,Ue="Les modèles instruits sont entraînés à suivre une structure conversationnelle spécifique, ce qui les rend plus adaptés aux applications de chatbot. De plus, les modèles d’instruction peuvent gérer des interactions complexes (y compris l’utilisation d’outils), les entrées multimodales et l’appel de fonctions.",xt,H,Ie='Pour qu’un modèle de base se comporte comme un modèle instruit, nous devons formater nos instructions d’une manière cohérente que le modèle peut comprendre. C’est là qu’interviennent les gabarits de chat. ChatML (pour <em>Chat Markup Language</em>) est un de ces gabarits qui structure les conversations avec des indicateurs de rôle clairs (système, utilisateur, assistant). Vous pouvez trouver un guide sur ChatML <a href="https://huggingface.co/HuggingFaceTB/SmolLM2-135M-Instruct/blob/e2c3f7557efbdec707ae3a336371d169783f1da1/tokenizer_config.json#L146" rel="nofollow">ici</a>.',Bt,F,Gt,L,zt,Y,ge="Avant de se plonger dans des implémentations spécifiques, il est important de comprendre le formatage des conversations attendu par différents modèles. Explorons quelques gabarits courants à l’aide d’un simple exemple de conversation.",Et,D,fe="Nous utiliserons la structure de conversation suivante pour tous les exemples :",Qt,P,St,O,he="Voici le gabarit ChatML utilisé dans des modèles tels que SmolLM2 et les Qwen 2 :",_t,K,Zt,tt,we="Voici le format de gabarits utilisé par Mistral :",Ft,et,Vt,st,be="Les principales différences entre ces formats sont les suivantes :",kt,lt,Ce="<li><p><strong>Gestion du message système</strong> :</p> <ul><li>Llama 2 insère les messages du système dans des balises <code>&lt;&lt;SYS&gt;&gt;</code></li> <li>Llama 3 utilise des balises <code>&lt;|system|&gt;</code> avec des fins <code>&lt;/s&gt;</code></li> <li>Mistral inclut un message système dans la première instruction</li> <li>Qwen utilise le rôle <code>system</code> explicite avec les balises <code>&lt;|im_start|&gt;</code></li> <li>ChatGPT utilise le préfixe <code>SYSTEM:</code></li></ul></li> <li><p><strong>Délimitation des messages</strong>:</p> <ul><li>Llama 2 utilise les balises <code>[INST]</code> et <code>[/INST]</code></li> <li>Llama 3 utilise des balises spécifiques pour chaque rôle (<code>&lt;|system|&gt;</code>, <code>&lt;|user|&gt;</code>, <code>&lt;|assistant|&gt;</code>) avec <code>&lt;/s&gt;</code> comme fin</li> <li>Mistral utilise <code>[INST]</code> et <code>[/INST]</code> avec <code>&lt;s&gt;</code> utilise <code>&lt;/s&gt;</code></li> <li>Qwen utilise des <em>token</em> de début et de fin spécifiques pour chaque rôle</li></ul></li> <li><p><strong>Tokens spéciaux</strong>:</p> <ul><li>Llama 2 utilise <code>&lt;s&gt;</code> et <code>&lt;/s&gt;</code> pour les limites de la conversation</li> <li>Llama 3 utilise <code>&lt;/s&gt;</code> pour terminer chaque message</li> <li>Mistral utilise <code>&lt;s&gt;</code> et <code>&lt;/s&gt;</code> pour les limites des tours</li> <li>Qwen utilise des <em>token</em> de début et de fin spécifiques pour chaque rôle</li></ul></li>",Rt,nt,qe="Comprendre ces différences est essentiel pour travailler avec différents modèles. Voyons comment la bibliothèque 🤗 <em>Transformers</em> nous aide à gérer ces variations automatiquement :",Wt,at,Xt,B,wt,$e="Cliquer pour voir des exemples de gabarits",Je,bt,ve="Gabarits ChatML de Qwen 2 et SmolLM2 :",de,it,Te,Ct,Ae="Gabarit de Mistral :",ye,ot,Ht,ut,Lt,rt,Ne="Les gabarits de chat peuvent gérer des scénarios plus complexes que les simples interactions conversationnelles, notamment :",Yt,Mt,xe="<li><strong>Utilisation d’outils</strong> : lorsque les modèles doivent interagir avec des outils externes ou des API.</li> <li><strong>Entrées multimodales</strong> : pour gérer les images, le son ou d’autres types de médias</li> <li><strong>Appel de fonction</strong> : pour l’exécution de fonctions structurées</li> <li><strong>Contexte multi-tour</strong> : pour conserver l’historique des conversations</li>",Dt,V,Pt,pt,Be="Pour les conversations multimodales, les gabarits peuvent inclure des références d’images ou des images codées en base64 :",Ot,mt,Kt,ct,Ge="Voici un exemple de gabarits de chat avec l’utilisation d’un outil :",te,Jt,ee,dt,se,Tt,le,yt,ze="Lorsque vous travaillez avec des gabarits de chat, respectez les pratiques suivantes :",ne,jt,Ee="<li><strong>Formatage cohérent</strong> : Utilisez toujours le même format de gabarits pour l’ensemble de votre application.</li> <li><strong>Définition claire des rôles</strong> : Spécifiez clairement les rôles (système, utilisateur, assistant, outil) pour chaque message.</li> <li><strong>Gestion du contexte</strong> : Tenir compte de la limite du nombre de <em>tokens</em> lors de la gestion de l’historique des conversations.</li> <li><strong>Gestion des erreurs</strong> : Inclure une gestion appropriée des erreurs pour les appels d’outils et les entrées multimodales.</li> <li><strong>Validation</strong> : Valider la structure du message avant de l’envoyer au modèle</li>",ae,k,ie,Ut,oe,It,Qe="Entraînons-nous à mettre en œuvre des gabarits de chat à l’aide d’un exemple concret.",ue,R,re,gt,Me,ft,Se='<li><a href="https://huggingface.co/docs/transformers/main/en/chat_templating" rel="nofollow">Guide sur les gabarits de chat dans la documentation d’Hugging Face</a></li> <li><a href="https://huggingface.co/docs/transformers" rel="nofollow">Documentation de 🤗 <em>Transformers</em></a></li> <li><a href="https://github.com/chujiezheng/chat_templates" rel="nofollow">Dépôt Github contenant des exemples de gabarits de chat</a></li>',pe,ht,me,qt,ce;return m=new Le({props:{chapter:11,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"English",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter11/section2.ipynb"},{label:"Français",value:"https://colab.research.google.com/github/huggingface/notebooks/blob/master/course/en/chapter10/section2.ipynb"},{label:"English",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fr/chapter11/section2.ipynb"},{label:"Français",value:"https://studiolab.sagemaker.aws/import/github/huggingface/notebooks/blob/master/course/fr/chapter11/section2.ipynb"}]}}),T=new Z({props:{title:"Introduction",local:"introduction",headingTag:"h2"}}),v=new $t({props:{$$slots:{default:[De]},$$scope:{ctx:z}}}),q=new Z({props:{title:"Types de modèles et gabarits",local:"types-de-modèles-et-gabarits",headingTag:"h2"}}),Q=new Z({props:{title:"Modèles de base vs. modèles instruits",local:"modèles-de-base-vs-modèles-instruits",headingTag:"h3"}}),F=new $t({props:{warning:!0,$$slots:{default:[Pe]},$$scope:{ctx:z}}}),L=new Z({props:{title:"Formats de gabarits courants",local:"formats-de-gabarits-courants",headingTag:"h3"}}),P=new S({props:{code:"bWVzc2FnZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIyc3lzdGVtJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMllvdSUyMGFyZSUyMGElMjBoZWxwZnVsJTIwYXNzaXN0YW50LiUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJ1c2VyJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMkhlbGxvISUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIySGkhJTIwSG93JTIwY2FuJTIwSSUyMGhlbHAlMjB5b3UlMjB0b2RheSUzRiUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJ1c2VyJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMldoYXQncyUyMHRoZSUyMHdlYXRoZXIlM0YlMjIlN0QlMkMlMEElNUQ=",highlighted:`messages = [
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;system&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;You are a helpful assistant.&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Hello!&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Hi! How can I help you today?&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;What&#x27;s the weather?&quot;</span>},
]`,wrap:!1}}),K=new S({props:{code:"JTNDJTdDaW1fc3RhcnQlN0MlM0VzeXN0ZW0lMEFZb3UlMjBhcmUlMjBhJTIwaGVscGZ1bCUyMGFzc2lzdGFudC4lM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRXVzZXIlMEFIZWxsbyElM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRWFzc2lzdGFudCUwQUhpISUyMEhvdyUyMGNhbiUyMEklMjBoZWxwJTIweW91JTIwdG9kYXklM0YlM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRXVzZXIlMEFXaGF0J3MlMjB0aGUlMjB3ZWF0aGVyJTNGJTNDJTdDaW1fc3RhcnQlN0MlM0Vhc3Npc3RhbnQ=",highlighted:`&lt;|im_start|&gt;system
You are a helpful assistant.&lt;|im_end|&gt;
&lt;|im_start|&gt;user
Hello!&lt;|im_end|&gt;
&lt;|im_start|&gt;assistant
Hi! How can I <span class="hljs-built_in">help</span> you today?&lt;|im_end|&gt;
&lt;|im_start|&gt;user
What<span class="hljs-string">&#x27;s the weather?&lt;|im_start|&gt;assistant</span>`,wrap:!1}}),et=new S({props:{code:"JTNDcyUzRSU1QklOU1QlNUQlMjBZb3UlMjBhcmUlMjBhJTIwaGVscGZ1bCUyMGFzc2lzdGFudC4lMjAlNUIlMkZJTlNUJTVEJTBBSGkhJTIwSG93JTIwY2FuJTIwSSUyMGhlbHAlMjB5b3UlMjB0b2RheSUzRiUzQyUyRnMlM0UlMEElNUJJTlNUJTVEJTIwSGVsbG8hJTIwJTVCJTJGSU5TVCU1RA==",highlighted:`&lt;s&gt;[INST] You are a helpful assistant. [/INST]
Hi! How can I <span class="hljs-built_in">help</span> you today?&lt;/s&gt;
[INST] Hello! [/INST]`,wrap:!1}}),at=new S({props:{code:"ZnJvbSUyMHRyYW5zZm9ybWVycyUyMGltcG9ydCUyMEF1dG9Ub2tlbml6ZXIlMEElMEElMjMlMjBDZWxhJTIwdXRpbGlzZXJhJTIwYXV0b21hdGlxdWVtZW50JTIwZGVzJTIwZ2FiYXJpdHMlMjBkaWZmJUMzJUE5cmVudHMlMEFtaXN0cmFsX3Rva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMm1pc3RyYWxhaSUyRk1pc3RyYWwtN0ItSW5zdHJ1Y3QtdjAuMSUyMiklMEFxd2VuX3Rva2VuaXplciUyMCUzRCUyMEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKCUyMlF3ZW4lMkZRd2VuLTdCLUNoYXQlMjIpJTBBc21vbF90b2tlbml6ZXIlMjAlM0QlMjBBdXRvVG9rZW5pemVyLmZyb21fcHJldHJhaW5lZCglMjJIdWdnaW5nRmFjZVRCJTJGU21vbExNMi0xMzVNLUluc3RydWN0JTIyKSUwQSUwQW1lc3NhZ2VzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnN5c3RlbSUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJZb3UlMjBhcmUlMjBhJTIwaGVscGZ1bCUyMGFzc2lzdGFudC4lMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIydXNlciUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJIZWxsbyElMjIlN0QlMkMlMEElNUQlMEElMEElMjMlMjBDaGFxdWUlMjBtb2QlQzMlQThsZSUyMHNlcmElMjBmb3JtYXQlQzMlQTklMjBlbiUyMGZvbmN0aW9uJTIwZGUlMjBzb24lMjBnYWJhcml0JTBBbWlzdHJhbF9jaGF0JTIwJTNEJTIwbWlzdHJhbF90b2tlbml6ZXIuYXBwbHlfY2hhdF90ZW1wbGF0ZShtZXNzYWdlcyUyQyUyMHRva2VuaXplJTNERmFsc2UpJTBBcXdlbl9jaGF0JTIwJTNEJTIwcXdlbl90b2tlbml6ZXIuYXBwbHlfY2hhdF90ZW1wbGF0ZShtZXNzYWdlcyUyQyUyMHRva2VuaXplJTNERmFsc2UpJTBBc21vbF9jaGF0JTIwJTNEJTIwc21vbF90b2tlbml6ZXIuYXBwbHlfY2hhdF90ZW1wbGF0ZShtZXNzYWdlcyUyQyUyMHRva2VuaXplJTNERmFsc2Up",highlighted:`<span class="hljs-keyword">from</span> transformers <span class="hljs-keyword">import</span> AutoTokenizer

<span class="hljs-comment"># Cela utilisera automatiquement des gabarits différents</span>
mistral_tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;mistralai/Mistral-7B-Instruct-v0.1&quot;</span>)
qwen_tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;Qwen/Qwen-7B-Chat&quot;</span>)
smol_tokenizer = AutoTokenizer.from_pretrained(<span class="hljs-string">&quot;HuggingFaceTB/SmolLM2-135M-Instruct&quot;</span>)

messages = [
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;system&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;You are a helpful assistant.&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Hello!&quot;</span>},
]

<span class="hljs-comment"># Chaque modèle sera formaté en fonction de son gabarit</span>
mistral_chat = mistral_tokenizer.apply_chat_template(messages, tokenize=<span class="hljs-literal">False</span>)
qwen_chat = qwen_tokenizer.apply_chat_template(messages, tokenize=<span class="hljs-literal">False</span>)
smol_chat = smol_tokenizer.apply_chat_template(messages, tokenize=<span class="hljs-literal">False</span>)`,wrap:!1}}),it=new S({props:{code:"JTNDJTdDaW1fc3RhcnQlN0MlM0VzeXN0ZW0lMEFZb3UlMjBhcmUlMjBhJTIwaGVscGZ1bCUyMGFzc2lzdGFudC4lM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRXVzZXIlMEFIZWxsbyElM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRWFzc2lzdGFudCUwQUhpISUyMEhvdyUyMGNhbiUyMEklMjBoZWxwJTIweW91JTIwdG9kYXklM0YlM0MlN0NpbV9lbmQlN0MlM0UlMEElM0MlN0NpbV9zdGFydCU3QyUzRXVzZXIlMEFXaGF0J3MlMjB0aGUlMjB3ZWF0aGVyJTNGJTNDJTdDaW1fc3RhcnQlN0MlM0Vhc3Npc3RhbnQ=",highlighted:`&lt;|im_start|&gt;system
You are a helpful assistant.&lt;|im_end|&gt;
&lt;|im_start|&gt;user
Hello!&lt;|im_end|&gt;
&lt;|im_start|&gt;assistant
Hi! How can I <span class="hljs-built_in">help</span> you today?&lt;|im_end|&gt;
&lt;|im_start|&gt;user
What<span class="hljs-string">&#x27;s the weather?&lt;|im_start|&gt;assistant</span>`,wrap:!1}}),ot=new S({props:{code:"JTNDcyUzRSU1QklOU1QlNUQlMjBZb3UlMjBhcmUlMjBhJTIwaGVscGZ1bCUyMGFzc2lzdGFudC4lMjAlNUIlMkZJTlNUJTVEJTBBSGkhJTIwSG93JTIwY2FuJTIwSSUyMGhlbHAlMjB5b3UlMjB0b2RheSUzRiUzQyUyRnMlM0UlMEElNUJJTlNUJTVEJTIwSGVsbG8hJTIwJTVCJTJGSU5TVCU1RA==",highlighted:`&lt;s&gt;[INST] You are a helpful assistant. [/INST]
Hi! How can I <span class="hljs-built_in">help</span> you today?&lt;/s&gt;
[INST] Hello! [/INST]`,wrap:!1}}),ut=new Z({props:{title:"Fonctionnalités avancées",local:"fonctionnalités-avancées",headingTag:"h3"}}),V=new $t({props:{$$slots:{default:[Oe]},$$scope:{ctx:z}}}),mt=new S({props:{code:"bWVzc2FnZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJyb2xlJTIyJTNBJTIwJTIyc3lzdGVtJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMllvdSUyMGFyZSUyMGElMjBoZWxwZnVsJTIwdmlzaW9uJTIwYXNzaXN0YW50JTIwdGhhdCUyMGNhbiUyMGFuYWx5emUlMjBpbWFnZXMuJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIydHlwZSUyMiUzQSUyMCUyMnRleHQlMjIlMkMlMjAlMjJ0ZXh0JTIyJTNBJTIwJTIyV2hhdCdzJTIwaW4lMjB0aGlzJTIwaW1hZ2UlM0YlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJ0eXBlJTIyJTNBJTIwJTIyaW1hZ2UlMjIlMkMlMjAlMjJpbWFnZV91cmwlMjIlM0ElMjAlMjJodHRwcyUzQSUyRiUyRmV4YW1wbGUuY29tJTJGaW1hZ2UuanBnJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTVE",highlighted:`messages = [
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;system&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;You are a helpful vision assistant that can analyze images.&quot;</span>,
    },
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: [
            {<span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;text&quot;</span>, <span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;What&#x27;s in this image?&quot;</span>},
            {<span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;image&quot;</span>, <span class="hljs-string">&quot;image_url&quot;</span>: <span class="hljs-string">&quot;https://example.com/image.jpg&quot;</span>},
        ],
    },
]`,wrap:!1}}),Jt=new S({props:{code:"bWVzc2FnZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJyb2xlJTIyJTNBJTIwJTIyc3lzdGVtJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMllvdSUyMGFyZSUyMGFuJTIwQUklMjBhc3Npc3RhbnQlMjB0aGF0JTIwY2FuJTIwdXNlJTIwdG9vbHMuJTIwQXZhaWxhYmxlJTIwdG9vbHMlM0ElMjBjYWxjdWxhdG9yJTJDJTIwd2VhdGhlcl9hcGklMjIlMkMlMEElMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIydXNlciUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJXaGF0J3MlMjAxMjMlMjAqJTIwNDU2JTIwYW5kJTIwaXMlMjBpdCUyMHJhaW5pbmclMjBpbiUyMFBhcmlzJTNGJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMmFzc2lzdGFudCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJMZXQlMjBtZSUyMGhlbHAlMjB5b3UlMjB3aXRoJTIwdGhhdC4lMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0b29sX2NhbGxzJTIyJTNBJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIydG9vbCUyMiUzQSUyMCUyMmNhbGN1bGF0b3IlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJwYXJhbWV0ZXJzJTIyJTNBJTIwJTdCJTIyb3BlcmF0aW9uJTIyJTNBJTIwJTIybXVsdGlwbHklMjIlMkMlMjAlMjJ4JTIyJTNBJTIwMTIzJTJDJTIwJTIyeSUyMiUzQSUyMDQ1NiU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMnRvb2wlMjIlM0ElMjAlMjJ3ZWF0aGVyX2FwaSUyMiUyQyUyMCUyMnBhcmFtZXRlcnMlMjIlM0ElMjAlN0IlMjJjaXR5JTIyJTNBJTIwJTIyUGFyaXMlMjIlMkMlMjAlMjJjb3VudHJ5JTIyJTNBJTIwJTIyRnJhbmNlJTIyJTdEJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnRvb2wlMjIlMkMlMjAlMjJ0b29sX25hbWUlMjIlM0ElMjAlMjJjYWxjdWxhdG9yJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMjU2MDg4JTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnRvb2wlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0b29sX25hbWUlMjIlM0ElMjAlMjJ3ZWF0aGVyX2FwaSUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjIlN0InY29uZGl0aW9uJyUzQSUyMCdyYWluJyUyQyUyMCd0ZW1wZXJhdHVyZSclM0ElMjAxNSU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSU1RA==",highlighted:`messages = [
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;system&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;You are an AI assistant that can use tools. Available tools: calculator, weather_api&quot;</span>,
    },
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;What&#x27;s 123 * 456 and is it raining in Paris?&quot;</span>},
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Let me help you with that.&quot;</span>,
        <span class="hljs-string">&quot;tool_calls&quot;</span>: [
            {
                <span class="hljs-string">&quot;tool&quot;</span>: <span class="hljs-string">&quot;calculator&quot;</span>,
                <span class="hljs-string">&quot;parameters&quot;</span>: {<span class="hljs-string">&quot;operation&quot;</span>: <span class="hljs-string">&quot;multiply&quot;</span>, <span class="hljs-string">&quot;x&quot;</span>: <span class="hljs-number">123</span>, <span class="hljs-string">&quot;y&quot;</span>: <span class="hljs-number">456</span>},
            },
            {<span class="hljs-string">&quot;tool&quot;</span>: <span class="hljs-string">&quot;weather_api&quot;</span>, <span class="hljs-string">&quot;parameters&quot;</span>: {<span class="hljs-string">&quot;city&quot;</span>: <span class="hljs-string">&quot;Paris&quot;</span>, <span class="hljs-string">&quot;country&quot;</span>: <span class="hljs-string">&quot;France&quot;</span>}},
        ],
    },
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;tool&quot;</span>, <span class="hljs-string">&quot;tool_name&quot;</span>: <span class="hljs-string">&quot;calculator&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;56088&quot;</span>},
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;tool&quot;</span>,
        <span class="hljs-string">&quot;tool_name&quot;</span>: <span class="hljs-string">&quot;weather_api&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;{&#x27;condition&#x27;: &#x27;rain&#x27;, &#x27;temperature&#x27;: 15}&quot;</span>,
    },
]`,wrap:!1}}),dt=new Z({props:{title:"Bonnes pratiques",local:"bonnes-pratiques",headingTag:"h2"}}),Tt=new Z({props:{title:"Principes généraux",local:"principes-généraux",headingTag:"h3"}}),k=new $t({props:{warning:!0,$$slots:{default:[Ke]},$$scope:{ctx:z}}}),Ut=new Z({props:{title:"Exercice pratique",local:"exercice-pratique",headingTag:"h2"}}),R=new $t({props:{$$slots:{default:[ts]},$$scope:{ctx:z}}}),gt=new Z({props:{title:"Ressources complémentaires",local:"ressources-complémentaires",headingTag:"h2"}}),ht=new Ye({props:{source:"https://github.com/huggingface/course/blob/main/chapters/fr/chapter11/2.mdx"}}),{c(){J=u("meta"),p=n(),U=u("p"),c=n(),I(m.$$.fragment),j=A(`
# Gabarits de chat
`),I(T.$$.fragment),$=n(),M=u("p"),M.innerHTML=i,C=n(),I(v.$$.fragment),d=n(),I(q.$$.fragment),E=n(),I(Q.$$.fragment),_=n(),o=u("p"),o.innerHTML=x,Nt=n(),X=u("p"),X.textContent=Ue,xt=n(),H=u("p"),H.innerHTML=Ie,Bt=n(),I(F.$$.fragment),Gt=n(),I(L.$$.fragment),zt=n(),Y=u("p"),Y.textContent=ge,Et=n(),D=u("p"),D.textContent=fe,Qt=n(),I(P.$$.fragment),St=n(),O=u("p"),O.textContent=he,_t=n(),I(K.$$.fragment),Zt=n(),tt=u("p"),tt.textContent=we,Ft=n(),I(et.$$.fragment),Vt=n(),st=u("p"),st.textContent=be,kt=n(),lt=u("ol"),lt.innerHTML=Ce,Rt=n(),nt=u("p"),nt.innerHTML=qe,Wt=n(),I(at.$$.fragment),Xt=n(),B=u("details"),wt=u("summary"),wt.textContent=$e,Je=n(),bt=u("p"),bt.textContent=ve,de=n(),I(it.$$.fragment),Te=n(),Ct=u("p"),Ct.textContent=Ae,ye=n(),I(ot.$$.fragment),Ht=n(),I(ut.$$.fragment),Lt=n(),rt=u("p"),rt.textContent=Ne,Yt=n(),Mt=u("ol"),Mt.innerHTML=xe,Dt=n(),I(V.$$.fragment),Pt=n(),pt=u("p"),pt.textContent=Be,Ot=n(),I(mt.$$.fragment),Kt=n(),ct=u("p"),ct.textContent=Ge,te=n(),I(Jt.$$.fragment),ee=n(),I(dt.$$.fragment),se=n(),I(Tt.$$.fragment),le=n(),yt=u("p"),yt.textContent=ze,ne=n(),jt=u("ol"),jt.innerHTML=Ee,ae=n(),I(k.$$.fragment),ie=n(),I(Ut.$$.fragment),oe=n(),It=u("p"),It.textContent=Qe,ue=n(),I(R.$$.fragment),re=n(),I(gt.$$.fragment),Me=n(),ft=u("ul"),ft.innerHTML=Se,pe=n(),I(ht.$$.fragment),me=n(),qt=u("p"),this.h()},l(t){const l=He("svelte-u9bgzb",document.head);J=r(l,"META",{name:!0,content:!0}),l.forEach(e),p=a(t),U=r(t,"P",{}),je(U).forEach(e),c=a(t),g(m.$$.fragment,t),j=N(t,`
# Gabarits de chat
`),g(T.$$.fragment,t),$=a(t),M=r(t,"P",{"data-svelte-h":!0}),y(M)!=="svelte-1y759x"&&(M.innerHTML=i),C=a(t),g(v.$$.fragment,t),d=a(t),g(q.$$.fragment,t),E=a(t),g(Q.$$.fragment,t),_=a(t),o=r(t,"P",{"data-svelte-h":!0}),y(o)!=="svelte-mipe6f"&&(o.innerHTML=x),Nt=a(t),X=r(t,"P",{"data-svelte-h":!0}),y(X)!=="svelte-yiw5pj"&&(X.textContent=Ue),xt=a(t),H=r(t,"P",{"data-svelte-h":!0}),y(H)!=="svelte-1sjzeok"&&(H.innerHTML=Ie),Bt=a(t),g(F.$$.fragment,t),Gt=a(t),g(L.$$.fragment,t),zt=a(t),Y=r(t,"P",{"data-svelte-h":!0}),y(Y)!=="svelte-um7omd"&&(Y.textContent=ge),Et=a(t),D=r(t,"P",{"data-svelte-h":!0}),y(D)!=="svelte-sxqnkd"&&(D.textContent=fe),Qt=a(t),g(P.$$.fragment,t),St=a(t),O=r(t,"P",{"data-svelte-h":!0}),y(O)!=="svelte-1om3bd6"&&(O.textContent=he),_t=a(t),g(K.$$.fragment,t),Zt=a(t),tt=r(t,"P",{"data-svelte-h":!0}),y(tt)!=="svelte-83i8jq"&&(tt.textContent=we),Ft=a(t),g(et.$$.fragment,t),Vt=a(t),st=r(t,"P",{"data-svelte-h":!0}),y(st)!=="svelte-5gi8jx"&&(st.textContent=be),kt=a(t),lt=r(t,"OL",{"data-svelte-h":!0}),y(lt)!=="svelte-1nfahr6"&&(lt.innerHTML=Ce),Rt=a(t),nt=r(t,"P",{"data-svelte-h":!0}),y(nt)!=="svelte-8bdqse"&&(nt.innerHTML=qe),Wt=a(t),g(at.$$.fragment,t),Xt=a(t),B=r(t,"DETAILS",{});var G=je(B);wt=r(G,"SUMMARY",{"data-svelte-h":!0}),y(wt)!=="svelte-pw9254"&&(wt.textContent=$e),Je=a(G),bt=r(G,"P",{"data-svelte-h":!0}),y(bt)!=="svelte-13vf5lj"&&(bt.textContent=ve),de=a(G),g(it.$$.fragment,G),Te=a(G),Ct=r(G,"P",{"data-svelte-h":!0}),y(Ct)!=="svelte-1p4722n"&&(Ct.textContent=Ae),ye=a(G),g(ot.$$.fragment,G),G.forEach(e),Ht=a(t),g(ut.$$.fragment,t),Lt=a(t),rt=r(t,"P",{"data-svelte-h":!0}),y(rt)!=="svelte-1p1alxf"&&(rt.textContent=Ne),Yt=a(t),Mt=r(t,"OL",{"data-svelte-h":!0}),y(Mt)!=="svelte-1msdvou"&&(Mt.innerHTML=xe),Dt=a(t),g(V.$$.fragment,t),Pt=a(t),pt=r(t,"P",{"data-svelte-h":!0}),y(pt)!=="svelte-12vrq6o"&&(pt.textContent=Be),Ot=a(t),g(mt.$$.fragment,t),Kt=a(t),ct=r(t,"P",{"data-svelte-h":!0}),y(ct)!=="svelte-s3gkfi"&&(ct.textContent=Ge),te=a(t),g(Jt.$$.fragment,t),ee=a(t),g(dt.$$.fragment,t),se=a(t),g(Tt.$$.fragment,t),le=a(t),yt=r(t,"P",{"data-svelte-h":!0}),y(yt)!=="svelte-54mko0"&&(yt.textContent=ze),ne=a(t),jt=r(t,"OL",{"data-svelte-h":!0}),y(jt)!=="svelte-14cvdo0"&&(jt.innerHTML=Ee),ae=a(t),g(k.$$.fragment,t),ie=a(t),g(Ut.$$.fragment,t),oe=a(t),It=r(t,"P",{"data-svelte-h":!0}),y(It)!=="svelte-40nlvr"&&(It.textContent=Qe),ue=a(t),g(R.$$.fragment,t),re=a(t),g(gt.$$.fragment,t),Me=a(t),ft=r(t,"UL",{"data-svelte-h":!0}),y(ft)!=="svelte-ej0vdl"&&(ft.innerHTML=Se),pe=a(t),g(ht.$$.fragment,t),me=a(t),qt=r(t,"P",{}),je(qt).forEach(e),this.h()},h(){vt(J,"name","hf:doc:metadata"),vt(J,"content",ss)},m(t,l){W(document.head,J),s(t,p,l),s(t,U,l),s(t,c,l),f(m,t,l),s(t,j,l),f(T,t,l),s(t,$,l),s(t,M,l),s(t,C,l),f(v,t,l),s(t,d,l),f(q,t,l),s(t,E,l),f(Q,t,l),s(t,_,l),s(t,o,l),s(t,Nt,l),s(t,X,l),s(t,xt,l),s(t,H,l),s(t,Bt,l),f(F,t,l),s(t,Gt,l),f(L,t,l),s(t,zt,l),s(t,Y,l),s(t,Et,l),s(t,D,l),s(t,Qt,l),f(P,t,l),s(t,St,l),s(t,O,l),s(t,_t,l),f(K,t,l),s(t,Zt,l),s(t,tt,l),s(t,Ft,l),f(et,t,l),s(t,Vt,l),s(t,st,l),s(t,kt,l),s(t,lt,l),s(t,Rt,l),s(t,nt,l),s(t,Wt,l),f(at,t,l),s(t,Xt,l),s(t,B,l),W(B,wt),W(B,Je),W(B,bt),W(B,de),f(it,B,null),W(B,Te),W(B,Ct),W(B,ye),f(ot,B,null),s(t,Ht,l),f(ut,t,l),s(t,Lt,l),s(t,rt,l),s(t,Yt,l),s(t,Mt,l),s(t,Dt,l),f(V,t,l),s(t,Pt,l),s(t,pt,l),s(t,Ot,l),f(mt,t,l),s(t,Kt,l),s(t,ct,l),s(t,te,l),f(Jt,t,l),s(t,ee,l),f(dt,t,l),s(t,se,l),f(Tt,t,l),s(t,le,l),s(t,yt,l),s(t,ne,l),s(t,jt,l),s(t,ae,l),f(k,t,l),s(t,ie,l),f(Ut,t,l),s(t,oe,l),s(t,It,l),s(t,ue,l),f(R,t,l),s(t,re,l),f(gt,t,l),s(t,Me,l),s(t,ft,l),s(t,pe,l),f(ht,t,l),s(t,me,l),s(t,qt,l),ce=!0},p(t,[l]){const G={};l&2&&(G.$$scope={dirty:l,ctx:t}),v.$set(G);const _e={};l&2&&(_e.$$scope={dirty:l,ctx:t}),F.$set(_e);const Ze={};l&2&&(Ze.$$scope={dirty:l,ctx:t}),V.$set(Ze);const Fe={};l&2&&(Fe.$$scope={dirty:l,ctx:t}),k.$set(Fe);const Ve={};l&2&&(Ve.$$scope={dirty:l,ctx:t}),R.$set(Ve)},i(t){ce||(h(m.$$.fragment,t),h(T.$$.fragment,t),h(v.$$.fragment,t),h(q.$$.fragment,t),h(Q.$$.fragment,t),h(F.$$.fragment,t),h(L.$$.fragment,t),h(P.$$.fragment,t),h(K.$$.fragment,t),h(et.$$.fragment,t),h(at.$$.fragment,t),h(it.$$.fragment,t),h(ot.$$.fragment,t),h(ut.$$.fragment,t),h(V.$$.fragment,t),h(mt.$$.fragment,t),h(Jt.$$.fragment,t),h(dt.$$.fragment,t),h(Tt.$$.fragment,t),h(k.$$.fragment,t),h(Ut.$$.fragment,t),h(R.$$.fragment,t),h(gt.$$.fragment,t),h(ht.$$.fragment,t),ce=!0)},o(t){w(m.$$.fragment,t),w(T.$$.fragment,t),w(v.$$.fragment,t),w(q.$$.fragment,t),w(Q.$$.fragment,t),w(F.$$.fragment,t),w(L.$$.fragment,t),w(P.$$.fragment,t),w(K.$$.fragment,t),w(et.$$.fragment,t),w(at.$$.fragment,t),w(it.$$.fragment,t),w(ot.$$.fragment,t),w(ut.$$.fragment,t),w(V.$$.fragment,t),w(mt.$$.fragment,t),w(Jt.$$.fragment,t),w(dt.$$.fragment,t),w(Tt.$$.fragment,t),w(k.$$.fragment,t),w(Ut.$$.fragment,t),w(R.$$.fragment,t),w(gt.$$.fragment,t),w(ht.$$.fragment,t),ce=!1},d(t){t&&(e(p),e(U),e(c),e(j),e($),e(M),e(C),e(d),e(E),e(_),e(o),e(Nt),e(X),e(xt),e(H),e(Bt),e(Gt),e(zt),e(Y),e(Et),e(D),e(Qt),e(St),e(O),e(_t),e(Zt),e(tt),e(Ft),e(Vt),e(st),e(kt),e(lt),e(Rt),e(nt),e(Wt),e(Xt),e(B),e(Ht),e(Lt),e(rt),e(Yt),e(Mt),e(Dt),e(Pt),e(pt),e(Ot),e(Kt),e(ct),e(te),e(ee),e(se),e(le),e(yt),e(ne),e(jt),e(ae),e(ie),e(oe),e(It),e(ue),e(re),e(Me),e(ft),e(pe),e(me),e(qt)),e(J),b(m,t),b(T,t),b(v,t),b(q,t),b(Q,t),b(F,t),b(L,t),b(P,t),b(K,t),b(et,t),b(at,t),b(it),b(ot),b(ut,t),b(V,t),b(mt,t),b(Jt,t),b(dt,t),b(Tt,t),b(k,t),b(Ut,t),b(R,t),b(gt,t),b(ht,t)}}}const ss='{"title":"Introduction","local":"introduction","sections":[],"depth":2}';function ls(z){return Re(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ms extends We{constructor(J){super(),Xe(this,J,ls,es,ke,{})}}export{Ms as component};
