import{s as rn,n as cn,o as un}from"../chunks/scheduler.505acc25.js";import{S as pn,i as mn,e as o,s,c,h as Mn,a as i,d as a,b as l,f as on,g as u,j as r,k as D,l as dn,m as t,n as p,t as m,o as M,p as d}from"../chunks/index.fbb49fb4.js";import{C as yn}from"../chunks/CopyLLMTxtMenu.38c593c4.js";import{C as ve}from"../chunks/CodeBlock.2ead06c8.js";import{H as Ee}from"../chunks/Heading.511e0027.js";import{E as bn}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.9ca82795.js";function Un(ze){let y,K,H,O,j,ee,T,ne,w,ke="¿Recuerdas a Alfred, nuestro agente mayordomo útil de antes? ¡Bueno, está a punto de recibir una mejora! Ahora que entendemos las herramientas disponibles en LlamaIndex, podemos darle a Alfred nuevas capacidades para servirnos mejor.",ae,g,qe="Pero antes de continuar, recordemos qué hace funcionar a un agente como Alfred. En la Unidad 1, aprendimos que:",te,f,Ae="<p>Un Agente es un sistema que aprovecha un modelo de IA para interactuar con su entorno y lograr un objetivo definido por el usuario. Combina razonamiento, planificación y ejecución de acciones (a menudo a través de herramientas externas) para cumplir tareas.</p>",se,h,_e="LlamaIndex soporta <strong>tres tipos principales de agentes de razonamiento</strong>:",le,I,Re='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agents.png" alt="Agents"/>',oe,B,Se="<li><code>Agentes de Llamada de Funciones</code> - Estos trabajan con modelos de IA que pueden llamar funciones específicas.</li> <li><code>Agentes ReAct</code> - Estos pueden trabajar con cualquier IA que tenga un endpoint de chat o texto y manejar tareas de razonamiento complejas.</li> <li><code>Agentes Personalizados Avanzados</code> - Estos usan métodos más complejos para manejar tareas y flujos de trabajo.</li>",ie,b,Ye='<p>FEncuentra más información sobre agentes avanzados en <a href="https://github.com/run-llama/llama_index/blob/main/llama-index-core/llama_index/core/agent/workflow/base_agent.py">BaseWorkflowAgent</a></p>',re,C,ce,U,Xe='<p>Puedes seguir el código en <a href="https://huggingface.co/agents-course/notebooks/blob/main/unit2/llama-index/agents.ipynb" target="_blank">este notebook</a> que puedes ejecutar usando Google Colab.</p>',ue,W,Fe="Para crear un agente, comenzamos proporcionándole un <strong>conjunto de funciones/herramientas que definen sus capacidades</strong>. Veamos cómo crear un agente con algunas herramientas básicas. Al momento de escribir esto, el agente usará automáticamente la API de llamada de funciones (si está disponible), o un bucle de agente ReAct estándar.",pe,G,Le="Los LLMs que soportan una API de herramientas/funciones son relativamente nuevos, pero proporcionan una forma poderosa de llamar herramientas al evitar indicaciones específicas y permitir que el LLM cree llamadas a herramientas basadas en esquemas proporcionados.",me,x,$e="Los agentes ReAct también son buenos en tareas de razonamiento complejas y pueden trabajar con cualquier LLM que tenga capacidades de chat o completación de texto. Son más verbosos y muestran el razonamiento detrás de ciertas acciones que toman.",Me,Z,de,Q,Ne="<strong>Los agentes son sin estado por defecto</strong>, recordar interacciones pasadas es opcional usando un objeto <code>Context</code>. Esto puede ser útil si quieres usar un agente que necesita recordar interacciones previas, como un chatbot que mantiene el contexto a través de múltiples mensajes o un administrador de tareas que necesita rastrear el progreso a lo largo del tiempo.",ye,V,be,v,He='Notarás que los agentes en <code>LlamaIndex</code> son asíncronos porque usan el operador await de Python. Si eres nuevo en el código asíncrono en Python, o necesitas un repaso, tienen una excelente <a href="https://docs.llamaindex.ai/en/stable/getting_started/async_python/" rel="nofollow">guía de async</a>.',Ue,E,Pe="Ahora que tenemos los conceptos básicos, echemos un vistazo a como podemos usar herramientas más complejas en nuestros agentes.",Je,z,je,k,De="<strong>Agentic RAG es una forma poderosa de usar agentes para responder preguntas sobre tus datos</strong>. Podemos pasar varias herramientas a Alfred para ayudarlo a responder preguntas. Sin embargo, en lugar de responder la pregunta sobre los documentos automáticamente, Alfred puede decidir usar cualquier otra herramienta o flujo para responder la pregunta.",Te,q,Ke='<img src="https://huggingface.co/datasets/agents-course/course-images/resolve/main/en/unit2/llama-index/agentic-rag.png" alt="Agentic RAG"/>',we,A,Oe=`Es fácil <strong>envolver <code>QueryEngine</code> como una herramienta</strong> para un agente.
Al hacerlo, necesitamos <strong>definir un nombre y una descripción</strong>. El LLM usará esta información para usar la herramienta correctamente.
Veamos cómo cargar un <code>QueryEngineTool</code> usando el QueryEngine que creamos en la <a href="02_components">sección de componentes</a>.`,ge,_,en=`It is easy to <strong>wrap <code>QueryEngine</code> as a tool</strong> for an agent.
When doing so, we need to <strong>define a name and description</strong>. The LLM will use this information to correctly use the tool.
Let’s see how to load in a <code>QueryEngineTool</code> using the <code>QueryEngine</code> we created in the <a href="02_components">component section</a>.`,fe,R,he,S,Ie,Y,nn="La clase <code>AgentWorkflow</code> también soporta directamente sistemas multi-agente. Al darle a cada agente un nombre y una descripción, el sistema mantiene un único hablante activo, con cada agente teniendo la capacidad de pasar el control a otro agente.",Be,X,an="Al reducir el alcance de cada agente, podemos ayudar a aumentar su precisión general al responder a los mensajes del usuario.",Ce,F,tn="Los agentes en LlamaIndex también pueden usarse directamente como herramientas para otros agentes, para escenarios más complejos y personalizados.",We,L,Ge,J,sn='<p>¿No has aprendido lo suficiente todavía? Hay mucho más por descubrir sobre agentes y herramientas en LlamaIndex dentro de la  <a href="https://docs.llamaindex.ai/en/stable/examples/agent/agent_workflow_basic/">Introducción Básica a AgentWorkflow</a> o la <a href="https://docs.llamaindex.ai/en/stable/understanding/agent/">Guía de Aprendizaje de Agentes</a>, ¡donde puedes leer más sobre streaming, serialización de contexto y humano-en-el-bucle!</p>',xe,$,ln="Ahora que entendemos los conceptos básicos de agentes y herramientas en LlamaIndex, ¡veamos cómo podemos usar LlamaIndex para <strong>crear flujos de trabajo configurables y manejables!</strong>",Ze,N,Qe,P,Ve;return j=new yn({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),T=new Ee({props:{title:"Usando Agentes en LlamaIndex",local:"usando-agentes-en-llamaindex",headingTag:"h1"}}),C=new Ee({props:{title:"Inicializando Agentes",local:"inicializando-agentes",headingTag:"h2"}}),Z=new ve({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmxsbXMuaHVnZ2luZ2ZhY2VfYXBpJTIwaW1wb3J0JTIwSHVnZ2luZ0ZhY2VJbmZlcmVuY2VBUEklMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS5hZ2VudC53b3JrZmxvdyUyMGltcG9ydCUyMEFnZW50V29ya2Zsb3clMEFmcm9tJTIwbGxhbWFfaW5kZXguY29yZS50b29scyUyMGltcG9ydCUyMEZ1bmN0aW9uVG9vbCUwQSUwQSUyMyUyMGRlZmluZSUyMHVuYSUyMGhlcnJhbWllbnRhJTIwZGUlMjBtdWVzdHJhJTIwLS0lMjAlQzIlQTFsYXMlMjBhbm90YWNpb25lcyUyMGRlJTIwdGlwbyUyQyUyMG5vbWJyZXMlMjBkZSUyMGZ1bmNpb25lcyUyMHklMjBkb2NzdHJpbmdzJTIwZXN0JUMzJUExbiUyMGluY2x1aWRvcyUyMGVuJTIwbG9zJTIwZXNxdWVtYXMlMjBhbmFsaXphZG9zISUwQWRlZiUyMG11bHRpcGx5KGElM0ElMjBpbnQlMkMlMjBiJTNBJTIwaW50KSUyMC0lM0UlMjBpbnQlM0ElMEElMjAlMjAlMjAlMjAlMjIlMjIlMjJNdWx0aXBsaWNhJTIwZG9zJTIwZW50ZXJvcyUyMHklMjBkZXZ1ZWx2ZSUyMGVsJTIwZW50ZXJvJTIwcmVzdWx0YW50ZSUyMiUyMiUyMiUwQSUyMCUyMCUyMCUyMHJldHVybiUyMGElMjAqJTIwYiUwQSUwQSUyMyUyMGluaWNpYWxpemElMjBlbCUyMGxsbSUwQWxsbSUyMCUzRCUyMEh1Z2dpbmdGYWNlSW5mZXJlbmNlQVBJKG1vZGVsX25hbWUlM0QlMjJRd2VuJTJGUXdlbjIuNS1Db2Rlci0zMkItSW5zdHJ1Y3QlMjIpJTBBJTBBJTIzJTIwaW5pY2lhbGl6YSUyMGVsJTIwYWdlbnRlJTBBYWdlbnQlMjAlM0QlMjBBZ2VudFdvcmtmbG93LmZyb21fdG9vbHNfb3JfZnVuY3Rpb25zKCUwQSUyMCUyMCUyMCUyMCU1QkZ1bmN0aW9uVG9vbC5mcm9tX2RlZmF1bHRzKG11bHRpcGx5KSU1RCUyQyUwQSUyMCUyMCUyMCUyMGxsbSUzRGxsbSUwQSk=",highlighted:`<span class="hljs-keyword">from</span> llama_index.llms.huggingface_api <span class="hljs-keyword">import</span> HuggingFaceInferenceAPI
<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.core.tools <span class="hljs-keyword">import</span> FunctionTool

