Buckets:

HuggingFaceDocBuilder's picture
download
raw
28.3 kB
import{s as ll,n as sl,o as al}from"../chunks/scheduler.505acc25.js";import{S as tl,i as nl,e as i,s as t,c as r,h as il,a as o,d as s,b as n,f as Oe,g as c,j as M,k as ve,l as ol,m as a,n as p,t as y,o as u,p as d}from"../chunks/index.fbb49fb4.js";import{C as Ml}from"../chunks/CopyLLMTxtMenu.2250aa81.js";import{C as el}from"../chunks/CodeBlock.e5ac87fe.js";import{C as rl}from"../chunks/CourseFloatingBanner.742f9db5.js";import{H as L}from"../chunks/Heading.511e0027.js";import{E as cl}from"../chunks/MermaidChart.svelte_svelte_type_style_lang.bb001c84.js";function pl(Ve){let U,D,Y,P,j,K,J,O,T,ee,m,Re='<p>Puedes seguir el código en <a href="https://huggingface.co/agents-course/notebooks/blob/main/unit2/smolagents/retrieval_agents.ipynb" target="_blank">este notebook</a> que puedes ejecutar usando Google Colab.</p>',le,C,Ee="Los sistemas de Generación Aumentada por Recuperación (RAG) combinan las capacidades de recuperación de datos y modelos de generación para proporcionar respuestas contextualizadas. Por ejemplo, la consulta de un usuario se pasa a un motor de búsqueda, y los resultados recuperados se entregan al modelo junto con la consulta. El modelo luego genera una respuesta basada en la consulta y la información recuperada.",se,b,ze="El RAG con Agentes (Generación Aumentada por Recuperación) extiende los sistemas RAG tradicionales al <strong>combinar agentes autónomos con recuperación dinámica de conocimiento</strong>.",ae,w,We="Mientras que los sistemas RAG tradicionales utilizan un LLM para responder consultas basadas en datos recuperados, el RAG con agentes <strong>permite un control inteligente tanto de los procesos de recuperación como de generación</strong>, mejorando la eficiencia y precisión.",te,I,ke="Los sistemas RAG tradicionales enfrentan limitaciones clave, como <strong>depender de un solo paso de recuperación</strong> y enfocarse en la similitud semántica directa con la consulta del usuario, lo que puede pasar por alto información relevante.",ne,h,Ae="El RAG con agentes aborda estos problemas permitiendo que el agente formule autónomamente consultas de búsqueda, critique los resultados recuperados y realice múltiples pasos de recuperación para obtener un resultado más personalizado y completo.",ie,B,oe,G,qe="Vamos a construir un agente simple que pueda buscar en la web usando DuckDuckGo. Este agente recuperará información y sintetizará respuestas para contestar consultas. Con RAG con agentes, el agente de Alfred puede:",Me,Z,Xe="<li>Buscar las últimas tendencias en fiestas de superhéroes</li> <li>Refinar resultados para incluir elementos de lujo</li> <li>Sintetizar información en un plan completo</li>",re,f,Ne="Así es como el agente de Alfred puede lograr esto:",ce,g,pe,v,Qe="El agente sigue este proceso:",ye,V,Se="<li><strong>Analiza la Solicitud:</strong> El agente de Alfred identifica los elementos clave de la consulta—planificación de fiesta temática de superhéroes de lujo, con enfoque en decoración, entretenimiento y catering.</li> <li><strong>Realiza la Recuperación:</strong> El agente utiliza DuckDuckGo para buscar la información más relevante y actualizada, asegurándose de que se alinee con las preferencias refinadas de Alfred para un evento lujoso.</li> <li><strong>Sintetiza la Información:</strong> Después de recopilar los resultados, el agente los procesa en un plan coherente y accionable para Alfred, cubriendo todos los aspectos de la fiesta.</li> <li><strong>Almacena para Referencia Futura:</strong> El agente almacena la información recuperada para un fácil acceso al planificar eventos futuros, optimizando la eficiencia en tareas posteriores.</li>",ue,R,de,E,xe="Para tareas especializadas, una base de conocimiento personalizada puede ser invaluable. Vamos a crear una herramienta que consulte una base de datos vectorial de documentación técnica o conocimiento especializado. Utilizando búsqueda semántica, el agente puede encontrar la información más relevante para las necesidades de Alfred.",Ue,z,Fe="Una base de datos vectorial es simplemente una colección de documentos con representaciones enriquecidas por modelos de ML especializados, que permiten la búsqueda y recuperación rápida de los documentos.",me,W,He="Este enfoque combina conocimiento predefinido con búsqueda semántica para proporcionar soluciones contextualizadas para la planificación de eventos. Con acceso a conocimiento especializado, Alfred puede perfeccionar cada detalle de la fiesta.",je,k,_e="En este ejemplo, crearemos una herramienta que recupera ideas de planificación de fiestas desde una base de conocimiento personalizada. Usaremos un recuperador BM25 para buscar en la base de conocimiento y devolver los mejores resultados, y <code>RecursiveCharacterTextSplitter</code> para dividir los documentos en fragmentos más pequeños para una búsqueda más eficiente.",Je,A,Te,q,Ye="Este agente mejorado puede:",Ce,X,$e="<li>Primero verificar la documentación para obtener información relevante</li> <li>Combinar ideas de la base de conocimiento</li> <li>Mantener el contexto de la conversación en memoria</li>",be,N,we,Q,Le="Al construir sistemas RAG con agentes, el agente puede emplear estrategias sofisticadas como:",Ie,S,De="<li><strong>Reformulación de Consultas:</strong> En lugar de usar la consulta del usuario en bruto, el agente puede elaborar términos de búsqueda optimizados que coincidan mejor con los documentos objetivo</li> <li><strong>Recuperación Multi-Paso:</strong> El agente puede realizar múltiples búsquedas, utilizando los resultados iniciales para informar consultas posteriores</li> <li><strong>Integración de Fuentes:</strong> La información puede combinarse de múltiples fuentes como búsqueda web y documentación local</li> <li><strong>Validación de Resultados:</strong> El contenido recuperado puede analizarse para determinar su relevancia y precisión antes de incluirlo en las respuestas</li>",he,x,Pe="Los sistemas RAG con agentes efectivos requieren una consideración cuidadosa de varios aspectos clave. El agente <strong>debe seleccionar entre las herramientas disponibles según el tipo de consulta y el contexto</strong>. Los sistemas de memoria ayudan a mantener el historial de conversación y evitar recuperaciones repetitivas. Tener estrategias de respaldo garantiza que el sistema pueda seguir proporcionando valor incluso cuando los métodos de recuperación principales fallan. Además, implementar pasos de validación ayuda a garantizar la precisión y relevancia de la información recuperada.",Be,F,Ge,H,Ke='<li><a href="https://huggingface.co/learn/cookbook/agent_rag" rel="nofollow">RAG con Agentes: ¡potencia tu RAG con reformulación de consultas y auto-consulta! 🚀</a> - Receta para desarrollar un sistema RAG con Agentes utilizando smolagents.</li>',Ze,_,fe,$,ge;return j=new rl({props:{chapter:2,classNames:"absolute z-10 right-0 top-0",notebooks:[{label:"Google Colab",value:"https://colab.research.google.com/#fileId=https://huggingface.co/agents-course/notebooks/blob/main/unit2/smolagents/retrieval_agents.ipynb"}]}}),J=new Ml({props:{containerStyle:"float: right; margin-left: 10px; display: inline-flex; position: relative; z-index: 10;"}}),T=new L({props:{title:"Construyendo Sistemas RAG con Agentes",local:"construyendo-sistemas-rag-con-agentes",headingTag:"h1"}}),B=new L({props:{title:"Recuperación Básica con DuckDuckGo",local:"recuperación-básica-con-duckduckgo",headingTag:"h2"}}),g=new el({props:{code:"ZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBDb2RlQWdlbnQlMkMlMjBEdWNrRHVja0dvU2VhcmNoVG9vbCUyQyUyMEluZmVyZW5jZUNsaWVudE1vZGVsJTBBJTBBJTIzJTIwSW5pdGlhbGl6ZSUyMHRoZSUyMHNlYXJjaCUyMHRvb2wlMEFzZWFyY2hfdG9vbCUyMCUzRCUyMER1Y2tEdWNrR29TZWFyY2hUb29sKCklMEElMEElMjMlMjBJbml0aWFsaXplJTIwdGhlJTIwbW9kZWwlMEFtb2RlbCUyMCUzRCUyMEluZmVyZW5jZUNsaWVudE1vZGVsKCklMEElMEFhZ2VudCUyMCUzRCUyMENvZGVBZ2VudCglMEElMjAlMjAlMjAlMjBtb2RlbCUzRG1vZGVsJTJDJTBBJTIwJTIwJTIwJTIwdG9vbHMlM0QlNUJzZWFyY2hfdG9vbCU1RCUwQSklMEElMEElMjMlMjBFeGFtcGxlJTIwdXNhZ2UlMEFyZXNwb25zZSUyMCUzRCUyMGFnZW50LnJ1biglMEElMjAlMjAlMjAlMjAlMjJCdXNjYXIlMjBpZGVhcyUyMGRlJTIwZmllc3RhJTIwdGVtJUMzJUExdGljYSUyMGRlJTIwc3VwZXJoJUMzJUE5cm9lcyUyMGRlJTIwbHVqbyUyQyUyMGluY2x1eWVuZG8lMjBkZWNvcmFjaSVDMyVCM24lMkMlMjBlbnRyZXRlbmltaWVudG8lMjB5JTIwY2F0ZXJpbmcuJTIyJTBBKSUwQXByaW50KHJlc3BvbnNlKQ==",highlighted:`<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, DuckDuckGoSearchTool, InferenceClientModel
<span class="hljs-comment"># Initialize the search tool</span>
search_tool = DuckDuckGoSearchTool()
<span class="hljs-comment"># Initialize the model</span>
model = InferenceClientModel()
agent = CodeAgent(
model=model,
tools=[search_tool]
)
<span class="hljs-comment"># Example usage</span>
response = agent.run(
<span class="hljs-string">&quot;Buscar ideas de fiesta temática de superhéroes de lujo, incluyendo decoración, entretenimiento y catering.&quot;</span>
)
<span class="hljs-built_in">print</span>(response)`,lang:"python",wrap:!1}}),R=new L({props:{title:"Herramienta de Base de Conocimiento Personalizada",local:"herramienta-de-base-de-conocimiento-personalizada",headingTag:"h2"}}),A=new el({props:{code:"ZnJvbSUyMGxhbmdjaGFpbi5kb2NzdG9yZS5kb2N1bWVudCUyMGltcG9ydCUyMERvY3VtZW50JTBBZnJvbSUyMGxhbmdjaGFpbi50ZXh0X3NwbGl0dGVyJTIwaW1wb3J0JTIwUmVjdXJzaXZlQ2hhcmFjdGVyVGV4dFNwbGl0dGVyJTBBZnJvbSUyMHNtb2xhZ2VudHMlMjBpbXBvcnQlMjBUb29sJTBBZnJvbSUyMGxhbmdjaGFpbl9jb21tdW5pdHkucmV0cmlldmVycyUyMGltcG9ydCUyMEJNMjVSZXRyaWV2ZXIlMEFmcm9tJTIwc21vbGFnZW50cyUyMGltcG9ydCUyMENvZGVBZ2VudCUyQyUyMEluZmVyZW5jZUNsaWVudE1vZGVsJTBBJTBBY2xhc3MlMjBQYXJ0eVBsYW5uaW5nUmV0cmlldmVyVG9vbChUb29sKSUzQSUwQSUyMCUyMCUyMCUyMG5hbWUlMjAlM0QlMjAlMjJwYXJ0eV9wbGFubmluZ19yZXRyaWV2ZXIlMjIlMEElMjAlMjAlMjAlMjBkZXNjcmlwdGlvbiUyMCUzRCUyMCUyMlV0aWxpemElMjBiJUMzJUJBc3F1ZWRhJTIwc2VtJUMzJUExbnRpY2ElMjBwYXJhJTIwcmVjdXBlcmFyJTIwaWRlYXMlMjBkZSUyMHBsYW5pZmljYWNpJUMzJUIzbiUyMGRlJTIwZmllc3RhcyUyMHJlbGV2YW50ZXMlMjBwYXJhJTIwbGElMjBmaWVzdGElMjB0ZW0lQzMlQTF0aWNhJTIwZGUlMjBzdXBlcmglQzMlQTlyb2VzJTIwZGUlMjBBbGZyZWQlMjBlbiUyMFdheW5lJTIwTWFub3IuJTIyJTBBJTIwJTIwJTIwJTIwaW5wdXRzJTIwJTNEJTIwJTdCJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIycXVlcnklMjIlM0ElMjAlN0IlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjJ0eXBlJTIyJTNBJTIwJTIyc3RyaW5nJTIyJTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIyZGVzY3JpcHRpb24lMjIlM0ElMjAlMjJMYSUyMGNvbnN1bHRhJTIwYSUyMHJlYWxpemFyLiUyMEVzdGElMjBkZWJlJTIwc2VyJTIwdW5hJTIwY29uc3VsdGElMjByZWxhY2lvbmFkYSUyMGNvbiUyMGxhJTIwcGxhbmlmaWNhY2klQzMlQjNuJTIwZGUlMjBmaWVzdGFzJTIwbyUyMHRlbWFzJTIwZGUlMjBzdXBlcmglQzMlQTlyb2VzLiUyMiUyQyUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMCU3RCUwQSUyMCUyMCUyMCUyMG91dHB1dF90eXBlJTIwJTNEJTIwJTIyc3RyaW5nJTIyJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwX19pbml0X18oc2VsZiUyQyUyMGRvY3MlMkMlMjAqKmt3YXJncyklM0ElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBzdXBlcigpLl9faW5pdF9fKCoqa3dhcmdzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHNlbGYucmV0cmlldmVyJTIwJTNEJTIwQk0yNVJldHJpZXZlci5mcm9tX2RvY3VtZW50cyglMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkb2NzJTJDJTIwayUzRDUlMjAlMjAlMjMlMjBSZXRyaWV2ZSUyMHRoZSUyMHRvcCUyMDUlMjBkb2N1bWVudHMlMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjApJTBBJTBBJTIwJTIwJTIwJTIwZGVmJTIwZm9yd2FyZChzZWxmJTJDJTIwcXVlcnklM0ElMjBzdHIpJTIwLSUzRSUyMHN0ciUzQSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGFzc2VydCUyMGlzaW5zdGFuY2UocXVlcnklMkMlMjBzdHIpJTJDJTIwJTIyVHUlMjBjb25zdWx0YSUyMGRlJTIwYiVDMyVCQXNxdWVkYSUyMGRlYmUlMjBzZXIlMjB1bmElMjBjYWRlbmElMjIlMEElMEElMjAlMjAlMjAlMjAlMjAlMjAlMjAlMjBkb2NzJTIwJTNEJTIwc2VsZi5yZXRyaWV2ZXIuaW52b2tlKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHF1ZXJ5JTJDJTBBJTIwJTIwJTIwJTIwJTIwJTIwJTIwJTIwKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMCUyMiU1Q25JZGVhcyUyMHJlY3VwZXJhZGFzJTNBJTVDbiUyMiUyMCUyQiUyMCUyMiUyMi5qb2luKCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1QiUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGYlMjIlNUNuJTVDbiUzRCUzRCUzRCUzRCUzRCUyMElkZWElMjAlN0JzdHIoaSklN0QlMjAlM0QlM0QlM0QlM0QlM0QlNUNuJTIyJTIwJTJCJTIwZG9jLnBhZ2VfY29udGVudCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMGZvciUyMGklMkMlMjBkb2MlMjBpbiUyMGVudW1lcmF0ZShkb2NzKSUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCU1RCUwQSUyMCUyMCUyMCUyMCUyMCUyMCUyMCUyMCklMEElMEElMjMlMjBTaW11bGF0ZSUyMGElMjBrbm93bGVkZ2UlMjBiYXNlJTIwYWJvdXQlMjBwYXJ0eSUyMHBsYW5uaW5nJTBBcGFydHlfaWRlYXMlMjAlM0QlMjAlNUIlMEElMjAlMjAlMjAlMjAlN0IlMjJ0ZXh0JTIyJTNBJTIwJTIyVW5hJTIwZmllc3RhJTIwZGUlMjBkaXNmcmFjZXMlMjB0ZW0lQzMlQTF0aWNhJTIwZGUlMjBzdXBlcmglQzMlQTlyb2VzJTIwY29uJTIwZGVjb3JhY2klQzMlQjNuJTIwZGUlMjBsdWpvJTJDJTIwaW5jbHV5ZW5kbyUyMGRldGFsbGVzJTIwZG9yYWRvcyUyMHklMjBjb3J0aW5hcyUyMGRlJTIwdGVyY2lvcGVsby4lMjIlMkMlMjAlMjJzb3VyY2UlMjIlM0ElMjAlMjJJZGVhcyUyMGRlJTIwZmllc3RhJTIwMSUyMiU3RCUyQyUwQSUyMCUyMCUyMCUyMCU3QiUyMnRleHQlMjIlM0ElMjAlMjJDb250cmF0YSUyMGElMjB1biUyMERKJTIwcHJvZmVzaW9uYWwlMjBxdWUlMjBwdWVkYSUyMHRvY2FyJTIwbSVDMyVCQXNpY2ElMjB0ZW0lQzMlQTF0aWNhJTIwcGFyYSUyMHN1cGVyaCVDMyVBOXJvZXMlMjBjb21vJTIwQmF0bWFuJTIweSUyMFdvbmRlciUyMFdvbWFuLiUyMiUyQyUyMCUyMnNvdXJjZSUyMiUzQSUyMCUyMklkZWFzJTIwZGUlMjBlbnRyZXRlbmltaWVudG8lMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJ0ZXh0JTIyJTNBJTIwJTIyUGFyYSUyMGVsJTIwY2F0ZXJpbmclMkMlMjBzaXJ2ZSUyMHBsYXRvcyUyMGNvbiUyMG5vbWJyZXMlMjBkZSUyMHN1cGVyaCVDMyVBOXJvZXMlMkMlMjBjb21vJTIwJ0VsJTIwc21vb3RoaWUlMjB2ZXJkZSUyMGRlJTIwSHVsayclMjB5JTIwJ0VsJTIwZmlsZXRlJTIwZGUlMjBwb2RlciUyMGRlJTIwSXJvbiUyME1hbicuJTIyJTJDJTIwJTIyc291cmNlJTIyJTNBJTIwJTIySWRlYXMlMjBkZSUyMGNhdGVyaW5nJTIyJTdEJTJDJTBBJTIwJTIwJTIwJTIwJTdCJTIydGV4dCUyMiUzQSUyMCUyMkRlY29yYSUyMGNvbiUyMGxvZ290aXBvcyUyMGljJUMzJUIzbmljb3MlMjBkZSUyMHN1cGVyaCVDMyVBOXJvZXMlMjB5JTIwcHJveWVjY2lvbmVzJTIwZGUlMjBHb3RoYW0lMjB5JTIwb3RyYXMlMjBjaXVkYWRlcyUyMGRlJTIwc3VwZXJoJUMzJUE5cm9lcyUyMGFscmVkZWRvciUyMGRlbCUyMGx1Z2FyLiUyMiUyQyUyMCUyMnNvdXJjZSUyMiUzQSUyMCUyMklkZWFzJTIwZGUlMjBkZWNvcmFjaSVDMyVCM24lMjIlN0QlMkMlMEElMjAlMjAlMjAlMjAlN0IlMjJ0ZXh0JTIyJTNBJTIwJTIyRXhwZXJpZW5jaWFzJTIwaW50ZXJhY3RpdmFzJTIwY29uJTIwcmVhbGlkYWQlMjB2aXJ0dWFsJTIwZG9uZGUlMjBsb3MlMjBpbnZpdGFkb3MlMjBwdWVkZW4lMjBwYXJ0aWNpcGFyJTIwZW4lMjBzaW11bGFjaW9uZXMlMjBkZSUyMHN1cGVyaCVDMyVBOXJvZXMlMjBvJTIwY29tcGV0aXIlMjBlbiUyMGp1ZWdvcyUyMHRlbSVDMyVBMXRpY29zLiUyMiUyQyUyMCUyMnNvdXJjZSUyMiUzQSUyMCUyMklkZWFzJTIwZGUlMjBlbnRyZXRlbmltaWVudG8lMjIlN0QlMEElNUQlMEElMEFzb3VyY2VfZG9jcyUyMCUzRCUyMCU1QiUwQSUyMCUyMCUyMCUyMERvY3VtZW50KHBhZ2VfY29udGVudCUzRGRvYyU1QiUyMnRleHQlMjIlNUQlMkMlMjBtZXRhZGF0YSUzRCU3QiUyMnNvdXJjZSUyMiUzQSUyMGRvYyU1QiUyMnNvdXJjZSUyMiU1RCU3RCklMEElMjAlMjAlMjAlMjBmb3IlMjBkb2MlMjBpbiUyMHBhcnR5X2lkZWFzJTBBJTVEJTBBJTBBJTIzJTIwU3BsaXQlMjB0aGUlMjBkb2N1bWVudHMlMjBpbnRvJTIwc21hbGxlciUyMGNodW5rcyUyMGZvciUyMG1vcmUlMjBlZmZpY2llbnQlMjBzZWFyY2glMEF0ZXh0X3NwbGl0dGVyJTIwJTNEJTIwUmVjdXJzaXZlQ2hhcmFjdGVyVGV4dFNwbGl0dGVyKCUwQSUyMCUyMCUyMCUyMGNodW5rX3NpemUlM0Q1MDAlMkMlMEElMjAlMjAlMjAlMjBjaHVua19vdmVybGFwJTNENTAlMkMlMEElMjAlMjAlMjAlMjBhZGRfc3RhcnRfaW5kZXglM0RUcnVlJTJDJTBBJTIwJTIwJTIwJTIwc3RyaXBfd2hpdGVzcGFjZSUzRFRydWUlMkMlMEElMjAlMjAlMjAlMjBzZXBhcmF0b3JzJTNEJTVCJTIyJTVDbiU1Q24lMjIlMkMlMjAlMjIlNUNuJTIyJTJDJTIwJTIyLiUyMiUyQyUyMCUyMiUyMCUyMiUyQyUyMCUyMiUyMiU1RCUyQyUwQSklMEFkb2NzX3Byb2Nlc3NlZCUyMCUzRCUyMHRleHRfc3BsaXR0ZXIuc3BsaXRfZG9jdW1lbnRzKHNvdXJjZV9kb2NzKSUwQSUwQSUyMyUyMENyZWF0ZSUyMHRoZSUyMHJldHJpZXZlciUyMHRvb2wlMEFwYXJ0eV9wbGFubmluZ19yZXRyaWV2ZXIlMjAlM0QlMjBQYXJ0eVBsYW5uaW5nUmV0cmlldmVyVG9vbChkb2NzX3Byb2Nlc3NlZCklMEElMEElMjMlMjBJbml0aWFsaXplJTIwdGhlJTIwYWdlbnQlMEFhZ2VudCUyMCUzRCUyMENvZGVBZ2VudCh0b29scyUzRCU1QnBhcnR5X3BsYW5uaW5nX3JldHJpZXZlciU1RCUyQyUyMG1vZGVsJTNESW5mZXJlbmNlQ2xpZW50TW9kZWwoKSklMEElMEElMjMlMjBFeGFtcGxlJTIwdXNhZ2UlMEFyZXNwb25zZSUyMCUzRCUyMGFnZW50LnJ1biglMEElMjAlMjAlMjAlMjAlMjJFbmN1ZW50cmElMjBpZGVhcyUyMHBhcmElMjB1bmElMjBmaWVzdGElMjB0ZW0lQzMlQTF0aWNhJTIwZGUlMjBzdXBlcmglQzMlQTlyb2VzJTIwZGUlMjBsdWpvJTJDJTIwaW5jbHV5ZW5kbyUyMGVudHJldGVuaW1pZW50byUyQyUyMGNhdGVyaW5nJTIweSUyMG9wY2lvbmVzJTIwZGUlMjBkZWNvcmFjaSVDMyVCM24uJTIyJTBBKSUwQSUwQXByaW50KHJlc3BvbnNlKQ==",highlighted:`<span class="hljs-keyword">from</span> langchain.docstore.document <span class="hljs-keyword">import</span> Document
<span class="hljs-keyword">from</span> langchain.text_splitter <span class="hljs-keyword">import</span> RecursiveCharacterTextSplitter
<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> Tool
<span class="hljs-keyword">from</span> langchain_community.retrievers <span class="hljs-keyword">import</span> BM25Retriever
<span class="hljs-keyword">from</span> smolagents <span class="hljs-keyword">import</span> CodeAgent, InferenceClientModel
<span class="hljs-keyword">class</span> <span class="hljs-title class_">PartyPlanningRetrieverTool</span>(<span class="hljs-title class_ inherited__">Tool</span>):
name = <span class="hljs-string">&quot;party_planning_retriever&quot;</span>
description = <span class="hljs-string">&quot;Utiliza búsqueda semántica para recuperar ideas de planificación de fiestas relevantes para la fiesta temática de superhéroes de Alfred en Wayne Manor.&quot;</span>
inputs = {
<span class="hljs-string">&quot;query&quot;</span>: {
<span class="hljs-string">&quot;type&quot;</span>: <span class="hljs-string">&quot;string&quot;</span>,
<span class="hljs-string">&quot;description&quot;</span>: <span class="hljs-string">&quot;La consulta a realizar. Esta debe ser una consulta relacionada con la planificación de fiestas o temas de superhéroes.&quot;</span>,
}
}
output_type = <span class="hljs-string">&quot;string&quot;</span>
<span class="hljs-keyword">def</span> <span class="hljs-title function_">__init__</span>(<span class="hljs-params">self, docs, **kwargs</span>):
<span class="hljs-built_in">super</span>().__init__(**kwargs)
self.retriever = BM25Retriever.from_documents(
docs, k=<span class="hljs-number">5</span> <span class="hljs-comment"># Retrieve the top 5 documents</span>
)
<span class="hljs-keyword">def</span> <span class="hljs-title function_">forward</span>(<span class="hljs-params">self, query: <span class="hljs-built_in">str</span></span>) -&gt; <span class="hljs-built_in">str</span>:
<span class="hljs-keyword">assert</span> <span class="hljs-built_in">isinstance</span>(query, <span class="hljs-built_in">str</span>), <span class="hljs-string">&quot;Tu consulta de búsqueda debe ser una cadena&quot;</span>
docs = self.retriever.invoke(
query,
)
<span class="hljs-keyword">return</span> <span class="hljs-string">&quot;\\nIdeas recuperadas:\\n&quot;</span> + <span class="hljs-string">&quot;&quot;</span>.join(
[
<span class="hljs-string">f&quot;\\n\\n===== Idea <span class="hljs-subst">{<span class="hljs-built_in">str</span>(i)}</span> =====\\n&quot;</span> + doc.page_content
<span class="hljs-keyword">for</span> i, doc <span class="hljs-keyword">in</span> <span class="hljs-built_in">enumerate</span>(docs)
]
)
<span class="hljs-comment"># Simulate a knowledge base about party planning</span>
party_ideas = [
{<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Una fiesta de disfraces temática de superhéroes con decoración de lujo, incluyendo detalles dorados y cortinas de terciopelo.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Ideas de fiesta 1&quot;</span>},
{<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Contrata a un DJ profesional que pueda tocar música temática para superhéroes como Batman y Wonder Woman.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Ideas de entretenimiento&quot;</span>},
{<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Para el catering, sirve platos con nombres de superhéroes, como &#x27;El smoothie verde de Hulk&#x27; y &#x27;El filete de poder de Iron Man&#x27;.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Ideas de catering&quot;</span>},
{<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Decora con logotipos icónicos de superhéroes y proyecciones de Gotham y otras ciudades de superhéroes alrededor del lugar.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Ideas de decoración&quot;</span>},
{<span class="hljs-string">&quot;text&quot;</span>: <span class="hljs-string">&quot;Experiencias interactivas con realidad virtual donde los invitados pueden participar en simulaciones de superhéroes o competir en juegos temáticos.&quot;</span>, <span class="hljs-string">&quot;source&quot;</span>: <span class="hljs-string">&quot;Ideas de entretenimiento&quot;</span>}
]
source_docs = [
Document(page_content=doc[<span class="hljs-string">&quot;text&quot;</span>], metadata={<span class="hljs-string">&quot;source&quot;</span>: doc[<span class="hljs-string">&quot;source&quot;</span>]})
<span class="hljs-keyword">for</span> doc <span class="hljs-keyword">in</span> party_ideas
]
<span class="hljs-comment"># Split the documents into smaller chunks for more efficient search</span>
text_splitter = RecursiveCharacterTextSplitter(
chunk_size=<span class="hljs-number">500</span>,
chunk_overlap=<span class="hljs-number">50</span>,
add_start_index=<span class="hljs-literal">True</span>,
strip_whitespace=<span class="hljs-literal">True</span>,
separators=[<span class="hljs-string">&quot;\\n\\n&quot;</span>, <span class="hljs-string">&quot;\\n&quot;</span>, <span class="hljs-string">&quot;.&quot;</span>, <span class="hljs-string">&quot; &quot;</span>, <span class="hljs-string">&quot;&quot;</span>],
)
docs_processed = text_splitter.split_documents(source_docs)
<span class="hljs-comment"># Create the retriever tool</span>
party_planning_retriever = PartyPlanningRetrieverTool(docs_processed)
<span class="hljs-comment"># Initialize the agent</span>
agent = CodeAgent(tools=[party_planning_retriever], model=InferenceClientModel())
<span class="hljs-comment"># Example usage</span>
response = agent.run(
<span class="hljs-string">&quot;Encuentra ideas para una fiesta temática de superhéroes de lujo, incluyendo entretenimiento, catering y opciones de decoración.&quot;</span>
)
<span class="hljs-built_in">print</span>(response)`,lang:"python",wrap:!1}}),N=new L({props:{title:"Capacidades de Recuperación Mejoradas",local:"capacidades-de-recuperación-mejoradas",headingTag:"h2"}}),F=new L({props:{title:"Recursos",local:"recursos",headingTag:"h2"}}),_=new cl({props:{source:"https://github.com/huggingface/agents-course/blob/main/units/es/unit2/smolagents/retrieval_agents.mdx"}}),{c(){U=i("meta"),D=t(),Y=i("p"),P=t(),r(j.$$.fragment),K=t(),r(J.$$.fragment),O=t(),r(T.$$.fragment),ee=t(),m=i("blockquote"),m.innerHTML=Re,le=t(),C=i("p"),C.textContent=Ee,se=t(),b=i("p"),b.innerHTML=ze,ae=t(),w=i("p"),w.innerHTML=We,te=t(),I=i("p"),I.innerHTML=ke,ne=t(),h=i("p"),h.textContent=Ae,ie=t(),r(B.$$.fragment),oe=t(),G=i("p"),G.textContent=qe,Me=t(),Z=i("ul"),Z.innerHTML=Xe,re=t(),f=i("p"),f.textContent=Ne,ce=t(),r(g.$$.fragment),pe=t(),v=i("p"),v.textContent=Qe,ye=t(),V=i("ol"),V.innerHTML=Se,ue=t(),r(R.$$.fragment),de=t(),E=i("p"),E.textContent=xe,Ue=t(),z=i("p"),z.textContent=Fe,me=t(),W=i("p"),W.textContent=He,je=t(),k=i("p"),k.innerHTML=_e,Je=t(),r(A.$$.fragment),Te=t(),q=i("p"),q.textContent=Ye,Ce=t(),X=i("ol"),X.innerHTML=$e,be=t(),r(N.$$.fragment),we=t(),Q=i("p"),Q.textContent=Le,Ie=t(),S=i("ol"),S.innerHTML=De,he=t(),x=i("p"),x.innerHTML=Pe,Be=t(),r(F.$$.fragment),Ge=t(),H=i("ul"),H.innerHTML=Ke,Ze=t(),r(_.$$.fragment),fe=t(),$=i("p"),this.h()},l(e){const l=il("svelte-u9bgzb",document.head);U=o(l,"META",{name:!0,content:!0}),l.forEach(s),D=n(e),Y=o(e,"P",{}),Oe(Y).forEach(s),P=n(e),c(j.$$.fragment,e),K=n(e),c(J.$$.fragment,e),O=n(e),c(T.$$.fragment,e),ee=n(e),m=o(e,"BLOCKQUOTE",{class:!0,"data-svelte-h":!0}),M(m)!=="svelte-1cv3vur"&&(m.innerHTML=Re),le=n(e),C=o(e,"P",{"data-svelte-h":!0}),M(C)!=="svelte-bu22fq"&&(C.textContent=Ee),se=n(e),b=o(e,"P",{"data-svelte-h":!0}),M(b)!=="svelte-1lveae7"&&(b.innerHTML=ze),ae=n(e),w=o(e,"P",{"data-svelte-h":!0}),M(w)!=="svelte-74ogx"&&(w.innerHTML=We),te=n(e),I=o(e,"P",{"data-svelte-h":!0}),M(I)!=="svelte-17nf5tg"&&(I.innerHTML=ke),ne=n(e),h=o(e,"P",{"data-svelte-h":!0}),M(h)!=="svelte-uk00de"&&(h.textContent=Ae),ie=n(e),c(B.$$.fragment,e),oe=n(e),G=o(e,"P",{"data-svelte-h":!0}),M(G)!=="svelte-d4xyvy"&&(G.textContent=qe),Me=n(e),Z=o(e,"UL",{"data-svelte-h":!0}),M(Z)!=="svelte-1yec3f1"&&(Z.innerHTML=Xe),re=n(e),f=o(e,"P",{"data-svelte-h":!0}),M(f)!=="svelte-1a0z8c8"&&(f.textContent=Ne),ce=n(e),c(g.$$.fragment,e),pe=n(e),v=o(e,"P",{"data-svelte-h":!0}),M(v)!=="svelte-b1upbo"&&(v.textContent=Qe),ye=n(e),V=o(e,"OL",{"data-svelte-h":!0}),M(V)!=="svelte-f56u6s"&&(V.innerHTML=Se),ue=n(e),c(R.$$.fragment,e),de=n(e),E=o(e,"P",{"data-svelte-h":!0}),M(E)!=="svelte-1ar8hbb"&&(E.textContent=xe),Ue=n(e),z=o(e,"P",{"data-svelte-h":!0}),M(z)!=="svelte-199wrdg"&&(z.textContent=Fe),me=n(e),W=o(e,"P",{"data-svelte-h":!0}),M(W)!=="svelte-o0ptj5"&&(W.textContent=He),je=n(e),k=o(e,"P",{"data-svelte-h":!0}),M(k)!=="svelte-uniiud"&&(k.innerHTML=_e),Je=n(e),c(A.$$.fragment,e),Te=n(e),q=o(e,"P",{"data-svelte-h":!0}),M(q)!=="svelte-z0853b"&&(q.textContent=Ye),Ce=n(e),X=o(e,"OL",{"data-svelte-h":!0}),M(X)!=="svelte-1wv8hni"&&(X.innerHTML=$e),be=n(e),c(N.$$.fragment,e),we=n(e),Q=o(e,"P",{"data-svelte-h":!0}),M(Q)!=="svelte-ekq9gx"&&(Q.textContent=Le),Ie=n(e),S=o(e,"OL",{"data-svelte-h":!0}),M(S)!=="svelte-1srjmw4"&&(S.innerHTML=De),he=n(e),x=o(e,"P",{"data-svelte-h":!0}),M(x)!=="svelte-1hxlxqw"&&(x.innerHTML=Pe),Be=n(e),c(F.$$.fragment,e),Ge=n(e),H=o(e,"UL",{"data-svelte-h":!0}),M(H)!=="svelte-luuviy"&&(H.innerHTML=Ke),Ze=n(e),c(_.$$.fragment,e),fe=n(e),$=o(e,"P",{}),Oe($).forEach(s),this.h()},h(){ve(U,"name","hf:doc:metadata"),ve(U,"content",yl),ve(m,"class","tip")},m(e,l){ol(document.head,U),a(e,D,l),a(e,Y,l),a(e,P,l),p(j,e,l),a(e,K,l),p(J,e,l),a(e,O,l),p(T,e,l),a(e,ee,l),a(e,m,l),a(e,le,l),a(e,C,l),a(e,se,l),a(e,b,l),a(e,ae,l),a(e,w,l),a(e,te,l),a(e,I,l),a(e,ne,l),a(e,h,l),a(e,ie,l),p(B,e,l),a(e,oe,l),a(e,G,l),a(e,Me,l),a(e,Z,l),a(e,re,l),a(e,f,l),a(e,ce,l),p(g,e,l),a(e,pe,l),a(e,v,l),a(e,ye,l),a(e,V,l),a(e,ue,l),p(R,e,l),a(e,de,l),a(e,E,l),a(e,Ue,l),a(e,z,l),a(e,me,l),a(e,W,l),a(e,je,l),a(e,k,l),a(e,Je,l),p(A,e,l),a(e,Te,l),a(e,q,l),a(e,Ce,l),a(e,X,l),a(e,be,l),p(N,e,l),a(e,we,l),a(e,Q,l),a(e,Ie,l),a(e,S,l),a(e,he,l),a(e,x,l),a(e,Be,l),p(F,e,l),a(e,Ge,l),a(e,H,l),a(e,Ze,l),p(_,e,l),a(e,fe,l),a(e,$,l),ge=!0},p:sl,i(e){ge||(y(j.$$.fragment,e),y(J.$$.fragment,e),y(T.$$.fragment,e),y(B.$$.fragment,e),y(g.$$.fragment,e),y(R.$$.fragment,e),y(A.$$.fragment,e),y(N.$$.fragment,e),y(F.$$.fragment,e),y(_.$$.fragment,e),ge=!0)},o(e){u(j.$$.fragment,e),u(J.$$.fragment,e),u(T.$$.fragment,e),u(B.$$.fragment,e),u(g.$$.fragment,e),u(R.$$.fragment,e),u(A.$$.fragment,e),u(N.$$.fragment,e),u(F.$$.fragment,e),u(_.$$.fragment,e),ge=!1},d(e){e&&(s(D),s(Y),s(P),s(K),s(O),s(ee),s(m),s(le),s(C),s(se),s(b),s(ae),s(w),s(te),s(I),s(ne),s(h),s(ie),s(oe),s(G),s(Me),s(Z),s(re),s(f),s(ce),s(pe),s(v),s(ye),s(V),s(ue),s(de),s(E),s(Ue),s(z),s(me),s(W),s(je),s(k),s(Je),s(Te),s(q),s(Ce),s(X),s(be),s(we),s(Q),s(Ie),s(S),s(he),s(x),s(Be),s(Ge),s(H),s(Ze),s(fe),s($)),s(U),d(j,e),d(J,e),d(T,e),d(B,e),d(g,e),d(R,e),d(A,e),d(N,e),d(F,e),d(_,e)}}}const yl='{"title":"Construyendo Sistemas RAG con Agentes","local":"construyendo-sistemas-rag-con-agentes","sections":[{"title":"Recuperación Básica con DuckDuckGo","local":"recuperación-básica-con-duckduckgo","sections":[],"depth":2},{"title":"Herramienta de Base de Conocimiento Personalizada","local":"herramienta-de-base-de-conocimiento-personalizada","sections":[],"depth":2},{"title":"Capacidades de Recuperación Mejoradas","local":"capacidades-de-recuperación-mejoradas","sections":[],"depth":2},{"title":"Recursos","local":"recursos","sections":[],"depth":2}],"depth":1}';function ul(Ve){return al(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class bl extends tl{constructor(U){super(),nl(this,U,ul,pl,ll,{})}}export{bl as component};

Xet Storage Details

Size:
28.3 kB
·
Xet hash:
1ff73c7d705ac4dcf09ada7c60dce09e7b2c02e50580c5f3a998462aeb3e5aff

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.