Primeros pasos con los agentes de Agno: uv, RAG y memoria
Aprende a crear agentes de Agno en Python con esta guía paso a paso. Configura uv, añade búsqueda web, memoria y RAG con LanceDB, y crea equipos multiagente.
Actualizado Publicado 24 min de lectura

Agno Agents Tutorials
Part 1 of 4
Quieres un agente de IA que busque en la web, recuerde tus preferencias y rebusque en PDFs. Agno es un framework Python de código abierto para crear agentes de Agno que hacen exactamente eso. Combínalo con uv, el gestor de paquetes basado en Rust de Astral (entre 10 y 100 veces más rápido que pip), y puedes tener agentes funcionando esta misma noche.
Esta guía es una renovación completa para Agno 2.x. A fecha de agosto de 2026, la última versión estable es 2.8.6 (la v3.0.0a1 está en alfa si quieres vivir al límite). Si has visto tutoriales antiguos de Agno (incluida la versión original de marzo de 2025 de este artículo), la API recibió una revisión importante en la v2.0. Viejos conocidos como SqliteAgentStorage, PDFUrlKnowledgeBase y Agent(team=[...]) han desaparecido, sustituidos por un conjunto de herramientas más limpio. Todo lo que sigue está verificado contra la versión real.
Primero configuraremos uv y luego construiremos un agente de Agno que empieza como un simple chatbot y crece hasta convertirse en un sistema de Generación Aumentada por Recuperación (RAG) con memoria, impulsado por LanceDB y DuckDuckGo. Terminaremos con un equipo de dos agentes que se coordinan en preguntas complejas. Fragmentos de código, desglose de costes y solución de problemas incluidos.
Actualizado para Agno 2.x
Este artículo se publicó originalmente en marzo de 2025 con Agno 1.x. Ha sido reescrito y verificado con Agno 2.8.6 (agosto de 2026). El vídeo incrustado a continuación muestra la API antigua en acción. El código de esta guía está actualizado.
Primeros pasos con los agentes de Agno
Paso 1: Configura tu entorno con uv
Antes de instalar Agno, necesitas un gestor de paquetes de Python rápido. uv viene del equipo de Astral (los mismos detrás de ruff) y le da mil vueltas a pip.
Puedes consultar más sobre cómo empezar con uv.
Instalación de uv
Para macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | shPara Windows (PowerShell):
irm https://astral.sh/uv/install.ps1 | iexComprueba que está vivo:
uv --version # Expect "uv 0.12" or newerInicialización de un proyecto
Inicializa el proyecto:
uv 0.12+ cambió la estructura por defecto
A partir de uv 0.12.0, uv init crea un proyecto empaquetado por defecto (estructura src/ con sistema de compilación). Para este tutorial usamos una estructura plana con main.py, así que pasa --no-package. Si lo olvidas, tu código irá en src/agno_adventure/main.py en su lugar.
uv init --no-package agno-adventure
cd agno-adventureEsto genera una estructura de proyecto ordenada: pyproject.toml para las dependencias, .python-version, main.py donde escribir el código, un README.md y un repositorio git nuevo. Fija Python 3.12 por coherencia (¿necesitas instalar Python en Mac primero?):
uv python pin 3.12Configuración del entorno
Ahora, crea un entorno virtual:
uv venv
source .venv/bin/activate # Windows: .venv\Scripts\activateInstala lo esencial. Agno divide sus integraciones en extras opcionales, así que solo instalas lo que necesitas:
uv add "agno[openai,lancedb,pdf,ddg,sqlite]" typer richEsa única línea instala:
agno: el propio framework, más:openai: el proveedor de modelos de OpenAI (los modelos GPT son el predeterminado de Agno)lancedb: nuestra base de datos vectorial para el RAG de más adelantepdf: el lector de PDF (pypdfinternamente)ddg: búsqueda web con DuckDuckGo (a través del paquete modernoddgs)sqlite: almacenamiento de sesiones en SQLite (sqlalchemyy compañía)
typeryrich: para la CLI interactiva que construiremos en el Paso 5
Agno necesita una clave de API de OpenAI, así que configúrala:
export OPENAI_API_KEY="sk-your-key-here"Consejo profesional: Guarda tus claves en un archivo .env. uv run carga automáticamente .env desde el directorio de tu proyecto, así que no necesitas herramientas adicionales. Solo añade OPENAI_API_KEY=tu-clave-aquí a .env y ejecuta los scripts con uv run python main.py.
Paso 2: Tu primer agente de Agno
Vamos a construir tu primer agente. Agno es un framework Python de código abierto (~40k estrellas en GitHub, licencia Apache-2.0) que hace sencillo crear agentes de IA. Nuestro primer agente es un chatbot simple.
El código
Edita main.py:
from agno.agent import Agent
agent = Agent(
model="openai:gpt-5.5",
description="You're a cheerful AI pal who loves a good chat!",
markdown=True
)
agent.print_response("Hey! What's cooking today?", stream=True)Ejecútalo:
uv run python main.pyConsejo: añade debug_mode=True
Añade debug_mode=True a cualquier constructor de Agent para ver las llamadas a herramientas sin procesar, los prompts del modelo y los tiempos en la salida del terminal. Ideal para aprender qué ocurre bajo el capó.
Cómo funciona
Agent: la clase central. Defines la personalidad (víadescription), el modelo y las herramientas.model="openai:gpt-5.5": Agno 2.x usa referencias de modelo en forma de cadena como"proveedor:id-de-modelo". La cadena se resuelve a la clase de modelo correcta internamente (para OpenAI corresponde aOpenAIResponses). Puedes cambiar a cualquier proveedor:"anthropic:claude-sonnet-4-5","google:gemini-3.5-flash","ollama:llama3.1:8b", etc. El estilo antiguo basado en clases (from agno.models.openai import OpenAIChat) sigue importándose por compatibilidad, pero las referencias de cadena son más limpias.description: define la personalidad del agente. Aquí es un chatbot amigable.markdown=True: formatea las respuestas con Markdown.print_response: transmite la respuesta en tiempo real.
Obtendrás una respuesta como «¡Hola! Solo estoy aquí para animar tu día. ¿Qué hay en el menú?» Es básico, pero funciona.
Más sobre Agno
Agno es ligero y rápido. Maneja chatbots simples y agentes complejos con múltiples herramientas sin abstracciones pesadas. Puedes añadir herramientas, memoria y bases de conocimiento de forma incremental. Si TypeScript es más lo tuyo, puedes crear un agente de IA con Mastra en su lugar. Pero el enfoque Python-first de Agno funciona muy bien para el prototipado rápido.
Desde la v2.0, Agno también incluye AgentOS, un runtime que sirve tus agentes como APIs REST con trazado, aislamiento de sesiones y RBAC. Lo veremos más adelante.
Solución de problemas
- “ModuleNotFoundError”: ¿Olvidaste un paquete? Ejecuta
uv add "agno[openai]"e inténtalo de nuevo. - Agente silencioso: Revisa tu
OPENAI_API_KEY. Sin clave, no hay chat.
Paso 3: Añadir herramientas de búsqueda web con DuckDuckGo
El agente puede chatear pero no puede buscar nada. Vamos a añadirle la búsqueda web de DuckDuckGo.
El código
Actualiza main.py:
from agno.agent import Agent
from agno.tools.duckduckgo import DuckDuckGoTools
agent = Agent(
model="openai:gpt-5.5",
description="You're a web-savvy AI explorer!",
tools=[DuckDuckGoTools()],
markdown=True
)
agent.print_response("What's the buzz in New York right now?", stream=True)Ejecútalo:
uv run python main.pyCómo funciona
DuckDuckGoTools: da a tu agente búsqueda web. Decide cuándo usarla en función de la pregunta.- Llamadas a herramientas en el terminal: el antiguo parámetro
show_tool_calls=Truedesapareció en Agno 2.x. Cuando transmites una respuesta, el impresor de la CLI muestra las llamadas a herramientas a medida que ocurren. Para un detalle de traza completo, añadedebug_mode=TruealAgento ejecuta el agente a través de AgentOS e inspecciona la UI de trazas. - Salida: Espera algo como «Llamando a DuckDuckGo… ¡Aquí tienes lo último de Nueva York!». Ahora es un conversador que conoce el mundo.
El poder de las herramientas de Agno
El sistema de herramientas de Agno es modular. DuckDuckGoTools es solo una opción: Agno soporta un conjunto creciente de herramientas que puedes combinar, desde APIs hasta funciones Python personalizadas (solo pasa cualquier función en tools=[...]). También puedes integrar herramientas vía Model Context Protocol (MCP), el estándar emergente para la interoperabilidad de herramientas; consulta Agno con Context7 MCP para un ejemplo práctico.
Si necesitas una API de búsqueda web con más control (resultados estructurados, paginación, geolocalización), TinyFish Web Search API merece un vistazo para agentes en producción que superan los límites de tasa de DuckDuckGo.
Solución de problemas
- Sin resultados web: Asegúrate de que el extra
ddgestá instalado — ejecutauv add "agno[ddg]". - ¿Atascado?: Los límites de tasa podrían ser el culpable. Añade
debug_mode=TruealAgentpara ver en profundidad qué lo está frenando.
Paso 4: Memoria de Agno que perdura
Nuestro agente tiene carisma pero lo olvida todo en un parpadeo. Vamos a darle una mejora de memoria con el almacenamiento respaldado por SQLite de Agno, convirtiéndolo en un compañero leal.
El código
Crea memory_agent.py:
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from rich.pretty import pprint
agent = Agent(
model="openai:gpt-5.5",
description="You're an AI with a memory like an elephant!",
user_id="dragos",
db=SqliteDb(db_file="tmp/agent_storage.db"),
add_history_to_context=True,
num_history_runs=3,
update_memory_on_run=True,
session_id="my_chat_session",
markdown=True
)
agent.print_response("I love spicy Thai food. What's your favorite cuisine?")
agent.print_response("What did I just say I love?")
# Inspect what the agent remembers
pprint(agent.get_session_messages(session_id="my_chat_session"))
pprint(agent.get_user_memories(user_id="dragos"))Ejecútalo:
uv run python memory_agent.pyCómo funciona
La API de memoria recibió una gran limpieza en Agno 2.x: la antigua clase SqliteAgentStorage y todo el paquete agno.storage han desaparecido. Este es el nuevo modelo:
Memoria vs historial vs estado
Agno separa tres conceptos limpiamente. Memoria = hechos extraídos sobre un usuario, delimitados por user_id, compartidos entre sesiones. Historial de chat = mensajes y llamadas a herramientas de ejecuciones anteriores, delimitados por session_id, para continuidad conversacional. Estado de sesión = datos de aplicación (carritos, listas de tareas, contadores) gestionados por tu código o herramientas.
db=SqliteDb(db_file=...): Almacena sesiones, historial de chat y memorias extraídas en una base de datos SQLite. Sin servicio adicional.user_id="dragos": Delimita la extracción de memoria a un usuario específico. Sin él, las memorias no se recuperarán de forma fiable entre sesiones.add_history_to_context=True+num_history_runs=3: Introduce las últimas ejecuciones (cada una con todos sus mensajes) en el prompt, dando contexto conversacional. Sustituyen a los antiguosadd_history_to_messages/num_history_responses.update_memory_on_run=True: Activa la memoria automática: tras cada ejecución, Agno extrae hechos duraderos sobre el usuario (preferencias, objetivos) y los almacena indexados poruser_id. La alternativa es la memoria agéntica (enable_agentic_memory=True), donde el propio modelo decide cuándo inspeccionar, crear o actualizar memorias durante una ejecución. Elige un modo por agente.session_id: Vincula las interacciones bajo una sesión: usa el mismo ID y es como retomar justo donde lo dejaste.get_session_messages()/get_user_memories(): La forma v2 de mirar dentro: historial de chat y hechos extraídos, respectivamente. El antiguo atributoagent.memory.messagesya no existe.search_knowledge=True: En realidad es el valor por defecto cuando hay una base deknowledgeconfigurada en el agente, así que no necesitas especificarlo explícitamente, pero mantenerlo ahí es inofensivo y deja clara la intención.
Pregunta sobre comida tailandesa y luego pon a prueba su memoria. Declarará orgulloso: «¡Te encanta la comida tailandesa picante!». ¡Memoria desbloqueada!
Este patrón es la base de agentes del mundo real como un bot de Discord con IA y Agno que recuerda a los usuarios entre conversaciones.
Solución de problemas
- Amnesia: ¿Mismo
session_id? ¿Mismouser_id? Revisa ambos: la memoria se delimita poruser_idy el historial porsession_id. - Sin almacenamiento: Ejecuta
uv add "agno[sqlite]"— es la columna vertebral del almacenamiento SQLite. - Directorio inexistente: Ejecuta
mkdir tmpsi el directoriotmp/aún no existe.
Consejo profesional: Para proyectos más grandes, cambia SqliteDb por PostgresDb de agno.db.postgres con uv add "agno[postgres]". Puedes desplegar una base de datos vectorial Postgres con pgvector para combinar búsqueda vectorial y almacenamiento de sesiones en una sola base de datos.
Paso 5: RAG con LanceDB — el conocimiento es tu superpoder
Es hora de convertir a tu agente en un experto en cocina tailandesa con RAG (Generación Aumentada por Recuperación). Usando LanceDB, extraerá recetas de PDFs y las respaldará con ingenio web, ¡en modo interactivo!
El código
Crea rag_agent.py:
import typer
from rich.prompt import Prompt
from agno.agent import Agent
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.reader.pdf_reader import PDFReader
from agno.vectordb.lancedb import LanceDb, SearchType
from agno.tools.duckduckgo import DuckDuckGoTools
# LanceDB Vector DB
vector_db = LanceDb(
table_name="recipes",
uri="tmp/lancedb",
search_type=SearchType.hybrid,
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
)
# Knowledge Base
knowledge = Knowledge(
vector_db=vector_db,
readers=[PDFReader()],
)
def lancedb_agent(user: str = "user"):
agent = Agent(
model="openai:gpt-5.5",
description="You're a Thai cuisine expert with web backup!",
user_id=user,
knowledge=knowledge,
search_knowledge=True,
tools=[DuckDuckGoTools()],
instructions=[
"Search the knowledge base for Thai recipes first.",
"Use DuckDuckGo if more info is needed."
],
markdown=True
)
print(f"Session ID: {agent.session_id}\n")
while True:
message = Prompt.ask(f"[bold] :sunglasses: {user} [/bold]")
if message in ("exit", "bye"):
break
agent.print_response(message, stream=True)
if __name__ == "__main__":
# Load the PDF into the knowledge base (idempotent - safe to run every time)
knowledge.insert(url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")
typer.run(lancedb_agent)Ejecútalo:
uv run python rag_agent.pyAlternativa CLI integrada
Si no quieres incorporar typer y rich, puedes usar agent.cli_app() en su lugar: te da un bucle de chat interactivo básico sin dependencias adicionales.
Cómo funciona
La API de conocimiento se reestructuró por completo en Agno 2.x: PDFUrlKnowledgeBase desapareció. Esta es la nueva forma:
Knowledge: La única clase de base de conocimiento (deagno.knowledge.knowledge). Combina una base de datos vectorial, lectores opcionales e ingesta de contenido.readers=[PDFReader()]: Indica a la base de conocimiento cómo analizar PDFs (el extrapdfinstalapypdfinternamente). Los lectores ahora viven enagno.knowledge.reader: hay versiones listas para PDF, DOCX, CSV, Markdown, Excel, YouTube, Wikipedia y más.knowledge.insert(url=...): El sustituto en v2 deknowledge_base.load(recreate=True): descarga el archivo, lo analiza con el lector correspondiente, lo trocea y lo incrusta en la base de datos vectorial. Es idempotente por defecto (upsert=True), así que reejecutar el script no duplicará contenido. También puedes insertar porpath=local,text_content=en crudo o inclusotopics=para una carga basada en consultas.LanceDb+SearchType.hybrid: La búsqueda híbrida combina búsquedas por palabra clave y semánticas para una precisión máxima; y como LanceDB pasó a la búsqueda de texto completo nativa, ya no necesitas el paquetetantivy.OpenAIEmbedder: Se movió en v2: ahora vive enagno.knowledge.embedder.openai. Misma idea: convierte texto en embeddings usandotext-embedding-3-small.search_knowledge=True: El flag de v2 que permite al agente buscar en su base de conocimiento durante una ejecución (RAG agéntico: el agente decide cuándo recuperar). En realidad es el valor por defecto cuandoknowledgeestá configurado.typer/Prompt: Mantiene el chat activo hasta que digas «bye»: ¡perfecto para cazar recetas!- Salida: Pregunta «¿Cómo hago sopa de coco con pollo y galanga?». Rebuscará en el PDF y luego navegará por la web si es necesario.
La ventaja RAG de Agno
RAG combina la recuperación (desde LanceDB) con la generación (vía GPT), convirtiendo a tu agente en un ninja del conocimiento. Agno soporta más de 20 bases de datos vectoriales, desde opciones locales como LanceDB y ChromaDB hasta servicios gestionados como Pinecone y Weaviate, y te permite cambiarlas modificando unas pocas líneas.
Solución de problemas
- El PDF no carga: Verifica la URL y ejecuta
uv add "agno[pdf,lancedb]". - Errores de embeddings:
OpenAIEmbeddernecesita la mismaOPENAI_API_KEYque el modelo de chat: revisa tu.env. - Sin prompt de chat: Ejecuta
uv add typer richpara las bondades interactivas (o usaagent.cli_app()). - Contenido duplicado: No te preocupes:
insert()hace upsert por defecto, así que reejecutar es seguro.
Consejo profesional: Añade más fuentes a knowledge.insert() — libros de cocina, guías de viaje, documentos en markdown — para crear un imperio de conocimiento personalizado.
Paso 6: Equipos multiagente — dúo de chef e investigador
¿Por qué quedarse con un agente cuando puedes tener un dúo dinámico? Vamos a emparejar un chef tailandés con un investigador web para una colaboración puramente mágica.
El código
Crea team_agent.py:
from agno.agent import Agent
from agno.db.sqlite import SqliteDb
from agno.knowledge.knowledge import Knowledge
from agno.knowledge.embedder.openai import OpenAIEmbedder
from agno.knowledge.reader.pdf_reader import PDFReader
from agno.vectordb.lancedb import LanceDb, SearchType
from agno.tools.duckduckgo import DuckDuckGoTools
from agno.team import Team, TeamMode
# Shared knowledge base
vector_db = LanceDb(
table_name="recipes",
uri="tmp/lancedb",
search_type=SearchType.hybrid,
embedder=OpenAIEmbedder(id="text-embedding-3-small"),
)
knowledge = Knowledge(vector_db=vector_db, readers=[PDFReader()])
knowledge.insert(url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf")
# Chef Agent
chef = Agent(
name="ThaiChef",
role="Thai cuisine expert",
model="openai:gpt-5.5",
knowledge=knowledge,
search_knowledge=True,
instructions=["Provide detailed Thai recipes from the knowledge base."],
markdown=True
)
# Researcher Agent
researcher = Agent(
name="WebResearcher",
role="Web info gatherer",
model="openai:gpt-5.5",
tools=[DuckDuckGoTools()],
instructions=["Search the web for supplementary info when asked."],
markdown=True
)
# Team Leader
team = Team(
name="Thai Team",
members=[chef, researcher],
mode=TeamMode.coordinate,
db=SqliteDb(db_file="tmp/team_storage.db"),
instructions=[
"Ask ThaiChef for recipes first.",
"If more context is needed, consult WebResearcher.",
"Blend their inputs into a cohesive answer."
],
markdown=True
)
team.print_response("Tell me about Thai chicken soup and its cultural significance.", stream=True)Ejecútalo:
uv run python team_agent.pyCómo funciona
La colaboración multiagente obtuvo una clase dedicada en Agno 2.x: Agent(team=[...]) desapareció. Saluda a agno.team.Team:
Team(members=[...]): El líder del equipo coordina a sus agentes miembros, delegando tareas según susroles y sintetizando resultados. Los miembros pueden ser incluso equipos anidados.TeamMode: Hace explícitos los estilos de colaboración:coordinate(por defecto; descomponer el trabajo, delegar, sintetizar),route(enviar a un único especialista),broadcast(la misma tarea a todos los miembros) otasks(bucle de lista de tareas hasta terminar).ThaiChef: Gurú de recetas, extrayendo del PDF vía LanceDB:OpenAIEmbedderproduce los embeddings ysearch_knowledge=Truele permite recuperar durante las ejecuciones.WebResearcher: Sabueso web, desenterrando contexto cultural con DuckDuckGo.db=SqliteDb(...): Mantiene las sesiones y el historial del equipo al día entre ejecuciones.- Salida: Obtendrás una receta y una historia, como «¡Esta sopa es un clásico tailandés, ligada a antiguas tradiciones herbales!».
Para una configuración multiagente más avanzada, mira cómo construir un escuadrón de investigación con IA en Agno usando Streamlit y múltiples agentes especializados.
Solución de problemas
- Equipo mudo: Añade
debug_mode=TruealTeampara espiar la charla de delegación. - Problema de almacenamiento: Asegúrate de que el import de
SqliteDbestá ahí y de quetmp/existe. - Inicio lento:
knowledge.insert()hace upsert por defecto, así que puedes sacar la inserción del camino crítico (o protegerla con una comprobación de archivo) una vez cargado el PDF.
Cuánto cuesta — precios de la API de un vistazo
Recorrer este tutorial no tiene por qué arruinarte. Esto es lo que te espera a fecha de agosto de 2026:
| Modelo | Entrada (por 1M de tokens) | Salida (por 1M de tokens) | Ventana de contexto |
|---|---|---|---|
gpt-5.4-mini |
$0.75 | $3.00 | 1,000,000 |
gpt-5.6-luna |
$1.00 | $6.00 | 1,000,000 |
gpt-5.5 |
$5.00 | $30.00 | 1,050,000 |
gpt-5.6-sol |
$5.00 | $30.00 | 1,050,000 |
Mi recomendación para aprender: cambia todos los ejemplos ejecutables a "openai:gpt-5.4-mini". Es el predeterminado documentado de Agno, y todo el tutorial te costará menos de 0,10 $. Reserva gpt-5.5 o gpt-5.6-sol para cuando estés construyendo algo de verdad.
Los embeddings (text-embedding-3-small) se facturan aparte de los tokens de chat: son tirados de precio para los volúmenes de este tutorial.
Vigila tu gasto
Establece límites de uso de OpenAI en platform.openai.com/usage, especialmente antes de ejecutar el ejemplo del equipo multiagente: hace varias llamadas de agente por petición.
Notas de producción: telemetría, seguridad y despliegue
Desactivar la telemetría (opcional)
Agno envía un evento de telemetría por ejecución de agente (solo la elección del proveedor del modelo: no se envían prompts, mensajes ni salidas). Si prefieres excluirte:
export AGNO_TELEMETRY=falseAñádelo a tu archivo .env para hacerlo permanente en el proyecto.
AgentOS — publica tu agente como una API REST
Una vez que tu agente funciona en local, puedes servirlo como una API REST de producción con AgentOS, el runtime integrado de Agno que añade streaming, trazado, aislamiento de sesiones y RBAC basado en JWT:
uv add "agno[os]"from agno.os import AgentOS
# Assuming you have an `agent` and `db` already defined
agent_os = AgentOS(agents=[agent], db=db)
agent_os.serve(port=7777)Esto te da una API REST en http://localhost:7777 y una UI de trazas. También puedes gestionar agentes desde el plano de control en la nube en os.agno.com.
Advertencia de seguridad
El quickstart local de AgentOS se ejecuta sin autenticación. No expongas el puerto 7777 a la Internet pública sin configurar primero Security y Auth. Trátalo como cualquier otro servidor de desarrollo sin autenticación: solo localhost hasta que lo endurezcas.
Despliegue: Cuando estés listo para ejecutar esto en un VPS, puedes desplegar un proyecto Python con uv con Dokploy y Docker. Para hosting barato y fiable, yo miraría un VPS de Hetzner (desde unos 4,50 €/mes) o un droplet de DigitalOcean: ambos manejan un despliegue ligero de AgentOS sin despeinarse.
Los precios de los VPS subieron en todos los proveedores en 2026: si estás reconsiderando una máquina alquilada, mira qué cambió y cuándo gana un mini PC.
Conclusión: tu viaje con Agno despega
Acabas de pasar de cero a construir agentes de IA reales. Con la velocidad vertiginosa de uv, configuraste un entorno profesional en segundos. Luego, con Agno 2.x, creaste un agente que chatea, navega por la web, recuerda con SQLite, domina RAG con LanceDB y se une a un equipo para tareas complejas.
Puntos clave:
- uv: Configuración todo en uno que sustituye a
pip,venvy más — con carga automática de.envintegrada. - Agentes de Agno: Ligeros, modulares y rápidos, con memoria, herramientas y RAG que hacen útiles a tus agentes desde el primer momento.
- Equipos multiagente: Coordina agentes especializados que abordan juntos las grandes preguntas.
¿Qué sigue? Algunas direcciones que vale la pena perseguir:
- Sumérgete en los extras de Agno: entradas multimodales (imágenes, audio, vídeo), workflows (pipelines de agentes deterministas) y más de 100 toolkits preconstruidos. Prueba a construir Agno Workflows para pipelines estructurados.
- Explora
agent.cli_app(): un bucle de chat interactivo integrado que sustituye el patrón typer/rich sin dependencias adicionales. - Publícalo con AgentOS: convierte tu agente en una API REST de producción con trazado y RBAC (consulta las notas de producción anteriores).
Agno 3.0 también está en alfa (v3.0.0a1), así que el framework avanza rápido. Merece la pena vigilar el changelog.
Ahora ve a preparar esa sopa de pollo tailandesa de la que tu agente no para de hablar. Tienes el código, las habilidades y las herramientas: ve a construir algo.
Explora Agno Workflows Crea un escuadrón de investigaciónPreguntas frecuentes
¿Qué versión de Python soporta Agno?
Agno requiere Python >=3.9, <4. Este tutorial fija Python 3.12 por coherencia, pero cualquier versión 3.9+ funcionará. Si necesitas ayuda configurando Python, aquí tienes cómo instalar Python en Mac.
¿Puedo usar un modelo local en lugar de OpenAI?
Sí. Usa "ollama:llama3.1:8b" (o cualquier modelo que tengas descargado en Ollama) como cadena de modelo. Necesitas Ollama ejecutándose en local: no hace falta clave de API. El compromiso: los modelos locales son más lentos y la calidad depende de tu hardware, pero pagas cero por token.
¿Cuánto cuesta hacer este tutorial?
Con gpt-5.4-mini (el predeterminado de Agno), menos de 0,10 $ por todo el recorrido, incluidos los pasos de RAG y multiagente. Con gpt-5.5, espera unos pocos dólares según la longitud de la salida. Los embeddings (text-embedding-3-small) añaden fracciones de céntimo para este volumen.
¿La telemetría de Agno es opt-out?
Sí. Establece AGNO_TELEMETRY=false en tu entorno o archivo .env. Agno solo envía la elección del proveedor del modelo: nunca prompts, salidas ni datos personales.
¿Cuál es la diferencia entre Agno y otros frameworks como Mastra o CrewAI?
Agno es Python-first, ligero (~sin abstracciones pesadas) e incluye AgentOS para el despliegue de serie. Mastra es TypeScript-first y es una buena opción si ya estás en el ecosistema Node: aquí tienes cómo crear un agente de IA con Mastra. CrewAI y LangGraph son frameworks de orquestación más pesados, con más abstracciones integradas pero también más boilerplate. El punto dulce de Agno es «añade lo que necesitas, omite lo que no».


