import{s as Kl,f as Ol,o as es,n as x}from"../chunks/scheduler.37c15a92.js";import{S as ls,i as ss,g as J,s as d,r as b,A as ts,h as j,f as s,c as m,j as wl,u as h,x as w,k as G,y as ns,a as t,v as C,d as I,t as g,w as v,m as R,n as X}from"../chunks/index.2bf4358c.js";import{T as ve}from"../chunks/Tip.363c041f.js";import{C as Q}from"../chunks/CodeBlock.4e987730.js";import{H as W}from"../chunks/Heading.8ada512a.js";import{H as fl,a as E}from"../chunks/HfOption.02c8e375.js";import{E as as}from"../chunks/getInferenceSnippets.d4d07d1e.js";function is(Z){let a,c="Vous pouvez choisir n’importe lequel des <em>frameworks</em> couverts dans le cours pour ce cas d’usage. Sélectionnez votre option préférée dans les onglets de code.";return{c(){a=J("p"),a.innerHTML=c},l(u){a=j(u,"P",{"data-svelte-h":!0}),w(a)!=="svelte-179pzhf"&&(a.innerHTML=c)},m(u,M){t(u,a,M)},p:x,d(u){u&&s(a)}}}function rs(Z){let a;return{c(){a=R("Dans un scénario réel, ce jeu de données pourrait être étendu pour inclure les préférences alimentaires, les intérêts pour les cadeaux, les sujets de conversation à éviter, et d'autres détails utiles pour un hôte.")},l(c){a=X(c,"Dans un scénario réel, ce jeu de données pourrait être étendu pour inclure les préférences alimentaires, les intérêts pour les cadeaux, les sujets de conversation à éviter, et d'autres détails utiles pour un hôte.")},m(c,u){t(c,a,u)},d(c){c&&s(a)}}}function os(Z){let a,c="Nous utiliserons la bibliothèque <code>datasets</code> de <em>Hugging Face</em> pour charger le jeu de données et le convertir en une liste d’objets <code>Document</code> du module <code>langchain.docstore.document</code>.",u,M,p;return M=new Q({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluX2NvcmUuZG9jdW1lbnRzJTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDaGFyZ2VyJTIwbGUlMjBqZXUlMjBkZSUyMGRvbm4lQzMlQTllcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBsZXMlMjBlbnRyJUMzJUE5ZXMlMjBkdSUyMGpldSUyMGRlJTIwZG9ubiVDMyVBOWVzJTIwZW4lMjBvYmpldHMlMjBEb2N1bWVudCUwQWRvY3MlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjBEb2N1bWVudCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYWdlX2NvbnRlbnQlM0QlMjIlNUNuJTIyLmpvaW4oJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMk5hbWUlM0ElMjAlN0JndWVzdCU1QiduYW1lJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJSZWxhdGlvbiUzQSUyMCU3Qmd1ZXN0JTVCJ3JlbGF0aW9uJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJEZXNjcmlwdGlvbiUzQSUyMCU3Qmd1ZXN0JTVCJ2Rlc2NyaXB0aW9uJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJFbWFpbCUzQSUyMCU3Qmd1ZXN0JTVCJ2VtYWlsJyU1RCU3RCUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtZXRhZGF0YSUzRCU3QiUyMm5hbWUlMjIlM0ElMjBndWVzdCU1QiUyMm5hbWUlMjIlNUQlN0QlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwZm9yJTIwZ3Vlc3QlMjBpbiUyMGd1ZXN0X2RhdGFzZXQlMEElNUQlMEE=",highlighted:`<span class="hljs-keyword">import</span> datasets
<span class="hljs-keyword">from</span> langchain_core.documents <span class="hljs-keyword">import</span> Document

<span class="hljs-comment"># Charger le jeu de données</span>
guest_dataset = datasets.load_dataset(<span class="hljs-string">&quot;agents-course/unit3-invitees&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)

<span class="hljs-comment"># Convertir les entrées du jeu de données en objets Document</span>
docs = [
    Document(
        page_content=<span class="hljs-string">&quot;\\n&quot;</span>.join([
            <span class="hljs-string">f&quot;Name: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;name&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Relation: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;relation&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Description: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;description&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Email: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;email&#x27;</span>]}</span>&quot;</span>
        ]),
        metadata={<span class="hljs-string">&quot;name&quot;</span>: guest[<span class="hljs-string">&quot;name&quot;</span>]}
    )
    <span class="hljs-keyword">for</span> guest <span class="hljs-keyword">in</span> guest_dataset
]
`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment)},l(r){a=j(r,"P",{"data-svelte-h":!0}),w(a)!=="svelte-nsf5j2"&&(a.innerHTML=c),u=m(r),h(M.$$.fragment,r)},m(r,n){t(r,a,n),t(r,u,n),C(M,r,n),p=!0},p:x,i(r){p||(I(M.$$.fragment,r),p=!0)},o(r){g(M.$$.fragment,r),p=!1},d(r){r&&(s(a),s(u)),v(M,r)}}}function ps(Z){let a,c="Nous utiliserons la bibliothèque <code>datasets</code> de <em>Hugging Face</em> pour charger le jeu de données et le convertir en une liste d’objets <code>Document</code> du module <code>llama_index.core.schema</code>.",u,M,p;return M=new Q({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS5zY2hlbWElMjBpbXBvcnQlMjBEb2N1bWVudCUwQSUwQSUyMyUyMENoYXJnZXIlMjBsZSUyMGpldSUyMGRlJTIwZG9ubiVDMyVBOWVzJTBBZ3Vlc3RfZGF0YXNldCUyMCUzRCUyMGRhdGFzZXRzLmxvYWRfZGF0YXNldCglMjJhZ2VudHMtY291cnNlJTJGdW5pdDMtaW52aXRlZXMlMjIlMkMlMjBzcGxpdCUzRCUyMnRyYWluJTIyKSUwQSUwQSUyMyUyMENvbnZlcnRpciUyMGxlcyUyMGVudHIlQzMlQTllcyUyMGR1JTIwamV1JTIwZGUlMjBkb25uJUMzJUE5ZXMlMjBlbiUyMG9iamV0cyUyMERvY3VtZW50JTBBZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRleHQlM0QlMjIlNUNuJTIyLmpvaW4oJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMk5hbWUlM0ElMjAlN0JndWVzdF9kYXRhc2V0JTVCJ25hbWUnJTVEJTVCaSU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJSZWxhdGlvbiUzQSUyMCU3Qmd1ZXN0X2RhdGFzZXQlNUIncmVsYXRpb24nJTVEJTVCaSU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJEZXNjcmlwdGlvbiUzQSUyMCU3Qmd1ZXN0X2RhdGFzZXQlNUInZGVzY3JpcHRpb24nJTVEJTVCaSU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJFbWFpbCUzQSUyMCU3Qmd1ZXN0X2RhdGFzZXQlNUInZW1haWwnJTVEJTVCaSU1RCU3RCUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtZXRhZGF0YSUzRCU3QiUyMm5hbWUlMjIlM0ElMjBndWVzdF9kYXRhc2V0JTVCJ25hbWUnJTVEJTVCaSU1RCU3RCUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjBmb3IlMjBpJTIwaW4lMjByYW5nZShsZW4oZ3Vlc3RfZGF0YXNldCkpJTBBJTVE",highlighted:`<span class="hljs-keyword">import</span> datasets
<span class="hljs-keyword">from</span> llama_index.core.schema <span class="hljs-keyword">import</span> Document

<span class="hljs-comment"># Charger le jeu de données</span>
guest_dataset = datasets.load_dataset(<span class="hljs-string">&quot;agents-course/unit3-invitees&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)

<span class="hljs-comment"># Convertir les entrées du jeu de données en objets Document</span>
docs = [
    Document(
        text=<span class="hljs-string">&quot;\\n&quot;</span>.join([
            <span class="hljs-string">f&quot;Name: <span class="hljs-subst">{guest_dataset[<span class="hljs-string">&#x27;name&#x27;</span>][i]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Relation: <span class="hljs-subst">{guest_dataset[<span class="hljs-string">&#x27;relation&#x27;</span>][i]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Description: <span class="hljs-subst">{guest_dataset[<span class="hljs-string">&#x27;description&#x27;</span>][i]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Email: <span class="hljs-subst">{guest_dataset[<span class="hljs-string">&#x27;email&#x27;</span>][i]}</span>&quot;</span>
        ]),
        metadata={<span class="hljs-string">&quot;name&quot;</span>: guest_dataset[<span class="hljs-string">&#x27;name&#x27;</span>][i]}
    )
    <span class="hljs-keyword">for</span> i <span class="hljs-keyword">in</span> <span class="hljs-built_in">range</span>(<span class="hljs-built_in">len</span>(guest_dataset))
]`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment)},l(r){a=j(r,"P",{"data-svelte-h":!0}),w(a)!=="svelte-llnfg9"&&(a.innerHTML=c),u=m(r),h(M.$$.fragment,r)},m(r,n){t(r,a,n),t(r,u,n),C(M,r,n),p=!0},p:x,i(r){p||(I(M.$$.fragment,r),p=!0)},o(r){g(M.$$.fragment,r),p=!1},d(r){r&&(s(a),s(u)),v(M,r)}}}function us(Z){let a,c="Nous utiliserons la bibliothèque <code>datasets</code> de <em>Hugging Face</em> pour charger le jeu de données et le convertir en une liste d’objets <code>Document</code> du module <code>langchain.docstore.document</code>.",u,M,p;return M=new Q({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluX2NvcmUuZG9jdW1lbnRzJTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDaGFyZ2VyJTIwbGUlMjBqZXUlMjBkZSUyMGRvbm4lQzMlQTllcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBsZXMlMjBlbnRyJUMzJUE5ZXMlMjBkdSUyMGpldSUyMGRlJTIwZG9ubiVDMyVBOWVzJTIwZW4lMjBvYmpldHMlMjBEb2N1bWVudCUwQWRvY3MlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjBEb2N1bWVudCglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBwYWdlX2NvbnRlbnQlM0QlMjIlNUNuJTIyLmpvaW4oJTVCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMk5hbWUlM0ElMjAlN0JndWVzdCU1QiduYW1lJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJSZWxhdGlvbiUzQSUyMCU3Qmd1ZXN0JTVCJ3JlbGF0aW9uJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJEZXNjcmlwdGlvbiUzQSUyMCU3Qmd1ZXN0JTVCJ2Rlc2NyaXB0aW9uJyU1RCU3RCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjJFbWFpbCUzQSUyMCU3Qmd1ZXN0JTVCJ2VtYWlsJyU1RCU3RCUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCklMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtZXRhZGF0YSUzRCU3QiUyMm5hbWUlMjIlM0ElMjBndWVzdCU1QiUyMm5hbWUlMjIlNUQlN0QlMEElMjAlMjAlMjAlMjApJTBBJTIwJTIwJTIwJTIwZm9yJTIwZ3Vlc3QlMjBpbiUyMGd1ZXN0X2RhdGFzZXQlMEElNUQ=",highlighted:`<span class="hljs-keyword">import</span> datasets
<span class="hljs-keyword">from</span> langchain_core.documents <span class="hljs-keyword">import</span> Document

<span class="hljs-comment"># Charger le jeu de données</span>
guest_dataset = datasets.load_dataset(<span class="hljs-string">&quot;agents-course/unit3-invitees&quot;</span>, split=<span class="hljs-string">&quot;train&quot;</span>)

<span class="hljs-comment"># Convertir les entrées du jeu de données en objets Document</span>
docs = [
    Document(
        page_content=<span class="hljs-string">&quot;\\n&quot;</span>.join([
            <span class="hljs-string">f&quot;Name: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;name&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Relation: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;relation&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Description: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;description&#x27;</span>]}</span>&quot;</span>,
            <span class="hljs-string">f&quot;Email: <span class="hljs-subst">{guest[<span class="hljs-string">&#x27;email&#x27;</span>]}</span>&quot;</span>
        ]),
        metadata={<span class="hljs-string">&quot;name&quot;</span>: guest[<span class="hljs-string">&quot;name&quot;</span>]}
    )
    <span class="hljs-keyword">for</span> guest <span class="hljs-keyword">in</span> guest_dataset
]`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment)},l(r){a=j(r,"P",{"data-svelte-h":!0}),w(a)!=="svelte-nsf5j2"&&(a.innerHTML=c),u=m(r),h(M.$$.fragment,r)},m(r,n){t(r,a,n),t(r,u,n),C(M,r,n),p=!0},p:x,i(r){p||(I(M.$$.fragment,r),p=!0)},o(r){g(M.$$.fragment,r),p=!1},d(r){r&&(s(a),s(u)),v(M,r)}}}function Ms(Z){let a,c,u,M,p,r;return a=new E({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[os]},$$scope:{ctx:Z}}}),u=new E({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[ps]},$$scope:{ctx:Z}}}),p=new E({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[us]},$$scope:{ctx:Z}}}),{c(){b(a.$$.fragment),c=d(),b(u.$$.fragment),M=d(),b(p.$$.fragment)},l(n){h(a.$$.fragment,n),c=m(n),h(u.$$.fragment,n),M=m(n),h(p.$$.fragment,n)},m(n,i){C(a,n,i),t(n,c,i),C(u,n,i),t(n,M,i),C(p,n,i),r=!0},p(n,i){const f={};i&2&&(f.$$scope={dirty:i,ctx:n}),a.$set(f);const T={};i&2&&(T.$$scope={dirty:i,ctx:n}),u.$set(T);const U={};i&2&&(U.$$scope={dirty:i,ctx:n}),p.$set(U)},i(n){r||(I(a.$$.fragment,n),I(u.$$.fragment,n),I(p.$$.fragment,n),r=!0)},o(n){g(a.$$.fragment,n),g(u.$$.fragment,n),g(p.$$.fragment,n),r=!1},d(n){n&&(s(c),s(M)),v(a,n),v(u,n),v(p,n)}}}function cs(Z){let a,c,u="BM25Retriever",M,p,r="sentence-transformers",n;return{c(){a=R("Le "),c=J("code"),c.textContent=u,M=R(" est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=J("a"),p.textContent=r,n=R("."),this.h()},l(i){a=X(i,"Le "),c=j(i,"CODE",{"data-svelte-h":!0}),w(c)!=="svelte-13pi4gc"&&(c.textContent=u),M=X(i," est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=j(i,"A",{href:!0,"data-svelte-h":!0}),w(p)!=="svelte-8vrx36"&&(p.textContent=r),n=X(i,"."),this.h()},h(){G(p,"href","https://www.sbert.net/")},m(i,f){t(i,a,f),t(i,c,f),t(i,M,f),t(i,p,f),t(i,n,f)},p:x,d(i){i&&(s(a),s(c),s(M),s(p),s(n))}}}function ds(Z){let a,c="Nous utiliserons le <code>BM25Retriever</code> du module <code>langchain_community.retrievers</code> pour créer un outil de récupération.",u,M,p,r,n,i,f="Comprenons cet outil étape par étape :",T,U,B="<li>Le <code>name</code> et la <code>description</code> aident l’agent à comprendre quand et comment utiliser cet outil</li> <li>Les <code>inputs</code> définissent quels paramètres l’outil attend (dans ce cas, une requête de recherche)</li> <li>Nous utilisons un <code>BM25Retriever</code>, qui est un algorithme de récupération de texte puissant qui ne nécessite pas d’<em>embeddings</em></li> <li>La méthode <code>forward</code> traite la requête et retourne les informations d’invité les plus pertinentes</li>",$;return M=new ve({props:{$$slots:{default:[cs]},$$scope:{ctx:Z}}}),r=new Q({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBUb29sJTBBZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkucmV0cmlldmVycyUyMGltcG9ydCUyMEJNMjVSZXRyaWV2ZXIlMEElMEFjbGFzcyUyMEd1ZXN0SW5mb1JldHJpZXZlclRvb2woVG9vbCklM0ElMEElMjAlMjAlMjAlMjBuYW1lJTIwJTNEJTIwJTIyZ3Vlc3RfaW5mb19yZXRyaWV2ZXIlMjIlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUyMCUzRCUyMCUyMlIlQzMlQTljdXAlQzMlQThyZSUyMGRlcyUyMGluZm9ybWF0aW9ucyUyMGQlQzMlQTl0YWlsbCVDMyVBOWVzJTIwc3VyJTIwbGVzJTIwaW52aXQlQzMlQTlzJTIwZHUlMjBnYWxhJTIwYmFzJUMzJUE5ZXMlMjBzdXIlMjBsZXVyJTIwbm9tJTIwb3UlMjByZWxhdGlvbi4lMjIlMEElMjAlMjAlMjAlMjBpbnB1dHMlMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJxdWVyeSUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkxlJTIwbm9tJTIwb3UlMjBsYSUyMHJlbGF0aW9uJTIwZGUlMjBsJ2ludml0JUMzJUE5JTIwc3VyJTIwbGVxdWVsJTIwdm91cyUyMHZvdWxleiUyMGRlcyUyMGluZm9ybWF0aW9ucy4lMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjBvdXRwdXRfdHlwZSUyMCUzRCUyMCUyMnN0cmluZyUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYlMkMlMjBkb2NzKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuaXNfaW5pdGlhbGl6ZWQlMjAlM0QlMjBGYWxzZSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYucmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RvY3VtZW50cyhkb2NzKSUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMHF1ZXJ5JTNBJTIwc3RyKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdHMlMjAlM0QlMjBzZWxmLnJldHJpZXZlci5nZXRfcmVsZXZhbnRfZG9jdW1lbnRzKHF1ZXJ5KSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwcmVzdWx0cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiU1Q24lNUNuJTIyLmpvaW4oJTVCZG9jLnBhZ2VfY29udGVudCUyMGZvciUyMGRvYyUyMGluJTIwcmVzdWx0cyU1QiUzQTMlNUQlNUQpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMkF1Y3VuZSUyMGluZm9ybWF0aW9uJTIwZCdpbnZpdCVDMyVBOSUyMGNvcnJlc3BvbmRhbnRlJTIwdHJvdXYlQzMlQTllLiUyMiUwQSUwQSUyMyUyMEluaXRpYWxpc2VyJTIwbCdvdXRpbCUwQWd1ZXN0X2luZm9fdG9vbCUyMCUzRCUyMEd1ZXN0SW5mb1JldHJpZXZlclRvb2woZG9jcyk=",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">from</span> langchain_community.retrievers <span class="hljs-keyword">import</span> BM25Retriever

<span class="hljs-keyword">class</span> <span class="hljs-title class_">GuestInfoRetrieverTool</span>(<span class="hljs-title class_ inherited__">Tool</span>):
    name = <span class="hljs-string">&quot;guest_info_retriever&quot;</span>
    description = <span class="hljs-string">&quot;Récupère des informations détaillées sur les invités du gala basées sur leur nom ou relation.&quot;</span>
    inputs = {
        <span class="hljs-string">&quot;query&quot;</span>: {
            <span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
            <span class="hljs-string">&quot;description&quot;</span>: <span class="hljs-string">&quot;Le nom ou la relation de l&#x27;invité sur lequel vous voulez des informations.&quot;</span>
        }
    }
    output_type = <span class="hljs-string">&quot;string&quot;</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, docs</span>):
        self.is_initialized = <span class="hljs-literal">False</span>
        self.retriever = BM25Retriever.from_documents(docs)

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, query: <span class="hljs-built_in">str</span></span>):
        results = self.retriever.get_relevant_documents(query)
        <span class="hljs-keyword">if</span> results:
            <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\n\\n&quot;</span>.join([doc.page_content <span class="hljs-keyword">for</span> doc <span class="hljs-keyword">in</span> results[:<span class="hljs-number">3</span>]])
        <span class="hljs-keyword">else</span>:
            <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;Aucune information d&#x27;invité correspondante trouvée.&quot;</span>

<span class="hljs-comment"># Initialiser l&#x27;outil</span>
guest_info_tool = GuestInfoRetrieverTool(docs)`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment),p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){a=j(l,"P",{"data-svelte-h":!0}),w(a)!=="svelte-1j0ijm9"&&(a.innerHTML=c),u=m(l),h(M.$$.fragment,l),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-1gxhttu"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-dak8da"&&(U.innerHTML=B)},m(l,y){t(l,a,y),t(l,u,y),C(M,l,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p(l,y){const V={};y&2&&(V.$$scope={dirty:y,ctx:l}),M.$set(V)},i(l){$||(I(M.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(M.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(a),s(u),s(p),s(n),s(i),s(T),s(U)),v(M,l),v(r,l)}}}function ms(Z){let a,c,u="BM25Retriever",M,p,r="sentence-transformers",n;return{c(){a=R("Le "),c=J("code"),c.textContent=u,M=R(" est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=J("a"),p.textContent=r,n=R("."),this.h()},l(i){a=X(i,"Le "),c=j(i,"CODE",{"data-svelte-h":!0}),w(c)!=="svelte-13pi4gc"&&(c.textContent=u),M=X(i," est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=j(i,"A",{href:!0,"data-svelte-h":!0}),w(p)!=="svelte-8vrx36"&&(p.textContent=r),n=X(i,"."),this.h()},h(){G(p,"href","https://www.sbert.net/")},m(i,f){t(i,a,f),t(i,c,f),t(i,M,f),t(i,p,f),t(i,n,f)},p:x,d(i){i&&(s(a),s(c),s(M),s(p),s(n))}}}function ys(Z){let a,c="Nous utiliserons le <code>BM25Retriever</code> du module <code>llama_index.retrievers.bm25</code> pour créer un outil de récupération.",u,M,p,r,n,i,f="Comprenons cet outil étape par étape :",T,U,B="<li>La <em>docstring</em> aide l’agent à comprendre quand et comment utiliser cet outil</li> <li>Les décorateurs de type définissent quels paramètres l’outil attend (dans ce cas, une requête de recherche)</li> <li>Nous utilisons un <code>BM25Retriever</code>, qui est un algorithme de récupération de texte puissant qui ne nécessite pas d’<em>embeddings</em></li> <li>La méthode traite la requête et retourne les informations d’invité les plus pertinentes</li>",$;return M=new ve({props:{$$slots:{default:[ms]},$$scope:{ctx:Z}}}),r=new Q({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEFmcm9tJTIwbGxhbWFfaW5kZXgucmV0cmlldmVycy5ibTI1JTIwaW1wb3J0JTIwQk0yNVJldHJpZXZlciUwQSUwQWJtMjVfcmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RlZmF1bHRzKG5vZGVzJTNEZG9jcyklMEElMEFkZWYlMjBnZXRfZ3Vlc3RfaW5mb19yZXRyaWV2ZXIocXVlcnklM0ElMjBzdHIpJTIwLSUzRSUyMHN0ciUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMlIlQzMlQTljdXAlQzMlQThyZSUyMGRlcyUyMGluZm9ybWF0aW9ucyUyMGQlQzMlQTl0YWlsbCVDMyVBOWVzJTIwc3VyJTIwbGVzJTIwaW52aXQlQzMlQTlzJTIwZHUlMjBnYWxhJTIwYmFzJUMzJUE5ZXMlMjBzdXIlMjBsZXVyJTIwbm9tJTIwb3UlMjByZWxhdGlvbi4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjByZXN1bHRzJTIwJTNEJTIwYm0yNV9yZXRyaWV2ZXIucmV0cmlldmUocXVlcnkpJTBBJTIwJTIwJTIwJTIwaWYlMjByZXN1bHRzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTIyJTVDbiU1Q24lMjIuam9pbiglNUJkb2MudGV4dCUyMGZvciUyMGRvYyUyMGluJTIwcmVzdWx0cyU1QiUzQTMlNUQlNUQpJTBBJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMkF1Y3VuZSUyMGluZm9ybWF0aW9uJTIwZCdpbnZpdCVDMyVBOSUyMGNvcnJlc3BvbmRhbnRlJTIwdHJvdXYlQzMlQTllLiUyMiUwQSUwQSUyMyUyMEluaXRpYWxpc2VyJTIwbCdvdXRpbCUwQWd1ZXN0X2luZm9fdG9vbCUyMCUzRCUyMEZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKGdldF9ndWVzdF9pbmZvX3JldHJpZXZlcik=",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool
<span class="hljs-keyword">from</span> llama_index.retrievers.bm25 <span class="hljs-keyword">import</span> BM25Retriever

bm25_retriever = BM25Retriever.from_defaults(nodes=docs)

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_guest_info_retriever</span>(<span class="hljs-params">query: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Récupère des informations détaillées sur les invités du gala basées sur leur nom ou relation.&quot;&quot;&quot;</span>
    results = bm25_retriever.retrieve(query)
    <span class="hljs-keyword">if</span> results:
        <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\n\\n&quot;</span>.join([doc.text <span class="hljs-keyword">for</span> doc <span class="hljs-keyword">in</span> results[:<span class="hljs-number">3</span>]])
    <span class="hljs-keyword">else</span>:
        <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;Aucune information d&#x27;invité correspondante trouvée.&quot;</span>

<span class="hljs-comment"># Initialiser l&#x27;outil</span>
guest_info_tool = FunctionTool.from_defaults(get_guest_info_retriever)`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment),p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){a=j(l,"P",{"data-svelte-h":!0}),w(a)!=="svelte-13v4bfa"&&(a.innerHTML=c),u=m(l),h(M.$$.fragment,l),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-1gxhttu"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-11si3ct"&&(U.innerHTML=B)},m(l,y){t(l,a,y),t(l,u,y),C(M,l,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p(l,y){const V={};y&2&&(V.$$scope={dirty:y,ctx:l}),M.$set(V)},i(l){$||(I(M.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(M.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(a),s(u),s(p),s(n),s(i),s(T),s(U)),v(M,l),v(r,l)}}}function Us(Z){let a,c,u="BM25Retriever",M,p,r="sentence-transformers",n;return{c(){a=R("Le "),c=J("code"),c.textContent=u,M=R(" est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=J("a"),p.textContent=r,n=R("."),this.h()},l(i){a=X(i,"Le "),c=j(i,"CODE",{"data-svelte-h":!0}),w(c)!=="svelte-13pi4gc"&&(c.textContent=u),M=X(i," est un excellent point de départ pour la récupération, mais pour une recherche sémantique plus avancée, vous pourriez considérer l'utilisation de récupérateurs basés sur des *embeddings* comme ceux de "),p=j(i,"A",{href:!0,"data-svelte-h":!0}),w(p)!=="svelte-8vrx36"&&(p.textContent=r),n=X(i,"."),this.h()},h(){G(p,"href","https://www.sbert.net/")},m(i,f){t(i,a,f),t(i,c,f),t(i,M,f),t(i,p,f),t(i,n,f)},p:x,d(i){i&&(s(a),s(c),s(M),s(p),s(n))}}}function Js(Z){let a,c="Nous utiliserons le <code>BM25Retriever</code> du module <code>langchain_community.retrievers</code> pour créer un outil de récupération.",u,M,p,r,n,i,f="Comprenons cet outil étape par étape :",T,U,B="<li>Le <code>name</code> et la <code>description</code> aident l’agent à comprendre quand et comment utiliser cet outil</li> <li>Les décorateurs de type définissent quels paramètres l’outil attend (dans ce cas, une requête de recherche)</li> <li>Nous utilisons un <code>BM25Retriever</code>, qui est un algorithme de récupération de texte puissant qui ne nécessite pas d’<em>embeddings</em></li> <li>La méthode traite la requête et retourne les informations d’invité les plus pertinentes</li>",$;return M=new ve({props:{$$slots:{default:[Us]},$$scope:{ctx:Z}}}),r=new Q({props:{code:"ZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkucmV0cmlldmVycyUyMGltcG9ydCUyMEJNMjVSZXRyaWV2ZXIlMEFmcm9tJTIwbGFuZ2NoYWluLnRvb2xzJTIwaW1wb3J0JTIwVG9vbCUwQSUwQWJtMjVfcmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RvY3VtZW50cyhkb2NzKSUwQSUwQWRlZiUyMGV4dHJhY3RfdGV4dChxdWVyeSUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyUiVDMyVBOWN1cCVDMyVBOHJlJTIwZGVzJTIwaW5mb3JtYXRpb25zJTIwZCVDMyVBOXRhaWxsJUMzJUE5ZXMlMjBzdXIlMjBsZXMlMjBpbnZpdCVDMyVBOXMlMjBkdSUyMGdhbGElMjBiYXMlQzMlQTllcyUyMHN1ciUyMGxldXIlMjBub20lMjBvdSUyMHJlbGF0aW9uLiUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMHJlc3VsdHMlMjAlM0QlMjBibTI1X3JldHJpZXZlci5pbnZva2UocXVlcnkpJTBBJTIwJTIwJTIwJTIwaWYlMjByZXN1bHRzJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTIyJTVDbiU1Q24lMjIuam9pbiglNUJkb2MucGFnZV9jb250ZW50JTIwZm9yJTIwZG9jJTIwaW4lMjByZXN1bHRzJTVCJTNBMyU1RCU1RCklMEElMjAlMjAlMjAlMjBlbHNlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTIyQXVjdW5lJTIwaW5mb3JtYXRpb24lMjBkJ2ludml0JUMzJUE5JTIwY29ycmVzcG9uZGFudGUlMjB0cm91diVDMyVBOWUuJTIyJTBBJTBBZ3Vlc3RfaW5mb190b29sJTIwJTNEJTIwVG9vbCglMEElMjAlMjAlMjAlMjBuYW1lJTNEJTIyZ3Vlc3RfaW5mb19yZXRyaWV2ZXIlMjIlMkMlMEElMjAlMjAlMjAlMjBmdW5jJTNEZXh0cmFjdF90ZXh0JTJDJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lM0QlMjJSJUMzJUE5Y3VwJUMzJUE4cmUlMjBkZXMlMjBpbmZvcm1hdGlvbnMlMjBkJUMzJUE5dGFpbGwlQzMlQTllcyUyMHN1ciUyMGxlcyUyMGludml0JUMzJUE5cyUyMGR1JTIwZ2FsYSUyMGJhcyVDMyVBOWVzJTIwc3VyJTIwbGV1ciUyMG5vbSUyMG91JTIwcmVsYXRpb24uJTIyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> langchain_community.retrievers <span class="hljs-keyword">import</span> BM25Retriever
<span class="hljs-keyword">from</span> langchain.tools <span class="hljs-keyword">import</span> Tool

bm25_retriever = BM25Retriever.from_documents(docs)

<span class="hljs-keyword">def</span> <span class="hljs-title function_">extract_text</span>(<span class="hljs-params">query: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Récupère des informations détaillées sur les invités du gala basées sur leur nom ou relation.&quot;&quot;&quot;</span>
    results = bm25_retriever.invoke(query)
    <span class="hljs-keyword">if</span> results:
        <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\n\\n&quot;</span>.join([doc.page_content <span class="hljs-keyword">for</span> doc <span class="hljs-keyword">in</span> results[:<span class="hljs-number">3</span>]])
    <span class="hljs-keyword">else</span>:
        <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;Aucune information d&#x27;invité correspondante trouvée.&quot;</span>

guest_info_tool = Tool(
    name=<span class="hljs-string">&quot;guest_info_retriever&quot;</span>,
    func=extract_text,
    description=<span class="hljs-string">&quot;Récupère des informations détaillées sur les invités du gala basées sur leur nom ou relation.&quot;</span>
)`,wrap:!1}}),{c(){a=J("p"),a.innerHTML=c,u=d(),b(M.$$.fragment),p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){a=j(l,"P",{"data-svelte-h":!0}),w(a)!=="svelte-1j0ijm9"&&(a.innerHTML=c),u=m(l),h(M.$$.fragment,l),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-1gxhttu"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-wlttn0"&&(U.innerHTML=B)},m(l,y){t(l,a,y),t(l,u,y),C(M,l,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p(l,y){const V={};y&2&&(V.$$scope={dirty:y,ctx:l}),M.$set(V)},i(l){$||(I(M.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(M.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(a),s(u),s(p),s(n),s(i),s(T),s(U)),v(M,l),v(r,l)}}}function js(Z){let a,c,u,M,p,r;return a=new E({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ds]},$$scope:{ctx:Z}}}),u=new E({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[ys]},$$scope:{ctx:Z}}}),p=new E({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Js]},$$scope:{ctx:Z}}}),{c(){b(a.$$.fragment),c=d(),b(u.$$.fragment),M=d(),b(p.$$.fragment)},l(n){h(a.$$.fragment,n),c=m(n),h(u.$$.fragment,n),M=m(n),h(p.$$.fragment,n)},m(n,i){C(a,n,i),t(n,c,i),C(u,n,i),t(n,M,i),C(p,n,i),r=!0},p(n,i){const f={};i&2&&(f.$$scope={dirty:i,ctx:n}),a.$set(f);const T={};i&2&&(T.$$scope={dirty:i,ctx:n}),u.$set(T);const U={};i&2&&(U.$$scope={dirty:i,ctx:n}),p.$set(U)},i(n){r||(I(a.$$.fragment,n),I(u.$$.fragment,n),I(p.$$.fragment,n),r=!0)},o(n){g(a.$$.fragment,n),g(u.$$.fragment,n),g(p.$$.fragment,n),r=!1},d(n){n&&(s(c),s(M)),v(a,n),v(u,n),v(p,n)}}}function ws(Z){let a,c,u,M="Sortie attendue :",p,r,n,i,f="Ce qui se passe dans cette étape finale :",T,U,B="<li>Nous initialisons un modèle <em>Hugging Face</em> en utilisant la classe <code>InferenceClientModel</code></li> <li>Nous créons notre agent (Alfred) comme un <code>CodeAgent</code>, qui peut exécuter du code Python pour résoudre des problèmes</li> <li>Nous demandons à Alfred de récupérer des informations sur une invitée nommée “Lady Ada Lovelace”</li>",$;return a=new Q({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBDb2RlQWdlbnQlMkMlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCUwQSUwQSUyMyUyMEluaXRpYWxpc2VyJTIwbGUlMjBtb2QlQzMlQThsZSUyMEh1Z2dpbmclMjBGYWNlJTBBbW9kZWwlMjAlM0QlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCgpJTBBJTBBJTIzJTIwQ3IlQzMlQTllciUyMEFsZnJlZCUyQyUyMG5vdHJlJTIwYWdlbnQlMjBkZSUyMGdhbGElMkMlMjBhdmVjJTIwbCdvdXRpbCUyMGQnaW5mb3JtYXRpb25zJTIwc3VyJTIwbGVzJTIwaW52aXQlQzMlQTlzJTBBYWxmcmVkJTIwJTNEJTIwQ29kZUFnZW50KHRvb2xzJTNEJTVCZ3Vlc3RfaW5mb190b29sJTVEJTJDJTIwbW9kZWwlM0Rtb2RlbCklMEElMEElMjMlMjBFeGVtcGxlJTIwZGUlMjByZXF1JUMzJUFBdGUlMjBxdSdBbGZyZWQlMjBwb3VycmFpdCUyMHJlY2V2b2lyJTIwcGVuZGFudCUyMGxlJTIwZ2FsYSUwQXJlc3BvbnNlJTIwJTNEJTIwYWxmcmVkLnJ1biglMjJQYXJsZXotbW9pJTIwZGUlMjBub3RyZSUyMGludml0JUMzJUE5ZSUyMG5vbW0lQzMlQTllJTIwJ0xhZHklMjBBZGElMjBMb3ZlbGFjZScuJTIyKSUwQSUwQXByaW50KCUyMiVGMCU5RiU4RSVBOSUyMFIlQzMlQTlwb25zZSUyMGQnQWxmcmVkJTIwJTNBJTIyKSUwQXByaW50KHJlc3BvbnNlKQ==",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, InferenceClientModel

<span class="hljs-comment"># Initialiser le modèle Hugging Face</span>
model = InferenceClientModel()

<span class="hljs-comment"># Créer Alfred, notre agent de gala, avec l&#x27;outil d&#x27;informations sur les invités</span>
alfred = CodeAgent(tools=[guest_info_tool], model=model)

<span class="hljs-comment"># Exemple de requête qu&#x27;Alfred pourrait recevoir pendant le gala</span>
response = alfred.run(<span class="hljs-string">&quot;Parlez-moi de notre invitée nommée &#x27;Lady Ada Lovelace&#x27;.&quot;</span>)

<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;🎩 Réponse d&#x27;Alfred :&quot;</span>)
<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),r=new Q({props:{code:"JUYwJTlGJThFJUE5JTIwUiVDMyVBOXBvbnNlJTIwZCdBbGZyZWQlMjAlM0ElMEFCYXMlQzMlQTklMjBzdXIlMjBsZXMlMjBpbmZvcm1hdGlvbnMlMjBxdWUlMjBqJ2FpJTIwciVDMyVBOWN1cCVDMyVBOXIlQzMlQTllcyUyQyUyMExhZHklMjBBZGElMjBMb3ZlbGFjZSUyMGVzdCUyMHVuZSUyMG1hdGglQzMlQTltYXRpY2llbm5lJTIwZXN0aW0lQzMlQTllJTIwZXQlMjBhbWllLiUyMEVsbGUlMjBlc3QlMjByZW5vbW0lQzMlQTllJTIwcG91ciUyMHNvbiUyMHRyYXZhaWwlMjBwaW9ubmllciUyMGVuJTIwbWF0aCVDMyVBOW1hdGlxdWVzJTIwZXQlMjBlbiUyMGluZm9ybWF0aXF1ZSUyQyUyMHNvdXZlbnQlMjBjJUMzJUE5bCVDMyVBOWJyJUMzJUE5ZSUyMGNvbW1lJTIwbGElMjBwcmVtaSVDMyVBOHJlJTIwcHJvZ3JhbW1ldXNlJTIwaW5mb3JtYXRpcXVlJTIwZW4lMjByYWlzb24lMjBkZSUyMHNvbiUyMHRyYXZhaWwlMjBzdXIlMjBsYSUyMG1hY2hpbmUlMjBhbmFseXRpcXVlJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4lMjBTb24lMjBhZHJlc3NlJTIwZS1tYWlsJTIwZXN0JTIwYWRhLmxvdmVsYWNlJTQwZXhhbXBsZS5jb20u",highlighted:`🎩 Réponse <span class="hljs-keyword">d</span>&#x27;Alfred :
Basé sur les informations <span class="hljs-keyword">que</span> j&#x27;ai récupérées, Lady Ada Lovelace <span class="hljs-keyword">est</span> une mathématicienne estimé<span class="hljs-keyword">e</span> et amie. Elle <span class="hljs-keyword">est</span> renommé<span class="hljs-keyword">e</span> pour son travail pionnier <span class="hljs-keyword">en</span> mathématiques et <span class="hljs-keyword">en</span> informatique, souvent cé<span class="hljs-keyword">l</span>é<span class="hljs-keyword">br</span>é<span class="hljs-keyword">e</span> comme <span class="hljs-keyword">la</span> première programmeuse informatique <span class="hljs-keyword">en</span> raison <span class="hljs-keyword">de</span> son travail sur <span class="hljs-keyword">la</span> machine analytique <span class="hljs-keyword">de</span> Charles Babbage. Son adresse <span class="hljs-keyword">e</span>-mail <span class="hljs-keyword">est</span> ada.lovelace@example.com.`,wrap:!1}}),{c(){b(a.$$.fragment),c=d(),u=J("p"),u.textContent=M,p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){h(a.$$.fragment,l),c=m(l),u=j(l,"P",{"data-svelte-h":!0}),w(u)!=="svelte-cs180i"&&(u.textContent=M),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-32t9d6"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-jdajlq"&&(U.innerHTML=B)},m(l,y){C(a,l,y),t(l,c,y),t(l,u,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p:x,i(l){$||(I(a.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(a.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(c),s(u),s(p),s(n),s(i),s(T),s(U)),v(a,l),v(r,l)}}}function fs(Z){let a,c,u,M="Sortie attendue :",p,r,n,i,f="Ce qui se passe dans cette étape finale :",T,U,B="<li>Nous initialisons un modèle <em>Hugging Face</em> en utilisant la classe <code>HuggingFaceInferenceAPI</code></li> <li>Nous créons notre agent (Alfred) comme un <code>AgentWorkflow</code>, incluant l’outil que nous venons de créer</li> <li>Nous demandons à Alfred de récupérer des informations sur une invitée nommée “Lady Ada Lovelace”</li>",$;return a=new Q({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjBBZ2VudFdvcmtmbG93JTBBZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEElMEElMjMlMjBJbml0aWFsaXNlciUyMGxlJTIwbW9kJUMzJUE4bGUlMjBIdWdnaW5nJTIwRmFjZSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTBBJTIzJTIwQ3IlQzMlQTllciUyMEFsZnJlZCUyQyUyMG5vdHJlJTIwYWdlbnQlMjBkZSUyMGdhbGElMkMlMjBhdmVjJTIwbCdvdXRpbCUyMGQnaW5mb3JtYXRpb25zJTIwc3VyJTIwbGVzJTIwaW52aXQlQzMlQTlzJTBBYWxmcmVkJTIwJTNEJTIwQWdlbnRXb3JrZmxvdy5mcm9tX3Rvb2xzX29yX2Z1bmN0aW9ucyglMEElMjAlMjAlMjAlMjAlNUJndWVzdF9pbmZvX3Rvb2wlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMkMlMEEpJTBBJTBBJTIzJTIwRXhlbXBsZSUyMGRlJTIwcmVxdSVDMyVBQXRlJTIwcXUnQWxmcmVkJTIwcG91cnJhaXQlMjByZWNldm9pciUyMHBlbmRhbnQlMjBsZSUyMGdhbGElMEFyZXNwb25zZSUyMCUzRCUyMGF3YWl0JTIwYWxmcmVkLnJ1biglMjJQYXJsZXotbW9pJTIwZGUlMjBub3RyZSUyMGludml0JUMzJUE5ZSUyMG5vbW0lQzMlQTllJTIwJ0xhZHklMjBBZGElMjBMb3ZlbGFjZScuJTIyKSUwQSUwQXByaW50KCUyMiVGMCU5RiU4RSVBOSUyMFIlQzMlQTlwb25zZSUyMGQnQWxmcmVkJTIwJTNBJTIyKSUwQXByaW50KHJlc3BvbnNlKQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.agent.workflow <span class="hljs-keyword">import</span> AgentWorkflow
<span class="hljs-keyword">from</span> llama_index.llms.huggingface_api <span class="hljs-keyword">import</span> HuggingFaceInferenceAPI

<span class="hljs-comment"># Initialiser le modèle Hugging Face</span>
llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)

<span class="hljs-comment"># Créer Alfred, notre agent de gala, avec l&#x27;outil d&#x27;informations sur les invités</span>
alfred = AgentWorkflow.from_tools_or_functions(
    [guest_info_tool],
    llm=llm,
)

<span class="hljs-comment"># Exemple de requête qu&#x27;Alfred pourrait recevoir pendant le gala</span>
response = <span class="hljs-keyword">await</span> alfred.run(<span class="hljs-string">&quot;Parlez-moi de notre invitée nommée &#x27;Lady Ada Lovelace&#x27;.&quot;</span>)

<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;🎩 Réponse d&#x27;Alfred :&quot;</span>)
<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),r=new Q({props:{code:"JUYwJTlGJThFJUE5JTIwUiVDMyVBOXBvbnNlJTIwZCdBbGZyZWQlMjAlM0ElMEFMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlc3QlMjB1bmUlMjBtYXRoJUMzJUE5bWF0aWNpZW5uZSUyMGVzdGltJUMzJUE5ZSUyMGV0JTIwYW1pZSUyQyUyMHJlbm9tbSVDMyVBOWUlMjBwb3VyJTIwc29uJTIwdHJhdmFpbCUyMHBpb25uaWVyJTIwZW4lMjBtYXRoJUMzJUE5bWF0aXF1ZXMlMjBldCUyMGVuJTIwaW5mb3JtYXRpcXVlLiUyMEVsbGUlMjBlc3QlMjBjJUMzJUE5bCVDMyVBOWJyJUMzJUE5ZSUyMGNvbW1lJTIwbGElMjBwcmVtaSVDMyVBOHJlJTIwcHJvZ3JhbW1ldXNlJTIwaW5mb3JtYXRpcXVlJTIwZW4lMjByYWlzb24lMjBkZSUyMHNvbiUyMHRyYXZhaWwlMjBzdXIlMjBsYSUyMG1hY2hpbmUlMjBhbmFseXRpcXVlJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4lMjBTb24lMjBlLW1haWwlMjBlc3QlMjBhZGEubG92ZWxhY2UlNDBleGFtcGxlLmNvbS4=",highlighted:`🎩 Réponse <span class="hljs-keyword">d</span>&#x27;Alfred :
Lady Ada Lovelace <span class="hljs-keyword">est</span> une mathématicienne estimé<span class="hljs-keyword">e</span> et amie, renommé<span class="hljs-keyword">e</span> pour son travail pionnier <span class="hljs-keyword">en</span> mathématiques et <span class="hljs-keyword">en</span> informatique. Elle <span class="hljs-keyword">est</span> cé<span class="hljs-keyword">l</span>é<span class="hljs-keyword">br</span>é<span class="hljs-keyword">e</span> comme <span class="hljs-keyword">la</span> première programmeuse informatique <span class="hljs-keyword">en</span> raison <span class="hljs-keyword">de</span> son travail sur <span class="hljs-keyword">la</span> machine analytique <span class="hljs-keyword">de</span> Charles Babbage. Son <span class="hljs-keyword">e</span>-mail <span class="hljs-keyword">est</span> ada.lovelace@example.com.`,wrap:!1}}),{c(){b(a.$$.fragment),c=d(),u=J("p"),u.textContent=M,p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){h(a.$$.fragment,l),c=m(l),u=j(l,"P",{"data-svelte-h":!0}),w(u)!=="svelte-cs180i"&&(u.textContent=M),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-32t9d6"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-13ypfzw"&&(U.innerHTML=B)},m(l,y){C(a,l,y),t(l,c,y),t(l,u,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p:x,i(l){$||(I(a.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(a.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(c),s(u),s(p),s(n),s(i),s(T),s(U)),v(a,l),v(r,l)}}}function Ts(Z){let a,c,u,M="Sortie attendue :",p,r,n,i,f="Ce qui se passe dans cette étape finale :",T,U,B="<li>Nous initialisons un modèle <em>Hugging Face</em> en utilisant la classe <code>HuggingFaceEndpoint</code>. Nous générons aussi une interface de chat et ajoutons les outils.</li> <li>Nous créons notre agent (Alfred) comme un <code>StateGraph</code>, qui combine 2 nœuds (<code>assistant</code>, <code>tools</code>) en utilisant une arête</li> <li>Nous demandons à Alfred de récupérer des informations sur une invitée nommée “Lady Ada Lovelace”</li>",$;return a=new Q({props:{code:"ZnJvbSUyMHR5cGluZyUyMGltcG9ydCUyMFR5cGVkRGljdCUyQyUyMEFubm90YXRlZCUwQWZyb20lMjBsYW5nZ3JhcGguZ3JhcGgubWVzc2FnZSUyMGltcG9ydCUyMGFkZF9tZXNzYWdlcyUwQWZyb20lMjBsYW5nY2hhaW5fY29yZS5tZXNzYWdlcyUyMGltcG9ydCUyMEFueU1lc3NhZ2UlMkMlMjBIdW1hbk1lc3NhZ2UlMkMlMjBBSU1lc3NhZ2UlMEFmcm9tJTIwbGFuZ2dyYXBoLnByZWJ1aWx0JTIwaW1wb3J0JTIwVG9vbE5vZGUlMEFmcm9tJTIwbGFuZ2dyYXBoLmdyYXBoJTIwaW1wb3J0JTIwU1RBUlQlMkMlMjBTdGF0ZUdyYXBoJTBBZnJvbSUyMGxhbmdncmFwaC5wcmVidWlsdCUyMGltcG9ydCUyMHRvb2xzX2NvbmRpdGlvbiUwQWZyb20lMjBsYW5nY2hhaW5faHVnZ2luZ2ZhY2UlMjBpbXBvcnQlMjBIdWdnaW5nRmFjZUVuZHBvaW50JTJDJTIwQ2hhdEh1Z2dpbmdGYWNlJTBBJTBBJTIzJTIwRyVDMyVBOW4lQzMlQTlyZXIlMjBsJ2ludGVyZmFjZSUyMGRlJTIwY2hhdCUyQyUyMGluY2x1YW50JTIwbGVzJTIwb3V0aWxzJTBBbGxtJTIwJTNEJTIwSHVnZ2luZ0ZhY2VFbmRwb2ludCglMEElMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIyUXdlbiUyRlF3ZW4yLjUtQ29kZXItMzJCLUluc3RydWN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwaHVnZ2luZ2ZhY2VodWJfYXBpX3Rva2VuJTNESFVHR0lOR0ZBQ0VIVUJfQVBJX1RPS0VOJTJDJTBBKSUwQSUwQWNoYXQlMjAlM0QlMjBDaGF0SHVnZ2luZ0ZhY2UobGxtJTNEbGxtJTJDJTIwdmVyYm9zZSUzRFRydWUpJTBBdG9vbHMlMjAlM0QlMjAlNUJndWVzdF9pbmZvX3Rvb2wlNUQlMEFjaGF0X3dpdGhfdG9vbHMlMjAlM0QlMjBjaGF0LmJpbmRfdG9vbHModG9vbHMpJTBBJTBBJTIzJTIwRyVDMyVBOW4lQzMlQTlyZXIlMjBsJ0FnZW50U3RhdGUlMjBldCUyMGxlJTIwZ3JhcGhlJTIwZCdhZ2VudCUwQWNsYXNzJTIwQWdlbnRTdGF0ZShUeXBlZERpY3QpJTNBJTBBJTIwJTIwJTIwJTIwbWVzc2FnZXMlM0ElMjBBbm5vdGF0ZWQlNUJsaXN0JTVCQW55TWVzc2FnZSU1RCUyQyUyMGFkZF9tZXNzYWdlcyU1RCUwQSUwQWRlZiUyMGFzc2lzdGFudChzdGF0ZSUzQSUyMEFnZW50U3RhdGUpJTNBJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIybWVzc2FnZXMlMjIlM0ElMjAlNUJjaGF0X3dpdGhfdG9vbHMuaW52b2tlKHN0YXRlJTVCJTIybWVzc2FnZXMlMjIlNUQpJTVEJTJDJTBBJTIwJTIwJTIwJTIwJTdEJTBBJTBBJTIzJTIzJTIwTGUlMjBncmFwaGUlMEFidWlsZGVyJTIwJTNEJTIwU3RhdGVHcmFwaChBZ2VudFN0YXRlKSUwQSUwQSUyMyUyMEQlQzMlQTlmaW5pciUyMGxlcyUyMG4lQzUlOTN1ZHMlMjAlM0ElMjBpbHMlMjBmb250JTIwbGUlMjB0cmF2YWlsJTBBYnVpbGRlci5hZGRfbm9kZSglMjJhc3Npc3RhbnQlMjIlMkMlMjBhc3Npc3RhbnQpJTBBYnVpbGRlci5hZGRfbm9kZSglMjJ0b29scyUyMiUyQyUyMFRvb2xOb2RlKHRvb2xzKSklMEElMEElMjMlMjBEJUMzJUE5ZmluaXIlMjBsZXMlMjBhciVDMyVBQXRlcyUyMCUzQSUyMGVsbGVzJTIwZCVDMyVBOXRlcm1pbmVudCUyMGNvbW1lbnQlMjBsZSUyMGZsdXglMjBkZSUyMGNvbnRyJUMzJUI0bGUlMjBzZSUyMGQlQzMlQTlwbGFjZSUwQWJ1aWxkZXIuYWRkX2VkZ2UoU1RBUlQlMkMlMjAlMjJhc3Npc3RhbnQlMjIpJTBBYnVpbGRlci5hZGRfY29uZGl0aW9uYWxfZWRnZXMoJTBBJTIwJTIwJTIwJTIwJTIyYXNzaXN0YW50JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIzJTIwU2klMjBsZSUyMGRlcm5pZXIlMjBtZXNzYWdlJTIwbiVDMyVBOWNlc3NpdGUlMjB1biUyMG91dGlsJTJDJTIwcm91dGVyJTIwdmVycyUyMGxlcyUyMG91dGlscyUwQSUyMCUyMCUyMCUyMCUyMyUyMFNpbm9uJTJDJTIwZm91cm5pciUyMHVuZSUyMHIlQzMlQTlwb25zZSUyMGRpcmVjdGUlMEElMjAlMjAlMjAlMjB0b29sc19jb25kaXRpb24lMkMlMEEpJTBBYnVpbGRlci5hZGRfZWRnZSglMjJ0b29scyUyMiUyQyUyMCUyMmFzc2lzdGFudCUyMiklMEFhbGZyZWQlMjAlM0QlMjBidWlsZGVyLmNvbXBpbGUoKSUwQSUwQW1lc3NhZ2VzJTIwJTNEJTIwJTVCSHVtYW5NZXNzYWdlKGNvbnRlbnQlM0QlMjJQYXJsZXotbW9pJTIwZGUlMjBub3RyZSUyMGludml0JUMzJUE5ZSUyMG5vbW0lQzMlQTllJTIwJ0xhZHklMjBBZGElMjBMb3ZlbGFjZScuJTIyKSU1RCUwQXJlc3BvbnNlJTIwJTNEJTIwYWxmcmVkLmludm9rZSglN0IlMjJtZXNzYWdlcyUyMiUzQSUyMG1lc3NhZ2VzJTdEKSUwQSUwQXByaW50KCUyMiVGMCU5RiU4RSVBOSUyMFIlQzMlQTlwb25zZSUyMGQnQWxmcmVkJTIwJTNBJTIyKSUwQXByaW50KHJlc3BvbnNlJTVCJ21lc3NhZ2VzJyU1RCU1Qi0xJTVELmNvbnRlbnQp",highlighted:`<span class="hljs-keyword">from</span> typing <span class="hljs-keyword">import</span> TypedDict, Annotated
<span class="hljs-keyword">from</span> langgraph.graph.message <span class="hljs-keyword">import</span> add_messages
<span class="hljs-keyword">from</span> langchain_core.messages <span class="hljs-keyword">import</span> AnyMessage, HumanMessage, AIMessage
<span class="hljs-keyword">from</span> langgraph.prebuilt <span class="hljs-keyword">import</span> ToolNode
<span class="hljs-keyword">from</span> langgraph.graph <span class="hljs-keyword">import</span> START, StateGraph
<span class="hljs-keyword">from</span> langgraph.prebuilt <span class="hljs-keyword">import</span> tools_condition
<span class="hljs-keyword">from</span> langchain_huggingface <span class="hljs-keyword">import</span> HuggingFaceEndpoint, ChatHuggingFace

<span class="hljs-comment"># Générer l&#x27;interface de chat, incluant les outils</span>
llm = HuggingFaceEndpoint(
    repo_id=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>,
    huggingfacehub_api_token=HUGGINGFACEHUB_API_TOKEN,
)

chat = ChatHuggingFace(llm=llm, verbose=<span class="hljs-literal">True</span>)
tools = [guest_info_tool]
chat_with_tools = chat.bind_tools(tools)

<span class="hljs-comment"># Générer l&#x27;AgentState et le graphe d&#x27;agent</span>
<span class="hljs-keyword">class</span> <span class="hljs-title class_">AgentState</span>(<span class="hljs-title class_ inherited__">TypedDict</span>):
    messages: Annotated[<span class="hljs-built_in">list</span>[AnyMessage], add_messages]

<span class="hljs-keyword">def</span> <span class="hljs-title function_">assistant</span>(<span class="hljs-params">state: AgentState</span>):
    <span class="hljs-keyword">return</span> {
        <span class="hljs-string">&quot;messages&quot;</span>: [chat_with_tools.invoke(state[<span class="hljs-string">&quot;messages&quot;</span>])],
    }

<span class="hljs-comment">## Le graphe</span>
builder = StateGraph(AgentState)

<span class="hljs-comment"># Définir les nœuds : ils font le travail</span>
builder.add_node(<span class="hljs-string">&quot;assistant&quot;</span>, assistant)
builder.add_node(<span class="hljs-string">&quot;tools&quot;</span>, ToolNode(tools))

<span class="hljs-comment"># Définir les arêtes : elles déterminent comment le flux de contrôle se déplace</span>
builder.add_edge(START, <span class="hljs-string">&quot;assistant&quot;</span>)
builder.add_conditional_edges(
    <span class="hljs-string">&quot;assistant&quot;</span>,
    <span class="hljs-comment"># Si le dernier message nécessite un outil, router vers les outils</span>
    <span class="hljs-comment"># Sinon, fournir une réponse directe</span>
    tools_condition,
)
builder.add_edge(<span class="hljs-string">&quot;tools&quot;</span>, <span class="hljs-string">&quot;assistant&quot;</span>)
alfred = builder.<span class="hljs-built_in">compile</span>()

messages = [HumanMessage(content=<span class="hljs-string">&quot;Parlez-moi de notre invitée nommée &#x27;Lady Ada Lovelace&#x27;.&quot;</span>)]
response = alfred.invoke({<span class="hljs-string">&quot;messages&quot;</span>: messages})

<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;🎩 Réponse d&#x27;Alfred :&quot;</span>)
<span class="hljs-built_in">print</span>(response[<span class="hljs-string">&#x27;messages&#x27;</span>][-<span class="hljs-number">1</span>].content)`,wrap:!1}}),r=new Q({props:{code:"JUYwJTlGJThFJUE5JTIwUiVDMyVBOXBvbnNlJTIwZCdBbGZyZWQlMjAlM0ElMEFMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlc3QlMjB1bmUlMjBtYXRoJUMzJUE5bWF0aWNpZW5uZSUyMGVzdGltJUMzJUE5ZSUyMGV0JTIwcGlvbm5pJUMzJUE4cmUlMjBlbiUyMGluZm9ybWF0aXF1ZSUyQyUyMHNvdXZlbnQlMjBjJUMzJUE5bCVDMyVBOWJyJUMzJUE5ZSUyMGNvbW1lJTIwbGElMjBwcmVtaSVDMyVBOHJlJTIwcHJvZ3JhbW1ldXNlJTIwaW5mb3JtYXRpcXVlJTIwZW4lMjByYWlzb24lMjBkZSUyMHNvbiUyMHRyYXZhaWwlMjBzdXIlMjBsYSUyMG1hY2hpbmUlMjBhbmFseXRpcXVlJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4=",highlighted:`🎩 Réponse <span class="hljs-keyword">d</span>&#x27;Alfred :
Lady Ada Lovelace <span class="hljs-keyword">est</span> une mathématicienne estimé<span class="hljs-keyword">e</span> et pionnière <span class="hljs-keyword">en</span> informatique, souvent cé<span class="hljs-keyword">l</span>é<span class="hljs-keyword">br</span>é<span class="hljs-keyword">e</span> comme <span class="hljs-keyword">la</span> première programmeuse informatique <span class="hljs-keyword">en</span> raison <span class="hljs-keyword">de</span> son travail sur <span class="hljs-keyword">la</span> machine analytique <span class="hljs-keyword">de</span> Charles Babbage.`,wrap:!1}}),{c(){b(a.$$.fragment),c=d(),u=J("p"),u.textContent=M,p=d(),b(r.$$.fragment),n=d(),i=J("p"),i.textContent=f,T=d(),U=J("ul"),U.innerHTML=B},l(l){h(a.$$.fragment,l),c=m(l),u=j(l,"P",{"data-svelte-h":!0}),w(u)!=="svelte-cs180i"&&(u.textContent=M),p=m(l),h(r.$$.fragment,l),n=m(l),i=j(l,"P",{"data-svelte-h":!0}),w(i)!=="svelte-32t9d6"&&(i.textContent=f),T=m(l),U=j(l,"UL",{"data-svelte-h":!0}),w(U)!=="svelte-19co8ju"&&(U.innerHTML=B)},m(l,y){C(a,l,y),t(l,c,y),t(l,u,y),t(l,p,y),C(r,l,y),t(l,n,y),t(l,i,y),t(l,T,y),t(l,U,y),$=!0},p:x,i(l){$||(I(a.$$.fragment,l),I(r.$$.fragment,l),$=!0)},o(l){g(a.$$.fragment,l),g(r.$$.fragment,l),$=!1},d(l){l&&(s(c),s(u),s(p),s(n),s(i),s(T),s(U)),v(a,l),v(r,l)}}}function bs(Z){let a,c,u,M,p,r;return a=new E({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ws]},$$scope:{ctx:Z}}}),u=new E({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[fs]},$$scope:{ctx:Z}}}),p=new E({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Ts]},$$scope:{ctx:Z}}}),{c(){b(a.$$.fragment),c=d(),b(u.$$.fragment),M=d(),b(p.$$.fragment)},l(n){h(a.$$.fragment,n),c=m(n),h(u.$$.fragment,n),M=m(n),h(p.$$.fragment,n)},m(n,i){C(a,n,i),t(n,c,i),C(u,n,i),t(n,M,i),C(p,n,i),r=!0},p(n,i){const f={};i&2&&(f.$$scope={dirty:i,ctx:n}),a.$set(f);const T={};i&2&&(T.$$scope={dirty:i,ctx:n}),u.$set(T);const U={};i&2&&(U.$$scope={dirty:i,ctx:n}),p.$set(U)},i(n){r||(I(a.$$.fragment,n),I(u.$$.fragment,n),I(p.$$.fragment,n),r=!0)},o(n){g(a.$$.fragment,n),g(u.$$.fragment,n),g(p.$$.fragment,n),r=!1},d(n){n&&(s(c),s(M)),v(a,n),v(u,n),v(p,n)}}}function hs(Z){let a,c,u="Quand vous avez terminé, implémentez votre outil de récupération d’invités dans le fichier <code>retriever.py</code>.";return{c(){a=R(`Essayez d'étendre l'outil de récupération pour aussi retourner des amorces de conversation basées sur les intérêts ou l'arrière-plan de chaque invité. Comment modifieriez-vous l'outil pour accomplir cela ?
`),c=J("p"),c.innerHTML=u},l(M){a=X(M,`Essayez d'étendre l'outil de récupération pour aussi retourner des amorces de conversation basées sur les intérêts ou l'arrière-plan de chaque invité. Comment modifieriez-vous l'outil pour accomplir cela ?
`),c=j(M,"P",{"data-svelte-h":!0}),w(c)!=="svelte-qoyqb"&&(c.innerHTML=u)},m(M,p){t(M,a,p),t(M,c,p)},p:x,d(M){M&&(s(a),s(c))}}}function Cs(Z){let a,c,u,M,p,r,n,i="Alfred, votre agent de confiance, se prépare pour le gala le plus extravagant du siècle. Pour s’assurer que l’événement se déroule sans encombre, Alfred a besoin d’un accès rapide aux informations à jour sur chaque invité. Aidons Alfred en créant un outil personnalisé de génération augmentée par récupération (<em>Retrieval-Augmented Generation</em> - RAG), alimenté par notre jeu de données personnalisé.",f,T,U,B,$="Imaginez Alfred se mêlant aux invités, ayant besoin de se rappeler des détails spécifiques sur chaque personne à tout moment. Un <em>LLM</em> traditionnel pourrait avoir du mal avec cette tâche parce que :",l,y,V="<li>La liste des invités est spécifique à votre événement et ne fait pas partie des données d’entraînement du modèle</li> <li>Les informations sur les invités peuvent changer ou être mises à jour fréquemment</li> <li>Alfred doit récupérer des détails précis comme les adresses <em>e-mail</em></li>",$e,H,Tl="C’est là que la génération augmentée par récupération (<em>Retrieval Augmented Generation</em> - RAG) brille ! En combinant un système de récupération avec un <em>LLM</em>, Alfred peut accéder à des informations précises et à jour sur vos invités à la demande.",Be,N,Ge,Y,Qe,L,bl="Dans cette unité, nous développerons notre agent au sein d’un <em>HF Space</em>, sous la forme d’un projet Python structuré. Cette approche nous aide à maintenir un code propre et modulaire en organisant différentes fonctionnalités dans des fichiers séparés. De plus, cela permet un cas d’usage plus réaliste où vous déploieriez l’application pour une utilisation publique.",Ve,D,We,P,hl="<li><strong><code>tools.py</code></strong> – Fournit des outils auxiliaires pour l’agent.</li> <li><strong><code>retriever.py</code></strong> – Implémente les fonctions de récupération pour soutenir l’accès à la connaissance.</li> <li><strong><code>app.py</code></strong> – Intègre tous les composants dans un agent entièrement fonctionnel, que nous finaliserons dans la dernière partie de cette unité.</li>",Re,O,Cl='Pour une référence pratique, consultez <a href="https://huggingface.co/spaces/agents-course/Unit_3_Agentic_RAG" rel="nofollow">ce <em>HF Space</em></a>, où le <em>RAG agentique</em> développé dans cette unité est en direct. N’hésitez pas à le cloner et à expérimenter !',Xe,K,Il="Vous pouvez tester directement l’agent ci-dessous :",xe,z,gl,ze,ee,ke,le,vl='Notre jeu de données <a href="https://huggingface.co/datasets/agents-course/unit3-invitees/" rel="nofollow"><code>agents-course/unit3-invitees</code></a> contient les champs suivants pour chaque invité :',Ee,se,Zl="<li><strong>Name</strong> : Nom complet de l’invité</li> <li><strong>Relation</strong> : Comment l’invité est lié à l’hôte</li> <li><strong>Description</strong> : Une brève biographie ou des faits intéressants sur l’invité</li> <li><strong>Email Address</strong> : Informations de contact pour envoyer des invitations ou des suivis</li>",Ne,te,$l="Voici un aperçu du jeu de données :",_e,k,Bl,Se,_,qe,ne,Ae,ae,Gl="Nous allons créer un outil personnalisé qu’Alfred peut utiliser pour récupérer rapidement les informations sur les invités pendant le gala. Décomposons cela en trois étapes gérables :",Fe,ie,Ql="<li>Charger et préparer le jeu de données</li> <li>Créer l’outil de récupération</li> <li>Intégrer l’outil avec Alfred</li>",He,re,Vl="Commençons par charger et préparer le jeu de données !",Ye,oe,Le,pe,Wl="Tout d’abord, nous devons transformer nos données brutes sur les invités en un format optimisé pour la récupération.",De,S,Pe,ue,Rl="Dans le code ci-dessus, nous :",Oe,Me,Xl="<li>Chargeons le jeu de données</li> <li>Convertissons chaque entrée d’invité en un objet <code>Document</code> avec du contenu formaté</li> <li>Stockons les objets <code>Document</code> dans une liste</li>",Ke,ce,xl="Cela signifie que nous avons toutes nos données bien disponibles pour pouvoir commencer à configurer notre récupération.",el,de,ll,me,zl="Maintenant, créons un outil personnalisé qu’Alfred peut utiliser pour rechercher dans nos informations sur les invités.",sl,q,tl,ye,nl,Ue,kl="Enfin, assemblons tout en créant notre agent et en l’équipant de notre outil personnalisé :",al,A,il,Je,rl,je,El="Pendant le gala, une conversation pourrait se dérouler comme ceci :",ol,we,Nl="<strong>Vous :</strong> “Alfred, qui est ce monsieur qui parle à l’ambassadeur ?”",pl,fe,_l="<strong>Alfred :</strong> <em>recherche rapidement dans la base de données des invités</em> “C’est le Dr. Nikola Tesla, monsieur. C’est un vieil ami de vos jours d’université. Il vient récemment de breveter un nouveau système de transmission d’énergie sans fil et serait ravi d’en discuter avec vous. N’oubliez pas qu’il est passionné par les pigeons, donc cela pourrait faire une bonne conversation.”",ul,Te,Ml,be,cl,he,Sl="Maintenant qu’Alfred peut récupérer des informations sur les invités, considérez comment vous pourriez améliorer ce système :",dl,Ce,ql='<li><strong>Améliorer le récupérateur</strong> pour utiliser un algorithme plus sophistiqué comme <a href="https://www.sbert.net/" rel="nofollow">sentence-transformers</a></li> <li><strong>Implémenter une mémoire de conversation</strong> pour qu’Alfred se souvienne des interactions précédentes</li> <li><strong>Combiner avec la recherche web</strong> pour obtenir les dernières informations sur les invités inconnus</li> <li><strong>Intégrer plusieurs index</strong> pour obtenir des informations plus complètes à partir de sources vérifiées</li>',ml,Ie,Al="Maintenant Alfred est entièrement équipé pour gérer sans effort les questions sur les invités, s’assurant que votre gala soit mémorisé comme l’événement le plus sophistiqué et délicieux du siècle !",yl,F,Ul,ge,Jl,Ze,jl;return p=new W({props:{title:"Création d’un outil RAG pour les histoires d’invités",local:"création-dun-outil-rag-pour-les-histoires-dinvités",headingTag:"h1"}}),T=new W({props:{title:"Pourquoi le RAG pour un gala ?",local:"pourquoi-le-rag-pour-un-gala-",headingTag:"h2"}}),N=new ve({props:{$$slots:{default:[is]},$$scope:{ctx:Z}}}),Y=new W({props:{title:"Configuration de notre application",local:"configuration-de-notre-application",headingTag:"h2"}}),D=new W({props:{title:"Structure du projet",local:"structure-du-projet",headingTag:"h3"}}),ee=new W({props:{title:"Aperçu du jeu de données",local:"aperçu-du-jeu-de-données",headingTag:"h2"}}),_=new ve({props:{$$slots:{default:[rs]},$$scope:{ctx:Z}}}),ne=new W({props:{title:"Construction de l’outil livre d’or",local:"construction-de-loutil-livre-dor",headingTag:"h2"}}),oe=new W({props:{title:"Étape 1 : Charger et préparer le jeu de données",local:"étape-1--charger-et-préparer-le-jeu-de-données",headingTag:"h3"}}),S=new fl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[Ms]},$$scope:{ctx:Z}}}),de=new W({props:{title:"Étape 2 : Créer l’outil de récupération",local:"étape-2--créer-loutil-de-récupération",headingTag:"h3"}}),q=new fl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[js]},$$scope:{ctx:Z}}}),ye=new W({props:{title:"Étape 3 : Intégrer l’outil avec Alfred",local:"étape-3--intégrer-loutil-avec-alfred",headingTag:"h3"}}),A=new fl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[bs]},$$scope:{ctx:Z}}}),Je=new W({props:{title:"Exemple d’interaction",local:"exemple-dinteraction",headingTag:"h2"}}),Te=new Q({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIybmFtZSUyMiUzQSUyMCUyMkRyLiUyME5pa29sYSUyMFRlc2xhJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycmVsYXRpb24lMjIlM0ElMjAlMjJ2aWVpbCUyMGFtaSUyMGRlcyUyMGpvdXJzJTIwZCd1bml2ZXJzaXQlQzMlQTklMjIlMkMlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkxlJTIwRHIuJTIwTmlrb2xhJTIwVGVzbGElMjBlc3QlMjB1biUyMHZpZWlsJTIwYW1pJTIwZGUlMjB2b3MlMjBqb3VycyUyMGQndW5pdmVyc2l0JUMzJUE5LiUyMElsJTIwdmllbnQlMjByJUMzJUE5Y2VtbWVudCUyMGRlJTIwYnJldmV0ZXIlMjB1biUyMG5vdXZlYXUlMjBzeXN0JUMzJUE4bWUlMjBkZSUyMHRyYW5zbWlzc2lvbiUyMGQnJUMzJUE5bmVyZ2llJTIwc2FucyUyMGZpbCUyMGV0JTIwc2VyYWl0JTIwcmF2aSUyMGQnZW4lMjBkaXNjdXRlciUyMGF2ZWMlMjB2b3VzLiUyME4nb3VibGlleiUyMHBhcyUyMHF1J2lsJTIwZXN0JTIwcGFzc2lvbm4lQzMlQTklMjBwYXIlMjBsZXMlMjBwaWdlb25zJTJDJTIwZG9uYyUyMGNlbGElMjBwb3VycmFpdCUyMGZhaXJlJTIwdW5lJTIwYm9ubmUlMjBjb252ZXJzYXRpb24uJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyZW1haWwlMjIlM0ElMjAlMjJuaWtvbGEudGVzbGElNDBnbWFpbC5jb20lMjIlMEElN0Q=",highlighted:`<span class="hljs-punctuation">{</span>
    <span class="hljs-attr">&quot;name&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;Dr. Nikola Tesla&quot;</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;relation&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;vieil ami des jours d&#x27;université&quot;</span><span class="hljs-punctuation">,</span>  
    <span class="hljs-attr">&quot;description&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;Le Dr. Nikola Tesla est un vieil ami de vos jours d&#x27;université. Il vient récemment de breveter un nouveau système de transmission d&#x27;énergie sans fil et serait ravi d&#x27;en discuter avec vous. N&#x27;oubliez pas qu&#x27;il est passionné par les pigeons, donc cela pourrait faire une bonne conversation.&quot;</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;email&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;nikola.tesla@gmail.com&quot;</span>
<span class="hljs-punctuation">}</span>`,wrap:!1}}),be=new W({props:{title:"Aller plus loin",local:"aller-plus-loin",headingTag:"h2"}}),F=new ve({props:{$$slots:{default:[hs]},$$scope:{ctx:Z}}}),ge=new as({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit3/agentic-rag/invitees.mdx"}}),{c(){a=J("meta"),c=d(),u=J("p"),M=d(),b(p.$$.fragment),r=d(),n=J("p"),n.innerHTML=i,f=d(),b(T.$$.fragment),U=d(),B=J("p"),B.innerHTML=$,l=d(),y=J("ol"),y.innerHTML=V,$e=d(),H=J("p"),H.innerHTML=Tl,Be=d(),b(N.$$.fragment),Ge=d(),b(Y.$$.fragment),Qe=d(),L=J("p"),L.innerHTML=bl,Ve=d(),b(D.$$.fragment),We=d(),P=J("ul"),P.innerHTML=hl,Re=d(),O=J("p"),O.innerHTML=Cl,Xe=d(),K=J("p"),K.textContent=Il,xe=d(),z=J("iframe"),ze=d(),b(ee.$$.fragment),ke=d(),le=J("p"),le.innerHTML=vl,Ee=d(),se=J("ul"),se.innerHTML=Zl,Ne=d(),te=J("p"),te.textContent=$l,_e=d(),k=J("iframe"),Se=d(),b(_.$$.fragment),qe=d(),b(ne.$$.fragment),Ae=d(),ae=J("p"),ae.textContent=Gl,Fe=d(),ie=J("ol"),ie.innerHTML=Ql,He=d(),re=J("p"),re.textContent=Vl,Ye=d(),b(oe.$$.fragment),Le=d(),pe=J("p"),pe.textContent=Wl,De=d(),b(S.$$.fragment),Pe=d(),ue=J("p"),ue.textContent=Rl,Oe=d(),Me=J("ul"),Me.innerHTML=Xl,Ke=d(),ce=J("p"),ce.textContent=xl,el=d(),b(de.$$.fragment),ll=d(),me=J("p"),me.textContent=zl,sl=d(),b(q.$$.fragment),tl=d(),b(ye.$$.fragment),nl=d(),Ue=J("p"),Ue.textContent=kl,al=d(),b(A.$$.fragment),il=d(),b(Je.$$.fragment),rl=d(),je=J("p"),je.textContent=El,ol=d(),we=J("p"),we.innerHTML=Nl,pl=d(),fe=J("p"),fe.innerHTML=_l,ul=d(),b(Te.$$.fragment),Ml=d(),b(be.$$.fragment),cl=d(),he=J("p"),he.textContent=Sl,dl=d(),Ce=J("ol"),Ce.innerHTML=ql,ml=d(),Ie=J("p"),Ie.textContent=Al,yl=d(),b(F.$$.fragment),Ul=d(),b(ge.$$.fragment),Jl=d(),Ze=J("p"),this.h()},l(e){const o=ts("svelte-u9bgzb",document.head);a=j(o,"META",{name:!0,content:!0}),o.forEach(s),c=m(e),u=j(e,"P",{}),wl(u).forEach(s),M=m(e),h(p.$$.fragment,e),r=m(e),n=j(e,"P",{"data-svelte-h":!0}),w(n)!=="svelte-1hc3g9k"&&(n.innerHTML=i),f=m(e),h(T.$$.fragment,e),U=m(e),B=j(e,"P",{"data-svelte-h":!0}),w(B)!=="svelte-t22r1r"&&(B.innerHTML=$),l=m(e),y=j(e,"OL",{"data-svelte-h":!0}),w(y)!=="svelte-r01n2g"&&(y.innerHTML=V),$e=m(e),H=j(e,"P",{"data-svelte-h":!0}),w(H)!=="svelte-rhyw4v"&&(H.innerHTML=Tl),Be=m(e),h(N.$$.fragment,e),Ge=m(e),h(Y.$$.fragment,e),Qe=m(e),L=j(e,"P",{"data-svelte-h":!0}),w(L)!=="svelte-1p8fiy"&&(L.innerHTML=bl),Ve=m(e),h(D.$$.fragment,e),We=m(e),P=j(e,"UL",{"data-svelte-h":!0}),w(P)!=="svelte-nhc3qb"&&(P.innerHTML=hl),Re=m(e),O=j(e,"P",{"data-svelte-h":!0}),w(O)!=="svelte-rs5d7p"&&(O.innerHTML=Cl),Xe=m(e),K=j(e,"P",{"data-svelte-h":!0}),w(K)!=="svelte-1flvt2o"&&(K.textContent=Il),xe=m(e),z=j(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),wl(z).forEach(s),ze=m(e),h(ee.$$.fragment,e),ke=m(e),le=j(e,"P",{"data-svelte-h":!0}),w(le)!=="svelte-wloegn"&&(le.innerHTML=vl),Ee=m(e),se=j(e,"UL",{"data-svelte-h":!0}),w(se)!=="svelte-112ychf"&&(se.innerHTML=Zl),Ne=m(e),te=j(e,"P",{"data-svelte-h":!0}),w(te)!=="svelte-j9piat"&&(te.textContent=$l),_e=m(e),k=j(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),wl(k).forEach(s),Se=m(e),h(_.$$.fragment,e),qe=m(e),h(ne.$$.fragment,e),Ae=m(e),ae=j(e,"P",{"data-svelte-h":!0}),w(ae)!=="svelte-1lifv41"&&(ae.textContent=Gl),Fe=m(e),ie=j(e,"OL",{"data-svelte-h":!0}),w(ie)!=="svelte-z1gubl"&&(ie.innerHTML=Ql),He=m(e),re=j(e,"P",{"data-svelte-h":!0}),w(re)!=="svelte-1uinyta"&&(re.textContent=Vl),Ye=m(e),h(oe.$$.fragment,e),Le=m(e),pe=j(e,"P",{"data-svelte-h":!0}),w(pe)!=="svelte-dm19ow"&&(pe.textContent=Wl),De=m(e),h(S.$$.fragment,e),Pe=m(e),ue=j(e,"P",{"data-svelte-h":!0}),w(ue)!=="svelte-112sdet"&&(ue.textContent=Rl),Oe=m(e),Me=j(e,"UL",{"data-svelte-h":!0}),w(Me)!=="svelte-10q7x11"&&(Me.innerHTML=Xl),Ke=m(e),ce=j(e,"P",{"data-svelte-h":!0}),w(ce)!=="svelte-1j69ifk"&&(ce.textContent=xl),el=m(e),h(de.$$.fragment,e),ll=m(e),me=j(e,"P",{"data-svelte-h":!0}),w(me)!=="svelte-29zbds"&&(me.textContent=zl),sl=m(e),h(q.$$.fragment,e),tl=m(e),h(ye.$$.fragment,e),nl=m(e),Ue=j(e,"P",{"data-svelte-h":!0}),w(Ue)!=="svelte-1cn7sgj"&&(Ue.textContent=kl),al=m(e),h(A.$$.fragment,e),il=m(e),h(Je.$$.fragment,e),rl=m(e),je=j(e,"P",{"data-svelte-h":!0}),w(je)!=="svelte-1cu0ok6"&&(je.textContent=El),ol=m(e),we=j(e,"P",{"data-svelte-h":!0}),w(we)!=="svelte-wflh83"&&(we.innerHTML=Nl),pl=m(e),fe=j(e,"P",{"data-svelte-h":!0}),w(fe)!=="svelte-iecy2b"&&(fe.innerHTML=_l),ul=m(e),h(Te.$$.fragment,e),Ml=m(e),h(be.$$.fragment,e),cl=m(e),he=j(e,"P",{"data-svelte-h":!0}),w(he)!=="svelte-1b0r9nd"&&(he.textContent=Sl),dl=m(e),Ce=j(e,"OL",{"data-svelte-h":!0}),w(Ce)!=="svelte-2phcm7"&&(Ce.innerHTML=ql),ml=m(e),Ie=j(e,"P",{"data-svelte-h":!0}),w(Ie)!=="svelte-d8k26u"&&(Ie.textContent=Al),yl=m(e),h(F.$$.fragment,e),Ul=m(e),h(ge.$$.fragment,e),Jl=m(e),Ze=j(e,"P",{}),wl(Ze).forEach(s),this.h()},h(){G(a,"name","hf:doc:metadata"),G(a,"content",Is),Ol(z.src,gl="https://agents-course-unit-3-agentic-rag.hf.space")||G(z,"src",gl),G(z,"frameborder","0"),G(z,"width","850"),G(z,"height","450"),Ol(k.src,Bl="https://huggingface.co/datasets/agents-course/unit3-invitees/embed/viewer/default/train")||G(k,"src",Bl),G(k,"frameborder","0"),G(k,"width","100%"),G(k,"height","560px")},m(e,o){ns(document.head,a),t(e,c,o),t(e,u,o),t(e,M,o),C(p,e,o),t(e,r,o),t(e,n,o),t(e,f,o),C(T,e,o),t(e,U,o),t(e,B,o),t(e,l,o),t(e,y,o),t(e,$e,o),t(e,H,o),t(e,Be,o),C(N,e,o),t(e,Ge,o),C(Y,e,o),t(e,Qe,o),t(e,L,o),t(e,Ve,o),C(D,e,o),t(e,We,o),t(e,P,o),t(e,Re,o),t(e,O,o),t(e,Xe,o),t(e,K,o),t(e,xe,o),t(e,z,o),t(e,ze,o),C(ee,e,o),t(e,ke,o),t(e,le,o),t(e,Ee,o),t(e,se,o),t(e,Ne,o),t(e,te,o),t(e,_e,o),t(e,k,o),t(e,Se,o),C(_,e,o),t(e,qe,o),C(ne,e,o),t(e,Ae,o),t(e,ae,o),t(e,Fe,o),t(e,ie,o),t(e,He,o),t(e,re,o),t(e,Ye,o),C(oe,e,o),t(e,Le,o),t(e,pe,o),t(e,De,o),C(S,e,o),t(e,Pe,o),t(e,ue,o),t(e,Oe,o),t(e,Me,o),t(e,Ke,o),t(e,ce,o),t(e,el,o),C(de,e,o),t(e,ll,o),t(e,me,o),t(e,sl,o),C(q,e,o),t(e,tl,o),C(ye,e,o),t(e,nl,o),t(e,Ue,o),t(e,al,o),C(A,e,o),t(e,il,o),C(Je,e,o),t(e,rl,o),t(e,je,o),t(e,ol,o),t(e,we,o),t(e,pl,o),t(e,fe,o),t(e,ul,o),C(Te,e,o),t(e,Ml,o),C(be,e,o),t(e,cl,o),t(e,he,o),t(e,dl,o),t(e,Ce,o),t(e,ml,o),t(e,Ie,o),t(e,yl,o),C(F,e,o),t(e,Ul,o),C(ge,e,o),t(e,Jl,o),t(e,Ze,o),jl=!0},p(e,[o]){const Fl={};o&2&&(Fl.$$scope={dirty:o,ctx:e}),N.$set(Fl);const Hl={};o&2&&(Hl.$$scope={dirty:o,ctx:e}),_.$set(Hl);const Yl={};o&2&&(Yl.$$scope={dirty:o,ctx:e}),S.$set(Yl);const Ll={};o&2&&(Ll.$$scope={dirty:o,ctx:e}),q.$set(Ll);const Dl={};o&2&&(Dl.$$scope={dirty:o,ctx:e}),A.$set(Dl);const Pl={};o&2&&(Pl.$$scope={dirty:o,ctx:e}),F.$set(Pl)},i(e){jl||(I(p.$$.fragment,e),I(T.$$.fragment,e),I(N.$$.fragment,e),I(Y.$$.fragment,e),I(D.$$.fragment,e),I(ee.$$.fragment,e),I(_.$$.fragment,e),I(ne.$$.fragment,e),I(oe.$$.fragment,e),I(S.$$.fragment,e),I(de.$$.fragment,e),I(q.$$.fragment,e),I(ye.$$.fragment,e),I(A.$$.fragment,e),I(Je.$$.fragment,e),I(Te.$$.fragment,e),I(be.$$.fragment,e),I(F.$$.fragment,e),I(ge.$$.fragment,e),jl=!0)},o(e){g(p.$$.fragment,e),g(T.$$.fragment,e),g(N.$$.fragment,e),g(Y.$$.fragment,e),g(D.$$.fragment,e),g(ee.$$.fragment,e),g(_.$$.fragment,e),g(ne.$$.fragment,e),g(oe.$$.fragment,e),g(S.$$.fragment,e),g(de.$$.fragment,e),g(q.$$.fragment,e),g(ye.$$.fragment,e),g(A.$$.fragment,e),g(Je.$$.fragment,e),g(Te.$$.fragment,e),g(be.$$.fragment,e),g(F.$$.fragment,e),g(ge.$$.fragment,e),jl=!1},d(e){e&&(s(c),s(u),s(M),s(r),s(n),s(f),s(U),s(B),s(l),s(y),s($e),s(H),s(Be),s(Ge),s(Qe),s(L),s(Ve),s(We),s(P),s(Re),s(O),s(Xe),s(K),s(xe),s(z),s(ze),s(ke),s(le),s(Ee),s(se),s(Ne),s(te),s(_e),s(k),s(Se),s(qe),s(Ae),s(ae),s(Fe),s(ie),s(He),s(re),s(Ye),s(Le),s(pe),s(De),s(Pe),s(ue),s(Oe),s(Me),s(Ke),s(ce),s(el),s(ll),s(me),s(sl),s(tl),s(nl),s(Ue),s(al),s(il),s(rl),s(je),s(ol),s(we),s(pl),s(fe),s(ul),s(Ml),s(cl),s(he),s(dl),s(Ce),s(ml),s(Ie),s(yl),s(Ul),s(Jl),s(Ze)),s(a),v(p,e),v(T,e),v(N,e),v(Y,e),v(D,e),v(ee,e),v(_,e),v(ne,e),v(oe,e),v(S,e),v(de,e),v(q,e),v(ye,e),v(A,e),v(Je,e),v(Te,e),v(be,e),v(F,e),v(ge,e)}}}const Is='{"title":"Création d’un outil RAG pour les histoires d’invités","local":"création-dun-outil-rag-pour-les-histoires-dinvités","sections":[{"title":"Pourquoi le RAG pour un gala ?","local":"pourquoi-le-rag-pour-un-gala-","sections":[],"depth":2},{"title":"Configuration de notre application","local":"configuration-de-notre-application","sections":[{"title":"Structure du projet","local":"structure-du-projet","sections":[],"depth":3}],"depth":2},{"title":"Aperçu du jeu de données","local":"aperçu-du-jeu-de-données","sections":[],"depth":2},{"title":"Construction de l’outil livre d’or","local":"construction-de-loutil-livre-dor","sections":[{"title":"Étape 1 : Charger et préparer le jeu de données","local":"étape-1--charger-et-préparer-le-jeu-de-données","sections":[],"depth":3},{"title":"Étape 2 : Créer l’outil de récupération","local":"étape-2--créer-loutil-de-récupération","sections":[],"depth":3},{"title":"Étape 3 : Intégrer l’outil avec Alfred","local":"étape-3--intégrer-loutil-avec-alfred","sections":[],"depth":3}],"depth":2},{"title":"Exemple d’interaction","local":"exemple-dinteraction","sections":[],"depth":2},{"title":"Aller plus loin","local":"aller-plus-loin","sections":[],"depth":2}],"depth":1}';function gs(Z){return es(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ws extends ls{constructor(a){super(),ss(this,a,gs,Cs,Kl,{})}}export{Ws as component};
