import{s as ot,f as pt,n as ut,o as rt}from"../chunks/scheduler.37c15a92.js";import{S as ct,i as Mt,g as i,s as n,r as u,A as dt,h as o,f as t,c as a,j as it,u as r,x as p,k as vs,y as mt,a as l,v as c,d as M,t as d,w as m}from"../chunks/index.2bf4358c.js";import{C as y}from"../chunks/CodeBlock.4e987730.js";import{H as Bs}from"../chunks/Heading.8ada512a.js";import{E as yt}from"../chunks/getInferenceSnippets.0aa3753f.js";function jt(xs){let j,Te,Je,he,J,Ue,w,Is,fe,T,ks="Ce cours est indépendant de tout framework car nous souhaitons <strong>nous concentrer sur les concepts des agents et éviter de nous enliser dans les spécificités d’un <em>framework</em> particulier</strong>.",be,h,gs="De plus, nous voulons que les étudiants puissent utiliser les concepts qu’ils apprennent dans ce cours dans leurs propres projets, en utilisant le <em>framework</em> de leur choix.",ve,U,qs="Ainsi, pour cette Unité 1, nous utiliserons une bibliothèque d’agents factices et une API sans serveur simple pour accéder à notre moteur LLM.",Be,f,zs="Vous n’utiliseriez probablement pas ces outils en production mais ils serviront de bon <strong>point de départ pour comprendre le fonctionnement des agents</strong>.",xe,b,Vs="Après cette section, vous serez prêt à <strong>créer un agent simple</strong> en utilisant <code>smolagents</code>. Et dans les unités suivantes, nous utiliserons également d’autres bibliothèques telles que <code>LangGraph</code>, <code>LangChain</code> et <code>LlamaIndex</code>.",Ie,v,Qs="Pour simplifier, nous utiliserons une fonction Python simple comme outil et agent.",ke,B,$s="Nous utiliserons des packages intégrés de Python tels que <code>datetime</code> et <code>os</code> afin que vous puissiez l’essayer dans n’importe quel environnement.",ge,x,Cs='Vous pouvez suivre le processus <a href="https://huggingface.co/agents-course/notebooks/blob/main/fr/unit1/dummy_agent_library.ipynb" rel="nofollow">dans ce <em>notebook</em></a> et <strong>exécuter le code vous-même</strong>.',qe,I,ze,k,Zs="Dans l’écosystème Hugging Face, il existe une fonctionnalité pratique appelée API sans serveur qui vous permet d’exécuter facilement des inférences sur de nombreux modèles. Aucune installation ou déploiement n’est requis.",Ve,g,Qe,q,Gs="Nous utilisons la méthode <code>chat</code> car c’est un moyen pratique et fiable d’appliquer des gabarits de chat :",$e,z,Ce,V,Ns="ressort :",Ze,Q,Ge,$,_s="La méthode de chat est la méthode <strong>RECOMMANDÉE</strong> à utiliser afin d’assurer une transition fluide entre les modèles.",Ne,C,_e,Z,Rs="Dans les sections précédentes, nous avons vu que le cœur d’une bibliothèque d’agents consiste à ajouter des informations dans le <em>prompt</em> système.",Re,G,Xs="Ce <em>prompt</em> système est un peu plus complexe que celui que nous avons vu précédemment, mais il contient déjà :",Xe,N,Es="<li><strong>Des informations sur les outils</strong></li> <li><strong>Des instructions de cycle</strong> (Réflexion → Action → Observation)</li>",Ee,_,Se,R,Ss="<strong>Note</strong> : dans le <em>prompt</em> ci-dessus, nous avons utiliser le vouvoiement. Il n’y a pas à notre connaissance de papier ayant étudié si c’est ou pas la meilleure approche possible comparé à des indications faites avec du tutoiement ou encore de l’impératif.",Le,X,Ls="Nous devons ajouter le <em>prompt</em> de l’utilisateur après le <em>prompt</em> du système. Cela se fait à l’intérieur de la méthode <code>chat</code>. Nous pouvons voir ce processus ci-dessous :",We,E,He,S,Ws="Le prompt est maintenant :",Ae,L,Ye,W,Hs="Appelons la méthode <code>chat</code> !",Oe,H,Fe,A,Pe,Y,As=`{
“action”: “get_weather”,
“action_input”: {“location”: “Londres”}
}`,De,O,Ke,F,Ys="Voyez-vous le problème ?",es,P,Os="<p>À ce stade, le modèle hallucine, car il produit une « Observation » fabriquée, c’est-à-dire une réponse qu’il génère de lui-même au lieu d’être le résultat d’une fonction réelle ou d’un appel d’outil. Pour éviter cela, nous arrêtons la génération juste avant « Observation : ». Cela nous permet d’exécuter manuellement la fonction (par exemple, <code>get_weather</code>) et d’insérer ensuite le résultat réel en tant qu’observation.</p>",ss,D,ts,K,Fs="renvoie :",ls,ee,ns,se,Ps=`{
“action”: “get_weather”,
“action_input”: {“location”: “Londres”}
}`,as,te,is,le,Ds="Beaucoup mieux !",os,ne,Ks="Créons maintenant une fonction pour obtenir la météo. Dans une situation réelle, vous appelleriez probablement une API.",ps,ae,us,ie,et="renvoie :",rs,oe,cs,pe,st="Concaténons le <em>prompt</em> du système, le <em>prompt</em> de base, la complétion jusqu’à l’exécution de la fonction et le résultat de la fonction en tant qu’observation et reprenons la génération.",Ms,ue,ds,re,tt="Voici le nouveau <em>prompt</em> :",ms,ce,ys,Me,lt="renvoie :",js,de,Js,ws,Ts,me,nt="Nous avons appris comment créer des agents à partir de zéro en utilisant du code Python, et nous <strong>avons constaté à quel point ce processus peut être fastidieux</strong>. Heureusement, de nombreuses bibliothèques d’agents simplifient ce travail en prenant en charge la majeure partie de la charge de travail pour vous.",hs,ye,at="Maintenant, nous sommes prêts <strong>à créer notre premier vrai agent</strong> en utilisant la bibliothèque <code>smolagents</code>.",Us,je,fs,we,bs;return J=new Bs({props:{title:"Bibliothèque d’agents factices",local:"bibliothèque-dagents-factices",headingTag:"h1"}}),I=new Bs({props:{title:"API sans serveur",local:"api-sans-serveur",headingTag:"h2"}}),g=new y({props:{code:"aW1wb3J0JTIwb3MlMEFmcm9tJTIwaHVnZ2luZ2ZhY2VfaHViJTIwaW1wb3J0JTIwSW5mZXJlbmNlQ2xpZW50JTBBJTBBJTIzJTIzJTIwVm91cyUyMGF2ZXolMjBiZXNvaW4lMjBkJ3VuJTIwdG9rZW4lMjBkZXB1aXMlMjBodHRwcyUzQSUyRiUyRmhmLmNvJTJGc2V0dGluZ3MlMkZ0b2tlbnMuJTIwU2klMjB2b3VzJTIwZXglQzMlQTljdXRleiUyMGNlJTIwY29kZSUyMHN1ciUyMEdvb2dsZSUyMENvbGFiJTJDJTIwdm91cyUyMHBvdXZleiUyMGxlJTIwY29uZmlndXJlciUyMGRhbnMlMjBsJ29uZ2xldCUyMCUyMnNldHRpbmdzJTIyJTIwc291cyUyMCUyMnNlY3JldHMlMjIuJTIwQXNzdXJlei12b3VzJTIwZGUlMjBsJ2FwcGVsZXIlMjAlMjJIRl9UT0tFTiUyMiUwQW9zLmVudmlyb24lNUIlMjJIRl9UT0tFTiUyMiU1RCUyMCUzRCUyMCUyMmhmX3h4eHh4eHh4eHh4eHh4JTIyJTBBJTBBY2xpZW50JTIwJTNEJTIwSW5mZXJlbmNlQ2xpZW50KG1vZGVsJTNEJTIybWV0YS1sbGFtYSUyRkxsYW1hLTQtU2NvdXQtMTdCLTE2RS1JbnN0cnVjdCUyMik=",highlighted:`<span class="hljs-keyword">import</span> os
<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> InferenceClient

<span class="hljs-comment">## Vous avez besoin d&#x27;un token depuis https://hf.co/settings/tokens. Si vous exécutez ce code sur Google Colab, vous pouvez le configurer dans l&#x27;onglet &quot;settings&quot; sous &quot;secrets&quot;. Assurez-vous de l&#x27;appeler &quot;HF_TOKEN&quot;</span>
os.environ[<span class="hljs-string">&quot;HF_TOKEN&quot;</span>] = <span class="hljs-string">&quot;hf_xxxxxxxxxxxxxx&quot;</span>

client = InferenceClient(model=<span class="hljs-string">&quot;meta-llama/Llama-4-Scout-17B-16E-Instruct&quot;</span>)`,wrap:!1}}),z=new y({props:{code:"b3V0cHV0JTIwJTNEJTIwY2xpZW50LmNoYXQuY29tcGxldGlvbnMuY3JlYXRlKCUwQSUyMCUyMCUyMCUyMG1lc3NhZ2VzJTNEJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyVGhlJTIwY2FwaXRhbCUyMG9mJTIwRnJhbmNlJTIwaXMlMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlNUQlMkMlMEElMjAlMjAlMjAlMjBzdHJlYW0lM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMG1heF90b2tlbnMlM0QxMDI0JTJDJTBBKSUwQXByaW50KG91dHB1dC5jaG9pY2VzJTVCMCU1RC5tZXNzYWdlLmNvbnRlbnQp",highlighted:`output = client.chat.completions.create(
    messages=[
        {<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;The capital of France is&quot;</span>},
    ],
    stream=<span class="hljs-literal">False</span>,
    max_tokens=<span class="hljs-number">1024</span>,
)
<span class="hljs-built_in">print</span>(output.choices[<span class="hljs-number">0</span>].message.content)`,wrap:!1}}),Q=new y({props:{code:"UGFyaXMu",highlighted:"Paris.",wrap:!1}}),C=new Bs({props:{title:"Agent factice",local:"agent-factice",headingTag:"h2"}}),_=new y({props:{code:"JTBBJTBBJTBBJTBBJTBBJTBBJTBBJTBBJTBBKGNlJTIwY3ljbGUlMjBSJUMzJUE5ZmxleGlvbiUyRkFjdGlvbiUyRk9ic2VydmF0aW9uJTIwcGV1dCUyMHNlJTIwciVDMyVBOXAlQzMlQTl0ZXIlMjBwbHVzaWV1cnMlMjBmb2lzJTJDJTIwdm91cyUyMGRldmV6JTIwZWZmZWN0dWVyJTIwcGx1c2lldXJzJTIwJUMzJUE5dGFwZXMlMjBzaSUyMG4lQzMlQTljZXNzYWlyZS4lMjBMZSUyMCUyNEpTT05fQkxPQiUyMGRvaXQlMjAlQzMlQUF0cmUlMjBmb3JtYXQlQzMlQTklMjBlbiUyMG1hcmtkb3duJTIwZXQlMjBuJ3V0aWxpc2VyJTIwcXUndW5lJTIwU0VVTEUlMjBhY3Rpb24lMjAlQzMlQTAlMjBsYSUyMGZvaXMuKSUwQSUwQSUwQQ==",highlighted:`<span class="hljs-comment"># Ce prompt système est un peu plus complexe et contient en fait la description de la fonction déjà ajoutée.</span>
<span class="hljs-comment"># Nous supposons ici que la description textuelle des outils a déjà été ajoutée.</span>

SYSTEM_PROMPT = <span class="hljs-string">&quot;&quot;&quot;Répondez du mieux que vous pouvez aux questions suivantes. Vous avez accès aux outils suivants :

get_weather: Obtenez la météo actuelle dans un lieu donné

La manière d&#x27;utiliser les outils consiste à spécifier un blob JSON.
Plus précisément, ce JSON doit contenir une clé \`action\` (avec le nom de l&#x27;outil à utiliser) et une clé \`action_input\` (avec l&#x27;entrée destinée à l&#x27;outil).

Les seules valeurs qui devraient figurer dans le champ &quot;action&quot; sont:
get_weather: Obtenez la météo actuelle dans un lieu donné, args: {&quot;location&quot;: {&quot;type&quot;: &quot;string&quot;}}
exemple d&#x27;utilisation : 

{{
  &quot;action&quot;: &quot;get_weather&quot;,
  &quot;action_input&quot;: {&quot;location&quot;: &quot;New York&quot;}
}}

UTILISEZ TOUJOURS le format suivant:

Question : la question à laquelle vous devez répondre
Réflexion : vous devez toujours réfléchir à une action à entreprendre. Une seule action à la fois dans ce format:
Action:

$JSON_BLOB (dans une cellule markdown)

Observation : le résultat de l&#x27;action. Cette Observation est unique, complète et constitue la source de vérité.
<span class="hljs-meta">... </span>(ce cycle Réflexion/Action/Observation peut se répéter plusieurs fois, vous devez effectuer plusieurs étapes si nécessaire. Le $JSON_BLOB doit être formaté en markdown et n&#x27;utiliser qu&#x27;une SEULE action à la fois.)

Vous devez toujours terminer votre sortie avec le format suivant:

Réflexion : Je connais désormais la réponse finale
Réponse finale : la réponse finale à la question d&#x27;entrée initiale

Commencez maintenant! Rappel: utilisez TOUJOURS exactement les caractères \`Réponse finale :\` lorsque vous fournissez une réponse définitive.</span>`,wrap:!1}}),E=new y({props:{code:"bWVzc2FnZXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIyc3lzdGVtJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMFNZU1RFTV9QUk9NUFQlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIydXNlciUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJRdWVsJTIwdGVtcHMlMjBmYWl0LWlsJTIwJUMzJUEwJTIwTG9uZHJlcyUyMCUzRiUyMiU3RCUyQyUwQSU1RCUwQSUwQXByaW50KG1lc3NhZ2VzKQ==",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>: SYSTEM_PROMPT},
    {<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;Quel temps fait-il à Londres ?&quot;</span>},
]

<span class="hljs-built_in">print</span>(messages)`,wrap:!1}}),L=new y({props:{code:"JTBBJTBBJTBBJTBBJTBBJTBBJTBBJTBBKGNlJTIwY3ljbGUlMjBSJUMzJUE5ZmxleGlvbiUyRkFjdGlvbiUyRk9ic2VydmF0aW9uJTIwcGV1dCUyMHNlJTIwciVDMyVBOXAlQzMlQTl0ZXIlMjBwbHVzaWV1cnMlMjBmb2lzJTJDJTIwdm91cyUyMGRldmV6JTIwZWZmZWN0dWVyJTIwcGx1c2lldXJzJTIwJUMzJUE5dGFwZXMlMjBzaSUyMG4lQzMlQTljZXNzYWlyZS4lMjBMZSUyMCUyNEpTT05fQkxPQiUyMGRvaXQlMjAlQzMlQUF0cmUlMjBmb3JtYXQlQzMlQTklMjBlbiUyMG1hcmtkb3duJTIwZXQlMjBuJ3V0aWxpc2VyJTIwcXUndW5lJTIwU0VVTEUlMjBhY3Rpb24lMjAlQzMlQTAlMjBsYSUyMGZvaXMuKSUwQSUwQSUwQQ==",highlighted:`&lt;|begin_of_text|&gt;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;
Répondez du mieux <span class="hljs-keyword">que</span> vous pouvez aux questions suivantes. Vous avez accès aux outils suivants:

get_weather: Obtenez <span class="hljs-keyword">la</span> <span class="hljs-keyword">m</span>étéo actuelle dans un lieu donné

<span class="hljs-keyword">La</span> manière <span class="hljs-keyword">d</span>&#x27;utiliser les outils consiste à spécifier un blob JSON.
Plus <span class="hljs-keyword">pr</span>écisément, ce JSON doit contenir une <span class="hljs-keyword">cl</span>é \`action\` (avec le nom <span class="hljs-keyword">de</span> <span class="hljs-keyword">l</span>&#x27;outil à utiliser) et une <span class="hljs-keyword">cl</span>é \`action_input\` (avec <span class="hljs-keyword">l</span>&#x27;entré<span class="hljs-keyword">e</span> destiné<span class="hljs-keyword">e</span> à <span class="hljs-keyword">l</span>&#x27;outil).

Les seules valeurs <span class="hljs-keyword">qui</span> devraient figurer dans le champ <span class="hljs-string">&quot;action&quot;</span> sont:
get_weather: Obtenez <span class="hljs-keyword">la</span> <span class="hljs-keyword">m</span>étéo actuelle dans un lieu donné, <span class="hljs-keyword">args</span>: {<span class="hljs-string">&quot;location&quot;</span>: {<span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>}}
exemple <span class="hljs-keyword">d</span>&#x27;utilisation : 

{{
  <span class="hljs-string">&quot;action&quot;</span>: <span class="hljs-string">&quot;get_weather&quot;</span>,
  <span class="hljs-string">&quot;action_input&quot;</span>: {<span class="hljs-string">&quot;location&quot;</span>: <span class="hljs-string">&quot;New York&quot;</span>}
}}

UTILISEZ TOUJOURS le <span class="hljs-keyword">format</span> suivant:

Question : <span class="hljs-keyword">la</span> question à laquelle vous devez répondre
Réflexion : vous devez toujours ré<span class="hljs-keyword">fl</span>échir à une action à entreprendre. Une seule action à <span class="hljs-keyword">la</span> fois dans ce <span class="hljs-keyword">format</span>:
Action:

<span class="hljs-variable">$JSON_BLOB</span> (dans une cellule markdown)

Observation : le résultat <span class="hljs-keyword">de</span> <span class="hljs-keyword">l</span>&#x27;action. Cette Observation <span class="hljs-keyword">est</span> unique, complè<span class="hljs-keyword">te</span> et constitue <span class="hljs-keyword">la</span> source <span class="hljs-keyword">de</span> vérité.
... (ce cycle Réflexion/Action/Observation peut <span class="hljs-keyword">se</span> répéter plusieurs fois, vous devez effectuer plusieurs étapes si <span class="hljs-keyword">n</span>écessaire. Le <span class="hljs-variable">$JSON_BLOB</span> doit être <span class="hljs-keyword">format</span>é <span class="hljs-keyword">en</span> markdown et <span class="hljs-keyword">n</span>&#x27;utiliser <span class="hljs-keyword">qu</span>&#x27;une SEULE action à <span class="hljs-keyword">la</span> fois.)

Vous devez toujours terminer votre sortie avec le <span class="hljs-keyword">format</span> suivant:

Réflexion : Je connais <span class="hljs-keyword">d</span>ésormais <span class="hljs-keyword">la</span> réponse finale
Réponse finale : <span class="hljs-keyword">la</span> réponse finale à <span class="hljs-keyword">la</span> question <span class="hljs-keyword">d</span>&#x27;entré<span class="hljs-keyword">e</span> initiale

Commencez maintenant! Rappel: utilisez TOUJOURS exactement les caractères \`Réponse finale :\` lorsque vous fournissez une réponse <span class="hljs-keyword">d</span>éfinitive.
&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;
Quel temps fait-il à Londres ?
&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;`,wrap:!1}}),H=new y({props:{code:"b3V0cHV0JTIwJTNEJTIwY2xpZW50LmNoYXQuY29tcGxldGlvbnMuY3JlYXRlKCUwQSUyMCUyMCUyMCUyMG1lc3NhZ2VzJTNEbWVzc2FnZXMlMkMlMEElMjAlMjAlMjAlMjBzdHJlYW0lM0RGYWxzZSUyQyUwQSUyMCUyMCUyMCUyMG1heF90b2tlbnMlM0QyMDAlMkMlMEEpJTBBcHJpbnQob3V0cHV0LmNob2ljZXMlNUIwJTVELm1lc3NhZ2UuY29udGVudCk=",highlighted:`output = client.chat.completions.create(
    messages=messages,
    stream=<span class="hljs-literal">False</span>,
    max_tokens=<span class="hljs-number">200</span>,
)
<span class="hljs-built_in">print</span>(output.choices[<span class="hljs-number">0</span>].message.content)`,wrap:!1}}),A=new y({props:{code:"UiVDMyVBOWZsZXhpb24lMjAlM0ElMjBQb3VyJTIwciVDMyVBOXBvbmRyZSUyMCVDMyVBMCUyMGxhJTIwcXVlc3Rpb24lMkMlMjBqZSUyMGRvaXMlMjBvYnRlbmlyJTIwbGUlMjB0ZW1wcyUyMHF1J2lsJTIwZmFpdCUyMGFjdHVlbGxlbWVudCUyMCVDMyVBMCUyMExvbmRyZXMuJTBBQWN0aW9uJTNB",highlighted:`Réflexion : <span class="hljs-type">Pour</span> répondre à la question, je dois obtenir le temps qu<span class="hljs-symbol">&#x27;il</span> fait actuellement à Londres.
Action:`,wrap:!1}}),O=new y({props:{code:"T2JzZXJ2YXRpb24lMjAlM0ElMjBMZSUyMHRlbXBzJTIwYWN0dWVsJTIwJUMzJUEwJTIwTG9uZHJlcyUyMGVzdCUyMHBhcnRpZWxsZW1lbnQlMjBudWFnZXV4JTIwYXZlYyUyMHVuZSUyMHRlbXAlQzMlQTlyYXR1cmUlMjBkZSUyMDEyJUMyJUIwQy4lMEFSJUMzJUE5ZmxleGlvbiUyMCUzQSUyMEplJTIwY29ubmFpcyUyMG1haW50ZW5hbnQlMjBsYSUyMHIlQzMlQTlwb25zZSUyMGZpbmFsZS4lMEFSJUMzJUE5cG9uc2UlMjBmaW5hbGUlMjAlM0ElMjBMZSUyMHRlbXBzJTIwYWN0dWVsJTIwJUMzJUEwJTIwTG9uZHJlcyUyMGVzdCUyMHBhcnRpZWxsZW1lbnQlMjBudWFnZXV4JTIwZXQlMjBsYSUyMHRlbXAlQzMlQTlyYXR1cmUlMjBlc3QlMjBkZSUyMDEyJUMyJUIwQy4=",highlighted:`Observation : Le temps actuel à Londres <span class="hljs-keyword">est</span> partiellement nuageux avec une température <span class="hljs-keyword">de</span> 12°C.
Réflexion : Je connais maintenant <span class="hljs-keyword">la</span> réponse finale.
Réponse finale : Le temps actuel à Londres <span class="hljs-keyword">est</span> partiellement nuageux et <span class="hljs-keyword">la</span> température <span class="hljs-keyword">est</span> <span class="hljs-keyword">de</span> 12°C.`,wrap:!1}}),D=new y({props:{code:"JTIzJTIwTGElMjByJUMzJUE5cG9uc2UlMjBhJTIwJUMzJUE5dCVDMyVBOSUyMGhhbGx1Y2luJUMzJUE5ZSUyMHBhciUyMGxlJTIwbW9kJUMzJUE4bGUuJTIwTm91cyUyMGRldm9ucyUyMG5vdXMlMjBhcnIlQzMlQUF0ZXIlMjBwb3VyJTIwZXglQzMlQTljdXRlciUyMGxhJTIwZm9uY3Rpb24lMjAhJTBBb3V0cHV0JTIwJTNEJTIwY2xpZW50LmNoYXQuY29tcGxldGlvbnMuY3JlYXRlKCUwQSUyMCUyMCUyMCUyMG1lc3NhZ2VzJTNEbWVzc2FnZXMlMkMlMEElMjAlMjAlMjAlMjBtYXhfdG9rZW5zJTNEMTUwJTJDJTBBJTIwJTIwJTIwJTIwc3RvcCUzRCU1QiUyMk9ic2VydmF0aW9uJTIwJTNBJTIyJTVEJTIwJTIzJTIwQXJyJUMzJUFBdG9ucyUyMGF2YW50JTIwcXUndW5lJTIwZm9uY3Rpb24lMjBuZSUyMHNvaXQlMjBhcHBlbCVDMyVBOWUlMEEpJTBBJTBBcHJpbnQob3V0cHV0LmNob2ljZXMlNUIwJTVELm1lc3NhZ2UuY29udGVudCk=",highlighted:`<span class="hljs-comment"># La réponse a été hallucinée par le modèle. Nous devons nous arrêter pour exécuter la fonction !</span>
output = client.chat.completions.create(
    messages=messages,
    max_tokens=<span class="hljs-number">150</span>,
    stop=[<span class="hljs-string">&quot;Observation :&quot;</span>] <span class="hljs-comment"># Arrêtons avant qu&#x27;une fonction ne soit appelée</span>
)

<span class="hljs-built_in">print</span>(output.choices[<span class="hljs-number">0</span>].message.content)`,wrap:!1}}),ee=new y({props:{code:"UiVDMyVBOWZsZXhpb24lMjAlM0ElMjBQb3VyJTIwciVDMyVBOXBvbmRyZSUyMCVDMyVBMCUyMGxhJTIwcXVlc3Rpb24lMkMlMjBqZSUyMGRvaXMlMjBjb25uYSVDMyVBRXRyZSUyMGxlJTIwdGVtcHMlMjBxdSdpbCUyMGZhaXQlMjAlQzMlQTAlMjBMb25kcmVzLiUwQUFjdGlvbiUzQQ==",highlighted:`Réflexion : <span class="hljs-type">Pour</span> répondre à la question, je dois connaître le temps qu<span class="hljs-symbol">&#x27;il</span> fait à Londres.
Action:`,wrap:!1}}),te=new y({props:{code:"UiVDMyVBOWZsZXhpb24lMjAlM0ElMjBKZSUyMHZhaXMlMjB2JUMzJUE5cmlmaWVyJTIwbGElMjBtJUMzJUE5dCVDMyVBOW8lMjAlQzMlQTAlMjBMb25kcmVzLiUwQU9ic2VydmF0aW9uJTIwJTNB",highlighted:`<span class="hljs-attribute">Réflexion</span><span class="hljs-punctuation"> :</span> <span class="hljs-string">Je vais vérifier la météo à Londres.</span>
<span class="hljs-attribute">Observation </span><span class="hljs-punctuation">:</span>`,wrap:!1}}),ae=new y({props:{code:"JTIzJTIwRm9uY3Rpb24lMjBmYWN0aWNlJTBBZGVmJTIwZ2V0X3dlYXRoZXIobG9jYXRpb24pJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMmxhJTIwbSVDMyVBOXQlQzMlQTlvJTIwJUMzJUEwJTIwJTdCbG9jYXRpb24lN0QlMjBlc3QlMjBlbnNvbGVpbGwlQzMlQTllJTIwYXZlYyUyMGRlcyUyMHRlbXAlQzMlQTlyYXR1cmVzJTIwYmFzc2VzLiUyMCU1Q24lMjIlMEElMEFnZXRfd2VhdGhlcignTG9uZHJlcycp",highlighted:`<span class="hljs-comment"># Fonction factice</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_weather</span>(<span class="hljs-params">location</span>):
    <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;la météo à <span class="hljs-subst">{location}</span> est ensoleillée avec des températures basses. \\n&quot;</span>

get_weather(<span class="hljs-string">&#x27;Londres&#x27;</span>)`,wrap:!1}}),oe=new y({props:{code:"J2xhJTIwbSVDMyVBOXQlQzMlQTlvJTIwJUMzJUEwJTIwTG9uZHJlcyUyMGVzdCUyMGVuc29sZWlsbCVDMyVBOWUlMjBhdmVjJTIwZGVzJTIwdGVtcCVDMyVBOXJhdHVyZXMlMjBiYXNzZXMuJTIwJTVDbic=",highlighted:'&#x27;<span class="hljs-keyword">la</span> <span class="hljs-keyword">m</span>étéo à Londres <span class="hljs-keyword">est</span> ensoleillé<span class="hljs-keyword">e</span> avec <span class="hljs-keyword">des</span> températures basses. \\<span class="hljs-keyword">n</span>&#x27;',wrap:!1}}),ue=new y({props:{code:"bWVzc2FnZXMlM0QlNUIlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIyc3lzdGVtJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMFNZU1RFTV9QUk9NUFQlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJyb2xlJTIyJTNBJTIwJTIydXNlciUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJRdWVsJTIwdGVtcHMlMjBmYWl0LWlsJTIwJUMzJUEwJTIwTG9uZHJlcyUyMCUzRiUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwb3V0cHV0LmNob2ljZXMlNUIwJTVELm1lc3NhZ2UuY29udGVudCUyMCUyQiUyMGdldF93ZWF0aGVyKCdMb25kcmVzJyklN0QlMkMlMEElNUQlMEElMEFvdXRwdXQlMjAlM0QlMjBjbGllbnQuY2hhdC5jb21wbGV0aW9ucy5jcmVhdGUoJTBBJTIwJTIwJTIwJTIwbWVzc2FnZXMlM0RtZXNzYWdlcyUyQyUwQSUyMCUyMCUyMCUyMHN0cmVhbSUzREZhbHNlJTJDJTBBJTIwJTIwJTIwJTIwbWF4X3Rva2VucyUzRDIwMCUyQyUwQSklMEElMEFwcmludChvdXRwdXQuY2hvaWNlcyU1QjAlNUQubWVzc2FnZS5jb250ZW50KQ==",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>: SYSTEM_PROMPT},
    {<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;Quel temps fait-il à Londres ?&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>: output.choices[<span class="hljs-number">0</span>].message.content + get_weather(<span class="hljs-string">&#x27;Londres&#x27;</span>)},
]

output = client.chat.completions.create(
    messages=messages,
    stream=<span class="hljs-literal">False</span>,
    max_tokens=<span class="hljs-number">200</span>,
)

<span class="hljs-built_in">print</span>(output.choices[<span class="hljs-number">0</span>].message.content)`,wrap:!1}}),ce=new y({props:{code:"JTBBJTBBJTBBJTBBJTBBJTBBJTBBJTBBKGNlJTIwY3ljbGUlMjBSJUMzJUE5ZmxleGlvbiUyRkFjdGlvbiUyRk9ic2VydmF0aW9uJTIwcGV1dCUyMHNlJTIwciVDMyVBOXAlQzMlQTl0ZXIlMjBwbHVzaWV1cnMlMjBmb2lzJTJDJTIwdm91cyUyMGRldmV6JTIwZWZmZWN0dWVyJTIwcGx1c2lldXJzJTIwJUMzJUE5dGFwZXMlMjBzaSUyMG4lQzMlQTljZXNzYWlyZS4lMjBMZSUyMCUyNEpTT05fQkxPQiUyMGRvaXQlMjAlQzMlQUF0cmUlMjBmb3JtYXQlQzMlQTklMjBlbiUyMG1hcmtkb3duJTIwZXQlMjBuJ3V0aWxpc2VyJTIwcXUndW5lJTIwU0VVTEUlMjBhY3Rpb24lMjAlQzMlQTAlMjBsYSUyMGZvaXMuKSUwQSUwQSUwQQ==",highlighted:`&lt;|begin_of_text|&gt;&lt;|start_header_id|&gt;system&lt;|end_header_id|&gt;
Répondez du mieux <span class="hljs-keyword">que</span> vous pouvez aux questions suivantes. Vous avez accès aux outils suivants:

get_weather: Obtenez <span class="hljs-keyword">la</span> <span class="hljs-keyword">m</span>étéo actuelle dans un lieu donné

<span class="hljs-keyword">La</span> manière <span class="hljs-keyword">d</span>&#x27;utiliser les outils consiste à spécifier un blob JSON.
Plus <span class="hljs-keyword">pr</span>écisément, ce JSON doit contenir une <span class="hljs-keyword">cl</span>é \`action\` (avec le nom <span class="hljs-keyword">de</span> <span class="hljs-keyword">l</span>&#x27;outil à utiliser) et une <span class="hljs-keyword">cl</span>é \`action_input\` (avec <span class="hljs-keyword">l</span>&#x27;entré<span class="hljs-keyword">e</span> destiné<span class="hljs-keyword">e</span> à <span class="hljs-keyword">l</span>&#x27;outil).

Les seules valeurs <span class="hljs-keyword">qui</span> devraient figurer dans le champ <span class="hljs-string">&quot;action&quot;</span> sont:
get_weather: Obtenez <span class="hljs-keyword">la</span> <span class="hljs-keyword">m</span>étéo actuelle dans un lieu donné, <span class="hljs-keyword">args</span>: {<span class="hljs-string">&quot;location&quot;</span>: {<span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>}}
exemple <span class="hljs-keyword">d</span>&#x27;utilisation : 

{{
  <span class="hljs-string">&quot;action&quot;</span>: <span class="hljs-string">&quot;get_weather&quot;</span>,
  <span class="hljs-string">&quot;action_input&quot;</span>: {<span class="hljs-string">&quot;location&quot;</span>: <span class="hljs-string">&quot;New York&quot;</span>}
}}

UTILISEZ TOUJOURS le <span class="hljs-keyword">format</span> suivant:

Question : <span class="hljs-keyword">la</span> question à laquelle vous devez répondre
Réflexion : vous devez toujours ré<span class="hljs-keyword">fl</span>échir à une action à entreprendre. Une seule action à <span class="hljs-keyword">la</span> fois dans ce <span class="hljs-keyword">format</span>:
Action:

<span class="hljs-variable">$JSON_BLOB</span> (dans une cellule markdown)

Observation : le résultat <span class="hljs-keyword">de</span> <span class="hljs-keyword">l</span>&#x27;action. Cette Observation <span class="hljs-keyword">est</span> unique, complè<span class="hljs-keyword">te</span> et constitue <span class="hljs-keyword">la</span> source <span class="hljs-keyword">de</span> vérité.
... (ce cycle Réflexion/Action/Observation peut <span class="hljs-keyword">se</span> répéter plusieurs fois, vous devez effectuer plusieurs étapes si <span class="hljs-keyword">n</span>écessaire. Le <span class="hljs-variable">$JSON_BLOB</span> doit être <span class="hljs-keyword">format</span>é <span class="hljs-keyword">en</span> markdown et <span class="hljs-keyword">n</span>&#x27;utiliser <span class="hljs-keyword">qu</span>&#x27;une SEULE action à <span class="hljs-keyword">la</span> fois.)

Vous devez toujours terminer votre sortie avec le <span class="hljs-keyword">format</span> suivant:

Réflexion : Je connais <span class="hljs-keyword">d</span>ésormais <span class="hljs-keyword">la</span> réponse finale
Réponse finale : <span class="hljs-keyword">la</span> réponse finale à <span class="hljs-keyword">la</span> question <span class="hljs-keyword">d</span>&#x27;entré<span class="hljs-keyword">e</span> initiale

Commencez maintenant! Rappel: utilisez TOUJOURS exactement les caractères \`Réponse finale :\` lorsque vous fournissez une réponse <span class="hljs-keyword">d</span>éfinitive.
&lt;|eot_id|&gt;&lt;|start_header_id|&gt;user&lt;|end_header_id|&gt;
Quel temps fait-il à Londres ?
&lt;|eot_id|&gt;&lt;|start_header_id|&gt;assistant&lt;|end_header_id|&gt;`,wrap:!1}}),de=new y({props:{code:"UiVDMyVBOXBvbnNlJTIwZmluYWxlJTIwJTNBJTIwTGElMjBtJUMzJUE5dCVDMyVBOW8lMjAlQzMlQTAlMjBMb25kcmVzJTIwZXN0JTIwZW5zb2xlaWxsJUMzJUE5ZSUyMGF2ZWMlMjBkZXMlMjB0ZW1wJUMzJUE5cmF0dXJlcyUyMGJhc3Nlcy4=",highlighted:'Réponse finale : <span class="hljs-keyword">La</span> <span class="hljs-keyword">m</span>étéo à Londres <span class="hljs-keyword">est</span> ensoleillé<span class="hljs-keyword">e</span> avec <span class="hljs-keyword">des</span> températures basses.',wrap:!1}}),je=new yt({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit1/dummy-agent-library.mdx"}}),{c(){j=i("meta"),Te=n(),Je=i("p"),he=n(),u(J.$$.fragment),Ue=n(),w=i("img"),fe=n(),T=i("p"),T.innerHTML=ks,be=n(),h=i("p"),h.innerHTML=gs,ve=n(),U=i("p"),U.textContent=qs,Be=n(),f=i("p"),f.innerHTML=zs,xe=n(),b=i("p"),b.innerHTML=Vs,Ie=n(),v=i("p"),v.textContent=Qs,ke=n(),B=i("p"),B.innerHTML=$s,ge=n(),x=i("p"),x.innerHTML=Cs,qe=n(),u(I.$$.fragment),ze=n(),k=i("p"),k.textContent=Zs,Ve=n(),u(g.$$.fragment),Qe=n(),q=i("p"),q.innerHTML=Gs,$e=n(),u(z.$$.fragment),Ce=n(),V=i("p"),V.textContent=Ns,Ze=n(),u(Q.$$.fragment),Ge=n(),$=i("p"),$.innerHTML=_s,Ne=n(),u(C.$$.fragment),_e=n(),Z=i("p"),Z.innerHTML=Rs,Re=n(),G=i("p"),G.innerHTML=Xs,Xe=n(),N=i("ol"),N.innerHTML=Es,Ee=n(),u(_.$$.fragment),Se=n(),R=i("p"),R.innerHTML=Ss,Le=n(),X=i("p"),X.innerHTML=Ls,We=n(),u(E.$$.fragment),He=n(),S=i("p"),S.textContent=Ws,Ae=n(),u(L.$$.fragment),Ye=n(),W=i("p"),W.innerHTML=Hs,Oe=n(),u(H.$$.fragment),Fe=n(),u(A.$$.fragment),Pe=n(),Y=i("p"),Y.textContent=As,De=n(),u(O.$$.fragment),Ke=n(),F=i("p"),F.textContent=Ys,es=n(),P=i("blockquote"),P.innerHTML=Os,ss=n(),u(D.$$.fragment),ts=n(),K=i("p"),K.textContent=Fs,ls=n(),u(ee.$$.fragment),ns=n(),se=i("p"),se.textContent=Ps,as=n(),u(te.$$.fragment),is=n(),le=i("p"),le.textContent=Ds,os=n(),ne=i("p"),ne.textContent=Ks,ps=n(),u(ae.$$.fragment),us=n(),ie=i("p"),ie.textContent=et,rs=n(),u(oe.$$.fragment),cs=n(),pe=i("p"),pe.innerHTML=st,Ms=n(),u(ue.$$.fragment),ds=n(),re=i("p"),re.innerHTML=tt,ms=n(),u(ce.$$.fragment),ys=n(),Me=i("p"),Me.textContent=lt,js=n(),u(de.$$.fragment),Js=n(),ws=i("hr"),Ts=n(),me=i("p"),me.innerHTML=nt,hs=n(),ye=i("p"),ye.innerHTML=at,Us=n(),u(je.$$.fragment),fs=n(),we=i("p"),this.h()},l(e){const s=dt("svelte-u9bgzb",document.head);j=o(s,"META",{name:!0,content:!0}),s.forEach(t),Te=a(e),Je=o(e,"P",{}),it(Je).forEach(t),he=a(e),r(J.$$.fragment,e),Ue=a(e),w=o(e,"IMG",{src:!0,alt:!0}),fe=a(e),T=o(e,"P",{"data-svelte-h":!0}),p(T)!=="svelte-1smky8l"&&(T.innerHTML=ks),be=a(e),h=o(e,"P",{"data-svelte-h":!0}),p(h)!=="svelte-1o3robm"&&(h.innerHTML=gs),ve=a(e),U=o(e,"P",{"data-svelte-h":!0}),p(U)!=="svelte-ag5g7a"&&(U.textContent=qs),Be=a(e),f=o(e,"P",{"data-svelte-h":!0}),p(f)!=="svelte-98mr50"&&(f.innerHTML=zs),xe=a(e),b=o(e,"P",{"data-svelte-h":!0}),p(b)!=="svelte-12j14bn"&&(b.innerHTML=Vs),Ie=a(e),v=o(e,"P",{"data-svelte-h":!0}),p(v)!=="svelte-koa0vm"&&(v.textContent=Qs),ke=a(e),B=o(e,"P",{"data-svelte-h":!0}),p(B)!=="svelte-cnn8mp"&&(B.innerHTML=$s),ge=a(e),x=o(e,"P",{"data-svelte-h":!0}),p(x)!=="svelte-grzzho"&&(x.innerHTML=Cs),qe=a(e),r(I.$$.fragment,e),ze=a(e),k=o(e,"P",{"data-svelte-h":!0}),p(k)!=="svelte-drgxl0"&&(k.textContent=Zs),Ve=a(e),r(g.$$.fragment,e),Qe=a(e),q=o(e,"P",{"data-svelte-h":!0}),p(q)!=="svelte-1372np"&&(q.innerHTML=Gs),$e=a(e),r(z.$$.fragment,e),Ce=a(e),V=o(e,"P",{"data-svelte-h":!0}),p(V)!=="svelte-1sclt0g"&&(V.textContent=Ns),Ze=a(e),r(Q.$$.fragment,e),Ge=a(e),$=o(e,"P",{"data-svelte-h":!0}),p($)!=="svelte-1mhygev"&&($.innerHTML=_s),Ne=a(e),r(C.$$.fragment,e),_e=a(e),Z=o(e,"P",{"data-svelte-h":!0}),p(Z)!=="svelte-167k0y0"&&(Z.innerHTML=Rs),Re=a(e),G=o(e,"P",{"data-svelte-h":!0}),p(G)!=="svelte-xm8dbs"&&(G.innerHTML=Xs),Xe=a(e),N=o(e,"OL",{"data-svelte-h":!0}),p(N)!=="svelte-1k7e73q"&&(N.innerHTML=Es),Ee=a(e),r(_.$$.fragment,e),Se=a(e),R=o(e,"P",{"data-svelte-h":!0}),p(R)!=="svelte-c8gvlx"&&(R.innerHTML=Ss),Le=a(e),X=o(e,"P",{"data-svelte-h":!0}),p(X)!=="svelte-1six98g"&&(X.innerHTML=Ls),We=a(e),r(E.$$.fragment,e),He=a(e),S=o(e,"P",{"data-svelte-h":!0}),p(S)!=="svelte-1iwjksm"&&(S.textContent=Ws),Ae=a(e),r(L.$$.fragment,e),Ye=a(e),W=o(e,"P",{"data-svelte-h":!0}),p(W)!=="svelte-8zd4pz"&&(W.innerHTML=Hs),Oe=a(e),r(H.$$.fragment,e),Fe=a(e),r(A.$$.fragment,e),Pe=a(e),Y=o(e,"P",{"data-svelte-h":!0}),p(Y)!=="svelte-1vhgolz"&&(Y.textContent=As),De=a(e),r(O.$$.fragment,e),Ke=a(e),F=o(e,"P",{"data-svelte-h":!0}),p(F)!=="svelte-1sfn97i"&&(F.textContent=Ys),es=a(e),P=o(e,"BLOCKQUOTE",{"data-svelte-h":!0}),p(P)!=="svelte-mgkgcj"&&(P.innerHTML=Os),ss=a(e),r(D.$$.fragment,e),ts=a(e),K=o(e,"P",{"data-svelte-h":!0}),p(K)!=="svelte-kgezdu"&&(K.textContent=Fs),ls=a(e),r(ee.$$.fragment,e),ns=a(e),se=o(e,"P",{"data-svelte-h":!0}),p(se)!=="svelte-1vhgolz"&&(se.textContent=Ps),as=a(e),r(te.$$.fragment,e),is=a(e),le=o(e,"P",{"data-svelte-h":!0}),p(le)!=="svelte-1cnthxl"&&(le.textContent=Ds),os=a(e),ne=o(e,"P",{"data-svelte-h":!0}),p(ne)!=="svelte-i7uf43"&&(ne.textContent=Ks),ps=a(e),r(ae.$$.fragment,e),us=a(e),ie=o(e,"P",{"data-svelte-h":!0}),p(ie)!=="svelte-kgezdu"&&(ie.textContent=et),rs=a(e),r(oe.$$.fragment,e),cs=a(e),pe=o(e,"P",{"data-svelte-h":!0}),p(pe)!=="svelte-ra4vd5"&&(pe.innerHTML=st),Ms=a(e),r(ue.$$.fragment,e),ds=a(e),re=o(e,"P",{"data-svelte-h":!0}),p(re)!=="svelte-1ajq12p"&&(re.innerHTML=tt),ms=a(e),r(ce.$$.fragment,e),ys=a(e),Me=o(e,"P",{"data-svelte-h":!0}),p(Me)!=="svelte-kgezdu"&&(Me.textContent=lt),js=a(e),r(de.$$.fragment,e),Js=a(e),ws=o(e,"HR",{}),Ts=a(e),me=o(e,"P",{"data-svelte-h":!0}),p(me)!=="svelte-1lua9qp"&&(me.innerHTML=nt),hs=a(e),ye=o(e,"P",{"data-svelte-h":!0}),p(ye)!=="svelte-14zfuz"&&(ye.innerHTML=at),Us=a(e),r(je.$$.fragment,e),fs=a(e),we=o(e,"P",{}),it(we).forEach(t),this.h()},h(){vs(j,"name","hf:doc:metadata"),vs(j,"content",Jt),pt(w.src,Is="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit1/whiteboard-unit1sub3DONE.jpg")||vs(w,"src",Is),vs(w,"alt","Planification de l'Unité 1")},m(e,s){mt(document.head,j),l(e,Te,s),l(e,Je,s),l(e,he,s),c(J,e,s),l(e,Ue,s),l(e,w,s),l(e,fe,s),l(e,T,s),l(e,be,s),l(e,h,s),l(e,ve,s),l(e,U,s),l(e,Be,s),l(e,f,s),l(e,xe,s),l(e,b,s),l(e,Ie,s),l(e,v,s),l(e,ke,s),l(e,B,s),l(e,ge,s),l(e,x,s),l(e,qe,s),c(I,e,s),l(e,ze,s),l(e,k,s),l(e,Ve,s),c(g,e,s),l(e,Qe,s),l(e,q,s),l(e,$e,s),c(z,e,s),l(e,Ce,s),l(e,V,s),l(e,Ze,s),c(Q,e,s),l(e,Ge,s),l(e,$,s),l(e,Ne,s),c(C,e,s),l(e,_e,s),l(e,Z,s),l(e,Re,s),l(e,G,s),l(e,Xe,s),l(e,N,s),l(e,Ee,s),c(_,e,s),l(e,Se,s),l(e,R,s),l(e,Le,s),l(e,X,s),l(e,We,s),c(E,e,s),l(e,He,s),l(e,S,s),l(e,Ae,s),c(L,e,s),l(e,Ye,s),l(e,W,s),l(e,Oe,s),c(H,e,s),l(e,Fe,s),c(A,e,s),l(e,Pe,s),l(e,Y,s),l(e,De,s),c(O,e,s),l(e,Ke,s),l(e,F,s),l(e,es,s),l(e,P,s),l(e,ss,s),c(D,e,s),l(e,ts,s),l(e,K,s),l(e,ls,s),c(ee,e,s),l(e,ns,s),l(e,se,s),l(e,as,s),c(te,e,s),l(e,is,s),l(e,le,s),l(e,os,s),l(e,ne,s),l(e,ps,s),c(ae,e,s),l(e,us,s),l(e,ie,s),l(e,rs,s),c(oe,e,s),l(e,cs,s),l(e,pe,s),l(e,Ms,s),c(ue,e,s),l(e,ds,s),l(e,re,s),l(e,ms,s),c(ce,e,s),l(e,ys,s),l(e,Me,s),l(e,js,s),c(de,e,s),l(e,Js,s),l(e,ws,s),l(e,Ts,s),l(e,me,s),l(e,hs,s),l(e,ye,s),l(e,Us,s),c(je,e,s),l(e,fs,s),l(e,we,s),bs=!0},p:ut,i(e){bs||(M(J.$$.fragment,e),M(I.$$.fragment,e),M(g.$$.fragment,e),M(z.$$.fragment,e),M(Q.$$.fragment,e),M(C.$$.fragment,e),M(_.$$.fragment,e),M(E.$$.fragment,e),M(L.$$.fragment,e),M(H.$$.fragment,e),M(A.$$.fragment,e),M(O.$$.fragment,e),M(D.$$.fragment,e),M(ee.$$.fragment,e),M(te.$$.fragment,e),M(ae.$$.fragment,e),M(oe.$$.fragment,e),M(ue.$$.fragment,e),M(ce.$$.fragment,e),M(de.$$.fragment,e),M(je.$$.fragment,e),bs=!0)},o(e){d(J.$$.fragment,e),d(I.$$.fragment,e),d(g.$$.fragment,e),d(z.$$.fragment,e),d(Q.$$.fragment,e),d(C.$$.fragment,e),d(_.$$.fragment,e),d(E.$$.fragment,e),d(L.$$.fragment,e),d(H.$$.fragment,e),d(A.$$.fragment,e),d(O.$$.fragment,e),d(D.$$.fragment,e),d(ee.$$.fragment,e),d(te.$$.fragment,e),d(ae.$$.fragment,e),d(oe.$$.fragment,e),d(ue.$$.fragment,e),d(ce.$$.fragment,e),d(de.$$.fragment,e),d(je.$$.fragment,e),bs=!1},d(e){e&&(t(Te),t(Je),t(he),t(Ue),t(w),t(fe),t(T),t(be),t(h),t(ve),t(U),t(Be),t(f),t(xe),t(b),t(Ie),t(v),t(ke),t(B),t(ge),t(x),t(qe),t(ze),t(k),t(Ve),t(Qe),t(q),t($e),t(Ce),t(V),t(Ze),t(Ge),t($),t(Ne),t(_e),t(Z),t(Re),t(G),t(Xe),t(N),t(Ee),t(Se),t(R),t(Le),t(X),t(We),t(He),t(S),t(Ae),t(Ye),t(W),t(Oe),t(Fe),t(Pe),t(Y),t(De),t(Ke),t(F),t(es),t(P),t(ss),t(ts),t(K),t(ls),t(ns),t(se),t(as),t(is),t(le),t(os),t(ne),t(ps),t(us),t(ie),t(rs),t(cs),t(pe),t(Ms),t(ds),t(re),t(ms),t(ys),t(Me),t(js),t(Js),t(ws),t(Ts),t(me),t(hs),t(ye),t(Us),t(fs),t(we)),t(j),m(J,e),m(I,e),m(g,e),m(z,e),m(Q,e),m(C,e),m(_,e),m(E,e),m(L,e),m(H,e),m(A,e),m(O,e),m(D,e),m(ee,e),m(te,e),m(ae,e),m(oe,e),m(ue,e),m(ce,e),m(de,e),m(je,e)}}}const Jt='{"title":"Bibliothèque d’agents factices","local":"bibliothèque-dagents-factices","sections":[{"title":"API sans serveur","local":"api-sans-serveur","sections":[],"depth":2},{"title":"Agent factice","local":"agent-factice","sections":[],"depth":2}],"depth":1}';function wt(xs){return rt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class vt extends ct{constructor(j){super(),Mt(this,j,wt,jt,ot,{})}}export{vt as component};