<span class="hljs-comment"># define una herramienta de muestra -- ¡las anotaciones de tipo, nombres de funciones y docstrings están incluidos en los esquemas analizados!</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">multiply</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Multiplica dos enteros y devuelve el entero resultante&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a * b

<span class="hljs-comment"># inicializa el llm</span>
llm = HuggingFaceInferenceAPI(model_name=<span class="hljs-string">&quot;Qwen/Qwen2.5-Coder-32B-Instruct&quot;</span>)

<span class="hljs-comment"># inicializa el agente</span>
agent = AgentWorkflow.from_tools_or_functions(
    [FunctionTool.from_defaults(multiply)],
    llm=llm
)`,wrap:!1}}),V=new ve({props:{code:"JTIzJTIwc2luJTIwZXN0YWRvJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1biglMjIlQzIlQkZDdSVDMyVBMW50byUyMGVzJTIwMiUyMHBvciUyMDIlM0YlMjIpJTBBJTBBJTIzJTIwcmVjb3JkYW5kbyUyMGVzdGFkbyUwQWZyb20lMjBsbGFtYV9pbmRleC5jb3JlLndvcmtmbG93JTIwaW1wb3J0JTIwQ29udGV4dCUwQSUwQWN0eCUyMCUzRCUyMENvbnRleHQoYWdlbnQpJTBBJTBBcmVzcG9uc2UlMjAlM0QlMjBhd2FpdCUyMGFnZW50LnJ1biglMjJNaSUyMG5vbWJyZSUyMGVzJTIwQm9iLiUyMiUyQyUyMGN0eCUzRGN0eCklMEFyZXNwb25zZSUyMCUzRCUyMGF3YWl0JTIwYWdlbnQucnVuKCUyMiVDMiVCRkN1JUMzJUExbCUyMGVyYSUyMG1pJTIwbm9tYnJlJTIwZGUlMjBudWV2byUzRiUyMiUyQyUyMGN0eCUzRGN0eCk=",highlighted:`<span class="hljs-comment"># sin estado</span>
response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;¿Cuánto es 2 por 2?&quot;</span>)

