Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.

Comience con la integración de MongoDB Agno

Puede integrar MongoDB con Agno para configurar una Base de Conocimiento con capacidad de búsqueda y un historial de conversaciones persistente para sus agentes de IA. Este tutorial demuestra cómo configurar un agente de Agno para usar MongoDB para la recuperación de conocimientos y el almacenamiento de sesiones, y luego usar esa configuración para compilar un asistente de cocina. Específicamente, realiza las siguientes tareas:

  1. Configura tu entorno.

  2. Configure MongoDB como una Base de Conocimiento de Agno.

  3. Compilar un asistente que responda a preguntas de sus documentos y recuerde turnos anteriores en la conversación.

  4. Ejecute el archivo y haga una revisión de la salida.

Agno es un marco de Python de código abierto para crear agentes de IA multimodales. Un agente de Agno se compone de componentes modulares, que incluyen una Base de Conocimiento opcional y una base de datos opcional, que se configuran de forma independiente y se pasan al mismo objeto Agent.

MongoDB proporciona dos de estos componentes, que puede utilizar importando las siguientes clases:

  1. MongoVectorDb clase: implementa la interfaz de base de datos vectorial de Agno con la búsqueda vectorial de MongoDB, lo que permite a un agente recuperar documentos relevantes de una colección de MongoDB

  2. MongoDb clase: Implementa la interfaz de base de datos de Agno, persistiendo las sesiones del agente, las memorias y las métricas como documentos en las colecciones de MongoDB

Tip

Agno nombra ambas clases de MongoDB MongoDb, por lo que exporta la clase de base de datos vectorial como MongoVectorDb para evitar una colisión. Para aprender más información, consulta Integrar MongoDB con el Agno Framework.

Este tutorial utiliza ambos componentes y almacena sus datos en la misma implementación de MongoDB.

Para completar este tutorial, debes tener los siguientes recursos:

  • Uno de los siguientes tipos de clúster de MongoDB:

    • Un clúster de Atlas que ejecute la versión 6.0.11 de MongoDB, 7.0.2, o posterior. Asegúrese de que su dirección IP esté incluida en la lista de acceso de su proyecto Atlas.

    • Una implementación local de Atlas creada con Python y Docker. Instala atlas-local-lib-py (pip install atlas-local-lib-py) para crear y gestionar implementaciones locales mediante programación. Para obtener más información, consulta el repositorio atlas-local-lib-py.

    • Un clúster de MongoDB Community con Search y búsqueda vectorial instalados.

  • Una llave de API de OpenAI. Debes tener una cuenta de OpenAI con créditos disponibles para las solicitudes de API. Para obtener más información sobre cómo registrar una cuenta de OpenAI, consulta el sitio web de la API de OpenAI.

  • Python v3.9 o posterior.

1

Ejecuta los siguientes comandos en tu terminal para crear un nuevo directorio llamado agno-mongodb-project e instalar las dependencias necesarias:

mkdir agno-mongodb-projectcd agno-mongodb-projectpip install agno pymongo openai python-dotenv pypdf
2

En tu directorio agno-mongodb-project, crea un archivo .env y añade el siguiente código:

OPENAI_API_KEY="<openai-api-key>"MONGODB_URI="<connection-string>"

Se debe sustituir <connection-string> por la cadena de conexión del clúster Atlas o de la implementación local de Atlas.

Su cadena de conexión debe usar el siguiente formato:

mongodb+srv://<db_username>:<db_password>@<clusterName>.<hostname>.mongodb.net

IMPORTANTE: Asegúrate de que tu cadena de conexión incluya las credenciales de tu usuario de base de datos. Para obtener más información sobre cómo encontrar tu cadena de conexión, consulta Conectar a un clúster a través de Librerías de clientes.

3

En su directorio agno-mongodb-project, cree un archivo llamado main.py. Añada el siguiente código a este archivo para cargar las variables de entorno:

import osfrom dotenv import load_dotenvfrom agno.agent import Agentfrom agno.db.mongo import MongoDbfrom agno.knowledge.knowledge import Knowledgefrom agno.models.openai import OpenAIChatfrom agno.vectordb.mongodb import MongoVectorDb load_dotenv()

En pasos futuros, añadirá código a este archivo para compilar su Base de Conocimiento y asistente.

En esta sección, configurará MongoDB como el almacén de vectores para una Base de Conocimiento de Agno, almacenará datos en ella y ejecutará una query de búsqueda semántica en ella.

1

Añada el siguiente código para configurar un almacén de vectores respaldado por MongoDB para su Base de Conocimiento:

vector_db = MongoVectorDb( collection_name="agent_knowledge", db_url=os.environ["MONGODB_URI"], database="agno",) knowledge = Knowledge(vector_db=vector_db)

El código anterior crea una instancia de MongoVectorDb y la pasa al parámetro vector_db de un objeto Knowledge. Dado que es la primera vez que utiliza la colección agent_knowledge, Agno la crea junto con un índice de búsqueda vectorial de MongoDB denominado vector_index_1.

El índice debería tardar alrededor de un minuto en compilarse. Mientras se crea, el índice se encuentra en un estado de sincronización inicial. Cuando se termine de construir, se podrá empezar a consultar los datos de tu colección.

