import{s as Xs,o as Fs,n as C}from"../chunks/scheduler.37c15a92.js";import{S as Qs,i as zs,g as T,s as y,r as d,A as _s,h as I,f as p,c as m,j as Ys,u as J,x as f,k as ws,y as Ss,a as c,v as u,d as U,t as b,w,m as hs,n as Ts}from"../chunks/index.2bf4358c.js";import{T as vs}from"../chunks/Tip.363c041f.js";import{C as G}from"../chunks/CodeBlock.4e987730.js";import{H as P}from"../chunks/Heading.8ada512a.js";import{H as bs,a as g}from"../chunks/HfOption.02c8e375.js";import{E as qs}from"../chunks/index.e71982be.js";function Hs(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBEdWNrRHVja0dvU2VhcmNoVG9vbCUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwbGElMjBoZXJyYW1pZW50YSUyMGRlJTIwYiVDMyVCQXNxdWVkYSUyMER1Y2tEdWNrR28lMEFzZWFyY2hfdG9vbCUyMCUzRCUyMER1Y2tEdWNrR29TZWFyY2hUb29sKCklMEElMEElMjMlMjBFamVtcGxvJTIwZGUlMjB1c28lMEFyZXN1bHRzJTIwJTNEJTIwc2VhcmNoX3Rvb2woJTIyJUMyJUJGUXVpJUMzJUE5biUyMGVzJTIwZWwlMjBhY3R1YWwlMjBQcmVzaWRlbnRlJTIwZGUlMjBGcmFuY2lhJTNGJTIyKSUwQXByaW50KHJlc3VsdHMp",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> DuckDuckGoSearchTool

<span class="hljs-comment"># Inicializar la herramienta de búsqueda DuckDuckGo</span>
search_tool = DuckDuckGoSearchTool()

<span class="hljs-comment"># Ejemplo de uso</span>
results = search_tool(<span class="hljs-string">&quot;¿Quién es el actual Presidente de Francia?&quot;</span>)
<span class="hljs-built_in">print</span>(results)`,wrap:!1}}),o=new G({props:{code:"VGhlJTIwY3VycmVudCUyMFByZXNpZGVudCUyMG9mJTIwRnJhbmNlJTIwaW4lMjBFbW1hbnVlbCUyME1hY3Jvbi4=",highlighted:'The current President <span class="hljs-keyword">of</span> France in Emmanuel Macron.',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function xs(h){let a,t,n,r="Expected output:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LnRvb2xzLmR1Y2tkdWNrZ28lMjBpbXBvcnQlMjBEdWNrRHVja0dvU2VhcmNoVG9vbFNwZWMlMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS50b29scyUyMGltcG9ydCUyMEZ1bmN0aW9uVG9vbCUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwbGElMjBoZXJyYW1pZW50YSUyMGRlJTIwYiVDMyVCQXNxdWVkYSUyMER1Y2tEdWNrR28lMEF0b29sX3NwZWMlMjAlM0QlMjBEdWNrRHVja0dvU2VhcmNoVG9vbFNwZWMoKSUwQSUwQXNlYXJjaF90b29sJTIwJTNEJTIwRnVuY3Rpb25Ub29sLmZyb21fZGVmYXVsdHModG9vbF9zcGVjLmR1Y2tkdWNrZ29fZnVsbF9zZWFyY2gpJTBBJTIzJTIwRWplbXBsbyUyMGRlJTIwdXNvJTBBcmVzcG9uc2UlMjAlM0QlMjBzZWFyY2hfdG9vbCglMjIlQzIlQkZRdWklQzMlQTluJTIwZXMlMjBlbCUyMGFjdHVhbCUyMFByZXNpZGVudGUlMjBkZSUyMEZyYW5jaWElM0YlMjIpJTBBcHJpbnQocmVzcG9uc2UucmF3X291dHB1dCU1Qi0xJTVEJTVCJ2JvZHknJTVEKQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.tools.duckduckgo <span class="hljs-keyword">import</span> DuckDuckGoSearchToolSpec
<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool

<span class="hljs-comment"># Inicializar la herramienta de búsqueda DuckDuckGo</span>
tool_spec = DuckDuckGoSearchToolSpec()

search_tool = FunctionTool.from_defaults(tool_spec.duckduckgo_full_search)
<span class="hljs-comment"># Ejemplo de uso</span>
response = search_tool(<span class="hljs-string">&quot;¿Quién es el actual Presidente de Francia?&quot;</span>)
<span class="hljs-built_in">print</span>(response.raw_output[-<span class="hljs-number">1</span>][<span class="hljs-string">&#x27;body&#x27;</span>])`,wrap:!1}}),o=new G({props:{code:"RWwlMjBQcmVzaWRlbnRlJTIwZGUlMjBsYSUyMFJlcCVDMyVCQWJsaWNhJTIwRnJhbmNlc2ElMjBlcyUyMGVsJTIwamVmZSUyMGRlJTIwZXN0YWRvJTIwZGUlMjBGcmFuY2lhLiUyMEVsJTIwYWN0dWFsJTIwUHJlc2lkZW50ZSUyMGVzJTIwRW1tYW51ZWwlMjBNYWNyb24lMjBkZXNkZSUyMGVsJTIwMTQlMjBkZSUyMG1heW8lMjBkZSUyMDIwMTclMjB0cmFzJTIwZGVycm90YXIlMjBhJTIwTWFyaW5lJTIwTGUlMjBQZW4lMjBlbiUyMGxhJTIwc2VndW5kYSUyMHZ1ZWx0YSUyMGRlJTIwbGFzJTIwZWxlY2Npb25lcyUyMHByZXNpZGVuY2lhbGVzJTIwZWwlMjA3JTIwZGUlMjBtYXlvJTIwZGUlMjAyMDE3LiUyMExpc3RhJTIwZGUlMjBQcmVzaWRlbnRlcyUyMGZyYW5jZXNlcyUyMChRdWludGElMjBSZXAlQzMlQkFibGljYSklMjBOJUMyJUIwJTIwTm9tYnJlJTIwLi4u",highlighted:'El Presidente <span class="hljs-keyword">de</span> <span class="hljs-keyword">la</span> República Francesa es el jefe <span class="hljs-keyword">de</span> estado <span class="hljs-keyword">de</span> Francia. El actual Presidente es Emmanuel Macron desde el 14 <span class="hljs-keyword">de</span> mayo <span class="hljs-keyword">de</span> 2017 tras derrotar a Marine Le Pen <span class="hljs-keyword">en</span> <span class="hljs-keyword">la</span> segunda vuelta <span class="hljs-keyword">de</span> las elecciones presidenciales el 7 <span class="hljs-keyword">de</span> mayo <span class="hljs-keyword">de</span> 2017. Lista <span class="hljs-keyword">de</span> Presidentes franceses (Quinta República) <span class="hljs-keyword">N</span>° Nombre ...',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-15t3xg7"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function Ds(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkudG9vbHMlMjBpbXBvcnQlMjBEdWNrRHVja0dvU2VhcmNoUnVuJTBBJTBBc2VhcmNoX3Rvb2wlMjAlM0QlMjBEdWNrRHVja0dvU2VhcmNoUnVuKCklMEFyZXN1bHRzJTIwJTNEJTIwc2VhcmNoX3Rvb2wuaW52b2tlKCUyMiVDMiVCRlF1aSVDMyVBOW4lMjBlcyUyMGVsJTIwYWN0dWFsJTIwUHJlc2lkZW50ZSUyMGRlJTIwRnJhbmNpYSUzRiUyMiklMEFwcmludChyZXN1bHRzKQ==",highlighted:`<span class="hljs-keyword">from</span> langchain_community.tools <span class="hljs-keyword">import</span> DuckDuckGoSearchRun

search_tool = DuckDuckGoSearchRun()
results = search_tool.invoke(<span class="hljs-string">&quot;¿Quién es el actual Presidente de Francia?&quot;</span>)
<span class="hljs-built_in">print</span>(results)`,wrap:!1}}),o=new G({props:{code:"RW1tYW51ZWwlMjBNYWNyb24lMjAoYm9ybiUyMERlY2VtYmVyJTIwMjElMkMlMjAxOTc3JTJDJTIwQW1pZW5zJTJDJTIwRnJhbmNlKSUyMGlzJTIwYSUyMEZyZW5jaCUyMGJhbmtlciUyMGFuZCUyMHBvbGl0aWNpYW4lMjB3aG8lMjB3YXMlMjBlbGVjdGVkJTIwcHJlc2lkZW50JTIwb2YlMjBGcmFuY2UlMjBpbiUyMDIwMTcuLi4=",highlighted:'<span class="hljs-attribute">Emmanuel</span> Macron (born December <span class="hljs-number">21</span>, <span class="hljs-number">1977</span>, Amiens, France) is a French banker and politician who was elected president of France in <span class="hljs-number">2017</span>...',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function Ps(h){let a,t,n,r,M,o;return a=new g({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[Hs]},$$scope:{ctx:h}}}),n=new g({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[xs]},$$scope:{ctx:h}}}),M=new g({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[Ds]},$$scope:{ctx:h}}}),{c(){d(a.$$.fragment),t=y(),d(n.$$.fragment),r=y(),d(M.$$.fragment)},l(l){J(a.$$.fragment,l),t=m(l),J(n.$$.fragment,l),r=m(l),J(M.$$.fragment,l)},m(l,s){u(a,l,s),c(l,t,s),u(n,l,s),c(l,r,s),u(M,l,s),o=!0},p(l,s){const j={};s&2&&(j.$$scope={dirty:s,ctx:l}),a.$set(j);const B={};s&2&&(B.$$scope={dirty:s,ctx:l}),n.$set(B);const Z={};s&2&&(Z.$$scope={dirty:s,ctx:l}),M.$set(Z)},i(l){o||(U(a.$$.fragment,l),U(n.$$.fragment,l),U(M.$$.fragment,l),o=!0)},o(l){b(a.$$.fragment,l),b(n.$$.fragment,l),b(M.$$.fragment,l),o=!1},d(l){l&&(p(t),p(r)),w(a,l),w(n,l),w(M,l)}}}function Ks(h){let a,t,n="Unidad 1",r;return{c(){a=hs("Por simplicidad, estamos usando una API meteorológica ficticia para este ejemplo. Si quieres usar una API meteorológica real, podrías implementar una herramienta meteorológica que use la API de OpenWeatherMap, como en la "),t=T("a"),t.textContent=n,r=hs("."),this.h()},l(M){a=Ts(M,"Por simplicidad, estamos usando una API meteorológica ficticia para este ejemplo. Si quieres usar una API meteorológica real, podrías implementar una herramienta meteorológica que use la API de OpenWeatherMap, como en la "),t=I(M,"A",{href:!0,"data-svelte-h":!0}),f(t)!=="svelte-104o66j"&&(t.textContent=n),r=Ts(M,"."),this.h()},h(){ws(t,"href","../unit1/tutorial")},m(M,o){c(M,a,o),c(M,t,o),c(M,r,o)},p:C,d(M){M&&(p(a),p(t),p(r))}}}function Ls(h){let a,t;return a=new G({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBUb29sJTBBaW1wb3J0JTIwcmFuZG9tJTBBJTBBY2xhc3MlMjBXZWF0aGVySW5mb1Rvb2woVG9vbCklM0ElMEElMjAlMjAlMjAlMjBuYW1lJTIwJTNEJTIwJTIyd2VhdGhlcl9pbmZvJTIyJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lMjAlM0QlMjAlMjJPYnRpZW5lJTIwaW5mb3JtYWNpJUMzJUIzbiUyMG1ldGVvcm9sJUMzJUIzZ2ljYSUyMGZpY3RpY2lhJTIwcGFyYSUyMHVuYSUyMHViaWNhY2klQzMlQjNuJTIwZGFkYS4lMjIlMEElMjAlMjAlMjAlMjBpbnB1dHMlMjAlM0QlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJsb2NhdGlvbiUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkxhJTIwdWJpY2FjaSVDMyVCM24lMjBwYXJhJTIwbGElMjBxdWUlMjBvYnRlbmVyJTIwaW5mb3JtYWNpJUMzJUIzbiUyMG1ldGVvcm9sJUMzJUIzZ2ljYS4lMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjAlN0QlMEElMjAlMjAlMjAlMjBvdXRwdXRfdHlwZSUyMCUzRCUyMCUyMnN0cmluZyUyMiUwQSUwQSUyMCUyMCUyMCUyMGRlZiUyMGZvcndhcmQoc2VsZiUyQyUyMGxvY2F0aW9uJTNBJTIwc3RyKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMERhdG9zJTIwbWV0ZW9yb2wlQzMlQjNnaWNvcyUyMGZpY3RpY2lvcyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHdlYXRoZXJfY29uZGl0aW9ucyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMmNvbmRpdGlvbiUyMiUzQSUyMCUyMkxsdXZpb3NvJTIyJTJDJTIwJTIydGVtcF9jJTIyJTNBJTIwMTUlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJjb25kaXRpb24lMjIlM0ElMjAlMjJEZXNwZWphZG8lMjIlMkMlMjAlMjJ0ZW1wX2MlMjIlM0ElMjAyNSU3RCUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3QiUyMmNvbmRpdGlvbiUyMiUzQSUyMCUyMlZlbnRvc28lMjIlMkMlMjAlMjJ0ZW1wX2MlMjIlM0ElMjAyMCU3RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMFNlbGVjY2lvbmFyJTIwYWxlYXRvcmlhbWVudGUlMjB1bmElMjBjb25kaWNpJUMzJUIzbiUyMG1ldGVvcm9sJUMzJUIzZ2ljYSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGRhdGElMjAlM0QlMjByYW5kb20uY2hvaWNlKHdlYXRoZXJfY29uZGl0aW9ucyklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBmJTIyQ2xpbWElMjBlbiUyMCU3QmxvY2F0aW9uJTdEJTNBJTIwJTdCZGF0YSU1Qidjb25kaXRpb24nJTVEJTdEJTJDJTIwJTdCZGF0YSU1Qid0ZW1wX2MnJTVEJTdEJUMyJUIwQyUyMiUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwbGElMjBoZXJyYW1pZW50YSUwQXdlYXRoZXJfaW5mb190b29sJTIwJTNEJTIwV2VhdGhlckluZm9Ub29sKCk=",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">import</span> random

<span class="hljs-keyword">class</span> <span class="hljs-title class_">WeatherInfoTool</span>(<span class="hljs-title class_ inherited__">Tool</span>):
    name = <span class="hljs-string">&quot;weather_info&quot;</span>
    description = <span class="hljs-string">&quot;Obtiene información meteorológica ficticia para una ubicación dada.&quot;</span>
    inputs = {
        <span class="hljs-string">&quot;location&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;La ubicación para la que obtener información meteorológica.&quot;</span>
        }
    }
    output_type = <span class="hljs-string">&quot;string&quot;</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, location: <span class="hljs-built_in">str</span></span>):
        <span class="hljs-comment"># Datos meteorológicos ficticios</span>
        weather_conditions = [
            {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Lluvioso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">15</span>},
            {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Despejado&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">25</span>},
            {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Ventoso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">20</span>}
        ]
        <span class="hljs-comment"># Seleccionar aleatoriamente una condición meteorológica</span>
        data = random.choice(weather_conditions)
        <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Clima en <span class="hljs-subst">{location}</span>: <span class="hljs-subst">{data[<span class="hljs-string">&#x27;condition&#x27;</span>]}</span>, <span class="hljs-subst">{data[<span class="hljs-string">&#x27;temp_c&#x27;</span>]}</span>°C&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
weather_info_tool = WeatherInfoTool()`,wrap:!1}}),{c(){d(a.$$.fragment)},l(n){J(a.$$.fragment,n)},m(n,r){u(a,n,r),t=!0},p:C,i(n){t||(U(a.$$.fragment,n),t=!0)},o(n){b(a.$$.fragment,n),t=!1},d(n){w(a,n)}}}function Os(h){let a,t;return a=new G({props:{code:"aW1wb3J0JTIwcmFuZG9tJTBBZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEElMEFkZWYlMjBnZXRfd2VhdGhlcl9pbmZvKGxvY2F0aW9uJTNBJTIwc3RyKSUyMC0lM0UlMjBzdHIlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJPYnRpZW5lJTIwaW5mb3JtYWNpJUMzJUIzbiUyMG1ldGVvcm9sJUMzJUIzZ2ljYSUyMGZpY3RpY2lhJTIwcGFyYSUyMHVuYSUyMHViaWNhY2klQzMlQjNuJTIwZGFkYS4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjAlMjMlMjBEYXRvcyUyMG1ldGVvcm9sJUMzJUIzZ2ljb3MlMjBmaWN0aWNpb3MlMEElMjAlMjAlMjAlMjB3ZWF0aGVyX2NvbmRpdGlvbnMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJjb25kaXRpb24lMjIlM0ElMjAlMjJMbHV2aW9zbyUyMiUyQyUyMCUyMnRlbXBfYyUyMiUzQSUyMDE1JTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIyY29uZGl0aW9uJTIyJTNBJTIwJTIyRGVzcGVqYWRvJTIyJTJDJTIwJTIydGVtcF9jJTIyJTNBJTIwMjUlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJjb25kaXRpb24lMjIlM0ElMjAlMjJWZW50b3NvJTIyJTJDJTIwJTIydGVtcF9jJTIyJTNBJTIwMjAlN0QlMEElMjAlMjAlMjAlMjAlNUQlMEElMjAlMjAlMjAlMjAlMjMlMjBTZWxlY2Npb25hciUyMGFsZWF0b3JpYW1lbnRlJTIwdW5hJTIwY29uZGljaSVDMyVCM24lMjBtZXRlb3JvbCVDMyVCM2dpY2ElMEElMjAlMjAlMjAlMjBkYXRhJTIwJTNEJTIwcmFuZG9tLmNob2ljZSh3ZWF0aGVyX2NvbmRpdGlvbnMpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMkNsaW1hJTIwZW4lMjAlN0Jsb2NhdGlvbiU3RCUzQSUyMCU3QmRhdGElNUInY29uZGl0aW9uJyU1RCU3RCUyQyUyMCU3QmRhdGElNUIndGVtcF9jJyU1RCU3RCVDMiVCMEMlMjIlMEElMEElMjMlMjBJbmljaWFsaXphciUyMGxhJTIwaGVycmFtaWVudGElMEF3ZWF0aGVyX2luZm9fdG9vbCUyMCUzRCUyMEZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKGdldF93ZWF0aGVyX2luZm8p",highlighted:`<span class="hljs-keyword">import</span> random
<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_weather_info</span>(<span class="hljs-params">location: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Obtiene información meteorológica ficticia para una ubicación dada.&quot;&quot;&quot;</span>
    <span class="hljs-comment"># Datos meteorológicos ficticios</span>
    weather_conditions = [
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Lluvioso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">15</span>},
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Despejado&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">25</span>},
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Ventoso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">20</span>}
    ]
    <span class="hljs-comment"># Seleccionar aleatoriamente una condición meteorológica</span>
    data = random.choice(weather_conditions)
    <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Clima en <span class="hljs-subst">{location}</span>: <span class="hljs-subst">{data[<span class="hljs-string">&#x27;condition&#x27;</span>]}</span>, <span class="hljs-subst">{data[<span class="hljs-string">&#x27;temp_c&#x27;</span>]}</span>°C&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
weather_info_tool = FunctionTool.from_defaults(get_weather_info)`,wrap:!1}}),{c(){d(a.$$.fragment)},l(n){J(a.$$.fragment,n)},m(n,r){u(a,n,r),t=!0},p:C,i(n){t||(U(a.$$.fragment,n),t=!0)},o(n){b(a.$$.fragment,n),t=!1},d(n){w(a,n)}}}function sl(h){let a,t;return a=new G({props:{code:"ZnJvbSUyMGxhbmdjaGFpbi50b29scyUyMGltcG9ydCUyMFRvb2wlMEFpbXBvcnQlMjByYW5kb20lMEElMEFkZWYlMjBnZXRfd2VhdGhlcl9pbmZvKGxvY2F0aW9uJTNBJTIwc3RyKSUyMC0lM0UlMjBzdHIlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJPYnRpZW5lJTIwaW5mb3JtYWNpJUMzJUIzbiUyMG1ldGVvcm9sJUMzJUIzZ2ljYSUyMGZpY3RpY2lhJTIwcGFyYSUyMHVuYSUyMHViaWNhY2klQzMlQjNuJTIwZGFkYS4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjAlMjMlMjBEYXRvcyUyMG1ldGVvcm9sJUMzJUIzZ2ljb3MlMjBmaWN0aWNpb3MlMEElMjAlMjAlMjAlMjB3ZWF0aGVyX2NvbmRpdGlvbnMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJjb25kaXRpb24lMjIlM0ElMjAlMjJMbHV2aW9zbyUyMiUyQyUyMCUyMnRlbXBfYyUyMiUzQSUyMDE1JTdEJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdCJTIyY29uZGl0aW9uJTIyJTNBJTIwJTIyRGVzcGVqYWRvJTIyJTJDJTIwJTIydGVtcF9jJTIyJTNBJTIwMjUlN0QlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlN0IlMjJjb25kaXRpb24lMjIlM0ElMjAlMjJWZW50b3NvJTIyJTJDJTIwJTIydGVtcF9jJTIyJTNBJTIwMjAlN0QlMEElMjAlMjAlMjAlMjAlNUQlMEElMjAlMjAlMjAlMjAlMjMlMjBTZWxlY2Npb25hciUyMGFsZWF0b3JpYW1lbnRlJTIwdW5hJTIwY29uZGljaSVDMyVCM24lMjBtZXRlb3JvbCVDMyVCM2dpY2ElMEElMjAlMjAlMjAlMjBkYXRhJTIwJTNEJTIwcmFuZG9tLmNob2ljZSh3ZWF0aGVyX2NvbmRpdGlvbnMpJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMkNsaW1hJTIwZW4lMjAlN0Jsb2NhdGlvbiU3RCUzQSUyMCU3QmRhdGElNUInY29uZGl0aW9uJyU1RCU3RCUyQyUyMCU3QmRhdGElNUIndGVtcF9jJyU1RCU3RCVDMiVCMEMlMjIlMEElMEElMjMlMjBJbmljaWFsaXphciUyMGxhJTIwaGVycmFtaWVudGElMEF3ZWF0aGVyX2luZm9fdG9vbCUyMCUzRCUyMFRvb2woJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMmdldF93ZWF0aGVyX2luZm8lMjIlMkMlMEElMjAlMjAlMjAlMjBmdW5jJTNEZ2V0X3dlYXRoZXJfaW5mbyUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyT2J0aWVuZSUyMGluZm9ybWFjaSVDMyVCM24lMjBtZXRlb3JvbCVDMyVCM2dpY2ElMjBmaWN0aWNpYSUyMHBhcmElMjB1bmElMjB1YmljYWNpJUMzJUIzbiUyMGRhZGEuJTIyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> langchain.tools <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">import</span> random

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_weather_info</span>(<span class="hljs-params">location: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Obtiene información meteorológica ficticia para una ubicación dada.&quot;&quot;&quot;</span>
    <span class="hljs-comment"># Datos meteorológicos ficticios</span>
    weather_conditions = [
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Lluvioso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">15</span>},
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Despejado&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">25</span>},
        {<span class="hljs-string">&quot;condition&quot;</span>: <span class="hljs-string">&quot;Ventoso&quot;</span>, <span class="hljs-string">&quot;temp_c&quot;</span>: <span class="hljs-number">20</span>}
    ]
    <span class="hljs-comment"># Seleccionar aleatoriamente una condición meteorológica</span>
    data = random.choice(weather_conditions)
    <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Clima en <span class="hljs-subst">{location}</span>: <span class="hljs-subst">{data[<span class="hljs-string">&#x27;condition&#x27;</span>]}</span>, <span class="hljs-subst">{data[<span class="hljs-string">&#x27;temp_c&#x27;</span>]}</span>°C&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
weather_info_tool = Tool(
    name=<span class="hljs-string">&quot;get_weather_info&quot;</span>,
    func=get_weather_info,
    description=<span class="hljs-string">&quot;Obtiene información meteorológica ficticia para una ubicación dada.&quot;</span>
)`,wrap:!1}}),{c(){d(a.$$.fragment)},l(n){J(a.$$.fragment,n)},m(n,r){u(a,n,r),t=!0},p:C,i(n){t||(U(a.$$.fragment,n),t=!0)},o(n){b(a.$$.fragment,n),t=!1},d(n){w(a,n)}}}function ll(h){let a,t,n,r,M,o;return a=new g({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[Ls]},$$scope:{ctx:h}}}),n=new g({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[Os]},$$scope:{ctx:h}}}),M=new g({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[sl]},$$scope:{ctx:h}}}),{c(){d(a.$$.fragment),t=y(),d(n.$$.fragment),r=y(),d(M.$$.fragment)},l(l){J(a.$$.fragment,l),t=m(l),J(n.$$.fragment,l),r=m(l),J(M.$$.fragment,l)},m(l,s){u(a,l,s),c(l,t,s),u(n,l,s),c(l,r,s),u(M,l,s),o=!0},p(l,s){const j={};s&2&&(j.$$scope={dirty:s,ctx:l}),a.$set(j);const B={};s&2&&(B.$$scope={dirty:s,ctx:l}),n.$set(B);const Z={};s&2&&(Z.$$scope={dirty:s,ctx:l}),M.$set(Z)},i(l){o||(U(a.$$.fragment,l),U(n.$$.fragment,l),U(M.$$.fragment,l),o=!0)},o(l){b(a.$$.fragment,l),b(n.$$.fragment,l),b(M.$$.fragment,l),o=!1},d(l){l&&(p(t),p(r)),w(a,l),w(n,l),w(M,l)}}}function al(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBUb29sJTBBZnJvbSUyMGh1Z2dpbmdmYWNlX2h1YiUyMGltcG9ydCUyMGxpc3RfbW9kZWxzJTBBJTBBY2xhc3MlMjBIdWJTdGF0c1Rvb2woVG9vbCklM0ElMEElMjAlMjAlMjAlMjBuYW1lJTIwJTNEJTIwJTIyaHViX3N0YXRzJTIyJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lMjAlM0QlMjAlMjJPYnRpZW5lJTIwZWwlMjBtb2RlbG8lMjBtJUMzJUExcyUyMGRlc2NhcmdhZG8lMjBkZSUyMHVuJTIwYXV0b3IlMjBlc3BlYyVDMyVBRGZpY28lMjBlbiUyMEh1Z2dpbmclMjBGYWNlJTIwSHViLiUyMiUwQSUyMCUyMCUyMCUyMGlucHV0cyUyMCUzRCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmF1dGhvciUyMiUzQSUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnR5cGUlMjIlM0ElMjAlMjJzdHJpbmclMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJkZXNjcmlwdGlvbiUyMiUzQSUyMCUyMkVsJTIwbm9tYnJlJTIwZGUlMjB1c3VhcmlvJTIwZGVsJTIwYXV0b3IlMkZvcmdhbml6YWNpJUMzJUIzbiUyMGRlbCUyMG1vZGVsbyUyMHBhcmElMjBlbmNvbnRyYXIlMjBtb2RlbG9zLiUyMiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMG91dHB1dF90eXBlJTIwJTNEJTIwJTIyc3RyaW5nJTIyJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwZm9yd2FyZChzZWxmJTJDJTIwYXV0aG9yJTNBJTIwc3RyKSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHRyeSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMyUyMExpc3RhciUyMG1vZGVsb3MlMjBkZWwlMjBhdXRvciUyMGVzcGVjaWZpY2FkbyUyQyUyMG9yZGVuYWRvcyUyMHBvciUyMGRlc2NhcmdhcyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1vZGVscyUyMCUzRCUyMGxpc3QobGlzdF9tb2RlbHMoYXV0aG9yJTNEYXV0aG9yJTJDJTIwc29ydCUzRCUyMmRvd25sb2FkcyUyMiUyQyUyMGRpcmVjdGlvbiUzRC0xJTJDJTIwbGltaXQlM0QxKSklMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBpZiUyMG1vZGVscyUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMG1vZGVsJTIwJTNEJTIwbW9kZWxzJTVCMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGYlMjJFbCUyMG1vZGVsbyUyMG0lQzMlQTFzJTIwZGVzY2FyZ2FkbyUyMGRlJTIwJTdCYXV0aG9yJTdEJTIwZXMlMjAlN0Jtb2RlbC5pZCU3RCUyMGNvbiUyMCU3Qm1vZGVsLmRvd25sb2FkcyUzQSUyQyU3RCUyMGRlc2Nhcmdhcy4lMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBlbHNlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMk5vJTIwc2UlMjBlbmNvbnRyYXJvbiUyMG1vZGVsb3MlMjBwYXJhJTIwZWwlMjBhdXRvciUyMCU3QmF1dGhvciU3RC4lMjIlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBleGNlcHQlMjBFeGNlcHRpb24lMjBhcyUyMGUlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBmJTIyRXJyb3IlMjBhbCUyMG9idGVuZXIlMjBtb2RlbG9zJTIwcGFyYSUyMCU3QmF1dGhvciU3RCUzQSUyMCU3QnN0cihlKSU3RCUyMiUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwbGElMjBoZXJyYW1pZW50YSUwQWh1Yl9zdGF0c190b29sJTIwJTNEJTIwSHViU3RhdHNUb29sKCklMEElMEElMjMlMjBFamVtcGxvJTIwZGUlMjB1c28lMEFwcmludChodWJfc3RhdHNfdG9vbCglMjJmYWNlYm9vayUyMikpJTIwJTIzJTIwRWplbXBsbyUzQSUyME9idGVuZXIlMjBlbCUyMG1vZGVsbyUyMG0lQzMlQTFzJTIwZGVzY2FyZ2FkbyUyMGRlJTIwRmFjZWJvb2s=",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> list_models

<span class="hljs-keyword">class</span> <span class="hljs-title class_">HubStatsTool</span>(<span class="hljs-title class_ inherited__">Tool</span>):
    name = <span class="hljs-string">&quot;hub_stats&quot;</span>
    description = <span class="hljs-string">&quot;Obtiene el modelo más descargado de un autor específico en Hugging Face Hub.&quot;</span>
    inputs = {
        <span class="hljs-string">&quot;author&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 de usuario del autor/organización del modelo para encontrar modelos.&quot;</span>
        }
    }
    output_type = <span class="hljs-string">&quot;string&quot;</span>

    <span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, author: <span class="hljs-built_in">str</span></span>):
        <span class="hljs-keyword">try</span>:
            <span class="hljs-comment"># Listar modelos del autor especificado, ordenados por descargas</span>
            models = <span class="hljs-built_in">list</span>(list_models(author=author, sort=<span class="hljs-string">&quot;downloads&quot;</span>, direction=-<span class="hljs-number">1</span>, limit=<span class="hljs-number">1</span>))
            
            <span class="hljs-keyword">if</span> models:
                model = models[<span class="hljs-number">0</span>]
                <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;El modelo más descargado de <span class="hljs-subst">{author}</span> es <span class="hljs-subst">{model.<span class="hljs-built_in">id</span>}</span> con <span class="hljs-subst">{model.downloads:,}</span> descargas.&quot;</span>
            <span class="hljs-keyword">else</span>:
                <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;No se encontraron modelos para el autor <span class="hljs-subst">{author}</span>.&quot;</span>
        <span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
            <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Error al obtener modelos para <span class="hljs-subst">{author}</span>: <span class="hljs-subst">{<span class="hljs-built_in">str</span>(e)}</span>&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