<span class="hljs-comment"># recordando estado</span>
<span class="hljs-keyword">from</span> llama_index.core.workflow <span class="hljs-keyword">import</span> Context

ctx = Context(agent)

response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;Mi nombre es Bob.&quot;</span>, ctx=ctx)
response = <span class="hljs-keyword">await</span> agent.run(<span class="hljs-string">&quot;¿Cuál era mi nombre de nuevo?&quot;</span>, ctx=ctx)`,wrap:!1}}),z=new Ee({props:{title:"Creando Agentes RAG con QueryEngineTools",local:"creando-agentes-rag-con-queryenginetools",headingTag:"h2"}}),R=new ve({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUudG9vbHMlMjBpbXBvcnQlMjBRdWVyeUVuZ2luZVRvb2wlMEElMEFxdWVyeV9lbmdpbmUlMjAlM0QlMjBpbmRleC5hc19xdWVyeV9lbmdpbmUobGxtJTNEbGxtJTJDJTIwc2ltaWxhcml0eV90b3BfayUzRDMpJTIwJTIzJTIwY29tbyUyMHNlJTIwbW9zdHIlQzMlQjMlMjBlbiUyMGxhJTIwc2VjY2klQzMlQjNuJTIwYW50ZXJpb3IlMEElMEFxdWVyeV9lbmdpbmVfdG9vbCUyMCUzRCUyMFF1ZXJ5RW5naW5lVG9vbC5mcm9tX2RlZmF1bHRzKCUwQSUyMCUyMCUyMCUyMHF1ZXJ5X2VuZ2luZSUzRHF1ZXJ5X2VuZ2luZSUyQyUwQSUyMCUyMCUyMCUyMG5hbWUlM0QlMjJub21icmUlMjIlMkMlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUzRCUyMnVuYSUyMGRlc2NyaXBjaSVDMyVCM24lMjBlc3BlYyVDMyVBRGZpY2ElMjIlMkMlMEElMjAlMjAlMjAlMjByZXR1cm5fZGlyZWN0JTNERmFsc2UlMkMlMEEpJTBBcXVlcnlfZW5naW5lX2FnZW50JTIwJTNEJTIwQWdlbnRXb3JrZmxvdy5mcm9tX3Rvb2xzX29yX2Z1bmN0aW9ucyglMEElMjAlMjAlMjAlMjAlNUJxdWVyeV9lbmdpbmVfdG9vbCU1RCUyQyUwQSUyMCUyMCUyMCUyMGxsbSUzRGxsbSUyQyUwQSUyMCUyMCUyMCUyMHN5c3RlbV9wcm9tcHQlM0QlMjJFcmVzJTIwdW4lMjBhc2lzdGVudGUlMjAlQzMlQkF0aWwlMjBxdWUlMjB0aWVuZSUyMGFjY2VzbyUyMGElMjB1bmElMjBiYXNlJTIwZGUlMjBkYXRvcyUyMHF1ZSUyMGNvbnRpZW5lJTIwZGVzY3JpcGNpb25lcyUyMGRlJTIwcGVyc29uYXMuJTIwJTIyJTBBKQ==",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.tools <span class="hljs-keyword">import</span> QueryEngineTool

query_engine = index.as_query_engine(llm=llm, similarity_top_k=<span class="hljs-number">3</span>) <span class="hljs-comment"># como se mostró en la sección anterior</span>

query_engine_tool = QueryEngineTool.from_defaults(
    query_engine=query_engine,
    name=<span class="hljs-string">&quot;nombre&quot;</span>,
    description=<span class="hljs-string">&quot;una descripción específica&quot;</span>,
    return_direct=<span class="hljs-literal">False</span>,
)
query_engine_agent = AgentWorkflow.from_tools_or_functions(
    [query_engine_tool],
    llm=llm,
    system_prompt=<span class="hljs-string">&quot;Eres un asistente útil que tiene acceso a una base de datos que contiene descripciones de personas. &quot;</span>
)`,wrap:!1}}),S=new Ee({props:{title:"Creando Sistemas Multi-agente",local:"creando-sistemas-multi-agente",headingTag:"h2"}}),L=new ve({props:{code:"ZnJvbSUyMGxsYW1hX2luZGV4LmNvcmUuYWdlbnQud29ya2Zsb3clMjBpbXBvcnQlMjAoJTBBJTIwJTIwJTIwJTIwQWdlbnRXb3JrZmxvdyUyQyUwQSUyMCUyMCUyMCUyMEZ1bmN0aW9uQWdlbnQlMkMlMEElMjAlMjAlMjAlMjBSZUFjdEFnZW50JTJDJTBBKSUwQSUwQSUyMyUyMERlZmluZSUyMGFsZ3VuYXMlMjBoZXJyYW1pZW50YXMlMEFkZWYlMjBhZGQoYSUzQSUyMGludCUyQyUyMGIlM0ElMjBpbnQpJTIwLSUzRSUyMGludCUzQSUwQSUyMCUyMCUyMCUyMCUyMiUyMiUyMlN1bWElMjBkb3MlMjBuJUMzJUJBbWVyb3MuJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYSUyMCUyQiUyMGIlMEElMEElMEFkZWYlMjBzdWJ0cmFjdChhJTNBJTIwaW50JTJDJTIwYiUzQSUyMGludCklMjAtJTNFJTIwaW50JTNBJTBBJTIwJTIwJTIwJTIwJTIyJTIyJTIyUmVzdGElMjBkb3MlMjBuJUMzJUJBbWVyb3MuJTIyJTIyJTIyJTBBJTIwJTIwJTIwJTIwcmV0dXJuJTIwYSUyMC0lMjBiJTBBJTBBJTBBJTIzJTIwQ3JlYSUyMGNvbmZpZ3VyYWNpb25lcyUyMGRlJTIwYWdlbnRlcyUwQSUyMyUyME5PVEElM0ElMjBwb2RlbW9zJTIwdXNhciUyMEZ1bmN0aW9uQWdlbnQlMjBvJTIwUmVBY3RBZ2VudCUyMGFxdSVDMyVBRC4lMEElMjMlMjBGdW5jdGlvbkFnZW50JTIwZnVuY2lvbmElMjBwYXJhJTIwTExNcyUyMGNvbiUyMHVuYSUyMEFQSSUyMGRlJTIwbGxhbWFkYSUyMGRlJTIwZnVuY2lvbmVzLiUwQSUyMyUyMFJlQWN0QWdlbnQlMjBmdW5jaW9uYSUyMHBhcmElMjBjdWFscXVpZXIlMjBMTE0uJTBBY2FsY3VsYXRvcl9hZ2VudCUyMCUzRCUyMFJlQWN0QWdlbnQoJTBBJTIwJTIwJTIwJTIwbmFtZSUzRCUyMmNhbGN1bGFkb3JhJTIyJTJDJTBBJTIwJTIwJTIwJTIwZGVzY3JpcHRpb24lM0QlMjJSZWFsaXphJTIwb3BlcmFjaW9uZXMlMjBhcml0bSVDMyVBOXRpY2FzJTIwYiVDMyVBMXNpY2FzJTIyJTJDJTBBJTIwJTIwJTIwJTIwc3lzdGVtX3Byb21wdCUzRCUyMkVyZXMlMjB1biUyMGFzaXN0ZW50ZSUyMGRlJTIwY2FsY3VsYWRvcmEuJTIwVXNhJTIwdHVzJTIwaGVycmFtaWVudGFzJTIwcGFyYSUyMGN1YWxxdWllciUyMG9wZXJhY2klQzMlQjNuJTIwbWF0ZW0lQzMlQTF0aWNhLiUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvb2xzJTNEJTVCYWRkJTJDJTIwc3VidHJhY3QlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMkMlMEEpJTBBJTBBcXVlcnlfYWdlbnQlMjAlM0QlMjBSZUFjdEFnZW50KCUwQSUyMCUyMCUyMCUyMG5hbWUlM0QlMjJiJUMzJUJBc3F1ZWRhX2RlX2luZm9ybWFjaSVDMyVCM24lMjIlMkMlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUzRCUyMkJ1c2NhJTIwaW5mb3JtYWNpJUMzJUIzbiUyMHNvYnJlJTIwWFlaJTIyJTJDJTBBJTIwJTIwJTIwJTIwc3lzdGVtX3Byb21wdCUzRCUyMlVzYSUyMHR1JTIwaGVycmFtaWVudGElMjBwYXJhJTIwY29uc3VsdGFyJTIwdW4lMjBzaXN0ZW1hJTIwUkFHJTIweSUyMHJlc3BvbmRlciUyMGluZm9ybWFjaSVDMyVCM24lMjBzb2JyZSUyMFhZWiUyMiUyQyUwQSUyMCUyMCUyMCUyMHRvb2xzJTNEJTVCcXVlcnlfZW5naW5lX3Rvb2wlNUQlMkMlMEElMjAlMjAlMjAlMjBsbG0lM0RsbG0lMEEpJTBBJTBBJTIzJTIwQ3JlYSUyMHklMjBlamVjdXRhJTIwZWwlMjBmbHVqbyUyMGRlJTIwdHJhYmFqbyUwQWFnZW50JTIwJTNEJTIwQWdlbnRXb3JrZmxvdyglMEElMjAlMjAlMjAlMjBhZ2VudHMlM0QlNUJjYWxjdWxhdG9yX2FnZW50JTJDJTIwcXVlcnlfYWdlbnQlNUQlMkMlMjByb290X2FnZW50JTNEJTIyY2FsY3VsYWRvcmElMjIlMEEpJTBBJTBBJTIzJTIwRWplY3V0YSUyMGVsJTIwc2lzdGVtYSUwQXJlc3BvbnNlJTIwJTNEJTIwYXdhaXQlMjBhZ2VudC5ydW4odXNlcl9tc2clM0QlMjIlQzIlQkZQdWVkZXMlMjBzdW1hciUyMDUlMjB5JTIwMyUzRiUyMik=",highlighted:`<span class="hljs-keyword">from</span> llama_index.core.agent.workflow <span class="hljs-keyword">import</span> (
    AgentWorkflow,
    FunctionAgent,
    ReActAgent,
)

<span class="hljs-comment"># Define algunas herramientas</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">add</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Suma dos números.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a + b


<span class="hljs-keyword">def</span> <span class="hljs-title function_">subtract</span>(<span class="hljs-params">a: <span class="hljs-built_in">int</span>, b: <span class="hljs-built_in">int</span></span>) -&gt; <span class="hljs-built_in">int</span>:
    <span class="hljs-string">&quot;&quot;&quot;Resta dos números.&quot;&quot;&quot;</span>
    <span class="hljs-keyword">return</span> a - b


<span class="hljs-comment"># Crea configuraciones de agentes</span>
<span class="hljs-comment"># NOTA: podemos usar FunctionAgent o ReActAgent aquí.</span>
<span class="hljs-comment"># FunctionAgent funciona para LLMs con una API de llamada de funciones.</span>
<span class="hljs-comment"># ReActAgent funciona para cualquier LLM.</span>
calculator_agent = ReActAgent(
    name=<span class="hljs-string">&quot;calculadora&quot;</span>,
    description=<span class="hljs-string">&quot;Realiza operaciones aritméticas básicas&quot;</span>,
    system_prompt=<span class="hljs-string">&quot;Eres un asistente de calculadora. Usa tus herramientas para cualquier operación matemática.&quot;</span>,
    tools=[add, subtract],
    llm=llm,
)

query_agent = ReActAgent(
    name=<span class="hljs-string">&quot;búsqueda_de_información&quot;</span>,
    description=<span class="hljs-string">&quot;Busca información sobre XYZ&quot;</span>,
    system_prompt=<span class="hljs-string">&quot;Usa tu herramienta para consultar un sistema RAG y responder información sobre XYZ&quot;</span>,
    tools=[query_engine_tool],
    llm=llm
)

<span class="hljs-comment"># Crea y ejecuta el flujo de trabajo</span>
agent = AgentWorkflow(
    agents=[calculator_agent, query_agent], root_agent=<span class="hljs-string">&quot;calculadora&quot;</span>
)

<span class="hljs-comment"># Ejecuta el sistema</span>
response = <span class="hljs-keyword">await</span> agent.run(user_msg=<span class="hljs-string">&quot;¿Puedes sumar 5 y 3?&quot;</span>)`,wrap:!1}}),N=new bn({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/unit2/llama-index/agents.mdx"}}),{c(){y=o("meta"),K=s(),H=o("p"),O=s(),c(j.$$.fragment),ee=s(),c(T.$$.fragment),ne=s(),w=o("p"),w.textContent=ke,ae=s(),g=o("p"),g.textContent=qe,te=s(),f=o("blockquote"),f.innerHTML=Ae,se=s(),h=o("p"),h.innerHTML=_e,le=s(),I=o("p"),I.innerHTML=Re,oe=s(),B=o("ol"),B.innerHTML=Se,ie=s(),b=o("blockquote"),b.innerHTML=Ye,re=s(),c(C.$$.fragment),ce=s(),U=o("blockquote"),U.innerHTML=Xe,ue=s(),W=o("p"),W.innerHTML=Fe,pe=s(),G=o("p"),G.textContent=Le,me=s(),x=o("p"),x.textContent=$e,Me=s(),c(Z.$$.fragment),de=s(),Q=o("p"),Q.innerHTML=Ne,ye=s(),c(V.$$.fragment),be=s(),v=o("p"),v.innerHTML=He,Ue=s(),E=o("p"),E.textContent=Pe,Je=s(),c(z.$$.fragment),je=s(),k=o("p"),k.innerHTML=De,Te=s(),q=o("p"),q.innerHTML=Ke,we=s(),A=o("p"),A.innerHTML=Oe,ge=s(),_=o("p"),_.innerHTML=en,fe=s(),c(R.$$.fragment),he=s(),c(S.$$.fragment),Ie=s(),Y=o("p"),Y.innerHTML=nn,Be=s(),X=o("p"),X.textContent=an,Ce=s(),F=o("p"),F.textContent=tn,We=s(),c(L.$$.fragment),Ge=s(),J=o("blockquote"),J.innerHTML=sn,xe=s(),$=o("p"),$.innerHTML=ln,Ze=s(),c(N.$$.fragment),Qe=s(),P=o("p"),this.h()},l(e){const n=Mn("svelte-u9bgzb",document.head);y=i(n,"META",{name:!0,content:!0}),n.forEach(a),K=l(e),H=i(e,"P",{}),on(H).forEach(a),O=l(e),u(j.$$.fragment,e),ee=l(e),u(T.$$.fragment,e),ne=l(e),w=i(e,"P",{"data-svelte-h":!0}),r(w)!=="svelte-sdyhau"&&(w.textContent=ke),ae=l(e),g=i(e,"P",{"data-svelte-h":!0}),r(g)!=="svelte-13l1wq2"&&(g.textContent=qe),te=l(e),f=i(e,"BLOCKQUOTE",{"data-svelte-h":!0}),r(f)!=="svelte-11duboz"&&(f.innerHTML=Ae),se=l(e),h=i(e,"P",{"data-svelte-h":!0}),r(h)!=="svelte-15neg43"&&(h.innerHTML=_e),le=l(e),I=i(e,"P",{"data-svelte-h":!0}),r(I)!=="svelte-14dee9q"&&(I.innerHTML=Re),oe=l(e),B=i(e,"OL",{"data-svelte-h":!0}),r(B)!=="svelte-rbabkw"&&(B.innerHTML=Se),ie=l(e),b=i(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(b)!=="svelte-q682b1"&&(b.innerHTML=Ye),re=l(e),u(C.$$.fragment,e),ce=l(e),U=i(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(U)!=="svelte-o2zejh"&&(U.innerHTML=Xe),ue=l(e),W=i(e,"P",{"data-svelte-h":!0}),r(W)!=="svelte-soh9gx"&&(W.innerHTML=Fe),pe=l(e),G=i(e,"P",{"data-svelte-h":!0}),r(G)!=="svelte-35kesw"&&(G.textContent=Le),me=l(e),x=i(e,"P",{"data-svelte-h":!0}),r(x)!=="svelte-gww4kt"&&(x.textContent=$e),Me=l(e),u(Z.$$.fragment,e),de=l(e),Q=i(e,"P",{"data-svelte-h":!0}),r(Q)!=="svelte-q54fuk"&&(Q.innerHTML=Ne),ye=l(e),u(V.$$.fragment,e),be=l(e),v=i(e,"P",{"data-svelte-h":!0}),r(v)!=="svelte-u9nts9"&&(v.innerHTML=He),Ue=l(e),E=i(e,"P",{"data-svelte-h":!0}),r(E)!=="svelte-3mrzta"&&(E.textContent=Pe),Je=l(e),u(z.$$.fragment,e),je=l(e),k=i(e,"P",{"data-svelte-h":!0}),r(k)!=="svelte-hxl336"&&(k.innerHTML=De),Te=l(e),q=i(e,"P",{"data-svelte-h":!0}),r(q)!=="svelte-1srircl"&&(q.innerHTML=Ke),we=l(e),A=i(e,"P",{"data-svelte-h":!0}),r(A)!=="svelte-1okujzi"&&(A.innerHTML=Oe),ge=l(e),_=i(e,"P",{"data-svelte-h":!0}),r(_)!=="svelte-1tgvryu"&&(_.innerHTML=en),fe=l(e),u(R.$$.fragment,e),he=l(e),u(S.$$.fragment,e),Ie=l(e),Y=i(e,"P",{"data-svelte-h":!0}),r(Y)!=="svelte-1ij28k7"&&(Y.innerHTML=nn),Be=l(e),X=i(e,"P",{"data-svelte-h":!0}),r(X)!=="svelte-1nm3g2f"&&(X.textContent=an),Ce=l(e),F=i(e,"P",{"data-svelte-h":!0}),r(F)!=="svelte-1hdefld"&&(F.textContent=tn),We=l(e),u(L.$$.fragment,e),Ge=l(e),J=i(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),r(J)!=="svelte-xed67n"&&(J.innerHTML=sn),xe=l(e),$=i(e,"P",{"data-svelte-h":!0}),r($)!=="svelte-hobv74"&&($.innerHTML=ln),Ze=l(e),u(N.$$.fragment,e),Qe=l(e),P=i(e,"P",{}),on(P).forEach(a),this.h()},h(){D(y,"name","hf:doc:metadata"),D(y,"content",Jn),D(b,"class","tip"),D(U,"class","tip"),D(J,"class","tip")},m(e,n){dn(document.head,y),t(e,K,n),t(e,H,n),t(e,O,n),p(j,e,n),t(e,ee,n),p(T,e,n),t(e,ne,n),t(e,w,n),t(e,ae,n),t(e,g,n),t(e,te,n),t(e,f,n),t(e,se,n),t(e,h,n),t(e,le,n),t(e,I,n),t(e,oe,n),t(e,B,n),t(e,ie,n),t(e,b,n),t(e,re,n),p(C,e,n),t(e,ce,n),t(e,U,n),t(e,ue,n),t(e,W,n),t(e,pe,n),t(e,G,n),t(e,me,n),t(e,x,n),t(e,Me,n),p(Z,e,n),t(e,de,n),t(e,Q,n),t(e,ye,n),p(V,e,n),t(e,be,n),t(e,v,n),t(e,Ue,n),t(e,E,n),t(e,Je,n),p(z,e,n),t(e,je,n),t(e,k,n),t(e,Te,n),t(e,q,n),t(e,we,n),t(e,A,n),t(e,ge,n),t(e,_,n),t(e,fe,n),p(R,e,n),t(e,he,n),p(S,e,n),t(e,Ie,n),t(e,Y,n),t(e,Be,n),t(e,X,n),t(e,Ce,n),t(e,F,n),t(e,We,n),p(L,e,n),t(e,Ge,n),t(e,J,n),t(e,xe,n),t(e,$,n),t(e,Ze,n),p(N,e,n),t(e,Qe,n),t(e,P,n),Ve=!0},p:cn,i(e){Ve||(m(j.$$.fragment,e),m(T.$$.fragment,e),m(C.$$.fragment,e),m(Z.$$.fragment,e),m(V.$$.fragment,e),m(z.$$.fragment,e),m(R.$$.fragment,e),m(S.$$.fragment,e),m(L.$$.fragment,e),m(N.$$.fragment,e),Ve=!0)},o(e){M(j.$$.fragment,e),M(T.$$.fragment,e),M(C.$$.fragment,e),M(Z.$$.fragment,e),M(V.$$.fragment,e),M(z.$$.fragment,e),M(R.$$.fragment,e),M(S.$$.fragment,e),M(L.$$.fragment,e),M(N.$$.fragment,e),Ve=!1},d(e){e&&(a(K),a(H),a(O),a(ee),a(ne),a(w),a(ae),a(g),a(te),a(f),a(se),a(h),a(le),a(I),a(oe),a(B),a(ie),a(b),a(re),a(ce),a(U),a(ue),a(W),a(pe),a(G),a(me),a(x),a(Me),a(de),a(Q),a(ye),a(be),a(v),a(Ue),a(E),a(Je),a(je),a(k),a(Te),a(q),a(we),a(A),a(ge),a(_),a(fe),a(he),a(Ie),a(Y),a(Be),a(X),a(Ce),a(F),a(We),a(Ge),a(J),a(xe),a($),a(Ze),a(Qe),a(P)),a(y),d(j,e),d(T,e),d(C,e),d(Z,e),d(V,e),d(z,e),d(R,e),d(S,e),d(L,e),d(N,e)}}}const Jn='{"title":"Usando Agentes en LlamaIndex","local":"usando-agentes-en-llamaindex","sections":[{"title":"Inicializando Agentes","local":"inicializando-agentes","sections":[],"depth":2},{"title":"Creando Agentes RAG con QueryEngineTools","local":"creando-agentes-rag-con-queryenginetools","sections":[],"depth":2},{"title":"Creando Sistemas Multi-agente","local":"creando-sistemas-multi-agente","sections":[],"depth":2}],"depth":1}';function jn(ze){return un(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Bn extends pn{constructor(y){super(),mn(this,y,jn,Un,rn,{})}}export{Bn as component};
