import{s as Kl,a as Pl,o as Ol,n as N}from"../chunks/scheduler.505acc25.js";import{S as es,i as ls,e as J,s as c,c as f,h as ss,a as y,d as l,b as d,f as Tl,g as h,j as T,k as W,l as as,m as a,n as I,t as g,o as C,p as Z}from"../chunks/index.fbb49fb4.js";import{C as ts}from"../chunks/CopyLLMTxtMenu.38c593c4.js";import{C as E}from"../chunks/CodeBlock.2ead06c8.js";import{H as V}from"../chunks/Heading.511e0027.js";import{H as Ul,a as Y}from"../chunks/HfOption.7b46941a.js";import{E as ns}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.9ca82795.js";function os($){let r,U="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>.",p,u,m;return u=new E({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluX2NvcmUuZG9jdW1lbnRzJTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDYXJnYXIlMjBlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBlbnRyYWRhcyUyMGRlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUyMGVuJTIwb2JqZXRvcyUyMERvY3VtZW50JTBBZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhZ2VfY29udGVudCUzRCUyMiU1Q24lMjIuam9pbiglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmJTIyTmFtZSUzQSUyMCU3Qmd1ZXN0JTVCJ25hbWUnJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMlJlbGF0aW9uJTNBJTIwJTdCZ3Vlc3QlNUIncmVsYXRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkRlc2NyaXB0aW9uJTNBJTIwJTdCZ3Vlc3QlNUInZGVzY3JpcHRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkVtYWlsJTNBJTIwJTdCZ3Vlc3QlNUInZW1haWwnJTVEJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1ldGFkYXRhJTNEJTdCJTIybmFtZSUyMiUzQSUyMGd1ZXN0JTVCJTIybmFtZSUyMiU1RCU3RCUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjBmb3IlMjBndWVzdCUyMGluJTIwZ3Vlc3RfZGF0YXNldCUwQSU1RCUwQQ==",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"># 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(){r=J("p"),r.innerHTML=U,p=c(),f(u.$$.fragment)},l(i){r=y(i,"P",{"data-svelte-h":!0}),T(r)!=="svelte-wywv5g"&&(r.innerHTML=U),p=d(i),h(u.$$.fragment,i)},m(i,s){a(i,r,s),a(i,p,s),I(u,i,s),m=!0},p:N,i(i){m||(g(u.$$.fragment,i),m=!0)},o(i){C(u.$$.fragment,i),m=!1},d(i){i&&(l(r),l(p)),Z(u,i)}}}function rs($){let r,U="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>.",p,u,m;return u=new E({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(){r=J("p"),r.innerHTML=U,p=c(),f(u.$$.fragment)},l(i){r=y(i,"P",{"data-svelte-h":!0}),T(r)!=="svelte-eraujj"&&(r.innerHTML=U),p=d(i),h(u.$$.fragment,i)},m(i,s){a(i,r,s),a(i,p,s),I(u,i,s),m=!0},p:N,i(i){m||(g(u.$$.fragment,i),m=!0)},o(i){C(u.$$.fragment,i),m=!1},d(i){i&&(l(r),l(p)),Z(u,i)}}}function is($){let r,U="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>.",p,u,m;return u=new E({props:{code:"aW1wb3J0JTIwZGF0YXNldHMlMEFmcm9tJTIwbGFuZ2NoYWluX2NvcmUuZG9jdW1lbnRzJTIwaW1wb3J0JTIwRG9jdW1lbnQlMEElMEElMjMlMjBDYXJnYXIlMjBlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUwQWd1ZXN0X2RhdGFzZXQlMjAlM0QlMjBkYXRhc2V0cy5sb2FkX2RhdGFzZXQoJTIyYWdlbnRzLWNvdXJzZSUyRnVuaXQzLWludml0ZWVzJTIyJTJDJTIwc3BsaXQlM0QlMjJ0cmFpbiUyMiklMEElMEElMjMlMjBDb252ZXJ0aXIlMjBlbnRyYWRhcyUyMGRlbCUyMGNvbmp1bnRvJTIwZGUlMjBkYXRvcyUyMGVuJTIwb2JqZXRvcyUyMERvY3VtZW50JTBBZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHBhZ2VfY29udGVudCUzRCUyMiU1Q24lMjIuam9pbiglNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBmJTIyTmFtZSUzQSUyMCU3Qmd1ZXN0JTVCJ25hbWUnJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMlJlbGF0aW9uJTNBJTIwJTdCZ3Vlc3QlNUIncmVsYXRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkRlc2NyaXB0aW9uJTNBJTIwJTdCZ3Vlc3QlNUInZGVzY3JpcHRpb24nJTVEJTdEJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZiUyMkVtYWlsJTNBJTIwJTdCZ3Vlc3QlNUInZW1haWwnJTVEJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTVEKSUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1ldGFkYXRhJTNEJTdCJTIybmFtZSUyMiUzQSUyMGd1ZXN0JTVCJTIybmFtZSUyMiU1RCU3RCUwQSUyMCUyMCUyMCUyMCklMEElMjAlMjAlMjAlMjBmb3IlMjBndWVzdCUyMGluJTIwZ3Vlc3RfZGF0YXNldCUwQSU1RA==",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"># 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(){r=J("p"),r.innerHTML=U,p=c(),f(u.$$.fragment)},l(i){r=y(i,"P",{"data-svelte-h":!0}),T(r)!=="svelte-wywv5g"&&(r.innerHTML=U),p=d(i),h(u.$$.fragment,i)},m(i,s){a(i,r,s),a(i,p,s),I(u,i,s),m=!0},p:N,i(i){m||(g(u.$$.fragment,i),m=!0)},o(i){C(u.$$.fragment,i),m=!1},d(i){i&&(l(r),l(p)),Z(u,i)}}}function ps($){let r,U,p,u,m,i;return r=new Y({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[os]},$$scope:{ctx:$}}}),p=new Y({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[rs]},$$scope:{ctx:$}}}),m=new Y({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[is]},$$scope:{ctx:$}}}),{c(){f(r.$$.fragment),U=c(),f(p.$$.fragment),u=c(),f(m.$$.fragment)},l(s){h(r.$$.fragment,s),U=d(s),h(p.$$.fragment,s),u=d(s),h(m.$$.fragment,s)},m(s,M){I(r,s,M),a(s,U,M),I(p,s,M),a(s,u,M),I(m,s,M),i=!0},p(s,M){const w={};M&2&&(w.$$scope={dirty:M,ctx:s}),r.$set(w);const v={};M&2&&(v.$$scope={dirty:M,ctx:s}),p.$set(v);const j={};M&2&&(j.$$scope={dirty:M,ctx:s}),m.$set(j)},i(s){i||(g(r.$$.fragment,s),g(p.$$.fragment,s),g(m.$$.fragment,s),i=!0)},o(s){C(r.$$.fragment,s),C(p.$$.fragment,s),C(m.$$.fragment,s),i=!1},d(s){s&&(l(U),l(u)),Z(r,s),Z(p,s),Z(m,s)}}}function cs($){let r,U="Usaremos el <code>BM25Retriever</code> del módulo <code>langchain_community.retrievers</code> para crear una herramienta de recuperación.",p,u,m='<p>El <code>BM25Retriever</code> 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 <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',i,s,M,w,v="Entendamos esta herramienta paso a paso:",j,b,B="<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>",n;return s=new E({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(){r=J("p"),r.innerHTML=U,p=c(),u=J("blockquote"),u.innerHTML=m,i=c(),f(s.$$.fragment),M=c(),w=J("p"),w.textContent=v,j=c(),b=J("ul"),b.innerHTML=B,this.h()},l(t){r=y(t,"P",{"data-svelte-h":!0}),T(r)!=="svelte-hx2hs9"&&(r.innerHTML=U),p=d(t),u=y(t,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(u)!=="svelte-kq5ex6"&&(u.innerHTML=m),i=d(t),h(s.$$.fragment,t),M=d(t),w=y(t,"P",{"data-svelte-h":!0}),T(w)!=="svelte-37tmzc"&&(w.textContent=v),j=d(t),b=y(t,"UL",{"data-svelte-h":!0}),T(b)!=="svelte-16u92h7"&&(b.innerHTML=B),this.h()},h(){W(u,"class","tip")},m(t,G){a(t,r,G),a(t,p,G),a(t,u,G),a(t,i,G),I(s,t,G),a(t,M,G),a(t,w,G),a(t,j,G),a(t,b,G),n=!0},p:N,i(t){n||(g(s.$$.fragment,t),n=!0)},o(t){C(s.$$.fragment,t),n=!1},d(t){t&&(l(r),l(p),l(u),l(i),l(M),l(w),l(j),l(b)),Z(s,t)}}}function ds($){let r,U="Usaremos el <code>BM25Retriever</code> del módulo <code>llama_index.retrievers.bm25</code> para crear una herramienta de recuperación.",p,u,m='<p>El <code>BM25Retriever</code> 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 <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',i,s,M,w,v="Entendamos esta herramienta paso a paso:",j,b,B="<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>",n;return s=new E({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(){r=J("p"),r.innerHTML=U,p=c(),u=J("blockquote"),u.innerHTML=m,i=c(),f(s.$$.fragment),M=c(),w=J("p"),w.textContent=v,j=c(),b=J("ul"),b.innerHTML=B,this.h()},l(t){r=y(t,"P",{"data-svelte-h":!0}),T(r)!=="svelte-tu9tca"&&(r.innerHTML=U),p=d(t),u=y(t,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(u)!=="svelte-kq5ex6"&&(u.innerHTML=m),i=d(t),h(s.$$.fragment,t),M=d(t),w=y(t,"P",{"data-svelte-h":!0}),T(w)!=="svelte-37tmzc"&&(w.textContent=v),j=d(t),b=y(t,"UL",{"data-svelte-h":!0}),T(b)!=="svelte-16og6op"&&(b.innerHTML=B),this.h()},h(){W(u,"class","tip")},m(t,G){a(t,r,G),a(t,p,G),a(t,u,G),a(t,i,G),I(s,t,G),a(t,M,G),a(t,w,G),a(t,j,G),a(t,b,G),n=!0},p:N,i(t){n||(g(s.$$.fragment,t),n=!0)},o(t){C(s.$$.fragment,t),n=!1},d(t){t&&(l(r),l(p),l(u),l(i),l(M),l(w),l(j),l(b)),Z(s,t)}}}function Ms($){let r,U="Usaremos el <code>BM25Retriever</code> del módulo <code>langchain_community.retrievers</code> para crear una herramienta de recuperación.",p,u,m='<p>El <code>BM25Retriever</code> 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 <a href="https://www.sbert.net/">sentence-transformers</a>.</p>',i,s,M,w,v="Entendamos esta herramienta paso a paso:",j,b,B="<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>",n;return s=new E({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(){r=J("p"),r.innerHTML=U,p=c(),u=J("blockquote"),u.innerHTML=m,i=c(),f(s.$$.fragment),M=c(),w=J("p"),w.textContent=v,j=c(),b=J("ul"),b.innerHTML=B,this.h()},l(t){r=y(t,"P",{"data-svelte-h":!0}),T(r)!=="svelte-hx2hs9"&&(r.innerHTML=U),p=d(t),u=y(t,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(u)!=="svelte-kq5ex6"&&(u.innerHTML=m),i=d(t),h(s.$$.fragment,t),M=d(t),w=y(t,"P",{"data-svelte-h":!0}),T(w)!=="svelte-37tmzc"&&(w.textContent=v),j=d(t),b=y(t,"UL",{"data-svelte-h":!0}),T(b)!=="svelte-1jczerd"&&(b.innerHTML=B),this.h()},h(){W(u,"class","tip")},m(t,G){a(t,r,G),a(t,p,G),a(t,u,G),a(t,i,G),I(s,t,G),a(t,M,G),a(t,w,G),a(t,j,G),a(t,b,G),n=!0},p:N,i(t){n||(g(s.$$.fragment,t),n=!0)},o(t){C(s.$$.fragment,t),n=!1},d(t){t&&(l(r),l(p),l(u),l(i),l(M),l(w),l(j),l(b)),Z(s,t)}}}function us($){let r,U,p,u,m,i;return r=new Y({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[cs]},$$scope:{ctx:$}}}),p=new Y({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[ds]},$$scope:{ctx:$}}}),m=new Y({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Ms]},$$scope:{ctx:$}}}),{c(){f(r.$$.fragment),U=c(),f(p.$$.fragment),u=c(),f(m.$$.fragment)},l(s){h(r.$$.fragment,s),U=d(s),h(p.$$.fragment,s),u=d(s),h(m.$$.fragment,s)},m(s,M){I(r,s,M),a(s,U,M),I(p,s,M),a(s,u,M),I(m,s,M),i=!0},p(s,M){const w={};M&2&&(w.$$scope={dirty:M,ctx:s}),r.$set(w);const v={};M&2&&(v.$$scope={dirty:M,ctx:s}),p.$set(v);const j={};M&2&&(j.$$scope={dirty:M,ctx:s}),m.$set(j)},i(s){i||(g(r.$$.fragment,s),g(p.$$.fragment,s),g(m.$$.fragment,s),i=!0)},o(s){C(r.$$.fragment,s),C(p.$$.fragment,s),C(m.$$.fragment,s),i=!1},d(s){s&&(l(U),l(u)),Z(r,s),Z(p,s),Z(m,s)}}}function ms($){let r,U,p,u="Salida esperada:",m,i,s,M,w="Lo que está sucediendo en este paso final:",v,j,b="<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>",B;return r=new E({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}}),i=new E({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(){f(r.$$.fragment),U=c(),p=J("p"),p.textContent=u,m=c(),f(i.$$.fragment),s=c(),M=J("p"),M.textContent=w,v=c(),j=J("ul"),j.innerHTML=b},l(n){h(r.$$.fragment,n),U=d(n),p=y(n,"P",{"data-svelte-h":!0}),T(p)!=="svelte-wjimjn"&&(p.textContent=u),m=d(n),h(i.$$.fragment,n),s=d(n),M=y(n,"P",{"data-svelte-h":!0}),T(M)!=="svelte-143o5dl"&&(M.textContent=w),v=d(n),j=y(n,"UL",{"data-svelte-h":!0}),T(j)!=="svelte-ks8pur"&&(j.innerHTML=b)},m(n,t){I(r,n,t),a(n,U,t),a(n,p,t),a(n,m,t),I(i,n,t),a(n,s,t),a(n,M,t),a(n,v,t),a(n,j,t),B=!0},p:N,i(n){B||(g(r.$$.fragment,n),g(i.$$.fragment,n),B=!0)},o(n){C(r.$$.fragment,n),C(i.$$.fragment,n),B=!1},d(n){n&&(l(U),l(p),l(m),l(s),l(M),l(v),l(j)),Z(r,n),Z(i,n)}}}function Js($){let r,U,p,u="Salida esperada:",m,i,s,M,w="Lo que está sucediendo en este paso final:",v,j,b="<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>",B;return r=new E({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}}),i=new E({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(){f(r.$$.fragment),U=c(),p=J("p"),p.textContent=u,m=c(),f(i.$$.fragment),s=c(),M=J("p"),M.textContent=w,v=c(),j=J("ul"),j.innerHTML=b},l(n){h(r.$$.fragment,n),U=d(n),p=y(n,"P",{"data-svelte-h":!0}),T(p)!=="svelte-wjimjn"&&(p.textContent=u),m=d(n),h(i.$$.fragment,n),s=d(n),M=y(n,"P",{"data-svelte-h":!0}),T(M)!=="svelte-143o5dl"&&(M.textContent=w),v=d(n),j=y(n,"UL",{"data-svelte-h":!0}),T(j)!=="svelte-qe8ipf"&&(j.innerHTML=b)},m(n,t){I(r,n,t),a(n,U,t),a(n,p,t),a(n,m,t),I(i,n,t),a(n,s,t),a(n,M,t),a(n,v,t),a(n,j,t),B=!0},p:N,i(n){B||(g(r.$$.fragment,n),g(i.$$.fragment,n),B=!0)},o(n){C(r.$$.fragment,n),C(i.$$.fragment,n),B=!1},d(n){n&&(l(U),l(p),l(m),l(s),l(M),l(v),l(j)),Z(r,n),Z(i,n)}}}function ys($){let r,U,p,u="Salida esperada:",m,i,s,M,w="Lo que está sucediendo en este paso final:",v,j,b="<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>",B;return r=new E({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}}),i=new E({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(){f(r.$$.fragment),U=c(),p=J("p"),p.textContent=u,m=c(),f(i.$$.fragment),s=c(),M=J("p"),M.textContent=w,v=c(),j=J("ul"),j.innerHTML=b},l(n){h(r.$$.fragment,n),U=d(n),p=y(n,"P",{"data-svelte-h":!0}),T(p)!=="svelte-wjimjn"&&(p.textContent=u),m=d(n),h(i.$$.fragment,n),s=d(n),M=y(n,"P",{"data-svelte-h":!0}),T(M)!=="svelte-143o5dl"&&(M.textContent=w),v=d(n),j=y(n,"UL",{"data-svelte-h":!0}),T(j)!=="svelte-opm47d"&&(j.innerHTML=b)},m(n,t){I(r,n,t),a(n,U,t),a(n,p,t),a(n,m,t),I(i,n,t),a(n,s,t),a(n,M,t),a(n,v,t),a(n,j,t),B=!0},p:N,i(n){B||(g(r.$$.fragment,n),g(i.$$.fragment,n),B=!0)},o(n){C(r.$$.fragment,n),C(i.$$.fragment,n),B=!1},d(n){n&&(l(U),l(p),l(m),l(s),l(M),l(v),l(j)),Z(r,n),Z(i,n)}}}function Ts($){let r,U,p,u,m,i;return r=new Y({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[ms]},$$scope:{ctx:$}}}),p=new Y({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[Js]},$$scope:{ctx:$}}}),m=new Y({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[ys]},$$scope:{ctx:$}}}),{c(){f(r.$$.fragment),U=c(),f(p.$$.fragment),u=c(),f(m.$$.fragment)},l(s){h(r.$$.fragment,s),U=d(s),h(p.$$.fragment,s),u=d(s),h(m.$$.fragment,s)},m(s,M){I(r,s,M),a(s,U,M),I(p,s,M),a(s,u,M),I(m,s,M),i=!0},p(s,M){const w={};M&2&&(w.$$scope={dirty:M,ctx:s}),r.$set(w);const v={};M&2&&(v.$$scope={dirty:M,ctx:s}),p.$set(v);const j={};M&2&&(j.$$scope={dirty:M,ctx:s}),m.$set(j)},i(s){i||(g(r.$$.fragment,s),g(p.$$.fragment,s),g(m.$$.fragment,s),i=!0)},o(s){C(r.$$.fragment,s),C(p.$$.fragment,s),C(m.$$.fragment,s),i=!1},d(s){s&&(l(U),l(u)),Z(r,s),Z(p,s),Z(m,s)}}}function Us($){let r,U,p,u,m,i,s,M,w,v="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.",j,b,B,n,t="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:",G,F,jl="<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>",Ze,_,wl="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.",ve,Q,bl="<p>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.</p>",Ge,A,Be,H,fl="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.",$e,L,We,D,hl="<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>",Ee,P,Il='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!',Ve,K,gl="Puedes probar directamente el agente a continuación:",Re,R,Cl,ke,O,Ye,ee,Zl='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:',Ne,le,vl="<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>",Qe,se,Gl="A continuación se muestra una vista previa del conjunto de datos:",xe,k,Bl,Se,x,$l="<p>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.</p>",ze,ae,Xe,te,Wl="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:",qe,ne,El="<li>Cargar y preparar el conjunto de datos</li> <li>Crear la Herramienta de Recuperación</li> <li>Integrar la Herramienta con Alfred</li>",Fe,oe,Vl="¡Comencemos con la carga y preparación del conjunto de datos!",_e,re,Ae,ie,Rl="Primero, necesitamos transformar nuestros datos brutos de invitados en un formato optimizado para la recuperación.",He,S,Le,pe,kl="En el código anterior:",De,ce,Yl="<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>",Pe,de,Nl="Esto significa que tenemos todos nuestros datos disponibles de manera ordenada para poder comenzar a configurar nuestra recuperación.",Ke,Me,Oe,ue,Ql="Ahora, creemos una herramienta personalizada que Alfred pueda usar para buscar en nuestra información de invitados.",el,z,ll,me,sl,Je,xl="Finalmente, juntemos todo creando nuestro agente y equipándolo con nuestra herramienta personalizada:",al,X,tl,ye,nl,Te,Sl="Durante la gala, una conversación podría fluir así:",ol,Ue,zl="<strong>Tú:</strong> “Alfred, ¿quién es ese caballero hablando con el embajador?”",rl,je,Xl="<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.”",il,we,pl,be,cl,fe,ql="Ahora que Alfred puede recuperar información de invitados, considera cómo podrías mejorar este sistema:",dl,he,Fl='<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>',Ml,Ie,_l="¡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!",ul,q,Al="<p>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?</p> <p>Cuando hayas terminado, implementa tu herramienta de recuperación de invitados en el archivo <code>retriever.py</code>.</p>",ml,ge,Jl,Ce,yl;return m=new ts({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),s=new V({props:{title:"Creando una Herramienta RAG para Historias de Invitados",local:"creando-una-herramienta-rag-para-historias-de-invitados",headingTag:"h1"}}),b=new V({props:{title:"¿Por qué RAG para una Gala?",local:"por-qué-rag-para-una-gala",headingTag:"h2"}}),A=new V({props:{title:"Configurando nuestra aplicación",local:"configurando-nuestra-aplicación",headingTag:"h2"}}),L=new V({props:{title:"Estructura del Proyecto",local:"estructura-del-proyecto",headingTag:"h3"}}),O=new V({props:{title:"Descripción General del Conjunto de Datos",local:"descripción-general-del-conjunto-de-datos",headingTag:"h2"}}),ae=new V({props:{title:"Construyendo la Herramienta de Lista de Invitados",local:"construyendo-la-herramienta-de-lista-de-invitados",headingTag:"h2"}}),re=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"}}),S=new Ul({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[ps]},$$scope:{ctx:$}}}),Me=new V({props:{title:"Paso 2: Crear la Herramienta de Recuperación",local:"paso-2-crear-la-herramienta-de-recuperación",headingTag:"h3"}}),z=new Ul({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[us]},$$scope:{ctx:$}}}),me=new V({props:{title:"Paso 3: Integrar la Herramienta con Alfred",local:"paso-3-integrar-la-herramienta-con-alfred",headingTag:"h3"}}),X=new Ul({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[Ts]},$$scope:{ctx:$}}}),ye=new V({props:{title:"Ejemplo de Interacción",local:"ejemplo-de-interacción",headingTag:"h2"}}),we=new E({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"}}),ge=new ns({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/unit3/agentic-rag/invitees.mdx"}}),{c(){r=J("meta"),U=c(),p=J("p"),u=c(),f(m.$$.fragment),i=c(),f(s.$$.fragment),M=c(),w=J("p"),w.textContent=v,j=c(),f(b.$$.fragment),B=c(),n=J("p"),n.textContent=t,G=c(),F=J("ol"),F.innerHTML=jl,Ze=c(),_=J("p"),_.textContent=wl,ve=c(),Q=J("blockquote"),Q.innerHTML=bl,Ge=c(),f(A.$$.fragment),Be=c(),H=J("p"),H.textContent=fl,$e=c(),f(L.$$.fragment),We=c(),D=J("ul"),D.innerHTML=hl,Ee=c(),P=J("p"),P.innerHTML=Il,Ve=c(),K=J("p"),K.textContent=gl,Re=c(),R=J("iframe"),ke=c(),f(O.$$.fragment),Ye=c(),ee=J("p"),ee.innerHTML=Zl,Ne=c(),le=J("ul"),le.innerHTML=vl,Qe=c(),se=J("p"),se.textContent=Gl,xe=c(),k=J("iframe"),Se=c(),x=J("blockquote"),x.innerHTML=$l,ze=c(),f(ae.$$.fragment),Xe=c(),te=J("p"),te.textContent=Wl,qe=c(),ne=J("ol"),ne.innerHTML=El,Fe=c(),oe=J("p"),oe.textContent=Vl,_e=c(),f(re.$$.fragment),Ae=c(),ie=J("p"),ie.textContent=Rl,He=c(),f(S.$$.fragment),Le=c(),pe=J("p"),pe.textContent=kl,De=c(),ce=J("ul"),ce.innerHTML=Yl,Pe=c(),de=J("p"),de.textContent=Nl,Ke=c(),f(Me.$$.fragment),Oe=c(),ue=J("p"),ue.textContent=Ql,el=c(),f(z.$$.fragment),ll=c(),f(me.$$.fragment),sl=c(),Je=J("p"),Je.textContent=xl,al=c(),f(X.$$.fragment),tl=c(),f(ye.$$.fragment),nl=c(),Te=J("p"),Te.textContent=Sl,ol=c(),Ue=J("p"),Ue.innerHTML=zl,rl=c(),je=J("p"),je.innerHTML=Xl,il=c(),f(we.$$.fragment),pl=c(),f(be.$$.fragment),cl=c(),fe=J("p"),fe.textContent=ql,dl=c(),he=J("ol"),he.innerHTML=Fl,Ml=c(),Ie=J("p"),Ie.textContent=_l,ul=c(),q=J("blockquote"),q.innerHTML=Al,ml=c(),f(ge.$$.fragment),Jl=c(),Ce=J("p"),this.h()},l(e){const o=ss("svelte-u9bgzb",document.head);r=y(o,"META",{name:!0,content:!0}),o.forEach(l),U=d(e),p=y(e,"P",{}),Tl(p).forEach(l),u=d(e),h(m.$$.fragment,e),i=d(e),h(s.$$.fragment,e),M=d(e),w=y(e,"P",{"data-svelte-h":!0}),T(w)!=="svelte-kr2sua"&&(w.textContent=v),j=d(e),h(b.$$.fragment,e),B=d(e),n=y(e,"P",{"data-svelte-h":!0}),T(n)!=="svelte-81plxj"&&(n.textContent=t),G=d(e),F=y(e,"OL",{"data-svelte-h":!0}),T(F)!=="svelte-hyh64d"&&(F.innerHTML=jl),Ze=d(e),_=y(e,"P",{"data-svelte-h":!0}),T(_)!=="svelte-1pskziw"&&(_.textContent=wl),ve=d(e),Q=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(Q)!=="svelte-19xv22"&&(Q.innerHTML=bl),Ge=d(e),h(A.$$.fragment,e),Be=d(e),H=y(e,"P",{"data-svelte-h":!0}),T(H)!=="svelte-rjjrlh"&&(H.textContent=fl),$e=d(e),h(L.$$.fragment,e),We=d(e),D=y(e,"UL",{"data-svelte-h":!0}),T(D)!=="svelte-ug6v2"&&(D.innerHTML=hl),Ee=d(e),P=y(e,"P",{"data-svelte-h":!0}),T(P)!=="svelte-1q2hi5g"&&(P.innerHTML=Il),Ve=d(e),K=y(e,"P",{"data-svelte-h":!0}),T(K)!=="svelte-1h3egp1"&&(K.textContent=gl),Re=d(e),R=y(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),Tl(R).forEach(l),ke=d(e),h(O.$$.fragment,e),Ye=d(e),ee=y(e,"P",{"data-svelte-h":!0}),T(ee)!=="svelte-15e4w12"&&(ee.innerHTML=Zl),Ne=d(e),le=y(e,"UL",{"data-svelte-h":!0}),T(le)!=="svelte-1t9z4qv"&&(le.innerHTML=vl),Qe=d(e),se=y(e,"P",{"data-svelte-h":!0}),T(se)!=="svelte-1ek1znz"&&(se.textContent=Gl),xe=d(e),k=y(e,"IFRAME",{src:!0,frameborder:!0,width:!0,height:!0}),Tl(k).forEach(l),Se=d(e),x=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(x)!=="svelte-1v1bm7l"&&(x.innerHTML=$l),ze=d(e),h(ae.$$.fragment,e),Xe=d(e),te=y(e,"P",{"data-svelte-h":!0}),T(te)!=="svelte-3mdv5y"&&(te.textContent=Wl),qe=d(e),ne=y(e,"OL",{"data-svelte-h":!0}),T(ne)!=="svelte-qz8oe8"&&(ne.innerHTML=El),Fe=d(e),oe=y(e,"P",{"data-svelte-h":!0}),T(oe)!=="svelte-133e1ug"&&(oe.textContent=Vl),_e=d(e),h(re.$$.fragment,e),Ae=d(e),ie=y(e,"P",{"data-svelte-h":!0}),T(ie)!=="svelte-xpu2ei"&&(ie.textContent=Rl),He=d(e),h(S.$$.fragment,e),Le=d(e),pe=y(e,"P",{"data-svelte-h":!0}),T(pe)!=="svelte-1mfw0sf"&&(pe.textContent=kl),De=d(e),ce=y(e,"UL",{"data-svelte-h":!0}),T(ce)!=="svelte-dn9sg6"&&(ce.innerHTML=Yl),Pe=d(e),de=y(e,"P",{"data-svelte-h":!0}),T(de)!=="svelte-8prxa4"&&(de.textContent=Nl),Ke=d(e),h(Me.$$.fragment,e),Oe=d(e),ue=y(e,"P",{"data-svelte-h":!0}),T(ue)!=="svelte-11t7nlr"&&(ue.textContent=Ql),el=d(e),h(z.$$.fragment,e),ll=d(e),h(me.$$.fragment,e),sl=d(e),Je=y(e,"P",{"data-svelte-h":!0}),T(Je)!=="svelte-1nrd3vd"&&(Je.textContent=xl),al=d(e),h(X.$$.fragment,e),tl=d(e),h(ye.$$.fragment,e),nl=d(e),Te=y(e,"P",{"data-svelte-h":!0}),T(Te)!=="svelte-x35jih"&&(Te.textContent=Sl),ol=d(e),Ue=y(e,"P",{"data-svelte-h":!0}),T(Ue)!=="svelte-yk3ykx"&&(Ue.innerHTML=zl),rl=d(e),je=y(e,"P",{"data-svelte-h":!0}),T(je)!=="svelte-twxbr6"&&(je.innerHTML=Xl),il=d(e),h(we.$$.fragment,e),pl=d(e),h(be.$$.fragment,e),cl=d(e),fe=y(e,"P",{"data-svelte-h":!0}),T(fe)!=="svelte-ofzv4y"&&(fe.textContent=ql),dl=d(e),he=y(e,"OL",{"data-svelte-h":!0}),T(he)!=="svelte-1ply8go"&&(he.innerHTML=Fl),Ml=d(e),Ie=y(e,"P",{"data-svelte-h":!0}),T(Ie)!=="svelte-10gbwj9"&&(Ie.textContent=_l),ul=d(e),q=y(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),T(q)!=="svelte-1ef0drj"&&(q.innerHTML=Al),ml=d(e),h(ge.$$.fragment,e),Jl=d(e),Ce=y(e,"P",{}),Tl(Ce).forEach(l),this.h()},h(){W(r,"name","hf:doc:metadata"),W(r,"content",js),W(Q,"class","tip"),Pl(R.src,Cl="https://agents-course-unit-3-agentic-rag.hf.space")||W(R,"src",Cl),W(R,"frameborder","0"),W(R,"width","850"),W(R,"height","450"),Pl(k.src,Bl="https://huggingface.co/datasets/agents-course/unit3-invitees/embed/viewer/default/train")||W(k,"src",Bl),W(k,"frameborder","0"),W(k,"width","100%"),W(k,"height","560px"),W(x,"class","tip"),W(q,"class","tip")},m(e,o){as(document.head,r),a(e,U,o),a(e,p,o),a(e,u,o),I(m,e,o),a(e,i,o),I(s,e,o),a(e,M,o),a(e,w,o),a(e,j,o),I(b,e,o),a(e,B,o),a(e,n,o),a(e,G,o),a(e,F,o),a(e,Ze,o),a(e,_,o),a(e,ve,o),a(e,Q,o),a(e,Ge,o),I(A,e,o),a(e,Be,o),a(e,H,o),a(e,$e,o),I(L,e,o),a(e,We,o),a(e,D,o),a(e,Ee,o),a(e,P,o),a(e,Ve,o),a(e,K,o),a(e,Re,o),a(e,R,o),a(e,ke,o),I(O,e,o),a(e,Ye,o),a(e,ee,o),a(e,Ne,o),a(e,le,o),a(e,Qe,o),a(e,se,o),a(e,xe,o),a(e,k,o),a(e,Se,o),a(e,x,o),a(e,ze,o),I(ae,e,o),a(e,Xe,o),a(e,te,o),a(e,qe,o),a(e,ne,o),a(e,Fe,o),a(e,oe,o),a(e,_e,o),I(re,e,o),a(e,Ae,o),a(e,ie,o),a(e,He,o),I(S,e,o),a(e,Le,o),a(e,pe,o),a(e,De,o),a(e,ce,o),a(e,Pe,o),a(e,de,o),a(e,Ke,o),I(Me,e,o),a(e,Oe,o),a(e,ue,o),a(e,el,o),I(z,e,o),a(e,ll,o),I(me,e,o),a(e,sl,o),a(e,Je,o),a(e,al,o),I(X,e,o),a(e,tl,o),I(ye,e,o),a(e,nl,o),a(e,Te,o),a(e,ol,o),a(e,Ue,o),a(e,rl,o),a(e,je,o),a(e,il,o),I(we,e,o),a(e,pl,o),I(be,e,o),a(e,cl,o),a(e,fe,o),a(e,dl,o),a(e,he,o),a(e,Ml,o),a(e,Ie,o),a(e,ul,o),a(e,q,o),a(e,ml,o),I(ge,e,o),a(e,Jl,o),a(e,Ce,o),yl=!0},p(e,[o]){const Hl={};o&2&&(Hl.$$scope={dirty:o,ctx:e}),S.$set(Hl);const Ll={};o&2&&(Ll.$$scope={dirty:o,ctx:e}),z.$set(Ll);const Dl={};o&2&&(Dl.$$scope={dirty:o,ctx:e}),X.$set(Dl)},i(e){yl||(g(m.$$.fragment,e),g(s.$$.fragment,e),g(b.$$.fragment,e),g(A.$$.fragment,e),g(L.$$.fragment,e),g(O.$$.fragment,e),g(ae.$$.fragment,e),g(re.$$.fragment,e),g(S.$$.fragment,e),g(Me.$$.fragment,e),g(z.$$.fragment,e),g(me.$$.fragment,e),g(X.$$.fragment,e),g(ye.$$.fragment,e),g(we.$$.fragment,e),g(be.$$.fragment,e),g(ge.$$.fragment,e),yl=!0)},o(e){C(m.$$.fragment,e),C(s.$$.fragment,e),C(b.$$.fragment,e),C(A.$$.fragment,e),C(L.$$.fragment,e),C(O.$$.fragment,e),C(ae.$$.fragment,e),C(re.$$.fragment,e),C(S.$$.fragment,e),C(Me.$$.fragment,e),C(z.$$.fragment,e),C(me.$$.fragment,e),C(X.$$.fragment,e),C(ye.$$.fragment,e),C(we.$$.fragment,e),C(be.$$.fragment,e),C(ge.$$.fragment,e),yl=!1},d(e){e&&(l(U),l(p),l(u),l(i),l(M),l(w),l(j),l(B),l(n),l(G),l(F),l(Ze),l(_),l(ve),l(Q),l(Ge),l(Be),l(H),l($e),l(We),l(D),l(Ee),l(P),l(Ve),l(K),l(Re),l(R),l(ke),l(Ye),l(ee),l(Ne),l(le),l(Qe),l(se),l(xe),l(k),l(Se),l(x),l(ze),l(Xe),l(te),l(qe),l(ne),l(Fe),l(oe),l(_e),l(Ae),l(ie),l(He),l(Le),l(pe),l(De),l(ce),l(Pe),l(de),l(Ke),l(Oe),l(ue),l(el),l(ll),l(sl),l(Je),l(al),l(tl),l(nl),l(Te),l(ol),l(Ue),l(rl),l(je),l(il),l(pl),l(cl),l(fe),l(dl),l(he),l(Ml),l(Ie),l(ul),l(q),l(ml),l(Jl),l(Ce)),l(r),Z(m,e),Z(s,e),Z(b,e),Z(A,e),Z(L,e),Z(O,e),Z(ae,e),Z(re,e),Z(S,e),Z(Me,e),Z(z,e),Z(me,e),Z(X,e),Z(ye,e),Z(we,e),Z(be,e),Z(ge,e)}}}const js='{"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 ws($){return Ol(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class vs extends es{constructor(r){super(),ls(this,r,ws,Us,Kl,{})}}export{vs as component};
