import{s as Be,n as _e,o as He}from"../chunks/scheduler.37c15a92.js";import{S as Ve,i as $e,g as o,s as n,r as _,A as Qe,h as i,f as t,c as s,j as ve,u as H,x as r,k as be,y as ze,a,v as V,d as $,t as Q,w as z}from"../chunks/index.2bf4358c.js";import{C as Ee}from"../chunks/CodeBlock.4e987730.js";import{H as Le}from"../chunks/Heading.8ada512a.js";import{E as xe}from"../chunks/index.e71982be.js";function Se(ce){let u,x,L,S,M,G,c,pe='La llamada a funciones es una <strong>forma para que un LLM realice acciones en su entorno</strong>. Fue <a href="https://openai.com/index/function-calling-and-other-api-updates/" rel="nofollow">introducida primero en GPT-4</a>, y posteriormente fue reproducida en otros modelos.',k,p,Te="Al igual que las herramientas de un Agente, la llamada a funciones le da al modelo la capacidad de <strong>realizar una acción en su entorno</strong>. Sin embargo, la capacidad de llamada a funciones <strong>es aprendida por el modelo</strong>, y <strong>depende menos de los prompts que otras técnicas de agentes</strong>.",F,T,me="Durante la Unidad 1, el Agente <strong>no aprendió a usar las Herramientas</strong>, simplemente proporcionamos la lista, y confiamos en el hecho de que el modelo <strong>era capaz de generalizar al definir un plan usando estas Herramientas</strong>.",N,m,de="Mientras que aquí, <strong>con la llamada a funciones, el Agente es ajustado (entrenado) para usar Herramientas</strong>.",P,d,R,J,Je="En la Unidad 1, exploramos el flujo de trabajo general de un agente. Una vez que el usuario ha dado algunas herramientas al agente y le ha proporcionado una consulta, el modelo pasará por el ciclo:",O,j,je="<li><em>Pensar</em> : ¿Qué acción(es) necesito tomar para cumplir el objetivo?</li> <li><em>Actuar</em> : Formatear la acción con el parámetro correcto y detener la generación.</li> <li><em>Observar</em> : Obtener el resultado de la ejecución.</li>",Z,y,ye="En una conversación “típica” con un modelo a través de una API, la conversación alternará entre mensajes del usuario y del asistente de esta manera:",D,I,W,U,Ie="¡La llamada a funciones trae <strong>nuevos roles a la conversación</strong>!",Y,w,Ue="<li>Un nuevo rol para una <strong>Acción</strong></li> <li>Un nuevo rol para una <strong>Observación</strong></li>",X,A,we='Si tomamos la <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">API de Mistral</a> como ejemplo, se vería así:',K,q,ee,f,Ae="<p>… ¿Pero dijiste que hay un nuevo rol para las llamadas a funciones?</p>",le,g,qe="<strong>Sí y no</strong>, en este caso y en muchas otras APIs, el modelo formatea la acción a tomar como un mensaje de “asistente”. La plantilla de chat luego representará esto como <strong>tokens especiales</strong> para la llamada a funciones.",te,C,fe="<li><code>[AVAILABLE_TOOLS]</code> – Inicio de la lista de herramientas disponibles</li> <li><code>[/AVAILABLE_TOOLS]</code> – Fin de la lista de herramientas disponibles</li> <li><code>[TOOL_CALLS]</code> – Hacer una llamada a una herramienta (es decir, realizar una “Acción”)</li> <li><code>[TOOL_RESULTS]</code> – “Observar” el resultado de la acción</li> <li><code>[/TOOL_RESULTS]</code> – Fin de la observación (es decir, el modelo puede decodificar nuevamente)</li>",ae,h,ge='Hablaremos nuevamente sobre la llamada a funciones en este curso, pero si quieres profundizar puedes consultar <a href="https://docs.mistral.ai/capabilities/function_calling/" rel="nofollow">esta excelente sección de documentación</a>.',ne,se,oe,v,Ce='Ahora que hemos aprendido qué es la llamada a funciones y cómo funciona, vamos a <strong>agregar algunas capacidades de llamada a funciones a un modelo que aún no tiene esas capacidades</strong>: <a href="https://huggingface.co/google/gemma-2-2b-it" rel="nofollow">google/gemma-2-2b-it</a>, agregando algunos nuevos tokens especiales al modelo.',ie,b,he="Para poder hacer eso, <strong>primero necesitamos entender el fine-tuning y LoRA</strong>.",re,E,ue,B,Me;return M=new Le({props:{title:"¿Qué es la Llamada a Funciones?",local:"qué-es-la-llamada-a-funciones",headingTag:"h1"}}),d=new Le({props:{title:"¿Cómo “aprende” el modelo a realizar una acción?",local:"cómo-aprende-el-modelo-a-realizar-una-acción",headingTag:"h2"}}),I=new Ee({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyTmVjZXNpdG8lMjBheXVkYSUyMGNvbiUyMG1pJTIwcGVkaWRvJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIycm9sZSUyMiUzQSUyMCUyMmFzc2lzdGFudCUyMiUyQyUyMCUyMmNvbnRlbnQlMjIlM0ElMjAlMjJFc3RhciVDMyVBOSUyMGVuY2FudGFkbyUyMGRlJTIwYXl1ZGFyLiUyMCVDMiVCRlBvZHIlQzMlQURhcyUyMHByb3BvcmNpb25hciUyMHR1JTIwbiVDMyVCQW1lcm8lMjBkZSUyMHBlZGlkbyUzRiUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnJvbGUlMjIlM0ElMjAlMjJ1c2VyJTIyJTJDJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMkVzJTIwT1JERVItMTIzJTIyJTdEJTJDJTBBJTVE",highlighted:`conversation = [
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Necesito ayuda con mi pedido&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Estaré encantado de ayudar. ¿Podrías proporcionar tu número de pedido?&quot;</span>},
    {<span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>, <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Es ORDER-123&quot;</span>},
]`,wrap:!1}}),q=new Ee({props:{code:"Y29udmVyc2F0aW9uJTIwJTNEJTIwJTVCJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnVzZXIlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJUMyJUJGQ3UlQzMlQTFsJTIwZXMlMjBlbCUyMGVzdGFkbyUyMGRlJTIwbWklMjB0cmFuc2FjY2klQzMlQjNuJTIwVDEwMDElM0YlMjIlMEElMjAlMjAlMjAlMjAlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJyb2xlJTIyJTNBJTIwJTIyYXNzaXN0YW50JTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyY29udGVudCUyMiUzQSUyMCUyMiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMmZ1bmN0aW9uX2NhbGwlMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJhcmd1bWVudHMlMjIlM0ElMjAlMjIlN0IlNUMlMjJ0cmFuc2FjdGlvbl9pZCU1QyUyMiUzQSUyMCU1QyUyMlQxMDAxJTVDJTIyJTdEJTIyJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTdEJTBBJTIwJTIwJTIwJTIwJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycm9sZSUyMiUzQSUyMCUyMnRvb2wlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJuYW1lJTIyJTNBJTIwJTIycmV0cmlldmVfcGF5bWVudF9zdGF0dXMlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyJTdCJTVDJTIyc3RhdHVzJTVDJTIyJTNBJTIwJTVDJTIyUGFpZCU1QyUyMiU3RCUyMiUwQSUyMCUyMCUyMCUyMCU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMnJvbGUlMjIlM0ElMjAlMjJhc3Npc3RhbnQlMjIlMkMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJjb250ZW50JTIyJTNBJTIwJTIyVHUlMjB0cmFuc2FjY2klQzMlQjNuJTIwVDEwMDElMjBoYSUyMHNpZG8lMjBwYWdhZGElMjBleGl0b3NhbWVudGUuJTIyJTBBJTIwJTIwJTIwJTIwJTdEJTBBJTVE",highlighted:`conversation = [
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;user&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;¿Cuál es el estado de mi transacción T1001?&quot;</span>
    },
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;&quot;</span>,
        <span class="hljs-string">&quot;function_call&quot;</span>: {
            <span class="hljs-string">&quot;name&quot;</span>: <span class="hljs-string">&quot;retrieve_payment_status&quot;</span>,
            <span class="hljs-string">&quot;arguments&quot;</span>: <span class="hljs-string">&quot;{\\&quot;transaction_id\\&quot;: \\&quot;T1001\\&quot;}&quot;</span>
        }
    },
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;tool&quot;</span>,
        <span class="hljs-string">&quot;name&quot;</span>: <span class="hljs-string">&quot;retrieve_payment_status&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;{\\&quot;status\\&quot;: \\&quot;Paid\\&quot;}&quot;</span>
    },
    {
        <span class="hljs-string">&quot;role&quot;</span>: <span class="hljs-string">&quot;assistant&quot;</span>,
        <span class="hljs-string">&quot;content&quot;</span>: <span class="hljs-string">&quot;Tu transacción T1001 ha sido pagada exitosamente.&quot;</span>
    }
]`,wrap:!1}}),E=new xe({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/bonus-unit1/what-is-function-calling.mdx"}}),{c(){u=o("meta"),x=n(),L=o("p"),S=n(),_(M.$$.fragment),G=n(),c=o("p"),c.innerHTML=pe,k=n(),p=o("p"),p.innerHTML=Te,F=n(),T=o("p"),T.innerHTML=me,N=n(),m=o("p"),m.innerHTML=de,P=n(),_(d.$$.fragment),R=n(),J=o("p"),J.textContent=Je,O=n(),j=o("ol"),j.innerHTML=je,Z=n(),y=o("p"),y.textContent=ye,D=n(),_(I.$$.fragment),W=n(),U=o("p"),U.innerHTML=Ie,Y=n(),w=o("ol"),w.innerHTML=Ue,X=n(),A=o("p"),A.innerHTML=we,K=n(),_(q.$$.fragment),ee=n(),f=o("blockquote"),f.innerHTML=Ae,le=n(),g=o("p"),g.innerHTML=qe,te=n(),C=o("ul"),C.innerHTML=fe,ae=n(),h=o("p"),h.innerHTML=ge,ne=n(),se=o("hr"),oe=n(),v=o("p"),v.innerHTML=Ce,ie=n(),b=o("p"),b.innerHTML=he,re=n(),_(E.$$.fragment),ue=n(),B=o("p"),this.h()},l(e){const l=Qe("svelte-u9bgzb",document.head);u=i(l,"META",{name:!0,content:!0}),l.forEach(t),x=s(e),L=i(e,"P",{}),ve(L).forEach(t),S=s(e),H(M.$$.fragment,e),G=s(e),c=i(e,"P",{"data-svelte-h":!0}),r(c)!=="svelte-ol7paa"&&(c.innerHTML=pe),k=s(e),p=i(e,"P",{"data-svelte-h":!0}),r(p)!=="svelte-2rrvcq"&&(p.innerHTML=Te),F=s(e),T=i(e,"P",{"data-svelte-h":!0}),r(T)!=="svelte-1d6tksw"&&(T.innerHTML=me),N=s(e),m=i(e,"P",{"data-svelte-h":!0}),r(m)!=="svelte-6ihpy0"&&(m.innerHTML=de),P=s(e),H(d.$$.fragment,e),R=s(e),J=i(e,"P",{"data-svelte-h":!0}),r(J)!=="svelte-4tpyzu"&&(J.textContent=Je),O=s(e),j=i(e,"OL",{"data-svelte-h":!0}),r(j)!=="svelte-7rcvom"&&(j.innerHTML=je),Z=s(e),y=i(e,"P",{"data-svelte-h":!0}),r(y)!=="svelte-1dsbtm8"&&(y.textContent=ye),D=s(e),H(I.$$.fragment,e),W=s(e),U=i(e,"P",{"data-svelte-h":!0}),r(U)!=="svelte-ybh22i"&&(U.innerHTML=Ie),Y=s(e),w=i(e,"OL",{"data-svelte-h":!0}),r(w)!=="svelte-d4i41o"&&(w.innerHTML=Ue),X=s(e),A=i(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-ktn7jr"&&(A.innerHTML=we),K=s(e),H(q.$$.fragment,e),ee=s(e),f=i(e,"BLOCKQUOTE",{"data-svelte-h":!0}),r(f)!=="svelte-av18db"&&(f.innerHTML=Ae),le=s(e),g=i(e,"P",{"data-svelte-h":!0}),r(g)!=="svelte-1x0v0tv"&&(g.innerHTML=qe),te=s(e),C=i(e,"UL",{"data-svelte-h":!0}),r(C)!=="svelte-1rq7k46"&&(C.innerHTML=fe),ae=s(e),h=i(e,"P",{"data-svelte-h":!0}),r(h)!=="svelte-1kbal2p"&&(h.innerHTML=ge),ne=s(e),se=i(e,"HR",{}),oe=s(e),v=i(e,"P",{"data-svelte-h":!0}),r(v)!=="svelte-1qg3342"&&(v.innerHTML=Ce),ie=s(e),b=i(e,"P",{"data-svelte-h":!0}),r(b)!=="svelte-eo5mz"&&(b.innerHTML=he),re=s(e),H(E.$$.fragment,e),ue=s(e),B=i(e,"P",{}),ve(B).forEach(t),this.h()},h(){be(u,"name","hf:doc:metadata"),be(u,"content",Ge)},m(e,l){ze(document.head,u),a(e,x,l),a(e,L,l),a(e,S,l),V(M,e,l),a(e,G,l),a(e,c,l),a(e,k,l),a(e,p,l),a(e,F,l),a(e,T,l),a(e,N,l),a(e,m,l),a(e,P,l),V(d,e,l),a(e,R,l),a(e,J,l),a(e,O,l),a(e,j,l),a(e,Z,l),a(e,y,l),a(e,D,l),V(I,e,l),a(e,W,l),a(e,U,l),a(e,Y,l),a(e,w,l),a(e,X,l),a(e,A,l),a(e,K,l),V(q,e,l),a(e,ee,l),a(e,f,l),a(e,le,l),a(e,g,l),a(e,te,l),a(e,C,l),a(e,ae,l),a(e,h,l),a(e,ne,l),a(e,se,l),a(e,oe,l),a(e,v,l),a(e,ie,l),a(e,b,l),a(e,re,l),V(E,e,l),a(e,ue,l),a(e,B,l),Me=!0},p:_e,i(e){Me||($(M.$$.fragment,e),$(d.$$.fragment,e),$(I.$$.fragment,e),$(q.$$.fragment,e),$(E.$$.fragment,e),Me=!0)},o(e){Q(M.$$.fragment,e),Q(d.$$.fragment,e),Q(I.$$.fragment,e),Q(q.$$.fragment,e),Q(E.$$.fragment,e),Me=!1},d(e){e&&(t(x),t(L),t(S),t(G),t(c),t(k),t(p),t(F),t(T),t(N),t(m),t(P),t(R),t(J),t(O),t(j),t(Z),t(y),t(D),t(W),t(U),t(Y),t(w),t(X),t(A),t(K),t(ee),t(f),t(le),t(g),t(te),t(C),t(ae),t(h),t(ne),t(se),t(oe),t(v),t(ie),t(b),t(re),t(ue),t(B)),t(u),z(M,e),z(d,e),z(I,e),z(q,e),z(E,e)}}}const Ge='{"title":"¿Qué es la Llamada a Funciones?","local":"qué-es-la-llamada-a-funciones","sections":[{"title":"¿Cómo “aprende” el modelo a realizar una acción?","local":"cómo-aprende-el-modelo-a-realizar-una-acción","sections":[],"depth":2}],"depth":1}';function ke(ce){return He(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Ze extends Ve{constructor(u){super(),$e(this,u,ke,Se,Be,{})}}export{Ze as component};