hub_stats_tool = HubStatsTool()

<span class="hljs-comment"># Ejemplo de uso</span>
<span class="hljs-built_in">print</span>(hub_stats_tool(<span class="hljs-string">&quot;facebook&quot;</span>)) <span class="hljs-comment"># Ejemplo: Obtener el modelo más descargado de Facebook</span>`,wrap:!1}}),o=new G({props:{code:"VGhlJTIwbW9zdCUyMGRvd25sb2FkZWQlMjBtb2RlbCUyMGJ5JTIwZmFjZWJvb2slMjBpcyUyMGZhY2Vib29rJTJGZXNtZm9sZF92MSUyMHdpdGglMjAxMiUyQzU0NCUyQzU1MCUyMGRvd25sb2Fkcy4=",highlighted:'<span class="hljs-attribute">The</span> most downloaded model by facebook is facebook/esmfold_v1 with <span class="hljs-number">12</span>,<span class="hljs-number">544</span>,<span class="hljs-number">550</span> downloads.',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function el(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"aW1wb3J0JTIwcmFuZG9tJTBBZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBGdW5jdGlvblRvb2wlMEFmcm9tJTIwaHVnZ2luZ2ZhY2VfaHViJTIwaW1wb3J0JTIwbGlzdF9tb2RlbHMlMEElMEFkZWYlMjBnZXRfaHViX3N0YXRzKGF1dGhvciUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyT2J0aWVuZSUyMGVsJTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBkZXNjYXJnYWRvJTIwZGUlMjB1biUyMGF1dG9yJTIwZXNwZWMlQzMlQURmaWNvJTIwZW4lMjBIdWdnaW5nJTIwRmFjZSUyMEh1Yi4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjB0cnklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBMaXN0YXIlMjBtb2RlbG9zJTIwZGVsJTIwYXV0b3IlMjBlc3BlY2lmaWNhZG8lMkMlMjBvcmRlbmFkb3MlMjBwb3IlMjBkZXNjYXJnYXMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbHMlMjAlM0QlMjBsaXN0KGxpc3RfbW9kZWxzKGF1dGhvciUzRGF1dGhvciUyQyUyMHNvcnQlM0QlMjJkb3dubG9hZHMlMjIlMkMlMjBkaXJlY3Rpb24lM0QtMSUyQyUyMGxpbWl0JTNEMSkpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBtb2RlbHMlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbCUyMCUzRCUyMG1vZGVscyU1QjAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBmJTIyRWwlMjBtb2RlbG8lMjBtJUMzJUExcyUyMGRlc2NhcmdhZG8lMjBkZSUyMCU3QmF1dGhvciU3RCUyMGVzJTIwJTdCbW9kZWwuaWQlN0QlMjBjb24lMjAlN0Jtb2RlbC5kb3dubG9hZHMlM0ElMkMlN0QlMjBkZXNjYXJnYXMuJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGYlMjJObyUyMHNlJTIwZW5jb250cmFyb24lMjBtb2RlbG9zJTIwcGFyYSUyMGVsJTIwYXV0b3IlMjAlN0JhdXRob3IlN0QuJTIyJTBBJTIwJTIwJTIwJTIwZXhjZXB0JTIwRXhjZXB0aW9uJTIwYXMlMjBlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMkVycm9yJTIwYWwlMjBvYnRlbmVyJTIwbW9kZWxvcyUyMHBhcmElMjAlN0JhdXRob3IlN0QlM0ElMjAlN0JzdHIoZSklN0QlMjIlMEElMEElMjMlMjBJbmljaWFsaXphciUyMGxhJTIwaGVycmFtaWVudGElMEFodWJfc3RhdHNfdG9vbCUyMCUzRCUyMEZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKGdldF9odWJfc3RhdHMpJTBBJTBBJTIzJTIwRWplbXBsbyUyMGRlJTIwdXNvJTBBcHJpbnQoaHViX3N0YXRzX3Rvb2woJTIyZmFjZWJvb2slMjIpKSUyMCUyMyUyMEVqZW1wbG8lM0ElMjBPYnRlbmVyJTIwZWwlMjBtb2RlbG8lMjBtJUMzJUExcyUyMGRlc2NhcmdhZG8lMjBkZSUyMEZhY2Vib29r",highlighted:`<span class="hljs-keyword">import</span> random
<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> FunctionTool
<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> list_models

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_hub_stats</span>(<span class="hljs-params">author: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Obtiene el modelo más descargado de un autor específico en Hugging Face Hub.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">try</span>:
        <span class="hljs-comment"># Listar modelos del autor especificado, ordenados por descargas</span>
        models = <span class="hljs-built_in">list</span>(list_models(author=author, sort=<span class="hljs-string">&quot;downloads&quot;</span>, direction=-<span class="hljs-number">1</span>, limit=<span class="hljs-number">1</span>))

        <span class="hljs-keyword">if</span> models:
            model = models[<span class="hljs-number">0</span>]
            <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;El modelo más descargado de <span class="hljs-subst">{author}</span> es <span class="hljs-subst">{model.<span class="hljs-built_in">id</span>}</span> con <span class="hljs-subst">{model.downloads:,}</span> descargas.&quot;</span>
        <span class="hljs-keyword">else</span>:
            <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;No se encontraron modelos para el autor <span class="hljs-subst">{author}</span>.&quot;</span>
    <span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
        <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Error al obtener modelos para <span class="hljs-subst">{author}</span>: <span class="hljs-subst">{<span class="hljs-built_in">str</span>(e)}</span>&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
hub_stats_tool = FunctionTool.from_defaults(get_hub_stats)

<span class="hljs-comment"># Ejemplo de uso</span>
<span class="hljs-built_in">print</span>(hub_stats_tool(<span class="hljs-string">&quot;facebook&quot;</span>)) <span class="hljs-comment"># Ejemplo: Obtener el modelo más descargado de Facebook</span>`,wrap:!1}}),o=new G({props:{code:"VGhlJTIwbW9zdCUyMGRvd25sb2FkZWQlMjBtb2RlbCUyMGJ5JTIwZmFjZWJvb2slMjBpcyUyMGZhY2Vib29rJTJGZXNtZm9sZF92MSUyMHdpdGglMjAxMiUyQzU0NCUyQzU1MCUyMGRvd25sb2Fkcy4=",highlighted:'<span class="hljs-attribute">The</span> most downloaded model by facebook is facebook/esmfold_v1 with <span class="hljs-number">12</span>,<span class="hljs-number">544</span>,<span class="hljs-number">550</span> downloads.',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function nl(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMGxhbmdjaGFpbi50b29scyUyMGltcG9ydCUyMFRvb2wlMEFmcm9tJTIwaHVnZ2luZ2ZhY2VfaHViJTIwaW1wb3J0JTIwbGlzdF9tb2RlbHMlMEElMEFkZWYlMjBnZXRfaHViX3N0YXRzKGF1dGhvciUzQSUyMHN0ciklMjAtJTNFJTIwc3RyJTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyT2J0aWVuZSUyMGVsJTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBkZXNjYXJnYWRvJTIwZGUlMjB1biUyMGF1dG9yJTIwZXNwZWMlQzMlQURmaWNvJTIwZW4lMjBIdWdnaW5nJTIwRmFjZSUyMEh1Yi4lMjIlMjIlMjIlMEElMjAlMjAlMjAlMjB0cnklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjMlMjBMaXN0YXIlMjBtb2RlbG9zJTIwZGVsJTIwYXV0b3IlMjBlc3BlY2lmaWNhZG8lMkMlMjBvcmRlbmFkb3MlMjBwb3IlMjBkZXNjYXJnYXMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbHMlMjAlM0QlMjBsaXN0KGxpc3RfbW9kZWxzKGF1dGhvciUzRGF1dGhvciUyQyUyMHNvcnQlM0QlMjJkb3dubG9hZHMlMjIlMkMlMjBkaXJlY3Rpb24lM0QtMSUyQyUyMGxpbWl0JTNEMSkpJTBBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwaWYlMjBtb2RlbHMlM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBtb2RlbCUyMCUzRCUyMG1vZGVscyU1QjAlNUQlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjByZXR1cm4lMjBmJTIyRWwlMjBtb2RlbG8lMjBtJUMzJUExcyUyMGRlc2NhcmdhZG8lMjBkZSUyMCU3QmF1dGhvciU3RCUyMGVzJTIwJTdCbW9kZWwuaWQlN0QlMjBjb24lMjAlN0Jtb2RlbC5kb3dubG9hZHMlM0ElMkMlN0QlMjBkZXNjYXJnYXMuJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwZWxzZSUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMGYlMjJObyUyMHNlJTIwZW5jb250cmFyb24lMjBtb2RlbG9zJTIwcGFyYSUyMGVsJTIwYXV0b3IlMjAlN0JhdXRob3IlN0QuJTIyJTBBJTIwJTIwJTIwJTIwZXhjZXB0JTIwRXhjZXB0aW9uJTIwYXMlMjBlJTNBJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwZiUyMkVycm9yJTIwYWwlMjBvYnRlbmVyJTIwbW9kZWxvcyUyMHBhcmElMjAlN0JhdXRob3IlN0QlM0ElMjAlN0JzdHIoZSklN0QlMjIlMEElMEElMjMlMjBJbmljaWFsaXphciUyMGxhJTIwaGVycmFtaWVudGElMEFodWJfc3RhdHNfdG9vbCUyMCUzRCUyMFRvb2woJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMmdldF9odWJfc3RhdHMlMjIlMkMlMEElMjAlMjAlMjAlMjBmdW5jJTNEZ2V0X2h1Yl9zdGF0cyUyQyUwQSUyMCUyMCUyMCUyMGRlc2NyaXB0aW9uJTNEJTIyT2J0aWVuZSUyMGVsJTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBkZXNjYXJnYWRvJTIwZGUlMjB1biUyMGF1dG9yJTIwZXNwZWMlQzMlQURmaWNvJTIwZW4lMjBIdWdnaW5nJTIwRmFjZSUyMEh1Yi4lMjIlMEEpJTBBJTBBJTIzJTIwRWplbXBsbyUyMGRlJTIwdXNvJTBBcHJpbnQoaHViX3N0YXRzX3Rvb2woJTIyZmFjZWJvb2slMjIpKSUyMCUyMyUyMEVqZW1wbG8lM0ElMjBPYnRlbmVyJTIwZWwlMjBtb2RlbG8lMjBtJUMzJUExcyUyMGRlc2NhcmdhZG8lMjBkZSUyMEZhY2Vib29r",highlighted:`<span class="hljs-keyword">from</span> langchain.tools <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">from</span> huggingface_hub <span class="hljs-keyword">import</span> list_models

<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_hub_stats</span>(<span class="hljs-params">author: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
    <span class="hljs-string">&quot;&quot;&quot;Obtiene el modelo más descargado de un autor específico en Hugging Face Hub.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">try</span>:
        <span class="hljs-comment"># Listar modelos del autor especificado, ordenados por descargas</span>
        models = <span class="hljs-built_in">list</span>(list_models(author=author, sort=<span class="hljs-string">&quot;downloads&quot;</span>, direction=-<span class="hljs-number">1</span>, limit=<span class="hljs-number">1</span>))

        <span class="hljs-keyword">if</span> models:
            model = models[<span class="hljs-number">0</span>]
            <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;El modelo más descargado de <span class="hljs-subst">{author}</span> es <span class="hljs-subst">{model.<span class="hljs-built_in">id</span>}</span> con <span class="hljs-subst">{model.downloads:,}</span> descargas.&quot;</span>
        <span class="hljs-keyword">else</span>:
            <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;No se encontraron modelos para el autor <span class="hljs-subst">{author}</span>.&quot;</span>
    <span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> e:
        <span class="hljs-keyword">return</span> <span class="hljs-string">f&quot;Error al obtener modelos para <span class="hljs-subst">{author}</span>: <span class="hljs-subst">{<span class="hljs-built_in">str</span>(e)}</span>&quot;</span>

<span class="hljs-comment"># Inicializar la herramienta</span>
hub_stats_tool = Tool(
    name=<span class="hljs-string">&quot;get_hub_stats&quot;</span>,
    func=get_hub_stats,
    description=<span class="hljs-string">&quot;Obtiene el modelo más descargado de un autor específico en Hugging Face Hub.&quot;</span>
)

<span class="hljs-comment"># Ejemplo de uso</span>
<span class="hljs-built_in">print</span>(hub_stats_tool(<span class="hljs-string">&quot;facebook&quot;</span>)) <span class="hljs-comment"># Ejemplo: Obtener el modelo más descargado de Facebook</span>`,wrap:!1}}),o=new G({props:{code:"VGhlJTIwbW9zdCUyMGRvd25sb2FkZWQlMjBtb2RlbCUyMGJ5JTIwZmFjZWJvb2slMjBpcyUyMGZhY2Vib29rJTJGZXNtZm9sZF92MSUyMHdpdGglMjAxMyUyQzEwOSUyQzg2MSUyMGRvd25sb2Fkcy4=",highlighted:'<span class="hljs-attribute">The</span> most downloaded model by facebook is facebook/esmfold_v1 with <span class="hljs-number">13</span>,<span class="hljs-number">109</span>,<span class="hljs-number">861</span> downloads.',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function tl(h){let a,t,n,r,M,o;return a=new g({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[al]},$$scope:{ctx:h}}}),n=new g({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[el]},$$scope:{ctx:h}}}),M=new g({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[nl]},$$scope:{ctx:h}}}),{c(){d(a.$$.fragment),t=y(),d(n.$$.fragment),r=y(),d(M.$$.fragment)},l(l){J(a.$$.fragment,l),t=m(l),J(n.$$.fragment,l),r=m(l),J(M.$$.fragment,l)},m(l,s){u(a,l,s),c(l,t,s),u(n,l,s),c(l,r,s),u(M,l,s),o=!0},p(l,s){const j={};s&2&&(j.$$scope={dirty:s,ctx:l}),a.$set(j);const B={};s&2&&(B.$$scope={dirty:s,ctx:l}),n.$set(B);const Z={};s&2&&(Z.$$scope={dirty:s,ctx:l}),M.$set(Z)},i(l){o||(U(a.$$.fragment,l),U(n.$$.fragment,l),U(M.$$.fragment,l),o=!0)},o(l){b(a.$$.fragment,l),b(n.$$.fragment,l),b(M.$$.fragment,l),o=!1},d(l){l&&(p(t),p(r)),w(a,l),w(n,l),w(M,l)}}}function Ml(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBDb2RlQWdlbnQlMkMlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCUwQSUwQSUyMyUyMEluaWNpYWxpemFyJTIwZWwlMjBtb2RlbG8lMjBkZSUyMEh1Z2dpbmclMjBGYWNlJTBBbW9kZWwlMjAlM0QlMjBJbmZlcmVuY2VDbGllbnRNb2RlbCgpJTBBJTBBJTIzJTIwQ3JlYXIlMjBBbGZyZWQlMjBjb24lMjB0b2RhcyUyMGxhcyUyMGhlcnJhbWllbnRhcyUwQWFsZnJlZCUyMCUzRCUyMENvZGVBZ2VudCglMEElMjAlMjAlMjAlMjB0b29scyUzRCU1QnNlYXJjaF90b29sJTJDJTIwd2VhdGhlcl9pbmZvX3Rvb2wlMkMlMjBodWJfc3RhdHNfdG9vbCU1RCUyQyUyMCUwQSUyMCUyMCUyMCUyMG1vZGVsJTNEbW9kZWwlMEEpJTBBJTBBJTIzJTIwRWplbXBsbyUyMGRlJTIwY29uc3VsdGElMjBxdWUlMjBBbGZyZWQlMjBwb2RyJUMzJUFEYSUyMHJlY2liaXIlMjBkdXJhbnRlJTIwbGElMjBnYWxhJTBBcmVzcG9uc2UlMjAlM0QlMjBhbGZyZWQucnVuKCUyMiVDMiVCRlF1JUMzJUE5JTIwZXMlMjBGYWNlYm9vayUyMHklMjBjdSVDMyVBMWwlMjBlcyUyMHN1JTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBwb3B1bGFyJTNGJTIyKSUwQSUwQXByaW50KCUyMiVGMCU5RiU4RSVBOSUyMFJlc3B1ZXN0YSUyMGRlJTIwQWxmcmVkJTNBJTIyKSUwQXByaW50KHJlc3BvbnNlKQ==",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 con todas las herramientas</span>
alfred = CodeAgent(
    tools=[search_tool, weather_info_tool, hub_stats_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;¿Qué es Facebook y cuál es su modelo más popular?&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}}),o=new G({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFGYWNlYm9vayUyMGVzJTIwdW4lMjBzaXRpbyUyMHdlYiUyMGRlJTIwcmVkZXMlMjBzb2NpYWxlcyUyMGRvbmRlJTIwbG9zJTIwdXN1YXJpb3MlMjBwdWVkZW4lMjBjb25lY3RhcnNlJTJDJTIwY29tcGFydGlyJTIwaW5mb3JtYWNpJUMzJUIzbiUyMGUlMjBpbnRlcmFjdHVhciUyMGNvbiUyMG90cm9zLiUyMEVsJTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBkZXNjYXJnYWRvJTIwZGUlMjBGYWNlYm9vayUyMGVuJTIwSHVnZ2luZyUyMEZhY2UlMjBIdWIlMjBlcyUyMEVTTUZvbGRfdjEu",highlighted:`🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:
Facebook es un sitio web <span class="hljs-keyword">de</span> redes sociales donde los usuarios pueden conectarse, compartir informació<span class="hljs-keyword">n</span> <span class="hljs-keyword">e</span> interactuar con otros. El modelo <span class="hljs-keyword">m</span>ás descargado <span class="hljs-keyword">de</span> Facebook <span class="hljs-keyword">en</span> Hugging Face Hub es ESMFold_v1.`,wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-zzg1xb"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function ol(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjBBZ2VudFdvcmtmbG93JTBBZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEElMEElMjMlMjBJbmljaWFsaXphciUyMGVsJTIwbW9kZWxvJTIwZGUlMjBIdWdnaW5nJTIwRmFjZSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTIzJTIwQ3JlYXIlMjBBbGZyZWQlMjBjb24lMjB0b2RhcyUyMGxhcyUyMGhlcnJhbWllbnRhcyUwQWFsZnJlZCUyMCUzRCUyMEFnZW50V29ya2Zsb3cuZnJvbV90b29sc19vcl9mdW5jdGlvbnMoJTBBJTIwJTIwJTIwJTIwJTVCc2VhcmNoX3Rvb2wlMkMlMjB3ZWF0aGVyX2luZm9fdG9vbCUyQyUyMGh1Yl9zdGF0c190b29sJTVEJTJDJTBBJTIwJTIwJTIwJTIwbGxtJTNEbGxtJTBBKSUwQSUwQSUyMyUyMEVqZW1wbG8lMjBkZSUyMGNvbnN1bHRhJTIwcXVlJTIwQWxmcmVkJTIwcG9kciVDMyVBRGElMjByZWNpYmlyJTIwZHVyYW50ZSUyMGxhJTIwZ2FsYSUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhbGZyZWQucnVuKCUyMiVDMiVCRlF1JUMzJUE5JTIwZXMlMjBGYWNlYm9vayUyMHklMjBjdSVDMyVBMWwlMjBlcyUyMHN1JTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBwb3B1bGFyJTNGJTIyKSUwQSUwQXByaW50KCUyMiVGMCU5RiU4RSVBOSUyMFJlc3B1ZXN0YSUyMGRlJTIwQWxmcmVkJTNBJTIyKSUwQXByaW50KHJlc3BvbnNlKQ==",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 Alfred con todas las herramientas</span>
alfred = AgentWorkflow.from_tools_or_functions(
    [search_tool, weather_info_tool, hub_stats_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;¿Qué es Facebook y cuál es su modelo más popular?&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}}),o=new G({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFGYWNlYm9vayUyMGVzJTIwdW4lMjBzZXJ2aWNpbyUyMGRlJTIwcmVkZXMlMjBzb2NpYWxlcyUyMHklMjB1bmElMjBlbXByZXNhJTIwdGVjbm9sJUMzJUIzZ2ljYSUyMGNvbiUyMHNlZGUlMjBlbiUyME1lbmxvJTIwUGFyayUyQyUyMENhbGlmb3JuaWEuJTIwRnVlJTIwZnVuZGFkYSUyMHBvciUyME1hcmslMjBadWNrZXJiZXJnJTIweSUyMHBlcm1pdGUlMjBhJTIwbGFzJTIwcGVyc29uYXMlMjBjcmVhciUyMHBlcmZpbGVzJTJDJTIwY29uZWN0YXJzZSUyMGNvbiUyMGFtaWdvcyUyMHklMjBmYW1pbGlhcmVzJTJDJTIwY29tcGFydGlyJTIwZm90b3MlMjB5JTIwdmlkZW9zJTJDJTIweSUyMHVuaXJzZSUyMGElMjBncnVwb3MlMjBiYXNhZG9zJTIwZW4lMjBpbnRlcmVzZXMlMjBjb21wYXJ0aWRvcy4lMjBFbCUyMG1vZGVsbyUyMG0lQzMlQTFzJTIwcG9wdWxhciUyMGRlJTIwRmFjZWJvb2slMjBlbiUyMEh1Z2dpbmclMjBGYWNlJTIwSHViJTIwZXMlMjAlNjBmYWNlYm9vayUyRmVzbWZvbGRfdjElNjAlMjBjb24lMjAxMyUyQzEwOSUyQzg2MSUyMGRlc2Nhcmdhcy4=",highlighted:'🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:\nFacebook es un servicio <span class="hljs-keyword">de</span> redes sociales y una empresa tecnológica con sede <span class="hljs-keyword">en</span> Menlo Park, California. Fue fundada por <span class="hljs-keyword">Mark</span> Zuckerberg y permite a las personas crear perfiles, conectarse con amigos y familiares, compartir fotos y videos, y unirse a grupos basados <span class="hljs-keyword">en</span> intereses compartidos. El modelo <span class="hljs-keyword">m</span>ás popular <span class="hljs-keyword">de</span> Facebook <span class="hljs-keyword">en</span> Hugging Face Hub es `facebook/esmfold_v1` con 13,109,861 descargas.',wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-zzg1xb"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function pl(h){let a,t,n,r="Salida esperada:",M,o,l;return a=new G({props:{code:"ZnJvbSUyMHR5cGluZyUyMGltcG9ydCUyMFR5cGVkRGljdCUyQyUyMEFubm90YXRlZCUwQWZyb20lMjBsYW5nZ3JhcGguZ3JhcGgubWVzc2FnZSUyMGltcG9ydCUyMGFkZF9tZXNzYWdlcyUwQWZyb20lMjBsYW5nY2hhaW5fY29yZS5tZXNzYWdlcyUyMGltcG9ydCUyMEFueU1lc3NhZ2UlMkMlMjBIdW1hbk1lc3NhZ2UlMkMlMjBBSU1lc3NhZ2UlMEFmcm9tJTIwbGFuZ2dyYXBoLnByZWJ1aWx0JTIwaW1wb3J0JTIwVG9vbE5vZGUlMEFmcm9tJTIwbGFuZ2dyYXBoLmdyYXBoJTIwaW1wb3J0JTIwU1RBUlQlMkMlMjBTdGF0ZUdyYXBoJTBBZnJvbSUyMGxhbmdncmFwaC5wcmVidWlsdCUyMGltcG9ydCUyMHRvb2xzX2NvbmRpdGlvbiUwQWZyb20lMjBsYW5nY2hhaW5faHVnZ2luZ2ZhY2UlMjBpbXBvcnQlMjBIdWdnaW5nRmFjZUVuZHBvaW50JTJDJTIwQ2hhdEh1Z2dpbmdGYWNlJTBBJTBBJTIzJTIwR2VuZXJhciUyMGxhJTIwaW50ZXJmYXolMjBkZSUyMGNoYXQlMkMlMjBpbmNsdXllbmRvJTIwbGFzJTIwaGVycmFtaWVudGFzJTBBbGxtJTIwJTNEJTIwSHVnZ2luZ0ZhY2VFbmRwb2ludCglMEElMjAlMjAlMjAlMjByZXBvX2lkJTNEJTIyUXdlbiUyRlF3ZW4yLjUtQ29kZXItMzJCLUluc3RydWN0JTIyJTJDJTBBJTIwJTIwJTIwJTIwaHVnZ2luZ2ZhY2VodWJfYXBpX3Rva2VuJTNESFVHR0lOR0ZBQ0VIVUJfQVBJX1RPS0VOJTJDJTBBKSUwQSUwQWNoYXQlMjAlM0QlMjBDaGF0SHVnZ2luZ0ZhY2UobGxtJTNEbGxtJTJDJTIwdmVyYm9zZSUzRFRydWUpJTBBdG9vbHMlMjAlM0QlMjAlNUJzZWFyY2hfdG9vbCUyQyUyMHdlYXRoZXJfaW5mb190b29sJTJDJTIwaHViX3N0YXRzX3Rvb2wlNUQlMEFjaGF0X3dpdGhfdG9vbHMlMjAlM0QlMjBjaGF0LmJpbmRfdG9vbHModG9vbHMpJTBBJTBBJTIzJTIwR2VuZXJhciUyMGVsJTIwQWdlbnRTdGF0ZSUyMHklMjBlbCUyMGdyYWZvJTIwZGVsJTIwQWdlbnRlJTBBY2xhc3MlMjBBZ2VudFN0YXRlKFR5cGVkRGljdCklM0ElMEElMjAlMjAlMjAlMjBtZXNzYWdlcyUzQSUyMEFubm90YXRlZCU1Qmxpc3QlNUJBbnlNZXNzYWdlJTVEJTJDJTIwYWRkX21lc3NhZ2VzJTVEJTBBJTBBZGVmJTIwYXNzaXN0YW50KHN0YXRlJTNBJTIwQWdlbnRTdGF0ZSklM0ElMEElMjAlMjAlMjAlMjByZXR1cm4lMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJtZXNzYWdlcyUyMiUzQSUyMCU1QmNoYXRfd2l0aF90b29scy5pbnZva2Uoc3RhdGUlNUIlMjJtZXNzYWdlcyUyMiU1RCklNUQlMkMlMEElMjAlMjAlMjAlMjAlN0QlMEElMEElMjMlMjMlMjBFbCUyMGdyYWZvJTBBYnVpbGRlciUyMCUzRCUyMFN0YXRlR3JhcGgoQWdlbnRTdGF0ZSklMEElMEElMjMlMjBEZWZpbmlyJTIwbm9kb3MlM0ElMjBlc3RvcyUyMGhhY2VuJTIwZWwlMjB0cmFiYWpvJTBBYnVpbGRlci5hZGRfbm9kZSglMjJhc3Npc3RhbnQlMjIlMkMlMjBhc3Npc3RhbnQpJTBBYnVpbGRlci5hZGRfbm9kZSglMjJ0b29scyUyMiUyQyUyMFRvb2xOb2RlKHRvb2xzKSklMEElMEElMjMlMjBEZWZpbmlyJTIwYm9yZGVzJTNBJTIwZXN0b3MlMjBkZXRlcm1pbmFuJTIwYyVDMyVCM21vJTIwc2UlMjBtdWV2ZSUyMGVsJTIwZmx1am8lMjBkZSUyMGNvbnRyb2wlMEFidWlsZGVyLmFkZF9lZGdlKFNUQVJUJTJDJTIwJTIyYXNzaXN0YW50JTIyKSUwQWJ1aWxkZXIuYWRkX2NvbmRpdGlvbmFsX2VkZ2VzKCUwQSUyMCUyMCUyMCUyMCUyMmFzc2lzdGFudCUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMyUyMFNpJTIwZWwlMjAlQzMlQkFsdGltbyUyMG1lbnNhamUlMjByZXF1aWVyZSUyMHVuYSUyMGhlcnJhbWllbnRhJTJDJTIwZW5ydXRhciUyMGElMjBoZXJyYW1pZW50YXMlMEElMjAlMjAlMjAlMjAlMjMlMjBEZSUyMGxvJTIwY29udHJhcmlvJTJDJTIwcHJvcG9yY2lvbmFyJTIwdW5hJTIwcmVzcHVlc3RhJTIwZGlyZWN0YSUwQSUyMCUyMCUyMCUyMHRvb2xzX2NvbmRpdGlvbiUyQyUwQSklMEFidWlsZGVyLmFkZF9lZGdlKCUyMnRvb2xzJTIyJTJDJTIwJTIyYXNzaXN0YW50JTIyKSUwQWFsZnJlZCUyMCUzRCUyMGJ1aWxkZXIuY29tcGlsZSgpJTBBJTBBbWVzc2FnZXMlMjAlM0QlMjAlNUJIdW1hbk1lc3NhZ2UoY29udGVudCUzRCUyMiVDMiVCRlF1aSVDMyVBOW4lMjBlcyUyMEZhY2Vib29rJTIweSUyMGN1JUMzJUExbCUyMGVzJTIwc3UlMjBtb2RlbG8lMjBtJUMzJUExcyUyMHBvcHVsYXIlM0YlMjIpJTVEJTBBcmVzcG9uc2UlMjAlM0QlMjBhbGZyZWQuaW52b2tlKCU3QiUyMm1lc3NhZ2VzJTIyJTNBJTIwbWVzc2FnZXMlN0QpJTBBJTBBcHJpbnQoJTIyJUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMjIpJTBBcHJpbnQocmVzcG9uc2UlNUInbWVzc2FnZXMnJTVEJTVCLTElNUQuY29udGVudCk=",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 = [search_tool, weather_info_tool, hub_stats_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;¿Quién es Facebook y cuál es su modelo más popular?&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>(response[<span class="hljs-string">&#x27;messages&#x27;</span>][-<span class="hljs-number">1</span>].content)`,wrap:!1}}),o=new G({props:{code:"JUYwJTlGJThFJUE5JTIwUmVzcHVlc3RhJTIwZGUlMjBBbGZyZWQlM0ElMEFGYWNlYm9vayUyMGVzJTIwdW5hJTIwZW1wcmVzYSUyMGRlJTIwcmVkZXMlMjBzb2NpYWxlcyUyMGNvbm9jaWRhJTIwcG9yJTIwc3UlMjBzaXRpbyUyMGRlJTIwcmVkZXMlMjBzb2NpYWxlcyUyQyUyMEZhY2Vib29rJTJDJTIwYXMlQzMlQUQlMjBjb21vJTIwb3Ryb3MlMjBzZXJ2aWNpb3MlMjBjb21vJTIwSW5zdGFncmFtJTIweSUyMFdoYXRzQXBwLiUyMEVsJTIwbW9kZWxvJTIwbSVDMyVBMXMlMjBkZXNjYXJnYWRvJTIwZGUlMjBGYWNlYm9vayUyMGVuJTIwSHVnZ2luZyUyMEZhY2UlMjBIdWIlMjBlcyUyMGZhY2Vib29rJTJGZXNtZm9sZF92MSUyMGNvbiUyMDEzJTJDMjAyJTJDMzIxJTIwZGVzY2FyZ2FzLg==",highlighted:`🎩 Respuesta <span class="hljs-keyword">de</span> Alfred:
Facebook es una empresa <span class="hljs-keyword">de</span> redes sociales conocida por <span class="hljs-keyword">su</span> sitio <span class="hljs-keyword">de</span> redes sociales, Facebook, <span class="hljs-keyword">as</span>í como otros servicios como Instagram y WhatsApp. El modelo <span class="hljs-keyword">m</span>ás descargado <span class="hljs-keyword">de</span> Facebook <span class="hljs-keyword">en</span> Hugging Face Hub es facebook/esmfold_v1 con 13,202,321 descargas.`,wrap:!1}}),{c(){d(a.$$.fragment),t=y(),n=T("p"),n.textContent=r,M=y(),d(o.$$.fragment)},l(s){J(a.$$.fragment,s),t=m(s),n=I(s,"P",{"data-svelte-h":!0}),f(n)!=="svelte-wjimjn"&&(n.textContent=r),M=m(s),J(o.$$.fragment,s)},m(s,j){u(a,s,j),c(s,t,j),c(s,n,j),c(s,M,j),u(o,s,j),l=!0},p:C,i(s){l||(U(a.$$.fragment,s),U(o.$$.fragment,s),l=!0)},o(s){b(a.$$.fragment,s),b(o.$$.fragment,s),l=!1},d(s){s&&(p(t),p(n),p(M)),w(a,s),w(o,s)}}}function cl(h){let a,t,n,r,M,o;return a=new g({props:{id:"agents-frameworks",option:"smolagents",$$slots:{default:[Ml]},$$scope:{ctx:h}}}),n=new g({props:{id:"agents-frameworks",option:"llama-index",$$slots:{default:[ol]},$$scope:{ctx:h}}}),M=new g({props:{id:"agents-frameworks",option:"langgraph",$$slots:{default:[pl]},$$scope:{ctx:h}}}),{c(){d(a.$$.fragment),t=y(),d(n.$$.fragment),r=y(),d(M.$$.fragment)},l(l){J(a.$$.fragment,l),t=m(l),J(n.$$.fragment,l),r=m(l),J(M.$$.fragment,l)},m(l,s){u(a,l,s),c(l,t,s),u(n,l,s),c(l,r,s),u(M,l,s),o=!0},p(l,s){const j={};s&2&&(j.$$scope={dirty:s,ctx:l}),a.$set(j);const B={};s&2&&(B.$$scope={dirty:s,ctx:l}),n.$set(B);const Z={};s&2&&(Z.$$scope={dirty:s,ctx:l}),M.$set(Z)},i(l){o||(U(a.$$.fragment,l),U(n.$$.fragment,l),U(M.$$.fragment,l),o=!0)},o(l){b(a.$$.fragment,l),b(n.$$.fragment,l),b(M.$$.fragment,l),o=!1},d(l){l&&(p(t),p(r)),w(a,l),w(n,l),w(M,l)}}}function rl(h){let a,t,n="Cuando hayas terminado, implementa tus herramientas personalizadas en el archivo <code>tools.py</code>.";return{c(){a=hs(`Intenta implementar una herramienta que pueda usarse para obtener las últimas noticias sobre un tema específico.
`),t=T("p"),t.innerHTML=n},l(r){a=Ts(r,`Intenta implementar una herramienta que pueda usarse para obtener las últimas noticias sobre un tema específico.
`),t=I(r,"P",{"data-svelte-h":!0}),f(t)!=="svelte-1o7qrep"&&(t.innerHTML=n)},m(r,M){c(r,a,M),c(r,t,M)},p:C,d(r){r&&(p(a),p(t))}}}function jl(h){let a,t,n,r,M,o,l,s=`En esta sección, le daremos a Alfred acceso a la web, permitiéndole encontrar las últimas noticias y actualizaciones globales.
Además, tendrá acceso a datos meteorológicos y estadísticas de descargas de modelos de Hugging Face Hub, para que pueda mantener conversaciones relevantes sobre temas actuales.`,j,B,Z,R,Is="Recuerda que queremos que Alfred establezca su presencia como un verdadero anfitrión renacentista, con un profundo conocimiento del mundo.",L,N,fs="Para lograrlo, necesitamos asegurarnos de que Alfred tenga acceso a las últimas noticias e información sobre el mundo.",O,Y,Gs="¡Comencemos creando una herramienta de búsqueda web para Alfred!",ss,$,ls,v,as,X,Bs="La gala perfecta tendría fuegos artificiales bajo un cielo despejado, necesitamos asegurarnos de que los fuegos artificiales no sean cancelados debido al mal tiempo.",es,F,Zs="Vamos a crear una herramienta personalizada que pueda usarse para llamar a una API meteorológica externa y obtener la información del clima para una ubicación determinada.",ns,W,ts,A,Ms,Q,os,z,Cs="Entre los asistentes a la gala están los más destacados creadores de IA. Alfred quiere impresionarlos discutiendo sus modelos, conjuntos de datos y espacios más populares. Crearemos una herramienta para obtener estadísticas de modelos desde Hugging Face Hub basadas en un nombre de usuario.",ps,E,cs,_,gs="Con la Herramienta de Estadísticas de Hub, Alfred ahora puede impresionar a influyentes creadores de IA discutiendo sus modelos más populares.",rs,S,js,q,$s="Ahora que tenemos todas las herramientas, vamos a integrarlas en el agente de Alfred:",is,V,ys,H,ms,x,Ws="Al integrar estas herramientas, Alfred ahora está equipado para manejar una variedad de tareas, desde búsquedas web hasta actualizaciones meteorológicas y estadísticas de modelos. Esto asegura que se mantenga como el anfitrión más informado y atractivo en la gala.",ds,k,Js,D,us,K,Us;return M=new P({props:{title:"Construyendo e Integrando Herramientas para Tu Agente",local:"construyendo-e-integrando-herramientas-para-tu-agente",headingTag:"h1"}}),B=new P({props:{title:"Dale a Tu Agente Acceso a la Web",local:"dale-a-tu-agente-acceso-a-la-web",headingTag:"h2"}}),$=new bs({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[Ps]},$$scope:{ctx:h}}}),v=new P({props:{title:"Creando una Herramienta Personalizada para Información Meteorológica para Programar los Fuegos Artificiales",local:"creando-una-herramienta-personalizada-para-información-meteorológica-para-programar-los-fuegos-artificiales",headingTag:"h2"}}),W=new vs({props:{$$slots:{default:[Ks]},$$scope:{ctx:h}}}),A=new bs({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[ll]},$$scope:{ctx:h}}}),Q=new P({props:{title:"Creando una Herramienta de Estadísticas de Hub para Influyentes Creadores de IA",local:"creando-una-herramienta-de-estadísticas-de-hub-para-influyentes-creadores-de-ia",headingTag:"h2"}}),E=new bs({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[tl]},$$scope:{ctx:h}}}),S=new P({props:{title:"Integrando Herramientas con Alfred",local:"integrando-herramientas-con-alfred",headingTag:"h2"}}),V=new bs({props:{id:"agents-frameworks",options:["smolagents","llama-index","langgraph"],$$slots:{default:[cl]},$$scope:{ctx:h}}}),H=new P({props:{title:"Conclusión",local:"conclusión",headingTag:"h2"}}),k=new vs({props:{$$slots:{default:[rl]},$$scope:{ctx:h}}}),D=new qs({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/unit3/agentic-rag/tools.mdx"}}),{c(){a=T("meta"),t=y(),n=T("p"),r=y(),d(M.$$.fragment),o=y(),l=T("p"),l.textContent=s,j=y(),d(B.$$.fragment),Z=y(),R=T("p"),R.textContent=Is,L=y(),N=T("p"),N.textContent=fs,O=y(),Y=T("p"),Y.textContent=Gs,ss=y(),d($.$$.fragment),ls=y(),d(v.$$.fragment),as=y(),X=T("p"),X.textContent=Bs,es=y(),F=T("p"),F.textContent=Zs,ns=y(),d(W.$$.fragment),ts=y(),d(A.$$.fragment),Ms=y(),d(Q.$$.fragment),os=y(),z=T("p"),z.textContent=Cs,ps=y(),d(E.$$.fragment),cs=y(),_=T("p"),_.textContent=gs,rs=y(),d(S.$$.fragment),js=y(),q=T("p"),q.textContent=$s,is=y(),d(V.$$.fragment),ys=y(),d(H.$$.fragment),ms=y(),x=T("p"),x.textContent=Ws,ds=y(),d(k.$$.fragment),Js=y(),d(D.$$.fragment),us=y(),K=T("p"),this.h()},l(e){const i=_s("svelte-u9bgzb",document.head);a=I(i,"META",{name:!0,content:!0}),i.forEach(p),t=m(e),n=I(e,"P",{}),Ys(n).forEach(p),r=m(e),J(M.$$.fragment,e),o=m(e),l=I(e,"P",{"data-svelte-h":!0}),f(l)!=="svelte-1usnvdr"&&(l.textContent=s),j=m(e),J(B.$$.fragment,e),Z=m(e),R=I(e,"P",{"data-svelte-h":!0}),f(R)!=="svelte-1cjkrn"&&(R.textContent=Is),L=m(e),N=I(e,"P",{"data-svelte-h":!0}),f(N)!=="svelte-18lmotc"&&(N.textContent=fs),O=m(e),Y=I(e,"P",{"data-svelte-h":!0}),f(Y)!=="svelte-e6fcf9"&&(Y.textContent=Gs),ss=m(e),J($.$$.fragment,e),ls=m(e),J(v.$$.fragment,e),as=m(e),X=I(e,"P",{"data-svelte-h":!0}),f(X)!=="svelte-w24td3"&&(X.textContent=Bs),es=m(e),F=I(e,"P",{"data-svelte-h":!0}),f(F)!=="svelte-t74hor"&&(F.textContent=Zs),ns=m(e),J(W.$$.fragment,e),ts=m(e),J(A.$$.fragment,e),Ms=m(e),J(Q.$$.fragment,e),os=m(e),z=I(e,"P",{"data-svelte-h":!0}),f(z)!=="svelte-b0lpjk"&&(z.textContent=Cs),ps=m(e),J(E.$$.fragment,e),cs=m(e),_=I(e,"P",{"data-svelte-h":!0}),f(_)!=="svelte-god4dz"&&(_.textContent=gs),rs=m(e),J(S.$$.fragment,e),js=m(e),q=I(e,"P",{"data-svelte-h":!0}),f(q)!=="svelte-131prjj"&&(q.textContent=$s),is=m(e),J(V.$$.fragment,e),ys=m(e),J(H.$$.fragment,e),ms=m(e),x=I(e,"P",{"data-svelte-h":!0}),f(x)!=="svelte-1vag1ai"&&(x.textContent=Ws),ds=m(e),J(k.$$.fragment,e),Js=m(e),J(D.$$.fragment,e),us=m(e),K=I(e,"P",{}),Ys(K).forEach(p),this.h()},h(){ws(a,"name","hf:doc:metadata"),ws(a,"content",il)},m(e,i){Ss(document.head,a),c(e,t,i),c(e,n,i),c(e,r,i),u(M,e,i),c(e,o,i),c(e,l,i),c(e,j,i),u(B,e,i),c(e,Z,i),c(e,R,i),c(e,L,i),c(e,N,i),c(e,O,i),c(e,Y,i),c(e,ss,i),u($,e,i),c(e,ls,i),u(v,e,i),c(e,as,i),c(e,X,i),c(e,es,i),c(e,F,i),c(e,ns,i),u(W,e,i),c(e,ts,i),u(A,e,i),c(e,Ms,i),u(Q,e,i),c(e,os,i),c(e,z,i),c(e,ps,i),u(E,e,i),c(e,cs,i),c(e,_,i),c(e,rs,i),u(S,e,i),c(e,js,i),c(e,q,i),c(e,is,i),u(V,e,i),c(e,ys,i),u(H,e,i),c(e,ms,i),c(e,x,i),c(e,ds,i),u(k,e,i),c(e,Js,i),u(D,e,i),c(e,us,i),c(e,K,i),Us=!0},p(e,[i]){const As={};i&2&&(As.$$scope={dirty:i,ctx:e}),$.$set(As);const Es={};i&2&&(Es.$$scope={dirty:i,ctx:e}),W.$set(Es);const Vs={};i&2&&(Vs.$$scope={dirty:i,ctx:e}),A.$set(Vs);const ks={};i&2&&(ks.$$scope={dirty:i,ctx:e}),E.$set(ks);const Rs={};i&2&&(Rs.$$scope={dirty:i,ctx:e}),V.$set(Rs);const Ns={};i&2&&(Ns.$$scope={dirty:i,ctx:e}),k.$set(Ns)},i(e){Us||(U(M.$$.fragment,e),U(B.$$.fragment,e),U($.$$.fragment,e),U(v.$$.fragment,e),U(W.$$.fragment,e),U(A.$$.fragment,e),U(Q.$$.fragment,e),U(E.$$.fragment,e),U(S.$$.fragment,e),U(V.$$.fragment,e),U(H.$$.fragment,e),U(k.$$.fragment,e),U(D.$$.fragment,e),Us=!0)},o(e){b(M.$$.fragment,e),b(B.$$.fragment,e),b($.$$.fragment,e),b(v.$$.fragment,e),b(W.$$.fragment,e),b(A.$$.fragment,e),b(Q.$$.fragment,e),b(E.$$.fragment,e),b(S.$$.fragment,e),b(V.$$.fragment,e),b(H.$$.fragment,e),b(k.$$.fragment,e),b(D.$$.fragment,e),Us=!1},d(e){e&&(p(t),p(n),p(r),p(o),p(l),p(j),p(Z),p(R),p(L),p(N),p(O),p(Y),p(ss),p(ls),p(as),p(X),p(es),p(F),p(ns),p(ts),p(Ms),p(os),p(z),p(ps),p(cs),p(_),p(rs),p(js),p(q),p(is),p(ys),p(ms),p(x),p(ds),p(Js),p(us),p(K)),p(a),w(M,e),w(B,e),w($,e),w(v,e),w(W,e),w(A,e),w(Q,e),w(E,e),w(S,e),w(V,e),w(H,e),w(k,e),w(D,e)}}}const il='{"title":"Construyendo e Integrando Herramientas para Tu Agente","local":"construyendo-e-integrando-herramientas-para-tu-agente","sections":[{"title":"Dale a Tu Agente Acceso a la Web","local":"dale-a-tu-agente-acceso-a-la-web","sections":[],"depth":2},{"title":"Creando una Herramienta Personalizada para Información Meteorológica para Programar los Fuegos Artificiales","local":"creando-una-herramienta-personalizada-para-información-meteorológica-para-programar-los-fuegos-artificiales","sections":[],"depth":2},{"title":"Creando una Herramienta de Estadísticas de Hub para Influyentes Creadores de IA","local":"creando-una-herramienta-de-estadísticas-de-hub-para-influyentes-creadores-de-ia","sections":[],"depth":2},{"title":"Integrando Herramientas con Alfred","local":"integrando-herramientas-con-alfred","sections":[],"depth":2},{"title":"Conclusión","local":"conclusión","sections":[],"depth":2}],"depth":1}';function yl(h){return Fs(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class hl extends Qs{constructor(a){super(),zs(this,a,yl,jl,Xs,{})}}export{hl as component};
