import{s as Pl,a as Ol,o as Kl,n as x}from"../chunks/scheduler.505acc25.js";import{S as es,i as ls,e as m,s as u,c as b,h as ss,a as U,d as l,b as M,f as Jl,g as h,j as J,k as Q,l as ts,m as t,n as C,t as I,o as v,p as Z}from"../chunks/index.b1175496.js";import{C as ns,H as W}from"../chunks/Heading.988e52fa.js";import{C as V}from"../chunks/CodeBlock.ed64aebc.js";import{H as jl,a as k}from"../chunks/HfOption.ccfd750e.js";import{E as as}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.3d47a398.js";function is($){let r,j="Nous utiliserons la bibliothèque <code>datasets</code> d’Hugging Face 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>.",p,d,y;return d=new V({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(){r=m("p"),r.innerHTML=j,p=u(),b(d.$$.fragment)},l(o){r=U(o,"P",{"data-svelte-h":!0}),J(r)!=="svelte-1pw5s05"&&(r.innerHTML=j),p=M(o),h(d.$$.fragment,o)},m(o,s){t(o,r,s),t(o,p,s),C(d,o,s),y=!0},p:x,i(o){y||(I(d.$$.fragment,o),y=!0)},o(o){v(d.$$.fragment,o),y=!1},d(o){o&&(l(r),l(p)),Z(d,o)}}}function rs($){let r,j="Nous utiliserons la bibliothèque <code>datasets</code> d’Hugging Face 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>.",p,d,y;return d=new V({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(){r=m("p"),r.innerHTML=j,p=u(),b(d.$$.fragment)},l(o){r=U(o,"P",{"data-svelte-h":!0}),J(r)!=="svelte-8hk7d2"&&(r.innerHTML=j),p=M(o),h(d.$$.fragment,o)},m(o,s){t(o,r,s),t(o,p,s),C(d,o,s),y=!0},p:x,i(o){y||(I(d.$$.fragment,o),y=!0)},o(o){v(d.$$.fragment,o),y=!1},d(o){o&&(l(r),l(p)),Z(d,o)}}}function os($){let r,j="Nous utiliserons la bibliothèque <code>datasets</code> d’Hugging Face 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>.",p,d,y;return d=new V({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(){r=m("p"),r.innerHTML=j,p=u(),b(d.$$.fragment)},l(o){r=U(o,"P",{"data-svelte-h":!0}),J(r)!=="svelte-1pw5s05"&&(r.innerHTML=j),p=M(o),h(d.$$.fragment,o)},m(o,s){t(o,r,s),t(o,p,s),C(d,o,s),y=!0},p:x,i(o){y||(I(d.$$.fragment,o),y=!0)},o(o){v(d.$$.fragment,o),y=!1},d(o){o&&(l(r),l(p)),Z(d,o)}}}function ps($){let r,j,p,d,y,o;return r=new k({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[is]},$$scope:{ctx:$}}}),p=new k({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[rs]},$$scope:{ctx:$}}}),y=new k({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[os]},$$scope:{ctx:$}}}),{c(){b(r.$$.fragment),j=u(),b(p.$$.fragment),d=u(),b(y.$$.fragment)},l(s){h(r.$$.fragment,s),j=M(s),h(p.$$.fragment,s),d=M(s),h(y.$$.fragment,s)},m(s,c){C(r,s,c),t(s,j,c),C(p,s,c),t(s,d,c),C(y,s,c),o=!0},p(s,c){const T={};c&2&&(T.$$scope={dirty:c,ctx:s}),r.$set(T);const g={};c&2&&(g.$$scope={dirty:c,ctx:s}),p.$set(g);const w={};c&2&&(w.$$scope={dirty:c,ctx:s}),y.$set(w)},i(s){o||(I(r.$$.fragment,s),I(p.$$.fragment,s),I(y.$$.fragment,s),o=!0)},o(s){v(r.$$.fragment,s),v(p.$$.fragment,s),v(y.$$.fragment,s),o=!1},d(s){s&&(l(j),l(d)),Z(r,s),Z(p,s),Z(y,s)}}}function us($){let r,j="Nous utiliserons le <code>BM25Retriever</code> du module <code>langchain_community.retrievers</code> pour créer un outil de récupération.",p,d,y='<p>Le <code>BM25Retriever</code> 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 <i>embeddings</i> comme ceux de <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',o,s,c,T,g="Comprenons cet outil étape par étape :",w,f,G="<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>",a;return s=new V({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(){r=m("p"),r.innerHTML=j,p=u(),d=m("blockquote"),d.innerHTML=y,o=u(),b(s.$$.fragment),c=u(),T=m("p"),T.textContent=g,w=u(),f=m("ul"),f.innerHTML=G,this.h()},l(n){r=U(n,"P",{"data-svelte-h":!0}),J(r)!=="svelte-1j0ijm9"&&(r.innerHTML=j),p=M(n),d=U(n,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(d)!=="svelte-1ttnypg"&&(d.innerHTML=y),o=M(n),h(s.$$.fragment,n),c=M(n),T=U(n,"P",{"data-svelte-h":!0}),J(T)!=="svelte-1gxhttu"&&(T.textContent=g),w=M(n),f=U(n,"UL",{"data-svelte-h":!0}),J(f)!=="svelte-dak8da"&&(f.innerHTML=G),this.h()},h(){Q(d,"class","tip")},m(n,B){t(n,r,B),t(n,p,B),t(n,d,B),t(n,o,B),C(s,n,B),t(n,c,B),t(n,T,B),t(n,w,B),t(n,f,B),a=!0},p:x,i(n){a||(I(s.$$.fragment,n),a=!0)},o(n){v(s.$$.fragment,n),a=!1},d(n){n&&(l(r),l(p),l(d),l(o),l(c),l(T),l(w),l(f)),Z(s,n)}}}function Ms($){let r,j="Nous utiliserons le <code>BM25Retriever</code> du module <code>llama_index.retrievers.bm25</code> pour créer un outil de récupération.",p,d,y='<p>Le <code>BM25Retriever</code> 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 <em>embeddings</em> comme ceux de <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',o,s,c,T,g="Comprenons cet outil étape par étape :",w,f,G="<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>",a;return s=new V({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(){r=m("p"),r.innerHTML=j,p=u(),d=m("blockquote"),d.innerHTML=y,o=u(),b(s.$$.fragment),c=u(),T=m("p"),T.textContent=g,w=u(),f=m("ul"),f.innerHTML=G,this.h()},l(n){r=U(n,"P",{"data-svelte-h":!0}),J(r)!=="svelte-13v4bfa"&&(r.innerHTML=j),p=M(n),d=U(n,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(d)!=="svelte-a5avfa"&&(d.innerHTML=y),o=M(n),h(s.$$.fragment,n),c=M(n),T=U(n,"P",{"data-svelte-h":!0}),J(T)!=="svelte-1gxhttu"&&(T.textContent=g),w=M(n),f=U(n,"UL",{"data-svelte-h":!0}),J(f)!=="svelte-11si3ct"&&(f.innerHTML=G),this.h()},h(){Q(d,"class","tip")},m(n,B){t(n,r,B),t(n,p,B),t(n,d,B),t(n,o,B),C(s,n,B),t(n,c,B),t(n,T,B),t(n,w,B),t(n,f,B),a=!0},p:x,i(n){a||(I(s.$$.fragment,n),a=!0)},o(n){v(s.$$.fragment,n),a=!1},d(n){n&&(l(r),l(p),l(d),l(o),l(c),l(T),l(w),l(f)),Z(s,n)}}}function cs($){let r,j="Nous utiliserons le <code>BM25Retriever</code> du module <code>langchain_community.retrievers</code> pour créer un outil de récupération.",p,d,y='<p>Le <code>BM25Retriever</code> 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 <em>embeddings</em> comme ceux de <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',o,s,c,T,g="Comprenons cet outil étape par étape :",w,f,G="<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>",a;return s=new V({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(){r=m("p"),r.innerHTML=j,p=u(),d=m("blockquote"),d.innerHTML=y,o=u(),b(s.$$.fragment),c=u(),T=m("p"),T.textContent=g,w=u(),f=m("ul"),f.innerHTML=G,this.h()},l(n){r=U(n,"P",{"data-svelte-h":!0}),J(r)!=="svelte-1j0ijm9"&&(r.innerHTML=j),p=M(n),d=U(n,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(d)!=="svelte-a5avfa"&&(d.innerHTML=y),o=M(n),h(s.$$.fragment,n),c=M(n),T=U(n,"P",{"data-svelte-h":!0}),J(T)!=="svelte-1gxhttu"&&(T.textContent=g),w=M(n),f=U(n,"UL",{"data-svelte-h":!0}),J(f)!=="svelte-wlttn0"&&(f.innerHTML=G),this.h()},h(){Q(d,"class","tip")},m(n,B){t(n,r,B),t(n,p,B),t(n,d,B),t(n,o,B),C(s,n,B),t(n,c,B),t(n,T,B),t(n,w,B),t(n,f,B),a=!0},p:x,i(n){a||(I(s.$$.fragment,n),a=!0)},o(n){v(s.$$.fragment,n),a=!1},d(n){n&&(l(r),l(p),l(d),l(o),l(c),l(T),l(w),l(f)),Z(s,n)}}}function ds($){let r,j,p,d,y,o;return r=new k({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[us]},$$scope:{ctx:$}}}),p=new k({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[Ms]},$$scope:{ctx:$}}}),y=new k({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[cs]},$$scope:{ctx:$}}}),{c(){b(r.$$.fragment),j=u(),b(p.$$.fragment),d=u(),b(y.$$.fragment)},l(s){h(r.$$.fragment,s),j=M(s),h(p.$$.fragment,s),d=M(s),h(y.$$.fragment,s)},m(s,c){C(r,s,c),t(s,j,c),C(p,s,c),t(s,d,c),C(y,s,c),o=!0},p(s,c){const T={};c&2&&(T.$$scope={dirty:c,ctx:s}),r.$set(T);const g={};c&2&&(g.$$scope={dirty:c,ctx:s}),p.$set(g);const w={};c&2&&(w.$$scope={dirty:c,ctx:s}),y.$set(w)},i(s){o||(I(r.$$.fragment,s),I(p.$$.fragment,s),I(y.$$.fragment,s),o=!0)},o(s){v(r.$$.fragment,s),v(p.$$.fragment,s),v(y.$$.fragment,s),o=!1},d(s){s&&(l(j),l(d)),Z(r,s),Z(p,s),Z(y,s)}}}function ys($){let r,j,p,d="Sortie attendue :",y,o,s,c,T="Ce qui se passe dans cette étape finale :",g,w,f="<li>Nous initialisons un modèle Hugging Face 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>",G;return r=new V({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}}),o=new V({props:{code:"JUYwJTlGJThFJUE5JTIwUiVDMyVBOXBvbnNlJTIwZCdBbGZyZWQlMjAlM0ElMEFCYXMlQzMlQTklMjBzdXIlMjBsZXMlMjBpbmZvcm1hdGlvbnMlMjBxdWUlMjBqJ2FpJTIwciVDMyVBOWN1cCVDMyVBOXIlQzMlQTllcyUyQyUyMExhZHklMjBBZGElMjBMb3ZlbGFjZSUyMGVzdCUyMHVuZSUyMG1hdGglQzMlQTltYXRpY2llbm5lJTIwZXN0aW0lQzMlQTllJTIwZXQlMjB1bmUlMjBhbWllLiUyMEVsbGUlMjBlc3QlMjByZW5vbW0lQzMlQTllJTIwcG91ciUyMHNvbiUyMHRyYXZhaWwlMjBwaW9ubmllciUyMGVuJTIwbWF0aCVDMyVBOW1hdGlxdWVzJTIwZXQlMjBlbiUyMGluZm9ybWF0aXF1ZSUyQyUyMHNvdXZlbnQlMjBjJUMzJUE5bCVDMyVBOWJyJUMzJUE5ZSUyMGNvbW1lJTIwbGElMjBwcmVtaSVDMyVBOHJlJTIwcHJvZ3JhbW1ldXNlJTIwaW5mb3JtYXRpcXVlJTIwZW4lMjByYWlzb24lMjBkZSUyMHNvbiUyMHRyYXZhaWwlMjBzdXIlMjBsYSUyMG1hY2hpbmUlMjBhbmFseXRpcXVlJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4lMjBTb24lMjBhZHJlc3NlJTIwZW1haWwlMjBlc3QlMjBhZGEubG92ZWxhY2UlNDBleGFtcGxlLmNvbS4=",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 une 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 email <span class="hljs-keyword">est</span> ada.lovelace@example.com.`,wrap:!1}}),{c(){b(r.$$.fragment),j=u(),p=m("p"),p.textContent=d,y=u(),b(o.$$.fragment),s=u(),c=m("p"),c.textContent=T,g=u(),w=m("ul"),w.innerHTML=f},l(a){h(r.$$.fragment,a),j=M(a),p=U(a,"P",{"data-svelte-h":!0}),J(p)!=="svelte-cs180i"&&(p.textContent=d),y=M(a),h(o.$$.fragment,a),s=M(a),c=U(a,"P",{"data-svelte-h":!0}),J(c)!=="svelte-32t9d6"&&(c.textContent=T),g=M(a),w=U(a,"UL",{"data-svelte-h":!0}),J(w)!=="svelte-kfvah9"&&(w.innerHTML=f)},m(a,n){C(r,a,n),t(a,j,n),t(a,p,n),t(a,y,n),C(o,a,n),t(a,s,n),t(a,c,n),t(a,g,n),t(a,w,n),G=!0},p:x,i(a){G||(I(r.$$.fragment,a),I(o.$$.fragment,a),G=!0)},o(a){v(r.$$.fragment,a),v(o.$$.fragment,a),G=!1},d(a){a&&(l(j),l(p),l(y),l(s),l(c),l(g),l(w)),Z(r,a),Z(o,a)}}}function ms($){let r,j,p,d="Sortie attendue :",y,o,s,c,T="Ce qui se passe dans cette étape finale :",g,w,f="<li>Nous initialisons un modèle Hugging Face 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>",G;return r=new V({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}}),o=new V({props:{code:"JUYwJTlGJThFJUE5JTIwUiVDMyVBOXBvbnNlJTIwZCdBbGZyZWQlMjAlM0ElMEFMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlc3QlMjB1bmUlMjBtYXRoJUMzJUE5bWF0aWNpZW5uZSUyMGVzdGltJUMzJUE5ZSUyMGV0JTIwYW1pZSUyQyUyMHJlbm9tbSVDMyVBOWUlMjBwb3VyJTIwc29uJTIwdHJhdmFpbCUyMHBpb25uaWVyJTIwZW4lMjBtYXRoJUMzJUE5bWF0aXF1ZXMlMjBldCUyMGVuJTIwaW5mb3JtYXRpcXVlLiUyMEVsbGUlMjBlc3QlMjBjJUMzJUE5bCVDMyVBOWJyJUMzJUE5ZSUyMGNvbW1lJTIwbGElMjBwcmVtaSVDMyVBOHJlJTIwcHJvZ3JhbW1ldXNlJTIwaW5mb3JtYXRpcXVlJTIwZW4lMjByYWlzb24lMjBkZSUyMHNvbiUyMHRyYXZhaWwlMjBzdXIlMjBsYSUyMG1hY2hpbmUlMjBhbmFseXRpcXVlJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4lMjBTb24lMjBlbWFpbCUyMGVzdCUyMGFkYS5sb3ZlbGFjZSU0MGV4YW1wbGUuY29tLg==",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 email <span class="hljs-keyword">est</span> ada.lovelace@example.com.`,wrap:!1}}),{c(){b(r.$$.fragment),j=u(),p=m("p"),p.textContent=d,y=u(),b(o.$$.fragment),s=u(),c=m("p"),c.textContent=T,g=u(),w=m("ul"),w.innerHTML=f},l(a){h(r.$$.fragment,a),j=M(a),p=U(a,"P",{"data-svelte-h":!0}),J(p)!=="svelte-cs180i"&&(p.textContent=d),y=M(a),h(o.$$.fragment,a),s=M(a),c=U(a,"P",{"data-svelte-h":!0}),J(c)!=="svelte-32t9d6"&&(c.textContent=T),g=M(a),w=U(a,"UL",{"data-svelte-h":!0}),J(w)!=="svelte-71tvlf"&&(w.innerHTML=f)},m(a,n){C(r,a,n),t(a,j,n),t(a,p,n),t(a,y,n),C(o,a,n),t(a,s,n),t(a,c,n),t(a,g,n),t(a,w,n),G=!0},p:x,i(a){G||(I(r.$$.fragment,a),I(o.$$.fragment,a),G=!0)},o(a){v(r.$$.fragment,a),v(o.$$.fragment,a),G=!1},d(a){a&&(l(j),l(p),l(y),l(s),l(c),l(g),l(w)),Z(r,a),Z(o,a)}}}function Us($){let r,j,p,d="Sortie attendue :",y,o,s,c,T="Ce qui se passe dans cette étape finale :",g,w,f="<li>Nous initialisons un modèle Hugging Face 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>",G;return r=new V({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}}),o=new V({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(r.$$.fragment),j=u(),p=m("p"),p.textContent=d,y=u(),b(o.$$.fragment),s=u(),c=m("p"),c.textContent=T,g=u(),w=m("ul"),w.innerHTML=f},l(a){h(r.$$.fragment,a),j=M(a),p=U(a,"P",{"data-svelte-h":!0}),J(p)!=="svelte-cs180i"&&(p.textContent=d),y=M(a),h(o.$$.fragment,a),s=M(a),c=U(a,"P",{"data-svelte-h":!0}),J(c)!=="svelte-32t9d6"&&(c.textContent=T),g=M(a),w=U(a,"UL",{"data-svelte-h":!0}),J(w)!=="svelte-1e8sj3t"&&(w.innerHTML=f)},m(a,n){C(r,a,n),t(a,j,n),t(a,p,n),t(a,y,n),C(o,a,n),t(a,s,n),t(a,c,n),t(a,g,n),t(a,w,n),G=!0},p:x,i(a){G||(I(r.$$.fragment,a),I(o.$$.fragment,a),G=!0)},o(a){v(r.$$.fragment,a),v(o.$$.fragment,a),G=!1},d(a){a&&(l(j),l(p),l(y),l(s),l(c),l(g),l(w)),Z(r,a),Z(o,a)}}}function Js($){let r,j,p,d,y,o;return r=new k({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ys]},$$scope:{ctx:$}}}),p=new k({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[ms]},$$scope:{ctx:$}}}),y=new k({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Us]},$$scope:{ctx:$}}}),{c(){b(r.$$.fragment),j=u(),b(p.$$.fragment),d=u(),b(y.$$.fragment)},l(s){h(r.$$.fragment,s),j=M(s),h(p.$$.fragment,s),d=M(s),h(y.$$.fragment,s)},m(s,c){C(r,s,c),t(s,j,c),C(p,s,c),t(s,d,c),C(y,s,c),o=!0},p(s,c){const T={};c&2&&(T.$$scope={dirty:c,ctx:s}),r.$set(T);const g={};c&2&&(g.$$scope={dirty:c,ctx:s}),p.$set(g);const w={};c&2&&(w.$$scope={dirty:c,ctx:s}),y.$set(w)},i(s){o||(I(r.$$.fragment,s),I(p.$$.fragment,s),I(y.$$.fragment,s),o=!0)},o(s){v(r.$$.fragment,s),v(p.$$.fragment,s),v(y.$$.fragment,s),o=!1},d(s){s&&(l(j),l(d)),Z(r,s),Z(p,s),Z(y,s)}}}function js($){let r,j,p,d,y,o,s,c,T,g="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, il a besoin d’un accès rapide à des informations à jour sur chaque invité. Aidons le en créant un outil RAG alimenté par notre jeu de données personnalisé.",w,f,G,a,n="Imaginez Alfred se mêlant aux invités, ayant besoin de se rappeler des détails spécifiques sur chaque personne à tout moment. Un LLM traditionnel pourrait avoir du mal avec cette tâche parce que :",B,_,wl="<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 email</li>",Ze,F,Tl="C’est là que le RAG brille ! En combinant un système de récupération avec un LLM, Alfred peut accéder à des informations précises et à jour sur vos invités à la demande.",ge,z,fl="<p>Vous pouvez choisir n’importe lequel des <i>frameworks</i> couverts dans le cours pour ce cas d’usage. Sélectionnez votre option préférée dans les onglets de code.</p>",Be,H,Ge,Y,bl="Dans cette unité, nous développerons notre agent au sein d’un <em>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.",$e,L,Qe,D,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>",Ve,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>Space</em></a> sur un RAG agentique. N’hésitez pas à le cloner et à expérimenter !',We,P,Il="Vous pouvez tester directement l’agent ci-dessous :",Re,R,vl,Xe,K,ke,ee,Zl='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é :',xe,le,gl="<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>",ze,se,Bl="Voici un aperçu du jeu de données :",Ee,X,Gl,Ne,E,$l="<p>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.</p>",Se,te,qe,ne,Ql="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 :",Ae,ae,Vl="<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 à Alfred</li>",_e,ie,Wl="Commençons par charger et préparer le jeu de données !",Fe,re,He,oe,Rl="Tout d’abord, nous devons transformer nos données brutes sur les invités en un format optimisé pour la récupération.",Ye,N,Le,pe,Xl="Dans le code ci-dessus, nous :",De,ue,kl="<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>",Oe,Me,xl="Cela signifie que nous avons toutes nos données bien disponibles pour pouvoir commencer à configurer notre récupération.",Pe,ce,Ke,de,zl="Maintenant, créons un outil personnalisé qu’Alfred peut utiliser pour rechercher dans nos informations sur les invités.",el,S,ll,ye,sl,me,El="Enfin, assemblons le tout en créant notre agent et en l’équipant de notre outil personnalisé :",tl,q,nl,Ue,al,Je,Nl="Pendant le gala, une conversation pourrait se dérouler comme ceci :",il,je,Sl="<strong>Vous :</strong> “Alfred, qui est ce monsieur qui parle à l’ambassadeur ?”",rl,we,ql="<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 votre période à l’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.”",ol,Te,pl,fe,ul,be,Al="Maintenant qu’Alfred peut récupérer des informations sur les invités, considérez comment vous pourriez améliorer ce système :",Ml,he,_l='<li><strong>Améliorer le récupérateur</strong> pour utiliser un algorithme plus sophistiqué comme ceux disponibles dans <a href="https://www.sbert.net/" rel="nofollow"><code>sentence-transformers</code></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>',cl,Ce,Fl="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 !",dl,A,Hl="<p>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 ?</p> <p>Quand vous avez terminé, implémentez votre outil de récupération d’invités dans le fichier <code>retriever.py</code> du <i>Space</i>.</p>",yl,Ie,ml,ve,Ul;return y=new ns({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),s=new W({props:{title:"Création d’un RAG pour converser avec les invités",local:"création-dun-rag-pour-converser-avec-les-invités",headingTag:"h1"}}),f=new W({props:{title:"Pourquoi un RAG pour un gala ?",local:"pourquoi-un-rag-pour-un-gala-",headingTag:"h2"}}),H=new W({props:{title:"Configuration de notre application",local:"configuration-de-notre-application",headingTag:"h2"}}),L=new W({props:{title:"Structure du projet",local:"structure-du-projet",headingTag:"h3"}}),K=new W({props:{title:"Aperçu du jeu de données",local:"aperçu-du-jeu-de-données",headingTag:"h2"}}),te=new W({props:{title:"Construction d’un outil pour un livre d’or",local:"construction-dun-outil-pour-un-livre-dor",headingTag:"h2"}}),re=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"}}),N=new jl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[ps]},$$scope:{ctx:$}}}),ce=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"}}),S=new jl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[ds]},$$scope:{ctx:$}}}),ye=new W({props:{title:"Étape 3 : Intégrer l’outil avec Alfred",local:"étape-3--intégrer-loutil-avec-alfred",headingTag:"h3"}}),q=new jl({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[Js]},$$scope:{ctx:$}}}),Ue=new W({props:{title:"Exemple d’interaction",local:"exemple-dinteraction",headingTag:"h2"}}),Te=new V({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIybmFtZSUyMiUzQSUyMCUyMkRyLiUyME5pa29sYSUyMFRlc2xhJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycmVsYXRpb24lMjIlM0ElMjAlMjJ2aWVpbCUyMGFtaSUyMGRlcyUyMGpvdXJzJTIwZCd1bml2ZXJzaXQlQzMlQTklMjIlMkMlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkxlJTIwRHIuJTIwTmlrb2xhJTIwVGVzbGElMjBlc3QlMjB1biUyMHZpZWlsJTIwYW1pJTIwZGUlMjB2b3RyZSUyMHAlQzMlQTlyaW9kZSUyMCVDMyVBMCUyMGwndW5pdmVyc2l0JUMzJUE5LiUyMElsJTIwdmllbnQlMjByJUMzJUE5Y2VtbWVudCUyMGRlJTIwYnJldmV0ZXIlMjB1biUyMG5vdXZlYXUlMjBzeXN0JUMzJUE4bWUlMjBkZSUyMHRyYW5zbWlzc2lvbiUyMGQnJUMzJUE5bmVyZ2llJTIwc2FucyUyMGZpbCUyMGV0JTIwc2VyYWl0JTIwcmF2aSUyMGQnZW4lMjBkaXNjdXRlciUyMGF2ZWMlMjB2b3VzLiUyME4nb3VibGlleiUyMHBhcyUyMHF1J2lsJTIwZXN0JTIwcGFzc2lvbm4lQzMlQTklMjBwYXIlMjBsZXMlMjBwaWdlb25zJTJDJTIwZG9uYyUyMGNlbGElMjBwb3VycmFpdCUyMGZhaXJlJTIwdW5lJTIwYm9ubmUlMjBjb252ZXJzYXRpb24uJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIyZW1haWwlMjIlM0ElMjAlMjJuaWtvbGEudGVzbGElNDBnbWFpbC5jb20lMjIlMEElN0Q=",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 votre période à l&#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}}),fe=new W({props:{title:"Aller plus loin",local:"aller-plus-loin",headingTag:"h2"}}),Ie=new as({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/fr/unit3/agentic-rag/invitees.mdx"}}),{c(){r=m("meta"),j=u(),p=m("p"),d=u(),b(y.$$.fragment),o=u(),b(s.$$.fragment),c=u(),T=m("p"),T.textContent=g,w=u(),b(f.$$.fragment),G=u(),a=m("p"),a.textContent=n,B=u(),_=m("ol"),_.innerHTML=wl,Ze=u(),F=m("p"),F.textContent=Tl,ge=u(),z=m("blockquote"),z.innerHTML=fl,Be=u(),b(H.$$.fragment),Ge=u(),Y=m("p"),Y.innerHTML=bl,$e=u(),b(L.$$.fragment),Qe=u(),D=m("ul"),D.innerHTML=hl,Ve=u(),O=m("p"),O.innerHTML=Cl,We=u(),P=m("p"),P.textContent=Il,Re=u(),R=m("iframe"),Xe=u(),b(K.$$.fragment),ke=u(),ee=m("p"),ee.innerHTML=Zl,xe=u(),le=m("ul"),le.innerHTML=gl,ze=u(),se=m("p"),se.textContent=Bl,Ee=u(),X=m("iframe"),Ne=u(),E=m("blockquote"),E.innerHTML=$l,Se=u(),b(te.$$.fragment),qe=u(),ne=m("p"),ne.textContent=Ql,Ae=u(),ae=m("ol"),ae.innerHTML=Vl,_e=u(),ie=m("p"),ie.textContent=Wl,Fe=u(),b(re.$$.fragment),He=u(),oe=m("p"),oe.textContent=Rl,Ye=u(),b(N.$$.fragment),Le=u(),pe=m("p"),pe.textContent=Xl,De=u(),ue=m("ul"),ue.innerHTML=kl,Oe=u(),Me=m("p"),Me.textContent=xl,Pe=u(),b(ce.$$.fragment),Ke=u(),de=m("p"),de.textContent=zl,el=u(),b(S.$$.fragment),ll=u(),b(ye.$$.fragment),sl=u(),me=m("p"),me.textContent=El,tl=u(),b(q.$$.fragment),nl=u(),b(Ue.$$.fragment),al=u(),Je=m("p"),Je.textContent=Nl,il=u(),je=m("p"),je.innerHTML=Sl,rl=u(),we=m("p"),we.innerHTML=ql,ol=u(),b(Te.$$.fragment),pl=u(),b(fe.$$.fragment),ul=u(),be=m("p"),be.textContent=Al,Ml=u(),he=m("ol"),he.innerHTML=_l,cl=u(),Ce=m("p"),Ce.textContent=Fl,dl=u(),A=m("blockquote"),A.innerHTML=Hl,yl=u(),b(Ie.$$.fragment),ml=u(),ve=m("p"),this.h()},l(e){const i=ss("svelte-u9bgzb",document.head);r=U(i,"META",{name:!0,content:!0}),i.forEach(l),j=M(e),p=U(e,"P",{}),Jl(p).forEach(l),d=M(e),h(y.$$.fragment,e),o=M(e),h(s.$$.fragment,e),c=M(e),T=U(e,"P",{"data-svelte-h":!0}),J(T)!=="svelte-10vaq2f"&&(T.textContent=g),w=M(e),h(f.$$.fragment,e),G=M(e),a=U(e,"P",{"data-svelte-h":!0}),J(a)!=="svelte-1j3vz76"&&(a.textContent=n),B=M(e),_=U(e,"OL",{"data-svelte-h":!0}),J(_)!=="svelte-1orlwys"&&(_.innerHTML=wl),Ze=M(e),F=U(e,"P",{"data-svelte-h":!0}),J(F)!=="svelte-uqr10i"&&(F.textContent=Tl),ge=M(e),z=U(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(z)!=="svelte-3juerg"&&(z.innerHTML=fl),Be=M(e),h(H.$$.fragment,e),Ge=M(e),Y=U(e,"P",{"data-svelte-h":!0}),J(Y)!=="svelte-1qhtine"&&(Y.innerHTML=bl),$e=M(e),h(L.$$.fragment,e),Qe=M(e),D=U(e,"UL",{"data-svelte-h":!0}),J(D)!=="svelte-nhc3qb"&&(D.innerHTML=hl),Ve=M(e),O=U(e,"P",{"data-svelte-h":!0}),J(O)!=="svelte-195majs"&&(O.innerHTML=Cl),We=M(e),P=U(e,"P",{"data-svelte-h":!0}),J(P)!=="svelte-1flvt2o"&&(P.textContent=Il),Re=M(e),R=U(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),Jl(R).forEach(l),Xe=M(e),h(K.$$.fragment,e),ke=M(e),ee=U(e,"P",{"data-svelte-h":!0}),J(ee)!=="svelte-wloegn"&&(ee.innerHTML=Zl),xe=M(e),le=U(e,"UL",{"data-svelte-h":!0}),J(le)!=="svelte-112ychf"&&(le.innerHTML=gl),ze=M(e),se=U(e,"P",{"data-svelte-h":!0}),J(se)!=="svelte-j9piat"&&(se.textContent=Bl),Ee=M(e),X=U(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),Jl(X).forEach(l),Ne=M(e),E=U(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(E)!=="svelte-scjuwu"&&(E.innerHTML=$l),Se=M(e),h(te.$$.fragment,e),qe=M(e),ne=U(e,"P",{"data-svelte-h":!0}),J(ne)!=="svelte-1lifv41"&&(ne.textContent=Ql),Ae=M(e),ae=U(e,"OL",{"data-svelte-h":!0}),J(ae)!=="svelte-12nbta4"&&(ae.innerHTML=Vl),_e=M(e),ie=U(e,"P",{"data-svelte-h":!0}),J(ie)!=="svelte-1uinyta"&&(ie.textContent=Wl),Fe=M(e),h(re.$$.fragment,e),He=M(e),oe=U(e,"P",{"data-svelte-h":!0}),J(oe)!=="svelte-dm19ow"&&(oe.textContent=Rl),Ye=M(e),h(N.$$.fragment,e),Le=M(e),pe=U(e,"P",{"data-svelte-h":!0}),J(pe)!=="svelte-112sdet"&&(pe.textContent=Xl),De=M(e),ue=U(e,"UL",{"data-svelte-h":!0}),J(ue)!=="svelte-10q7x11"&&(ue.innerHTML=kl),Oe=M(e),Me=U(e,"P",{"data-svelte-h":!0}),J(Me)!=="svelte-1j69ifk"&&(Me.textContent=xl),Pe=M(e),h(ce.$$.fragment,e),Ke=M(e),de=U(e,"P",{"data-svelte-h":!0}),J(de)!=="svelte-29zbds"&&(de.textContent=zl),el=M(e),h(S.$$.fragment,e),ll=M(e),h(ye.$$.fragment,e),sl=M(e),me=U(e,"P",{"data-svelte-h":!0}),J(me)!=="svelte-1hv6yva"&&(me.textContent=El),tl=M(e),h(q.$$.fragment,e),nl=M(e),h(Ue.$$.fragment,e),al=M(e),Je=U(e,"P",{"data-svelte-h":!0}),J(Je)!=="svelte-1cu0ok6"&&(Je.textContent=Nl),il=M(e),je=U(e,"P",{"data-svelte-h":!0}),J(je)!=="svelte-wflh83"&&(je.innerHTML=Sl),rl=M(e),we=U(e,"P",{"data-svelte-h":!0}),J(we)!=="svelte-1eaa5ai"&&(we.innerHTML=ql),ol=M(e),h(Te.$$.fragment,e),pl=M(e),h(fe.$$.fragment,e),ul=M(e),be=U(e,"P",{"data-svelte-h":!0}),J(be)!=="svelte-1b0r9nd"&&(be.textContent=Al),Ml=M(e),he=U(e,"OL",{"data-svelte-h":!0}),J(he)!=="svelte-1pcnpq1"&&(he.innerHTML=_l),cl=M(e),Ce=U(e,"P",{"data-svelte-h":!0}),J(Ce)!=="svelte-d8k26u"&&(Ce.textContent=Fl),dl=M(e),A=U(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),J(A)!=="svelte-xtekln"&&(A.innerHTML=Hl),yl=M(e),h(Ie.$$.fragment,e),ml=M(e),ve=U(e,"P",{}),Jl(ve).forEach(l),this.h()},h(){Q(r,"name","hf:doc:metadata"),Q(r,"content",ws),Q(z,"class","tip"),Ol(R.src,vl="https://agents-course-unit-3-agentic-rag.hf.space")||Q(R,"src",vl),Q(R,"frameborder","0"),Q(R,"width","850"),Q(R,"height","450"),Ol(X.src,Gl="https://huggingface.co/datasets/agents-course/unit3-invitees/embed/viewer/default/train")||Q(X,"src",Gl),Q(X,"frameborder","0"),Q(X,"width","100%"),Q(X,"height","560px"),Q(E,"class","tip"),Q(A,"class","tip")},m(e,i){ts(document.head,r),t(e,j,i),t(e,p,i),t(e,d,i),C(y,e,i),t(e,o,i),C(s,e,i),t(e,c,i),t(e,T,i),t(e,w,i),C(f,e,i),t(e,G,i),t(e,a,i),t(e,B,i),t(e,_,i),t(e,Ze,i),t(e,F,i),t(e,ge,i),t(e,z,i),t(e,Be,i),C(H,e,i),t(e,Ge,i),t(e,Y,i),t(e,$e,i),C(L,e,i),t(e,Qe,i),t(e,D,i),t(e,Ve,i),t(e,O,i),t(e,We,i),t(e,P,i),t(e,Re,i),t(e,R,i),t(e,Xe,i),C(K,e,i),t(e,ke,i),t(e,ee,i),t(e,xe,i),t(e,le,i),t(e,ze,i),t(e,se,i),t(e,Ee,i),t(e,X,i),t(e,Ne,i),t(e,E,i),t(e,Se,i),C(te,e,i),t(e,qe,i),t(e,ne,i),t(e,Ae,i),t(e,ae,i),t(e,_e,i),t(e,ie,i),t(e,Fe,i),C(re,e,i),t(e,He,i),t(e,oe,i),t(e,Ye,i),C(N,e,i),t(e,Le,i),t(e,pe,i),t(e,De,i),t(e,ue,i),t(e,Oe,i),t(e,Me,i),t(e,Pe,i),C(ce,e,i),t(e,Ke,i),t(e,de,i),t(e,el,i),C(S,e,i),t(e,ll,i),C(ye,e,i),t(e,sl,i),t(e,me,i),t(e,tl,i),C(q,e,i),t(e,nl,i),C(Ue,e,i),t(e,al,i),t(e,Je,i),t(e,il,i),t(e,je,i),t(e,rl,i),t(e,we,i),t(e,ol,i),C(Te,e,i),t(e,pl,i),C(fe,e,i),t(e,ul,i),t(e,be,i),t(e,Ml,i),t(e,he,i),t(e,cl,i),t(e,Ce,i),t(e,dl,i),t(e,A,i),t(e,yl,i),C(Ie,e,i),t(e,ml,i),t(e,ve,i),Ul=!0},p(e,[i]){const Yl={};i&2&&(Yl.$$scope={dirty:i,ctx:e}),N.$set(Yl);const Ll={};i&2&&(Ll.$$scope={dirty:i,ctx:e}),S.$set(Ll);const Dl={};i&2&&(Dl.$$scope={dirty:i,ctx:e}),q.$set(Dl)},i(e){Ul||(I(y.$$.fragment,e),I(s.$$.fragment,e),I(f.$$.fragment,e),I(H.$$.fragment,e),I(L.$$.fragment,e),I(K.$$.fragment,e),I(te.$$.fragment,e),I(re.$$.fragment,e),I(N.$$.fragment,e),I(ce.$$.fragment,e),I(S.$$.fragment,e),I(ye.$$.fragment,e),I(q.$$.fragment,e),I(Ue.$$.fragment,e),I(Te.$$.fragment,e),I(fe.$$.fragment,e),I(Ie.$$.fragment,e),Ul=!0)},o(e){v(y.$$.fragment,e),v(s.$$.fragment,e),v(f.$$.fragment,e),v(H.$$.fragment,e),v(L.$$.fragment,e),v(K.$$.fragment,e),v(te.$$.fragment,e),v(re.$$.fragment,e),v(N.$$.fragment,e),v(ce.$$.fragment,e),v(S.$$.fragment,e),v(ye.$$.fragment,e),v(q.$$.fragment,e),v(Ue.$$.fragment,e),v(Te.$$.fragment,e),v(fe.$$.fragment,e),v(Ie.$$.fragment,e),Ul=!1},d(e){e&&(l(j),l(p),l(d),l(o),l(c),l(T),l(w),l(G),l(a),l(B),l(_),l(Ze),l(F),l(ge),l(z),l(Be),l(Ge),l(Y),l($e),l(Qe),l(D),l(Ve),l(O),l(We),l(P),l(Re),l(R),l(Xe),l(ke),l(ee),l(xe),l(le),l(ze),l(se),l(Ee),l(X),l(Ne),l(E),l(Se),l(qe),l(ne),l(Ae),l(ae),l(_e),l(ie),l(Fe),l(He),l(oe),l(Ye),l(Le),l(pe),l(De),l(ue),l(Oe),l(Me),l(Pe),l(Ke),l(de),l(el),l(ll),l(sl),l(me),l(tl),l(nl),l(al),l(Je),l(il),l(je),l(rl),l(we),l(ol),l(pl),l(ul),l(be),l(Ml),l(he),l(cl),l(Ce),l(dl),l(A),l(yl),l(ml),l(ve)),l(r),Z(y,e),Z(s,e),Z(f,e),Z(H,e),Z(L,e),Z(K,e),Z(te,e),Z(re,e),Z(N,e),Z(ce,e),Z(S,e),Z(ye,e),Z(q,e),Z(Ue,e),Z(Te,e),Z(fe,e),Z(Ie,e)}}}const ws='{"title":"Création d’un RAG pour converser avec les invités","local":"création-dun-rag-pour-converser-avec-les-invités","sections":[{"title":"Pourquoi un RAG pour un gala ?","local":"pourquoi-un-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 d’un outil pour un livre d’or","local":"construction-dun-outil-pour-un-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 Ts($){return Kl(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Zs extends es{constructor(r){super(),ls(this,r,Ts,js,Pl,{})}}export{Zs as component};