2

Agregue el siguiente código a su archivo main.py para cargar un archivo PDF que contenga recetas tailandesas en su Base de Conocimiento:

knowledge.insert( name="Recipes", url="https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf",)

Agno descarga el archivo, hace una división en fragmentos, genera una incrustación para cada fragmento con el incrustador de OpenAI por defecto y guarda los resultados en su colección.

Tip

Para inspeccionar los documentos almacenados, explore la colección agno.agent_knowledge en la Interfaz de Usuario de Atlas. Cada documento tiene un campo content con un fragmento del texto de la receta y un campo embedding que contiene el vector generado. Para aprender más, consulta Ver colecciones.

3

Agregue el siguiente código a su archivo main.py para query directamente la base de datos vectorial de su Base de Conocimiento antes de conectarlo a un agente. Este ejemplo busca los tres fragmentos más relevantes para una pregunta sobre el curry verde:

results = vector_db.search(query="How do I make a green curry?", limit=3) for doc in results: print(f"[{doc.name}] {doc.content[:80]}")

Los resultados incluyen los fragmentos de recetas que son más relevantes semánticamente para la query, clasificados por puntuación de similitud.

En esta sección, combinarás tu base de conocimientos con una base de datos de MongoDB para compilar un asistente completo. El agente recupera documentos relevantes de su Base de Conocimiento para responder preguntas, y almacena su historial de conversaciones en MongoDB para que pueda consultar turnos anteriores.

1

Agregue el siguiente código a su archivo main.py para configurar una instancia MongoDb para el almacenamiento de sesiones, y luego cree un agente que utilice este almacén de sesiones y la Base de Conocimiento configurada en la sección anterior:

db = MongoDb( db_url=os.environ["MONGODB_URI"], db_name="agno",) agent = Agent( model=OpenAIChat(id="gpt-4o"), knowledge=knowledge, db=db, search_knowledge=True, add_history_to_context=True, num_history_runs=5, instructions=[ "You are a helpful cooking assistant.", "Answer questions using only the recipes in your knowledge base.", "If the knowledge base does not contain a relevant answer, say so clearly.", ],)
2

Añada el siguiente código a su archivo main.py para enviar dos mensajes al agente:

SESSION_ID = "cooking-session-001" # First turnagent.print_response( "My favorite Thai dish is massaman curry.", session_id=SESSION_ID,) # Second turnagent.print_response( "How do I make my favorite dish?", session_id=SESSION_ID,)

El agente recupera los fragmentos de recetas más relevantes de su Base de Conocimiento en cada turno. Debido a que ambas llamadas utilizan el mismo valor session_id, Agno también recupera datos de la respuesta anterior. Agno recupera los metadatos de la sesión de la colección agno_sessions y el contenido del mensaje de la colección agno_runs. Si omite session_id o pasa un valor diferente en la segunda llamar, Agno inicia una nueva sesión y el agente no tiene registro del primer turno.

Para ejecutar el archivo main.py, ejecute el siguiente comando desde su directorio agno-mongodb-project:

python main.py

Si el comando se ejecuta correctamente, el resultado se parecerá al siguiente:

INFO Connected to MongoDB successfully.INFO Creating collection 'agent_knowledge'.INFO Creating search index 'vector_index_1'.INFO Search index 'vector_index_1' is ready.INFO Search index 'vector_index_1' created successfully.INFO Adding content from URL https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdfINFO Upserting 14 documents # Output from the vector_db.search() call[Recipes] INGREDIENTS (One serving) 150 grams chicken, cut into bite-size pieces 50 grams[Recipes] Thai SELECT Exotic, Healthy, Delicious Dining-Thai Style Thai food has rapidly g[Recipes] Directions: 1. Roughly pound the garlic with bird's eye chilies in a mortar. Add # Output from the agent.print_response() calls┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ My favorite Thai dish is massaman curry. ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┏━ Response (gpt-4o) ────────────────────────────────────────────┓┃ Great choice — I found a recipe in the knowledge base for ┃┃ Massaman Gai (Massaman Curry with Chicken and Potatoes). ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ ┏━ Message ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓┃ How do I make my favorite dish? ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛┏━ Response (gpt-4o) ────────────────────────────────────────────┓┃ Here's how to make Massaman Gai (Massaman Curry with Chicken ┃┃ and Potatoes) from the knowledge base: ┃┃ **Ingredients** ┃┃ - 300 grams chicken rump ┃┃ - 80 grams Massaman curry paste ┃┃ - 100 grams coconut cream ┃┃ - 300 grams coconut milk ┃┃ - 250 grams chicken stock ┃┃ - 50 grams roasted peanuts ┃┃ - 200 grams potatoes, chopped into large chunks ┃┃ - 100 grams onion, chopped into large chunks ┃┃ ... ┃┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Para aprender más sobre las clases MongoVectorDb y MongoDb, incluida su referencia completa de parámetros y métodos, consulte Integrar MongoDB con Agno Framework.

Para aprender más sobre el índice de búsqueda vectorial de MongoDB que Agno crea en su colección, consulte Crear un índice de búsqueda vectorial de MongoDB.