import{s as Os,f as Ks,o as ea,n as Y}from"../chunks/scheduler.37c15a92.js";import{S as sa,i as aa,g as U,s as u,r as b,A as la,h as T,f as a,c as m,j as js,u as h,x as j,k as B,y as ta,a as l,v as I,d as g,t as C,w as Z,m as R,n as k}from"../chunks/index.2bf4358c.js";import{T as Ze}from"../chunks/Tip.363c041f.js";import{C as W}from"../chunks/CodeBlock.4e987730.js";import{H as V}from"../chunks/Heading.8ada512a.js";import{H as ws,a as Q}from"../chunks/HfOption.02c8e375.js";import{E as na}from"../chunks/index.f9c0018f.js";function oa($){let n,M="Puedes elegir cualquiera de los frameworks cubiertos en el curso para este caso de uso. Selecciona tu opción preferida de las pestañas de código.";return{c(){n=U("p"),n.textContent=M},l(c){n=T(c,"P",{"data-svelte-h":!0}),j(n)!=="svelte-v2wwop"&&(n.textContent=M)},m(c,d){l(c,n,d)},p:Y,d(c){c&&a(n)}}}function ra($){let n;return{c(){n=R("En un escenario del mundo real, este conjunto de datos podría ampliarse para incluir preferencias dietéticas, intereses de regalos, temas de conversación a evitar y otros detalles útiles para un anfitrión.")},l(M){n=k(M,"En un escenario del mundo real, este conjunto de datos podría ampliarse para incluir preferencias dietéticas, intereses de regalos, temas de conversación a evitar y otros detalles útiles para un anfitrión.")},m(M,c){l(M,n,c)},d(M){M&&a(n)}}}function ia($){let n,M="Usaremos la librería <code>datasets</code> de Hugging Face para cargar el conjunto de datos y convertirlo en una lista de objetos <code>Document</code> del módulo <code>langchain.docstore.document</code>.",c,d,p;return d=new W({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluLmRvY3N0b3JlLmRvY3VtZW50JTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDYXJnYXIlMjBlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBlbnRyYWRhcyUyMGRlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUyMGVuJTIwb2JqZXRvcyUyMERvY3VtZW50JTBBZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhZ2VfY29udGVudCUzRCUyMiU1Q24lMjIuam9pbiglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmJTIyTmFtZSUzQSUyMCU3Qmd1ZXN0JTVCJ25hbWUnJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMlJlbGF0aW9uJTNBJTIwJTdCZ3Vlc3QlNUIncmVsYXRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkRlc2NyaXB0aW9uJTNBJTIwJTdCZ3Vlc3QlNUInZGVzY3JpcHRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkVtYWlsJTNBJTIwJTdCZ3Vlc3QlNUInZW1haWwnJTVEJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1ldGFkYXRhJTNEJTdCJTIybmFtZSUyMiUzQSUyMGd1ZXN0JTVCJTIybmFtZSUyMiU1RCU3RCUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjBmb3IlMjBndWVzdCUyMGluJTIwZ3Vlc3RfZGF0YXNldCUwQSU1RCUwQQ==",highlighted:`<span class="hljs-keyword">import</span> datasets
<span class="hljs-keyword">from</span> langchain.docstore.document <span class="hljs-keyword">import</span> Document

<span class="hljs-comment"># Cargar el conjunto de datos</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 entradas del conjunto de datos en objetos 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(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment)},l(r){n=T(r,"P",{"data-svelte-h":!0}),j(n)!=="svelte-wywv5g"&&(n.innerHTML=M),c=m(r),h(d.$$.fragment,r)},m(r,t){l(r,n,t),l(r,c,t),I(d,r,t),p=!0},p:Y,i(r){p||(g(d.$$.fragment,r),p=!0)},o(r){C(d.$$.fragment,r),p=!1},d(r){r&&(a(n),a(c)),Z(d,r)}}}function pa($){let n,M="Usaremos la librería <code>datasets</code> de Hugging Face para cargar el conjunto de datos y convertirlo en una lista de objetos <code>Document</code> del módulo <code>llama_index.core.schema</code>.",c,d,p;return d=new W({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS5zY2hlbWElMjBpbXBvcnQlMjBEb2N1bWVudCUwQSUwQSUyMyUyMENhcmdhciUyMGVsJTIwY29uanVudG8lMjBkZSUyMGRhdG9zJTBBZ3Vlc3RfZGF0YXNldCUyMCUzRCUyMGRhdGFzZXRzLmxvYWRfZGF0YXNldCglMjJhZ2VudHMtY291cnNlJTJGdW5pdDMtaW52aXRlZXMlMjIlMkMlMjBzcGxpdCUzRCUyMnRyYWluJTIyKSUwQSUwQSUyMyUyMENvbnZlcnRpciUyMGVudHJhZGFzJTIwZGVsJTIwY29uanVudG8lMjBkZSUyMGRhdG9zJTIwZW4lMjBvYmpldG9zJTIwRG9jdW1lbnQlMEFkb2NzJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwRG9jdW1lbnQoJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwdGV4dCUzRCUyMiU1Q24lMjIuam9pbiglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmJTIyTmFtZSUzQSUyMCU3Qmd1ZXN0X2RhdGFzZXQlNUInbmFtZSclNUQlNUJpJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMlJlbGF0aW9uJTNBJTIwJTdCZ3Vlc3RfZGF0YXNldCU1QidyZWxhdGlvbiclNUQlNUJpJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkRlc2NyaXB0aW9uJTNBJTIwJTdCZ3Vlc3RfZGF0YXNldCU1QidkZXNjcmlwdGlvbiclNUQlNUJpJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkVtYWlsJTNBJTIwJTdCZ3Vlc3RfZGF0YXNldCU1QidlbWFpbCclNUQlNUJpJTVEJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1ldGFkYXRhJTNEJTdCJTIybmFtZSUyMiUzQSUyMGd1ZXN0X2RhdGFzZXQlNUInbmFtZSclNUQlNUJpJTVEJTdEJTBBJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMGZvciUyMGklMjBpbiUyMHJhbmdlKGxlbihndWVzdF9kYXRhc2V0KSklMEElNUQ=",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"># Cargar el conjunto de datos</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 entradas del conjunto de datos en objetos 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(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment)},l(r){n=T(r,"P",{"data-svelte-h":!0}),j(n)!=="svelte-eraujj"&&(n.innerHTML=M),c=m(r),h(d.$$.fragment,r)},m(r,t){l(r,n,t),l(r,c,t),I(d,r,t),p=!0},p:Y,i(r){p||(g(d.$$.fragment,r),p=!0)},o(r){C(d.$$.fragment,r),p=!1},d(r){r&&(a(n),a(c)),Z(d,r)}}}function ca($){let n,M="Usaremos la librería <code>datasets</code> de Hugging Face para cargar el conjunto de datos y convertirlo en una lista de objetos <code>Document</code> del módulo <code>langchain.docstore.document</code>.",c,d,p;return d=new W({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluLmRvY3N0b3JlLmRvY3VtZW50JTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDYXJnYXIlMjBlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBlbnRyYWRhcyUyMGRlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUyMGVuJTIwb2JqZXRvcyUyMERvY3VtZW50JTBBZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhZ2VfY29udGVudCUzRCUyMiU1Q24lMjIuam9pbiglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmJTIyTmFtZSUzQSUyMCU3Qmd1ZXN0JTVCJ25hbWUnJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMlJlbGF0aW9uJTNBJTIwJTdCZ3Vlc3QlNUIncmVsYXRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkRlc2NyaXB0aW9uJTNBJTIwJTdCZ3Vlc3QlNUInZGVzY3JpcHRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkVtYWlsJTNBJTIwJTdCZ3Vlc3QlNUInZW1haWwnJTVEJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1ldGFkYXRhJTNEJTdCJTIybmFtZSUyMiUzQSUyMGd1ZXN0JTVCJTIybmFtZSUyMiU1RCU3RCUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjBmb3IlMjBndWVzdCUyMGluJTIwZ3Vlc3RfZGF0YXNldCUwQSU1RA==",highlighted:`<span class="hljs-keyword">import</span> datasets
<span class="hljs-keyword">from</span> langchain.docstore.document <span class="hljs-keyword">import</span> Document

<span class="hljs-comment"># Cargar el conjunto de datos</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 entradas del conjunto de datos en objetos 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(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment)},l(r){n=T(r,"P",{"data-svelte-h":!0}),j(n)!=="svelte-wywv5g"&&(n.innerHTML=M),c=m(r),h(d.$$.fragment,r)},m(r,t){l(r,n,t),l(r,c,t),I(d,r,t),p=!0},p:Y,i(r){p||(g(d.$$.fragment,r),p=!0)},o(r){C(d.$$.fragment,r),p=!1},d(r){r&&(a(n),a(c)),Z(d,r)}}}function da($){let n,M,c,d,p,r;return n=new Q({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ia]},$$scope:{ctx:$}}}),c=new Q({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[pa]},$$scope:{ctx:$}}}),p=new Q({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[ca]},$$scope:{ctx:$}}}),{c(){b(n.$$.fragment),M=u(),b(c.$$.fragment),d=u(),b(p.$$.fragment)},l(t){h(n.$$.fragment,t),M=m(t),h(c.$$.fragment,t),d=m(t),h(p.$$.fragment,t)},m(t,o){I(n,t,o),l(t,M,o),I(c,t,o),l(t,d,o),I(p,t,o),r=!0},p(t,o){const w={};o&2&&(w.$$scope={dirty:o,ctx:t}),n.$set(w);const f={};o&2&&(f.$$scope={dirty:o,ctx:t}),c.$set(f);const y={};o&2&&(y.$$scope={dirty:o,ctx:t}),p.$set(y)},i(t){r||(g(n.$$.fragment,t),g(c.$$.fragment,t),g(p.$$.fragment,t),r=!0)},o(t){C(n.$$.fragment,t),C(c.$$.fragment,t),C(p.$$.fragment,t),r=!1},d(t){t&&(a(M),a(d)),Z(n,t),Z(c,t),Z(p,t)}}}function Ma($){let n,M,c="BM25Retriever",d,p,r="sentence-transformers",t;return{c(){n=R("El "),M=U("code"),M.textContent=c,d=R(" es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=U("a"),p.textContent=r,t=R("."),this.h()},l(o){n=k(o,"El "),M=T(o,"CODE",{"data-svelte-h":!0}),j(M)!=="svelte-13pi4gc"&&(M.textContent=c),d=k(o," es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=T(o,"A",{href:!0,"data-svelte-h":!0}),j(p)!=="svelte-8vrx36"&&(p.textContent=r),t=k(o,"."),this.h()},h(){B(p,"href","https://www.sbert.net/")},m(o,w){l(o,n,w),l(o,M,w),l(o,d,w),l(o,p,w),l(o,t,w)},p:Y,d(o){o&&(a(n),a(M),a(d),a(p),a(t))}}}function ua($){let n,M="Usaremos el <code>BM25Retriever</code> del módulo <code>langchain_community.retrievers</code> para crear una herramienta de recuperación.",c,d,p,r,t,o,w="Entendamos esta herramienta paso a paso:",f,y,G="<li>El <code>name</code> y la <code>description</code> ayudan al agente a entender cuándo y cómo usar esta herramienta</li> <li>Los <code>inputs</code> definen qué parámetros espera la herramienta (en este caso, una consulta de búsqueda)</li> <li>Estamos usando un <code>BM25Retriever</code>, que es un algoritmo poderoso de recuperación de texto que no requiere embeddings</li> <li>El método <code>forward</code> procesa la consulta y devuelve la información más relevante del invitado</li>",v;return d=new Ze({props:{$$slots:{default:[Ma]},$$scope:{ctx:$}}}),r=new W({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBUb29sJTBBZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkucmV0cmlldmVycyUyMGltcG9ydCUyMEJNMjVSZXRyaWV2ZXIlMEElMEFjbGFzcyUyMEd1ZXN0SW5mb1JldHJpZXZlclRvb2woVG9vbCklM0ElMEElMjAlMjAlMjAlMjBuYW1lJTIwJTNEJTIwJTIyZ3Vlc3RfaW5mb19yZXRyaWV2ZXIlMjIlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUyMCUzRCUyMCUyMlJlY3VwZXJhJTIwaW5mb3JtYWNpJUMzJUIzbiUyMGRldGFsbGFkYSUyMHNvYnJlJTIwbG9zJTIwaW52aXRhZG9zJTIwZGUlMjBsYSUyMGdhbGElMjBiYXNhZGElMjBlbiUyMHN1JTIwbm9tYnJlJTIwbyUyMHJlbGFjaSVDMyVCM24uJTIyJTBBJTIwJTIwJTIwJTIwaW5wdXRzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycXVlcnklMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0eXBlJTIyJTNBJTIwJTIyc3RyaW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZGVzY3JpcHRpb24lMjIlM0ElMjAlMjJFbCUyMG5vbWJyZSUyMG8lMjByZWxhY2klQzMlQjNuJTIwZGVsJTIwaW52aXRhZG8lMjBzb2JyZSUyMGVsJTIwcXVlJTIwZGVzZWFzJTIwaW5mb3JtYWNpJUMzJUIzbi4lMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjBvdXRwdXRfdHlwZSUyMCUzRCUyMCUyMnN0cmluZyUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMF9faW5pdF9fKHNlbGYlMkMlMjBkb2NzKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYuaXNfaW5pdGlhbGl6ZWQlMjAlM0QlMjBGYWxzZSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYucmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RvY3VtZW50cyhkb2NzKSUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMHF1ZXJ5JTNBJTIwc3RyKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJlc3VsdHMlMjAlM0QlMjBzZWxmLnJldHJpZXZlci5nZXRfcmVsZXZhbnRfZG9jdW1lbnRzKHF1ZXJ5KSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGlmJTIwcmVzdWx0cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiU1Q24lNUNuJTIyLmpvaW4oJTVCZG9jLnBhZ2VfY29udGVudCUyMGZvciUyMGRvYyUyMGluJTIwcmVzdWx0cyU1QiUzQTMlNUQlNUQpJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMk5vJTIwc2UlMjBlbmNvbnRyJUMzJUIzJTIwaW5mb3JtYWNpJUMzJUIzbiUyMHF1ZSUyMGNvaW5jaWRhJTIwY29uJTIwbGElMjBiJUMzJUJBc3F1ZWRhLiUyMiUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwbGElMjBoZXJyYW1pZW50YSUwQWd1ZXN0X2luZm9fdG9vbCUyMCUzRCUyMEd1ZXN0SW5mb1JldHJpZXZlclRvb2woZG9jcyk=",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;Recupera información detallada sobre los invitados de la gala basada en su nombre o relación.&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;El nombre o relación del invitado sobre el que deseas información.&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;No se encontró información que coincida con la búsqueda.&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
guest_info_tool = GuestInfoRetrieverTool(docs)`,wrap:!1}}),{c(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment),p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){n=T(s,"P",{"data-svelte-h":!0}),j(n)!=="svelte-hx2hs9"&&(n.innerHTML=M),c=m(s),h(d.$$.fragment,s),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-37tmzc"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-16u92h7"&&(y.innerHTML=G)},m(s,J){l(s,n,J),l(s,c,J),I(d,s,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p(s,J){const E={};J&2&&(E.$$scope={dirty:J,ctx:s}),d.$set(E)},i(s){v||(g(d.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(d.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(n),a(c),a(p),a(t),a(o),a(f),a(y)),Z(d,s),Z(r,s)}}}function ma($){let n,M,c="BM25Retriever",d,p,r="sentence-transformers",t;return{c(){n=R("El "),M=U("code"),M.textContent=c,d=R(" es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=U("a"),p.textContent=r,t=R("."),this.h()},l(o){n=k(o,"El "),M=T(o,"CODE",{"data-svelte-h":!0}),j(M)!=="svelte-13pi4gc"&&(M.textContent=c),d=k(o," es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=T(o,"A",{href:!0,"data-svelte-h":!0}),j(p)!=="svelte-8vrx36"&&(p.textContent=r),t=k(o,"."),this.h()},h(){B(p,"href","https://www.sbert.net/")},m(o,w){l(o,n,w),l(o,M,w),l(o,d,w),l(o,p,w),l(o,t,w)},p:Y,d(o){o&&(a(n),a(M),a(d),a(p),a(t))}}}function Ja($){let n,M="Usaremos el <code>BM25Retriever</code> del módulo <code>llama_index.retrievers.bm25</code> para crear una herramienta de recuperación.",c,d,p,r,t,o,w="Entendamos esta herramienta paso a paso:",f,y,G="<li>El docstring ayuda al agente a entender cuándo y cómo usar esta herramienta</li> <li>Los decoradores de tipo definen qué parámetros espera la herramienta (en este caso, una consulta de búsqueda)</li> <li>Estamos usando un <code>BM25Retriever</code>, que es un algoritmo poderoso de recuperación de texto que no requiere embeddings</li> <li>El método procesa la consulta y devuelve la información más relevante del invitado</li>",v;return d=new Ze({props:{$$slots:{default:[ma]},$$scope:{ctx:$}}}),r=new W({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEFmcm9tJTIwbGxhbWFfaW5kZXgucmV0cmlldmVycy5ibTI1JTIwaW1wb3J0JTIwQk0yNVJldHJpZXZlciUwQSUwQWJtMjVfcmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RlZmF1bHRzKG5vZGVzJTNEZG9jcyklMEElMEFkZWYlMjBnZXRfZ3Vlc3RfaW5mb19yZXRyaWV2ZXIocXVlcnklM0ElMjBzdHIpJTIwLSUzRSUyMHN0ciUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMlJlY3VwZXJhJTIwaW5mb3JtYWNpJUMzJUIzbiUyMGRldGFsbGFkYSUyMHNvYnJlJTIwbG9zJTIwaW52aXRhZG9zJTIwZGUlMjBsYSUyMGdhbGElMjBiYXNhZGElMjBlbiUyMHN1JTIwbm9tYnJlJTIwbyUyMHJlbGFjaSVDMyVCM24uJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmVzdWx0cyUyMCUzRCUyMGJtMjVfcmV0cmlldmVyLnJldHJpZXZlKHF1ZXJ5KSUwQSUyMCUyMCUyMCUyMGlmJTIwcmVzdWx0cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiU1Q24lNUNuJTIyLmpvaW4oJTVCZG9jLnRleHQlMjBmb3IlMjBkb2MlMjBpbiUyMHJlc3VsdHMlNUIlM0EzJTVEJTVEKSUwQSUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlMjJObyUyMHNlJTIwZW5jb250ciVDMyVCMyUyMGluZm9ybWFjaSVDMyVCM24lMjBxdWUlMjBjb2luY2lkYSUyMGNvbiUyMGxhJTIwYiVDMyVCQXNxdWVkYS4lMjIlMEElMEElMjMlMjBJbmljaWFsaXphciUyMGxhJTIwaGVycmFtaWVudGElMEFndWVzdF9pbmZvX3Rvb2wlMjAlM0QlMjBGdW5jdGlvblRvb2wuZnJvbV9kZWZhdWx0cyhnZXRfZ3Vlc3RfaW5mb19yZXRyaWV2ZXIp",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;Recupera información detallada sobre los invitados de la gala basada en su nombre o relación.&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;No se encontró información que coincida con la búsqueda.&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
guest_info_tool = FunctionTool.from_defaults(get_guest_info_retriever)`,wrap:!1}}),{c(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment),p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){n=T(s,"P",{"data-svelte-h":!0}),j(n)!=="svelte-tu9tca"&&(n.innerHTML=M),c=m(s),h(d.$$.fragment,s),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-37tmzc"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-16og6op"&&(y.innerHTML=G)},m(s,J){l(s,n,J),l(s,c,J),I(d,s,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p(s,J){const E={};J&2&&(E.$$scope={dirty:J,ctx:s}),d.$set(E)},i(s){v||(g(d.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(d.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(n),a(c),a(p),a(t),a(o),a(f),a(y)),Z(d,s),Z(r,s)}}}function ya($){let n,M,c="BM25Retriever",d,p,r="sentence-transformers",t;return{c(){n=R("El "),M=U("code"),M.textContent=c,d=R(" es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=U("a"),p.textContent=r,t=R("."),this.h()},l(o){n=k(o,"El "),M=T(o,"CODE",{"data-svelte-h":!0}),j(M)!=="svelte-13pi4gc"&&(M.textContent=c),d=k(o," es un gran punto de partida para la recuperación, pero para búsquedas semánticas más avanzadas, podrías considerar usar recuperadores basados en embeddings como los de "),p=T(o,"A",{href:!0,"data-svelte-h":!0}),j(p)!=="svelte-8vrx36"&&(p.textContent=r),t=k(o,"."),this.h()},h(){B(p,"href","https://www.sbert.net/")},m(o,w){l(o,n,w),l(o,M,w),l(o,d,w),l(o,p,w),l(o,t,w)},p:Y,d(o){o&&(a(n),a(M),a(d),a(p),a(t))}}}function Ua($){let n,M="Usaremos el <code>BM25Retriever</code> del módulo <code>langchain_community.retrievers</code> para crear una herramienta de recuperación.",c,d,p,r,t,o,w="Entendamos esta herramienta paso a paso:",f,y,G="<li>El <code>name</code> y la <code>description</code> ayudan al agente a entender cuándo y cómo usar esta herramienta</li> <li>Los decoradores de tipo definen qué parámetros espera la herramienta (en este caso, una consulta de búsqueda)</li> <li>Estamos usando un <code>BM25Retriever</code>, que es un potente algoritmo de recuperación de texto que no requiere embeddings</li> <li>El método procesa la consulta y devuelve la información más relevante del invitado</li>",v;return d=new Ze({props:{$$slots:{default:[ya]},$$scope:{ctx:$}}}),r=new W({props:{code:"ZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkucmV0cmlldmVycyUyMGltcG9ydCUyMEJNMjVSZXRyaWV2ZXIlMEFmcm9tJTIwbGFuZ2NoYWluLnRvb2xzJTIwaW1wb3J0JTIwVG9vbCUwQSUwQWJtMjVfcmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RvY3VtZW50cyhkb2NzKSUwQSUwQWRlZiUyMGV4dHJhY3RfdGV4dChxdWVyeSUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyUmVjdXBlcmElMjBpbmZvcm1hY2klQzMlQjNuJTIwZGV0YWxsYWRhJTIwc29icmUlMjBsb3MlMjBpbnZpdGFkb3MlMjBkZSUyMGxhJTIwZ2FsYSUyMGJhc2FkYSUyMGVuJTIwc3UlMjBub21icmUlMjBvJTIwcmVsYWNpJUMzJUIzbi4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjByZXN1bHRzJTIwJTNEJTIwYm0yNV9yZXRyaWV2ZXIuaW52b2tlKHF1ZXJ5KSUwQSUyMCUyMCUyMCUyMGlmJTIwcmVzdWx0cyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiU1Q24lNUNuJTIyLmpvaW4oJTVCZG9jLnRleHQlMjBmb3IlMjBkb2MlMjBpbiUyMHJlc3VsdHMlNUIlM0EzJTVEJTVEKSUwQSUyMCUyMCUyMCUyMGVsc2UlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjAlMjJObyUyMHNlJTIwZW5jb250ciVDMyVCMyUyMGluZm9ybWFjaSVDMyVCM24lMjBxdWUlMjBjb2luY2lkYSUyMGNvbiUyMGxhJTIwYiVDMyVCQXNxdWVkYS4lMjIlMEElMEFndWVzdF9pbmZvX3Rvb2wlMjAlM0QlMjBUb29sKCUwQSUyMCUyMCUyMCUyMG5hbWUlM0QlMjJndWVzdF9pbmZvX3JldHJpZXZlciUyMiUyQyUwQSUyMCUyMCUyMCUyMGZ1bmMlM0RleHRyYWN0X3RleHQlMkMlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUzRCUyMlJlY3VwZXJhJTIwaW5mb3JtYWNpJUMzJUIzbiUyMGRldGFsbGFkYSUyMHNvYnJlJTIwbG9zJTIwaW52aXRhZG9zJTIwZGUlMjBsYSUyMGdhbGElMjBiYXNhZGElMjBlbiUyMHN1JTIwbm9tYnJlJTIwbyUyMHJlbGFjaSVDMyVCM24uJTIyJTBBKQ==",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;Recupera información detallada sobre los invitados de la gala basada en su nombre o relación.&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.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;No se encontró información que coincida con la búsqueda.&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;Recupera información detallada sobre los invitados de la gala basada en su nombre o relación.&quot;</span>
)`,wrap:!1}}),{c(){n=U("p"),n.innerHTML=M,c=u(),b(d.$$.fragment),p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){n=T(s,"P",{"data-svelte-h":!0}),j(n)!=="svelte-hx2hs9"&&(n.innerHTML=M),c=m(s),h(d.$$.fragment,s),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-37tmzc"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-1jczerd"&&(y.innerHTML=G)},m(s,J){l(s,n,J),l(s,c,J),I(d,s,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p(s,J){const E={};J&2&&(E.$$scope={dirty:J,ctx:s}),d.$set(E)},i(s){v||(g(d.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(d.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(n),a(c),a(p),a(t),a(o),a(f),a(y)),Z(d,s),Z(r,s)}}}function Ta($){let n,M,c,d,p,r;return n=new Q({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ua]},$$scope:{ctx:$}}}),c=new Q({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[Ja]},$$scope:{ctx:$}}}),p=new Q({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Ua]},$$scope:{ctx:$}}}),{c(){b(n.$$.fragment),M=u(),b(c.$$.fragment),d=u(),b(p.$$.fragment)},l(t){h(n.$$.fragment,t),M=m(t),h(c.$$.fragment,t),d=m(t),h(p.$$.fragment,t)},m(t,o){I(n,t,o),l(t,M,o),I(c,t,o),l(t,d,o),I(p,t,o),r=!0},p(t,o){const w={};o&2&&(w.$$scope={dirty:o,ctx:t}),n.$set(w);const f={};o&2&&(f.$$scope={dirty:o,ctx:t}),c.$set(f);const y={};o&2&&(y.$$scope={dirty:o,ctx:t}),p.$set(y)},i(t){r||(g(n.$$.fragment,t),g(c.$$.fragment,t),g(p.$$.fragment,t),r=!0)},o(t){C(n.$$.fragment,t),C(c.$$.fragment,t),C(p.$$.fragment,t),r=!1},d(t){t&&(a(M),a(d)),Z(n,t),Z(c,t),Z(p,t)}}}function ja($){let n,M,c,d="Salida esperada:",p,r,t,o,w="Lo que está sucediendo en este paso final:",f,y,G="<li>Inicializamos un modelo de Hugging Face usando la clase <code>InferenceClientModel</code></li> <li>Creamos nuestro agente (Alfred) como un <code>CodeAgent</code>, que puede ejecutar código Python para resolver problemas</li> <li>Le pedimos a Alfred que recupere información sobre una invitada llamada “Lady Ada Lovelace”</li>",v;return n=new W({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBDb2RlQWdlbnQlMkMlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwZWwlMjBtb2RlbG8lMjBkZSUyMEh1Z2dpbmclMjBGYWNlJTBBbW9kZWwlMjAlM0QlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCgpJTBBJTBBJTIzJTIwQ3JlYXIlMjBBbGZyZWQlMkMlMjBudWVzdHJvJTIwYWdlbnRlJTIwZGUlMjBnYWxhJTJDJTIwY29uJTIwbGElMjBoZXJyYW1pZW50YSUyMGRlJTIwaW5mb3JtYWNpJUMzJUIzbiUyMGRlJTIwaW52aXRhZG9zJTBBYWxmcmVkJTIwJTNEJTIwQ29kZUFnZW50KHRvb2xzJTNEJTVCZ3Vlc3RfaW5mb190b29sJTVEJTJDJTIwbW9kZWwlM0Rtb2RlbCklMEElMEElMjMlMjBFamVtcGxvJTIwZGUlMjBjb25zdWx0YSUyMHF1ZSUyMEFsZnJlZCUyMHBvZHIlQzMlQURhJTIwcmVjaWJpciUyMGR1cmFudGUlMjBsYSUyMGdhbGElMEFyZXNwb25zZSUyMCUzRCUyMGFsZnJlZC5ydW4oJTIyQ3UlQzMlQTludGFtZSUyMHNvYnJlJTIwbnVlc3RyYSUyMGludml0YWRhJTIwbGxhbWFkYSUyMCdMYWR5JTIwQWRhJTIwTG92ZWxhY2UnLiUyMiklMEElMEFwcmludCglMjIlRjAlOUYlOEUlQTklMjBSZXNwdWVzdGElMjBkZSUyMEFsZnJlZCUzQSUyMiklMEFwcmludChyZXNwb25zZSk=",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, InferenceClientModel

<span class="hljs-comment"># Inicializar el modelo de Hugging Face</span>
model = InferenceClientModel()

<span class="hljs-comment"># Crear Alfred, nuestro agente de gala, con la herramienta de información de invitados</span>
alfred = CodeAgent(tools=[guest_info_tool], model=model)

<span class="hljs-comment"># Ejemplo de consulta que Alfred podría recibir durante la gala</span>
response = alfred.run(<span class="hljs-string">&quot;Cuéntame sobre nuestra invitada llamada &#x27;Lady Ada Lovelace&#x27;.&quot;</span>)

<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;🎩 Respuesta de Alfred:&quot;</span>)
<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),r=new W({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFCYXNhZG8lMjBlbiUyMGxhJTIwaW5mb3JtYWNpJUMzJUIzbiUyMHF1ZSUyMHJlY3VwZXIlQzMlQTklMkMlMjBMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlcyUyMHVuYSUyMGVzdGltYWRhJTIwbWF0ZW0lQzMlQTF0aWNhJTIweSUyMGFtaWdhLiUyMEVzJTIwcmVjb25vY2lkYSUyMHBvciUyMHN1JTIwdHJhYmFqbyUyMHBpb25lcm8lMjBlbiUyMG1hdGVtJUMzJUExdGljYXMlMjBlJTIwaW5mb3JtJUMzJUExdGljYSUyQyUyMGElMjBtZW51ZG8lMjBjZWxlYnJhZGElMjBjb21vJTIwbGElMjBwcmltZXJhJTIwcHJvZ3JhbWFkb3JhJTIwZGUlMjBjb21wdXRhZG9yYXMlMjBkZWJpZG8lMjBhJTIwc3UlMjB0cmFiYWpvJTIwZW4lMjBsYSUyME0lQzMlQTFxdWluYSUyMEFuYWwlQzMlQUR0aWNhJTIwZGUlMjBDaGFybGVzJTIwQmFiYmFnZS4lMjBTdSUyMGRpcmVjY2klQzMlQjNuJTIwZGUlMjBjb3JyZW8lMjBlbGVjdHIlQzMlQjNuaWNvJTIwZXMlMjBhZGEubG92ZWxhY2UlNDBleGFtcGxlLmNvbS4=",highlighted:`🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:
Basado <span class="hljs-keyword">en</span> <span class="hljs-keyword">la</span> informació<span class="hljs-keyword">n</span> <span class="hljs-keyword">que</span> recuperé, Lady Ada Lovelace es una estimada matemática y amiga. Es reconocida por <span class="hljs-keyword">su</span> trabajo pionero <span class="hljs-keyword">en</span> matemáticas <span class="hljs-keyword">e</span> informática, a menudo celebrada como <span class="hljs-keyword">la</span> primera programadora <span class="hljs-keyword">de</span> computadoras debido a <span class="hljs-keyword">su</span> trabajo <span class="hljs-keyword">en</span> <span class="hljs-keyword">la</span> <span class="hljs-keyword">M</span>áquina Analítica <span class="hljs-keyword">de</span> Charles Babbage. <span class="hljs-keyword">Su</span> direcció<span class="hljs-keyword">n</span> <span class="hljs-keyword">de</span> correo electrónico es ada.lovelace@example.com.`,wrap:!1}}),{c(){b(n.$$.fragment),M=u(),c=U("p"),c.textContent=d,p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){h(n.$$.fragment,s),M=m(s),c=T(s,"P",{"data-svelte-h":!0}),j(c)!=="svelte-wjimjn"&&(c.textContent=d),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-143o5dl"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-ks8pur"&&(y.innerHTML=G)},m(s,J){I(n,s,J),l(s,M,J),l(s,c,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p:Y,i(s){v||(g(n.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(n.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(M),a(c),a(p),a(t),a(o),a(f),a(y)),Z(n,s),Z(r,s)}}}function wa($){let n,M,c,d="Salida esperada:",p,r,t,o,w="Lo que está sucediendo en este paso final:",f,y,G="<li>Inicializamos un modelo de Hugging Face usando la clase <code>HuggingFaceInferenceAPI</code></li> <li>Creamos nuestro agente (Alfred) como un <code>AgentWorkflow</code>, incluyendo la herramienta que acabamos de crear</li> <li>Le pedimos a Alfred que recupere información sobre una invitada llamada “Lady Ada Lovelace”</li>",v;return n=new W({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjBBZ2VudFdvcmtmbG93JTBBZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEElMEElMjMlMjBJbmljaWFsaXphciUyMGVsJTIwbW9kZWxvJTIwZGUlMjBIdWdnaW5nJTIwRmFjZSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTBBJTIzJTIwQ3JlYXIlMjBhJTIwQWxmcmVkJTJDJTIwbnVlc3RybyUyMGFnZW50ZSUyMGRlJTIwZ2FsYSUyQyUyMGNvbiUyMGxhJTIwaGVycmFtaWVudGElMjBkZSUyMGluZm9ybWFjaSVDMyVCM24lMjBkZSUyMGludml0YWRvcyUwQWFsZnJlZCUyMCUzRCUyMEFnZW50V29ya2Zsb3cuZnJvbV90b29sc19vcl9mdW5jdGlvbnMoJTBBJTIwJTIwJTIwJTIwJTVCZ3Vlc3RfaW5mb190b29sJTVEJTJDJTBBJTIwJTIwJTIwJTIwbGxtJTNEbGxtJTJDJTBBKSUwQSUwQSUyMyUyMEVqZW1wbG8lMjBkZSUyMGNvbnN1bHRhJTIwcXVlJTIwQWxmcmVkJTIwcG9kciVDMyVBRGElMjByZWNpYmlyJTIwZHVyYW50ZSUyMGxhJTIwZ2FsYSUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhbGZyZWQucnVuKCUyMkN1JUMzJUE5bnRhbWUlMjBzb2JyZSUyMG51ZXN0cmElMjBpbnZpdGFkYSUyMGxsYW1hZGElMjAnTGFkeSUyMEFkYSUyMExvdmVsYWNlJy4lMjIpJTBBJTBBcHJpbnQoJTIyJUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMjIpJTBBcHJpbnQocmVzcG9uc2Up",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"># Inicializar el modelo de Hugging Face</span>
llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)

<span class="hljs-comment"># Crear a Alfred, nuestro agente de gala, con la herramienta de información de invitados</span>
alfred = AgentWorkflow.from_tools_or_functions(
    [guest_info_tool],
    llm=llm,
)

<span class="hljs-comment"># Ejemplo de consulta que Alfred podría recibir durante la gala</span>
response = <span class="hljs-keyword">await</span> alfred.run(<span class="hljs-string">&quot;Cuéntame sobre nuestra invitada llamada &#x27;Lady Ada Lovelace&#x27;.&quot;</span>)

<span class="hljs-built_in">print</span>(<span class="hljs-string">&quot;🎩 Respuesta de Alfred:&quot;</span>)
<span class="hljs-built_in">print</span>(response)`,wrap:!1}}),r=new W({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlcyUyMHVuYSUyMGVzdGltYWRhJTIwbWF0ZW0lQzMlQTF0aWNhJTIweSUyMGFtaWdhJTJDJTIwcmVjb25vY2lkYSUyMHBvciUyMHN1JTIwdHJhYmFqbyUyMHBpb25lcm8lMjBlbiUyMG1hdGVtJUMzJUExdGljYXMlMjBlJTIwaW5mb3JtJUMzJUExdGljYS4lMjBFcyUyMGNlbGVicmFkYSUyMGNvbW8lMjBsYSUyMHByaW1lcmElMjBwcm9ncmFtYWRvcmElMjBkZSUyMGNvbXB1dGFkb3JhcyUyMGRlYmlkbyUyMGElMjBzdSUyMHRyYWJham8lMjBlbiUyMGxhJTIwTSVDMyVBMXF1aW5hJTIwQW5hbCVDMyVBRHRpY2ElMjBkZSUyMENoYXJsZXMlMjBCYWJiYWdlLiUyMFN1JTIwY29ycmVvJTIwZWxlY3RyJUMzJUIzbmljbyUyMGVzJTIwYWRhLmxvdmVsYWNlJTQwZXhhbXBsZS5jb20u",highlighted:`🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:
Lady Ada Lovelace es una estimada matemática y amiga, reconocida por <span class="hljs-keyword">su</span> trabajo pionero <span class="hljs-keyword">en</span> matemáticas <span class="hljs-keyword">e</span> informática. Es celebrada como <span class="hljs-keyword">la</span> primera programadora <span class="hljs-keyword">de</span> computadoras debido a <span class="hljs-keyword">su</span> trabajo <span class="hljs-keyword">en</span> <span class="hljs-keyword">la</span> <span class="hljs-keyword">M</span>áquina Analítica <span class="hljs-keyword">de</span> Charles Babbage. <span class="hljs-keyword">Su</span> correo electrónico es ada.lovelace@example.com.`,wrap:!1}}),{c(){b(n.$$.fragment),M=u(),c=U("p"),c.textContent=d,p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){h(n.$$.fragment,s),M=m(s),c=T(s,"P",{"data-svelte-h":!0}),j(c)!=="svelte-wjimjn"&&(c.textContent=d),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-143o5dl"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-qe8ipf"&&(y.innerHTML=G)},m(s,J){I(n,s,J),l(s,M,J),l(s,c,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p:Y,i(s){v||(g(n.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(n.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(M),a(c),a(p),a(t),a(o),a(f),a(y)),Z(n,s),Z(r,s)}}}function fa($){let n,M,c,d="Salida esperada:",p,r,t,o,w="Lo que está sucediendo en este paso final:",f,y,G="<li>Inicializamos un modelo de Hugging Face usando la clase <code>HuggingFaceEndpoint</code>. También generamos una interfaz de chat y añadimos las herramientas.</li> <li>Creamos nuestro agente (Alfred) como un <code>StateGraph</code>, que combina 2 nodos (<code>assistant</code>, <code>tools</code>) usando un borde</li> <li>Le pedimos a Alfred que recupere información sobre una invitada llamada “Lady Ada Lovelace”</li>",v;return n=new W({props:{code:"ZnJvbSUyMHR5cGluZyUyMGltcG9ydCUyMFR5cGVkRGljdCUyQyUyMEFubm90YXRlZCUwQWZyb20lMjBsYW5nZ3JhcGguZ3JhcGgubWVzc2FnZSUyMGltcG9ydCUyMGFkZF9tZXNzYWdlcyUwQWZyb20lMjBsYW5nY2hhaW5fY29yZS5tZXNzYWdlcyUyMGltcG9ydCUyMEFueU1lc3NhZ2UlMkMlMjBIdW1hbk1lc3NhZ2UlMkMlMjBBSU1lc3NhZ2UlMEFmcm9tJTIwbGFuZ2dyYXBoLnByZWJ1aWx0JTIwaW1wb3J0JTIwVG9vbE5vZGUlMEFmcm9tJTIwbGFuZ2dyYXBoLmdyYXBoJTIwaW1wb3J0JTIwU1RBUlQlMkMlMjBTdGF0ZUdyYXBoJTBBZnJvbSUyMGxhbmdncmFwaC5wcmVidWlsdCUyMGltcG9ydCUyMHRvb2xzX2NvbmRpdGlvbiUwQWZyb20lMjBsYW5nY2hhaW5faHVnZ2luZ2ZhY2UlMjBpbXBvcnQlMjBIdWdnaW5nRmFjZUVuZHBvaW50JTJDJTIwQ2hhdEh1Z2dpbmdGYWNlJTBBJTBBJTIzJTIwR2VuZXJhciUyMGxhJTIwaW50ZXJmYXolMjBkZSUyMGNoYXQlMkMlMjBpbmNsdXllbmRvJTIwbGFzJTIwaGVycmFtaWVudGFzJTBBbGxtJTIwJTNEJTIwSHVnZ2luZ0ZhY2VFbmRwb2ludCglMEElMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIyUXdlbiUyRlF3ZW4yLjUtQ29kZXItMzJCLUluc3RydWN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwaHVnZ2luZ2ZhY2VodWJfYXBpX3Rva2VuJTNESFVHR0lOR0ZBQ0VIVUJfQVBJX1RPS0VOJTJDJTBBKSUwQSUwQWNoYXQlMjAlM0QlMjBDaGF0SHVnZ2luZ0ZhY2UobGxtJTNEbGxtJTJDJTIwdmVyYm9zZSUzRFRydWUpJTBBdG9vbHMlMjAlM0QlMjAlNUJndWVzdF9pbmZvX3Rvb2wlNUQlMEFjaGF0X3dpdGhfdG9vbHMlMjAlM0QlMjBjaGF0LmJpbmRfdG9vbHModG9vbHMpJTBBJTBBJTIzJTIwR2VuZXJhciUyMGVsJTIwQWdlbnRTdGF0ZSUyMHklMjBlbCUyMGdyYWZvJTIwZGVsJTIwQWdlbnRlJTBBY2xhc3MlMjBBZ2VudFN0YXRlKFR5cGVkRGljdCklM0ElMEElMjAlMjAlMjAlMjBtZXNzYWdlcyUzQSUyMEFubm90YXRlZCU1Qmxpc3QlNUJBbnlNZXNzYWdlJTVEJTJDJTIwYWRkX21lc3NhZ2VzJTVEJTBBJTBBZGVmJTIwYXNzaXN0YW50KHN0YXRlJTNBJTIwQWdlbnRTdGF0ZSklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJtZXNzYWdlcyUyMiUzQSUyMCU1QmNoYXRfd2l0aF90b29scy5pbnZva2Uoc3RhdGUlNUIlMjJtZXNzYWdlcyUyMiU1RCklNUQlMkMlMEElMjAlMjAlMjAlMjAlN0QlMEElMEElMjMlMjMlMjBFbCUyMGdyYWZvJTBBYnVpbGRlciUyMCUzRCUyMFN0YXRlR3JhcGgoQWdlbnRTdGF0ZSklMEElMEElMjMlMjBEZWZpbmlyJTIwbm9kb3MlM0ElMjBlc3RvcyUyMGhhY2VuJTIwZWwlMjB0cmFiYWpvJTBBYnVpbGRlci5hZGRfbm9kZSglMjJhc3Npc3RhbnQlMjIlMkMlMjBhc3Npc3RhbnQpJTBBYnVpbGRlci5hZGRfbm9kZSglMjJ0b29scyUyMiUyQyUyMFRvb2xOb2RlKHRvb2xzKSklMEElMEElMjMlMjBEZWZpbmlyJTIwYm9yZGVzJTNBJTIwZXN0b3MlMjBkZXRlcm1pbmFuJTIwYyVDMyVCM21vJTIwc2UlMjBtdWV2ZSUyMGVsJTIwZmx1am8lMjBkZSUyMGNvbnRyb2wlMEFidWlsZGVyLmFkZF9lZGdlKFNUQVJUJTJDJTIwJTIyYXNzaXN0YW50JTIyKSUwQWJ1aWxkZXIuYWRkX2NvbmRpdGlvbmFsX2VkZ2VzKCUwQSUyMCUyMCUyMCUyMCUyMmFzc2lzdGFudCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMyUyMFNpJTIwZWwlMjAlQzMlQkFsdGltbyUyMG1lbnNhamUlMjByZXF1aWVyZSUyMHVuYSUyMGhlcnJhbWllbnRhJTJDJTIwZW5ydXRhciUyMGElMjBoZXJyYW1pZW50YXMlMEElMjAlMjAlMjAlMjAlMjMlMjBEZSUyMGxvJTIwY29udHJhcmlvJTJDJTIwcHJvcG9yY2lvbmFyJTIwdW5hJTIwcmVzcHVlc3RhJTIwZGlyZWN0YSUwQSUyMCUyMCUyMCUyMHRvb2xzX2NvbmRpdGlvbiUyQyUwQSklMEFidWlsZGVyLmFkZF9lZGdlKCUyMnRvb2xzJTIyJTJDJTIwJTIyYXNzaXN0YW50JTIyKSUwQWFsZnJlZCUyMCUzRCUyMGJ1aWxkZXIuY29tcGlsZSgpJTBBJTBBbWVzc2FnZXMlMjAlM0QlMjAlNUJIdW1hbk1lc3NhZ2UoY29udGVudCUzRCUyMkN1JUMzJUE5bnRhbWUlMjBzb2JyZSUyMG51ZXN0cmElMjBpbnZpdGFkYSUyMGxsYW1hZGElMjAnTGFkeSUyMEFkYSUyMExvdmVsYWNlJy4lMjIpJTVEJTBBcmVzcG9uc2UlMjAlM0QlMjBhbGZyZWQuaW52b2tlKCU3QiUyMm1lc3NhZ2VzJTIyJTNBJTIwbWVzc2FnZXMlN0QpJTBBJTBBcHJpbnQoJTIyJUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMjIpJTBBcHJpbnQobWVzc2FnZXMlNUInbWVzc2FnZXMnJTVEJTVCLTElNUQuY29udGVudCk=",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"># Generar la interfaz de chat, incluyendo las herramientas</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"># Generar el AgentState y el grafo del Agente</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">## El grafo</span>
builder = StateGraph(AgentState)

<span class="hljs-comment"># Definir nodos: estos hacen el trabajo</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"># Definir bordes: estos determinan cómo se mueve el flujo de control</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 el último mensaje requiere una herramienta, enrutar a herramientas</span>
    <span class="hljs-comment"># De lo contrario, proporcionar una respuesta directa</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;Cuéntame sobre nuestra invitada llamada &#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;🎩 Respuesta de Alfred:&quot;</span>)
<span class="hljs-built_in">print</span>(messages[<span class="hljs-string">&#x27;messages&#x27;</span>][-<span class="hljs-number">1</span>].content)`,wrap:!1}}),r=new W({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFMYWR5JTIwQWRhJTIwTG92ZWxhY2UlMjBlcyUyMHVuYSUyMGVzdGltYWRhJTIwbWF0ZW0lQzMlQTF0aWNhJTIweSUyMHBpb25lcmElMjBlbiUyMGluZm9ybSVDMyVBMXRpY2ElMkMlMjBhJTIwbWVudWRvJTIwY2VsZWJyYWRhJTIwY29tbyUyMGxhJTIwcHJpbWVyYSUyMHByb2dyYW1hZG9yYSUyMGRlJTIwY29tcHV0YWRvcmFzJTIwZGViaWRvJTIwYSUyMHN1JTIwdHJhYmFqbyUyMGVuJTIwbGElMjBNJUMzJUExcXVpbmElMjBBbmFsJUMzJUFEdGljYSUyMGRlJTIwQ2hhcmxlcyUyMEJhYmJhZ2Uu",highlighted:`🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:
Lady Ada Lovelace es una estimada matemática y pionera <span class="hljs-keyword">en</span> informática, a menudo celebrada como <span class="hljs-keyword">la</span> primera programadora <span class="hljs-keyword">de</span> computadoras debido a <span class="hljs-keyword">su</span> trabajo <span class="hljs-keyword">en</span> <span class="hljs-keyword">la</span> <span class="hljs-keyword">M</span>áquina Analítica <span class="hljs-keyword">de</span> Charles Babbage.`,wrap:!1}}),{c(){b(n.$$.fragment),M=u(),c=U("p"),c.textContent=d,p=u(),b(r.$$.fragment),t=u(),o=U("p"),o.textContent=w,f=u(),y=U("ul"),y.innerHTML=G},l(s){h(n.$$.fragment,s),M=m(s),c=T(s,"P",{"data-svelte-h":!0}),j(c)!=="svelte-wjimjn"&&(c.textContent=d),p=m(s),h(r.$$.fragment,s),t=m(s),o=T(s,"P",{"data-svelte-h":!0}),j(o)!=="svelte-143o5dl"&&(o.textContent=w),f=m(s),y=T(s,"UL",{"data-svelte-h":!0}),j(y)!=="svelte-opm47d"&&(y.innerHTML=G)},m(s,J){I(n,s,J),l(s,M,J),l(s,c,J),l(s,p,J),I(r,s,J),l(s,t,J),l(s,o,J),l(s,f,J),l(s,y,J),v=!0},p:Y,i(s){v||(g(n.$$.fragment,s),g(r.$$.fragment,s),v=!0)},o(s){C(n.$$.fragment,s),C(r.$$.fragment,s),v=!1},d(s){s&&(a(M),a(c),a(p),a(t),a(o),a(f),a(y)),Z(n,s),Z(r,s)}}}function ba($){let n,M,c,d,p,r;return n=new Q({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ja]},$$scope:{ctx:$}}}),c=new Q({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[wa]},$$scope:{ctx:$}}}),p=new Q({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[fa]},$$scope:{ctx:$}}}),{c(){b(n.$$.fragment),M=u(),b(c.$$.fragment),d=u(),b(p.$$.fragment)},l(t){h(n.$$.fragment,t),M=m(t),h(c.$$.fragment,t),d=m(t),h(p.$$.fragment,t)},m(t,o){I(n,t,o),l(t,M,o),I(c,t,o),l(t,d,o),I(p,t,o),r=!0},p(t,o){const w={};o&2&&(w.$$scope={dirty:o,ctx:t}),n.$set(w);const f={};o&2&&(f.$$scope={dirty:o,ctx:t}),c.$set(f);const y={};o&2&&(y.$$scope={dirty:o,ctx:t}),p.$set(y)},i(t){r||(g(n.$$.fragment,t),g(c.$$.fragment,t),g(p.$$.fragment,t),r=!0)},o(t){C(n.$$.fragment,t),C(c.$$.fragment,t),C(p.$$.fragment,t),r=!1},d(t){t&&(a(M),a(d)),Z(n,t),Z(c,t),Z(p,t)}}}function ha($){let n,M,c="Cuando hayas terminado, implementa tu herramienta de recuperación de invitados en el archivo <code>retriever.py</code>.";return{c(){n=R(`Intenta extender la herramienta de recuperación para que también devuelva iniciadores de conversación basados en los intereses o antecedentes de cada invitado. ¿Cómo modificarías la herramienta para lograr esto?
`),M=U("p"),M.innerHTML=c},l(d){n=k(d,`Intenta extender la herramienta de recuperación para que también devuelva iniciadores de conversación basados en los intereses o antecedentes de cada invitado. ¿Cómo modificarías la herramienta para lograr esto?
`),M=T(d,"P",{"data-svelte-h":!0}),j(M)!=="svelte-aqt4lb"&&(M.innerHTML=c)},m(d,p){l(d,n,p),l(d,M,p)},p:Y,d(d){d&&(a(n),a(M))}}}function Ia($){let n,M,c,d,p,r,t,o="Alfred, tu agente de confianza, está preparando la gala más extravagante del siglo. Para asegurar que el evento transcurra sin problemas, Alfred necesita acceso rápido a información actualizada sobre cada invitado. Ayudemos a Alfred creando una herramienta personalizada de Generación Aumentada por Recuperación (RAG), impulsada por nuestro conjunto de datos personalizado.",w,f,y,G,v="Imagina a Alfred mezclándose entre los invitados, necesitando recordar detalles específicos sobre cada persona en un instante. Un LLM tradicional podría tener dificultades con esta tarea porque:",s,J,E="<li>La lista de invitados es específica para tu evento y no está en los datos de entrenamiento del modelo</li> <li>La información de los invitados puede cambiar o actualizarse frecuentemente</li> <li>Alfred necesita recuperar detalles precisos como direcciones de correo electrónico</li>",ve,q,fs="Aquí es donde brilla la Generación Aumentada por Recuperación (RAG)! Al combinar un sistema de recuperación con un LLM, Alfred puede acceder a información precisa y actualizada sobre tus invitados bajo demanda.",Ge,_,Be,H,We,L,bs="En esta unidad, desarrollaremos nuestro agente dentro de un Espacio de HF(HF Space), como un proyecto Python estructurado. Este enfoque nos ayuda a mantener un código limpio y modular, organizando diferentes funcionalidades en archivos separados. Además, esto crea un caso de uso más realista donde desplegarías la aplicación para uso público.",Ee,D,Ve,P,hs="<li><strong><code>tools.py</code></strong> – Proporciona herramientas auxiliares para el agente.</li> <li><strong><code>retriever.py</code></strong> – Implementa funciones de recuperación para apoyar el acceso al conocimiento.</li> <li><strong><code>app.py</code></strong> – Integra todos los componentes en un agente completamente funcional, que finalizaremos en la última parte de esta unidad.</li>",Re,K,Is='Para una referencia práctica, consulta <a href="https://huggingface.co/spaces/agents-course/Unit_3_Agentic_RAG" rel="nofollow">este Espacio de HF</a>, donde el RAG Agéntico desarrollado en esta unidad está en vivo. ¡Siéntete libre de clonarlo y experimentar!',ke,O,gs="Puedes probar directamente el agente a continuación:",Ye,x,Cs,xe,ee,Ne,se,Zs='Nuestro conjunto de datos <a href="https://huggingface.co/datasets/agents-course/unit3-invitees/" rel="nofollow"><code>agents-course/unit3-invitees</code></a> contiene los siguientes campos para cada invitado:',Qe,ae,$s="<li><strong>Nombre</strong>: Nombre completo del invitado</li> <li><strong>Relación</strong>: Cómo se relaciona el invitado con el anfitrión</li> <li><strong>Descripción</strong>: Una breve biografía o hechos interesantes sobre el invitado</li> <li><strong>Dirección de Correo Electrónico</strong>: Información de contacto para enviar invitaciones o seguimientos</li>",_e,le,vs="A continuación se muestra una vista previa del conjunto de datos:",Se,N,Gs,ze,S,Xe,te,Fe,ne,Bs="Crearemos una herramienta personalizada que Alfred pueda usar para recuperar rápidamente información de los invitados durante la gala. Dividamos esto en tres pasos manejables:",Ae,oe,Ws="<li>Cargar y preparar el conjunto de datos</li> <li>Crear la Herramienta de Recuperación</li> <li>Integrar la Herramienta con Alfred</li>",qe,re,Es="¡Comencemos con la carga y preparación del conjunto de datos!",He,ie,Le,pe,Vs="Primero, necesitamos transformar nuestros datos brutos de invitados en un formato optimizado para la recuperación.",De,z,Pe,ce,Rs="En el código anterior:",Ke,de,ks="<li>Cargamos el conjunto de datos</li> <li>Convertimos cada entrada de invitado en un objeto <code>Document</code> con contenido formateado</li> <li>Almacenamos los objetos <code>Document</code> en una lista</li>",Oe,Me,Ys="Esto significa que tenemos todos nuestros datos disponibles de manera ordenada para poder comenzar a configurar nuestra recuperación.",es,ue,ss,me,xs="Ahora, creemos una herramienta personalizada que Alfred pueda usar para buscar en nuestra información de invitados.",as,X,ls,Je,ts,ye,Ns="Finalmente, juntemos todo creando nuestro agente y equipándolo con nuestra herramienta personalizada:",ns,F,os,Ue,rs,Te,Qs="Durante la gala, una conversación podría fluir así:",is,je,_s="<strong>Tú:</strong> “Alfred, ¿quién es ese caballero hablando con el embajador?”",ps,we,Ss="<strong>Alfred:</strong> <em>rápidamente busca en la base de datos de invitados</em> “Ese es el Dr. Nikola Tesla, señor. Es un viejo amigo de sus días universitarios. Recientemente ha patentado un nuevo sistema de transmisión de energía inalámbrica y estaría encantado de discutirlo con usted. Solo recuerde que es apasionado por las palomas, así que eso podría ser un buen tema de conversación.”",cs,fe,ds,be,Ms,he,zs="Ahora que Alfred puede recuperar información de invitados, considera cómo podrías mejorar este sistema:",us,Ie,Xs='<li><strong>Mejorar el recuperador</strong> para usar un algoritmo más sofisticado como <a href="https://www.sbert.net/" rel="nofollow">sentence-transformers</a></li> <li><strong>Implementar una memoria de conversación</strong> para que Alfred recuerde interacciones previas</li> <li><strong>Combinar con búsqueda web</strong> para obtener la información más reciente sobre invitados desconocidos</li> <li><strong>Integrar múltiples índices</strong> para obtener información más completa de fuentes verificadas</li>',ms,ge,Fs="¡Ahora Alfred está completamente equipado para manejar consultas de invitados sin esfuerzo, asegurando que tu gala sea recordada como el evento más sofisticado y encantador del siglo!",Js,A,ys,Ce,Us,$e,Ts;return p=new V({props:{title:"Creando una Herramienta RAG para Historias de Invitados",local:"creando-una-herramienta-rag-para-historias-de-invitados",headingTag:"h1"}}),f=new V({props:{title:"¿Por qué RAG para una Gala?",local:"por-qué-rag-para-una-gala",headingTag:"h2"}}),_=new Ze({props:{$$slots:{default:[oa]},$$scope:{ctx:$}}}),H=new V({props:{title:"Configurando nuestra aplicación",local:"configurando-nuestra-aplicación",headingTag:"h2"}}),D=new V({props:{title:"Estructura del Proyecto",local:"estructura-del-proyecto",headingTag:"h3"}}),ee=new V({props:{title:"Descripción General del Conjunto de Datos",local:"descripción-general-del-conjunto-de-datos",headingTag:"h2"}}),S=new Ze({props:{$$slots:{default:[ra]},$$scope:{ctx:$}}}),te=new V({props:{title:"Construyendo la Herramienta de Lista de Invitados",local:"construyendo-la-herramienta-de-lista-de-invitados",headingTag:"h2"}}),ie=new V({props:{title:"Paso 1: Cargar y Preparar el Conjunto de Datos",local:"paso-1-cargar-y-preparar-el-conjunto-de-datos",headingTag:"h3"}}),z=new ws({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[da]},$$scope:{ctx:$}}}),ue=new V({props:{title:"Paso 2: Crear la Herramienta de Recuperación",local:"paso-2-crear-la-herramienta-de-recuperación",headingTag:"h3"}}),X=new ws({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[Ta]},$$scope:{ctx:$}}}),Je=new V({props:{title:"Paso 3: Integrar la Herramienta con Alfred",local:"paso-3-integrar-la-herramienta-con-alfred",headingTag:"h3"}}),F=new ws({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[ba]},$$scope:{ctx:$}}}),Ue=new V({props:{title:"Ejemplo de Interacción",local:"ejemplo-de-interacción",headingTag:"h2"}}),fe=new W({props:{code:"JTdCJTBBJTIwJTIwJTIwJTIwJTIybmFtZSUyMiUzQSUyMCUyMkRyLiUyME5pa29sYSUyMFRlc2xhJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIycmVsYXRpb24lMjIlM0ElMjAlMjJ2aWVqbyUyMGFtaWdvJTIwZGUlMjBkJUMzJUFEYXMlMjB1bml2ZXJzaXRhcmlvcyUyMiUyQyUyMCUyMCUwQSUyMCUyMCUyMCUyMCUyMmRlc2NyaXB0aW9uJTIyJTNBJTIwJTIyRWwlMjBEci4lMjBOaWtvbGElMjBUZXNsYSUyMGVzJTIwdW4lMjB2aWVqbyUyMGFtaWdvJTIwZGUlMjBzdXMlMjBkJUMzJUFEYXMlMjB1bml2ZXJzaXRhcmlvcy4lMjBSZWNpZW50ZW1lbnRlJTIwaGElMjBwYXRlbnRhZG8lMjB1biUyMG51ZXZvJTIwc2lzdGVtYSUyMGRlJTIwdHJhbnNtaXNpJUMzJUIzbiUyMGRlJTIwZW5lcmclQzMlQURhJTIwaW5hbCVDMyVBMW1icmljYSUyMHklMjBlc3RhciVDMyVBRGElMjBlbmNhbnRhZG8lMjBkZSUyMGRpc2N1dGlybG8lMjBjb24lMjB1c3RlZC4lMjBTb2xvJTIwcmVjdWVyZGUlMjBxdWUlMjBlcyUyMGFwYXNpb25hZG8lMjBwb3IlMjBsYXMlMjBwYWxvbWFzJTJDJTIwYXMlQzMlQUQlMjBxdWUlMjBlc28lMjBwb2RyJUMzJUFEYSUyMHNlciUyMHVuJTIwYnVlbiUyMHRlbWElMjBkZSUyMGNvbnZlcnNhY2klQzMlQjNuLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMmVtYWlsJTIyJTNBJTIwJTIybmlrb2xhLnRlc2xhJTQwZ21haWwuY29tJTIyJTBBJTdE",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;viejo amigo de días universitarios&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;El Dr. Nikola Tesla es un viejo amigo de sus días universitarios. Recientemente ha patentado un nuevo sistema de transmisión de energía inalámbrica y estaría encantado de discutirlo con usted. Solo recuerde que es apasionado por las palomas, así que eso podría ser un buen tema de conversación.&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 V({props:{title:"Llevándolo Más Allá",local:"llevándolo-más-allá",headingTag:"h2"}}),A=new Ze({props:{$$slots:{default:[ha]},$$scope:{ctx:$}}}),Ce=new na({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/unit3/agentic-rag/invitees.mdx"}}),{c(){n=U("meta"),M=u(),c=U("p"),d=u(),b(p.$$.fragment),r=u(),t=U("p"),t.textContent=o,w=u(),b(f.$$.fragment),y=u(),G=U("p"),G.textContent=v,s=u(),J=U("ol"),J.innerHTML=E,ve=u(),q=U("p"),q.textContent=fs,Ge=u(),b(_.$$.fragment),Be=u(),b(H.$$.fragment),We=u(),L=U("p"),L.textContent=bs,Ee=u(),b(D.$$.fragment),Ve=u(),P=U("ul"),P.innerHTML=hs,Re=u(),K=U("p"),K.innerHTML=Is,ke=u(),O=U("p"),O.textContent=gs,Ye=u(),x=U("iframe"),xe=u(),b(ee.$$.fragment),Ne=u(),se=U("p"),se.innerHTML=Zs,Qe=u(),ae=U("ul"),ae.innerHTML=$s,_e=u(),le=U("p"),le.textContent=vs,Se=u(),N=U("iframe"),ze=u(),b(S.$$.fragment),Xe=u(),b(te.$$.fragment),Fe=u(),ne=U("p"),ne.textContent=Bs,Ae=u(),oe=U("ol"),oe.innerHTML=Ws,qe=u(),re=U("p"),re.textContent=Es,He=u(),b(ie.$$.fragment),Le=u(),pe=U("p"),pe.textContent=Vs,De=u(),b(z.$$.fragment),Pe=u(),ce=U("p"),ce.textContent=Rs,Ke=u(),de=U("ul"),de.innerHTML=ks,Oe=u(),Me=U("p"),Me.textContent=Ys,es=u(),b(ue.$$.fragment),ss=u(),me=U("p"),me.textContent=xs,as=u(),b(X.$$.fragment),ls=u(),b(Je.$$.fragment),ts=u(),ye=U("p"),ye.textContent=Ns,ns=u(),b(F.$$.fragment),os=u(),b(Ue.$$.fragment),rs=u(),Te=U("p"),Te.textContent=Qs,is=u(),je=U("p"),je.innerHTML=_s,ps=u(),we=U("p"),we.innerHTML=Ss,cs=u(),b(fe.$$.fragment),ds=u(),b(be.$$.fragment),Ms=u(),he=U("p"),he.textContent=zs,us=u(),Ie=U("ol"),Ie.innerHTML=Xs,ms=u(),ge=U("p"),ge.textContent=Fs,Js=u(),b(A.$$.fragment),ys=u(),b(Ce.$$.fragment),Us=u(),$e=U("p"),this.h()},l(e){const i=la("svelte-u9bgzb",document.head);n=T(i,"META",{name:!0,content:!0}),i.forEach(a),M=m(e),c=T(e,"P",{}),js(c).forEach(a),d=m(e),h(p.$$.fragment,e),r=m(e),t=T(e,"P",{"data-svelte-h":!0}),j(t)!=="svelte-kr2sua"&&(t.textContent=o),w=m(e),h(f.$$.fragment,e),y=m(e),G=T(e,"P",{"data-svelte-h":!0}),j(G)!=="svelte-81plxj"&&(G.textContent=v),s=m(e),J=T(e,"OL",{"data-svelte-h":!0}),j(J)!=="svelte-hyh64d"&&(J.innerHTML=E),ve=m(e),q=T(e,"P",{"data-svelte-h":!0}),j(q)!=="svelte-1pskziw"&&(q.textContent=fs),Ge=m(e),h(_.$$.fragment,e),Be=m(e),h(H.$$.fragment,e),We=m(e),L=T(e,"P",{"data-svelte-h":!0}),j(L)!=="svelte-rjjrlh"&&(L.textContent=bs),Ee=m(e),h(D.$$.fragment,e),Ve=m(e),P=T(e,"UL",{"data-svelte-h":!0}),j(P)!=="svelte-ug6v2"&&(P.innerHTML=hs),Re=m(e),K=T(e,"P",{"data-svelte-h":!0}),j(K)!=="svelte-1q2hi5g"&&(K.innerHTML=Is),ke=m(e),O=T(e,"P",{"data-svelte-h":!0}),j(O)!=="svelte-1h3egp1"&&(O.textContent=gs),Ye=m(e),x=T(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),js(x).forEach(a),xe=m(e),h(ee.$$.fragment,e),Ne=m(e),se=T(e,"P",{"data-svelte-h":!0}),j(se)!=="svelte-15e4w12"&&(se.innerHTML=Zs),Qe=m(e),ae=T(e,"UL",{"data-svelte-h":!0}),j(ae)!=="svelte-1t9z4qv"&&(ae.innerHTML=$s),_e=m(e),le=T(e,"P",{"data-svelte-h":!0}),j(le)!=="svelte-1ek1znz"&&(le.textContent=vs),Se=m(e),N=T(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),js(N).forEach(a),ze=m(e),h(S.$$.fragment,e),Xe=m(e),h(te.$$.fragment,e),Fe=m(e),ne=T(e,"P",{"data-svelte-h":!0}),j(ne)!=="svelte-3mdv5y"&&(ne.textContent=Bs),Ae=m(e),oe=T(e,"OL",{"data-svelte-h":!0}),j(oe)!=="svelte-qz8oe8"&&(oe.innerHTML=Ws),qe=m(e),re=T(e,"P",{"data-svelte-h":!0}),j(re)!=="svelte-133e1ug"&&(re.textContent=Es),He=m(e),h(ie.$$.fragment,e),Le=m(e),pe=T(e,"P",{"data-svelte-h":!0}),j(pe)!=="svelte-xpu2ei"&&(pe.textContent=Vs),De=m(e),h(z.$$.fragment,e),Pe=m(e),ce=T(e,"P",{"data-svelte-h":!0}),j(ce)!=="svelte-1mfw0sf"&&(ce.textContent=Rs),Ke=m(e),de=T(e,"UL",{"data-svelte-h":!0}),j(de)!=="svelte-dn9sg6"&&(de.innerHTML=ks),Oe=m(e),Me=T(e,"P",{"data-svelte-h":!0}),j(Me)!=="svelte-8prxa4"&&(Me.textContent=Ys),es=m(e),h(ue.$$.fragment,e),ss=m(e),me=T(e,"P",{"data-svelte-h":!0}),j(me)!=="svelte-11t7nlr"&&(me.textContent=xs),as=m(e),h(X.$$.fragment,e),ls=m(e),h(Je.$$.fragment,e),ts=m(e),ye=T(e,"P",{"data-svelte-h":!0}),j(ye)!=="svelte-1nrd3vd"&&(ye.textContent=Ns),ns=m(e),h(F.$$.fragment,e),os=m(e),h(Ue.$$.fragment,e),rs=m(e),Te=T(e,"P",{"data-svelte-h":!0}),j(Te)!=="svelte-x35jih"&&(Te.textContent=Qs),is=m(e),je=T(e,"P",{"data-svelte-h":!0}),j(je)!=="svelte-yk3ykx"&&(je.innerHTML=_s),ps=m(e),we=T(e,"P",{"data-svelte-h":!0}),j(we)!=="svelte-twxbr6"&&(we.innerHTML=Ss),cs=m(e),h(fe.$$.fragment,e),ds=m(e),h(be.$$.fragment,e),Ms=m(e),he=T(e,"P",{"data-svelte-h":!0}),j(he)!=="svelte-ofzv4y"&&(he.textContent=zs),us=m(e),Ie=T(e,"OL",{"data-svelte-h":!0}),j(Ie)!=="svelte-1ply8go"&&(Ie.innerHTML=Xs),ms=m(e),ge=T(e,"P",{"data-svelte-h":!0}),j(ge)!=="svelte-10gbwj9"&&(ge.textContent=Fs),Js=m(e),h(A.$$.fragment,e),ys=m(e),h(Ce.$$.fragment,e),Us=m(e),$e=T(e,"P",{}),js($e).forEach(a),this.h()},h(){B(n,"name","hf:doc:metadata"),B(n,"content",ga),Ks(x.src,Cs="https://agents-course-unit-3-agentic-rag.hf.space")||B(x,"src",Cs),B(x,"frameborder","0"),B(x,"width","850"),B(x,"height","450"),Ks(N.src,Gs="https://huggingface.co/datasets/agents-course/unit3-invitees/embed/viewer/default/train")||B(N,"src",Gs),B(N,"frameborder","0"),B(N,"width","100%"),B(N,"height","560px")},m(e,i){ta(document.head,n),l(e,M,i),l(e,c,i),l(e,d,i),I(p,e,i),l(e,r,i),l(e,t,i),l(e,w,i),I(f,e,i),l(e,y,i),l(e,G,i),l(e,s,i),l(e,J,i),l(e,ve,i),l(e,q,i),l(e,Ge,i),I(_,e,i),l(e,Be,i),I(H,e,i),l(e,We,i),l(e,L,i),l(e,Ee,i),I(D,e,i),l(e,Ve,i),l(e,P,i),l(e,Re,i),l(e,K,i),l(e,ke,i),l(e,O,i),l(e,Ye,i),l(e,x,i),l(e,xe,i),I(ee,e,i),l(e,Ne,i),l(e,se,i),l(e,Qe,i),l(e,ae,i),l(e,_e,i),l(e,le,i),l(e,Se,i),l(e,N,i),l(e,ze,i),I(S,e,i),l(e,Xe,i),I(te,e,i),l(e,Fe,i),l(e,ne,i),l(e,Ae,i),l(e,oe,i),l(e,qe,i),l(e,re,i),l(e,He,i),I(ie,e,i),l(e,Le,i),l(e,pe,i),l(e,De,i),I(z,e,i),l(e,Pe,i),l(e,ce,i),l(e,Ke,i),l(e,de,i),l(e,Oe,i),l(e,Me,i),l(e,es,i),I(ue,e,i),l(e,ss,i),l(e,me,i),l(e,as,i),I(X,e,i),l(e,ls,i),I(Je,e,i),l(e,ts,i),l(e,ye,i),l(e,ns,i),I(F,e,i),l(e,os,i),I(Ue,e,i),l(e,rs,i),l(e,Te,i),l(e,is,i),l(e,je,i),l(e,ps,i),l(e,we,i),l(e,cs,i),I(fe,e,i),l(e,ds,i),I(be,e,i),l(e,Ms,i),l(e,he,i),l(e,us,i),l(e,Ie,i),l(e,ms,i),l(e,ge,i),l(e,Js,i),I(A,e,i),l(e,ys,i),I(Ce,e,i),l(e,Us,i),l(e,$e,i),Ts=!0},p(e,[i]){const As={};i&2&&(As.$$scope={dirty:i,ctx:e}),_.$set(As);const qs={};i&2&&(qs.$$scope={dirty:i,ctx:e}),S.$set(qs);const Hs={};i&2&&(Hs.$$scope={dirty:i,ctx:e}),z.$set(Hs);const Ls={};i&2&&(Ls.$$scope={dirty:i,ctx:e}),X.$set(Ls);const Ds={};i&2&&(Ds.$$scope={dirty:i,ctx:e}),F.$set(Ds);const Ps={};i&2&&(Ps.$$scope={dirty:i,ctx:e}),A.$set(Ps)},i(e){Ts||(g(p.$$.fragment,e),g(f.$$.fragment,e),g(_.$$.fragment,e),g(H.$$.fragment,e),g(D.$$.fragment,e),g(ee.$$.fragment,e),g(S.$$.fragment,e),g(te.$$.fragment,e),g(ie.$$.fragment,e),g(z.$$.fragment,e),g(ue.$$.fragment,e),g(X.$$.fragment,e),g(Je.$$.fragment,e),g(F.$$.fragment,e),g(Ue.$$.fragment,e),g(fe.$$.fragment,e),g(be.$$.fragment,e),g(A.$$.fragment,e),g(Ce.$$.fragment,e),Ts=!0)},o(e){C(p.$$.fragment,e),C(f.$$.fragment,e),C(_.$$.fragment,e),C(H.$$.fragment,e),C(D.$$.fragment,e),C(ee.$$.fragment,e),C(S.$$.fragment,e),C(te.$$.fragment,e),C(ie.$$.fragment,e),C(z.$$.fragment,e),C(ue.$$.fragment,e),C(X.$$.fragment,e),C(Je.$$.fragment,e),C(F.$$.fragment,e),C(Ue.$$.fragment,e),C(fe.$$.fragment,e),C(be.$$.fragment,e),C(A.$$.fragment,e),C(Ce.$$.fragment,e),Ts=!1},d(e){e&&(a(M),a(c),a(d),a(r),a(t),a(w),a(y),a(G),a(s),a(J),a(ve),a(q),a(Ge),a(Be),a(We),a(L),a(Ee),a(Ve),a(P),a(Re),a(K),a(ke),a(O),a(Ye),a(x),a(xe),a(Ne),a(se),a(Qe),a(ae),a(_e),a(le),a(Se),a(N),a(ze),a(Xe),a(Fe),a(ne),a(Ae),a(oe),a(qe),a(re),a(He),a(Le),a(pe),a(De),a(Pe),a(ce),a(Ke),a(de),a(Oe),a(Me),a(es),a(ss),a(me),a(as),a(ls),a(ts),a(ye),a(ns),a(os),a(rs),a(Te),a(is),a(je),a(ps),a(we),a(cs),a(ds),a(Ms),a(he),a(us),a(Ie),a(ms),a(ge),a(Js),a(ys),a(Us),a($e)),a(n),Z(p,e),Z(f,e),Z(_,e),Z(H,e),Z(D,e),Z(ee,e),Z(S,e),Z(te,e),Z(ie,e),Z(z,e),Z(ue,e),Z(X,e),Z(Je,e),Z(F,e),Z(Ue,e),Z(fe,e),Z(be,e),Z(A,e),Z(Ce,e)}}}const ga='{"title":"Creando una Herramienta RAG para Historias de Invitados","local":"creando-una-herramienta-rag-para-historias-de-invitados","sections":[{"title":"¿Por qué RAG para una Gala?","local":"por-qué-rag-para-una-gala","sections":[],"depth":2},{"title":"Configurando nuestra aplicación","local":"configurando-nuestra-aplicación","sections":[{"title":"Estructura del Proyecto","local":"estructura-del-proyecto","sections":[],"depth":3}],"depth":2},{"title":"Descripción General del Conjunto de Datos","local":"descripción-general-del-conjunto-de-datos","sections":[],"depth":2},{"title":"Construyendo la Herramienta de Lista de Invitados","local":"construyendo-la-herramienta-de-lista-de-invitados","sections":[{"title":"Paso 1: Cargar y Preparar el Conjunto de Datos","local":"paso-1-cargar-y-preparar-el-conjunto-de-datos","sections":[],"depth":3},{"title":"Paso 2: Crear la Herramienta de Recuperación","local":"paso-2-crear-la-herramienta-de-recuperación","sections":[],"depth":3},{"title":"Paso 3: Integrar la Herramienta con Alfred","local":"paso-3-integrar-la-herramienta-con-alfred","sections":[],"depth":3}],"depth":2},{"title":"Ejemplo de Interacción","local":"ejemplo-de-interacción","sections":[],"depth":2},{"title":"Llevándolo Más Allá","local":"llevándolo-más-allá","sections":[],"depth":2}],"depth":1}';function Ca($){return ea(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Va extends sa{constructor(n){super(),aa(this,n,Ca,Ia,Os,{})}}export{Va as component};
