Biblioteca de Python que proporciona una capa de memoria para aplicaciones de IA, con soporte para la integración de MongoDB y funciones de búsqueda semántica.
Detalles del Proyecto MemoRizz
Resumen del Proyecto
MemoRizz es una biblioteca de gestión de memoria Python diseñada para aplicaciones de IA, que proporciona a los agentes de IA capacidades de almacenamiento de información persistente, consciente del contexto y con búsqueda semántica. Este proyecto, a través de la integración perfecta de MongoDB con la tecnología de incrustación de vectores, dota a los agentes de funciones cognitivas complejas, incluyendo el seguimiento del historial de conversaciones, la gestión del uso de herramientas y el mantenimiento de roles consistentes.
⚠️ Advertencia Importante: MemoRizz es una biblioteca experimental, destinada únicamente a fines educativos. No se recomienda su uso en entornos de producción o con datos sensibles.
Características Principales
🧠 Memoria Persistente
- Permite a los agentes de IA mantener la memoria entre sesiones
- Soporta el almacenamiento y la recuperación de información a largo plazo
- Gestión de memoria consciente del contexto
🔍 Búsqueda Semántica
- Utiliza lenguaje natural para encontrar información relevante
- Búsqueda de similitud basada en incrustaciones de vectores
- Integración con la búsqueda de vectores de MongoDB Atlas
🛠️ Integración de Herramientas
- Descubrimiento y ejecución automática de funciones
- Convierte funciones Python en herramientas invocables por LLM
- Indexación semántica y descubrimiento de herramientas por lenguaje natural
👤 Sistema de Roles
- Crea roles de agente especializados y consistentes
- Personaliza el comportamiento y el estilo de respuesta del agente
- Establecimiento de antecedentes y objetivos del rol
📊 Búsqueda de Vectores
- Recuperación eficiente con la búsqueda de vectores de MongoDB Atlas
- Incrustación e indexación automática de la información almacenada
- Soporte para la clasificación de múltiples tipos de memoria
Arquitectura del Sistema
┌─────────────────┐
│ MemAgent │ ← Interfaz de agente de alto nivel
├─────────────────┤
│ Persona │ ← Personalidad y comportamiento del agente
├─────────────────┤
│ Toolbox │ ← Registro y descubrimiento de funciones
├─────────────────┤
│ Memory Provider │ ← Capa de abstracción de almacenamiento
├─────────────────┤
│ Vector Search │ ← Similitud y recuperación semántica
├─────────────────┤
│ MongoDB │ ← Backend de almacenamiento persistente
└─────────────────┘
Requisitos de Instalación
- Python 3.7+
- Cuenta de MongoDB Atlas (o MongoDB local con búsqueda de vectores)
- Clave API de OpenAI (para incrustaciones y funcionalidades de LLM)
Método de Instalación
pip install memorizz
Ejemplo de Uso Básico
1. Configuración Básica del Agente
import os
from memorizz.memory_provider.mongodb.provider import MongoDBConfig, MongoDBProvider
from memorizz.memagent import MemAgent
from memorizz.llms.openai import OpenAI
# Configurar la clave API
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
# Configurar el proveedor de memoria de MongoDB
mongodb_config = MongoDBConfig(uri="your-mongodb-atlas-uri")
memory_provider = MongoDBProvider(mongodb_config)
# Crear MemAgent
agent = MemAgent(
model=OpenAI(model="gpt-4"),
instruction="You are a helpful assistant with persistent memory.",
memory_provider=memory_provider
)
# Iniciar conversación - el agente mantendrá la memoria entre sesiones
response = agent.run("Hello! My name is John and I'm a software engineer.")
print(response)
# Más tarde en otra sesión...
response = agent.run("What did I tell you about myself?")
print(response) # El agente recuerda que John es ingeniero de software
2. Uso del Sistema de Roles
from memorizz.persona import Persona
# Crear rol de experto técnico
tech_expert = Persona(
name="TechExpert",
role="Senior Software Engineer",
goals="Help developers solve complex technical problems with detailed explanations.",
background="10+ years experience in Python, AI/ML, and distributed systems."
)
# Aplicar el rol al agente
agent.set_persona(tech_expert)
agent.save()
# Ahora el agente responderá como un experto técnico
response = agent.run("How should I design a scalable microservices architecture?")
3. Integración de Herramientas
from memorizz.database.mongodb import MongoDBTools, MongoDBToolsConfig
# Configurar la base de datos de herramientas
tools_config = MongoDBToolsConfig(
uri="your-mongodb-atlas-uri",
database_name="my_tools_db"
)
# Registrar herramientas usando un decorador
with MongoDBTools(tools_config) as tools:
toolbox = tools.mongodb_toolbox()
@toolbox
def calculate_compound_interest(principal: float, rate: float, time: int) -> float:
"""Calculate compound interest for financial planning."""
return principal * (1 + rate) ** time
@toolbox
def get_weather(city: str) -> str:
"""Get current weather for a city."""
# Tu código de integración de API del clima
return f"Weather in {city}: 72°F, sunny"
# Añadir herramientas al agente
agent.add_tool(toolbox=tools)
# El agente ahora puede descubrir y usar estas herramientas automáticamente
response = agent.run("What's the weather in San Francisco and calculate interest on $1000 at 5% for 3 years?")
Tipos de Memoria
MemoRizz soporta diferentes categorías de memoria para organizar la información:
- Conversation: Historial de chat y contexto de conversación
- Task: Información orientada a objetivos y seguimiento del progreso
- Workflow: Información de procesos de múltiples pasos
- General: Conocimiento fáctico e información declarativa
- Working: Espacio de procesamiento temporal (contexto LLM)
Características Avanzadas
Almacenamiento y Recuperación de Memoria
# Almacenar información con incrustación automática
agent.store_memory("I prefer Python for backend development", memory_type="general")
# Más tarde, las consultas semánticamente relevantes recuperarán esta información
response = agent.run("What programming languages do I like?")
# El agente encontrará y utilizará la preferencia almacenada
Control de Memoria con Metadatos
# Almacenar información con metadatos
agent.store_memory(
content="Completed project X with React and Node.js",
memory_type="task",
metadata={"project": "X", "technologies": ["React", "Node.js"]}
)
# Recuperar memoria específica
memories = agent.retrieve_memories(
query="projects with React",
memory_type="task",
limit=5
)
Configuración del Entorno
# Requerido
export OPENAI_API_KEY="your-openai-api-key"
export MONGODB_URI="your-mongodb-atlas-uri"
# Opcional
export MONGODB_DB_NAME="memorizz" # Nombre de base de datos por defecto
Pasos de Configuración
- Crear un clúster de MongoDB Atlas
- Habilitar la búsqueda de vectores en el clúster
- Crear una base de datos y colecciones para tu agente
- Obtener la cadena de conexión
Problemas Comunes
- Conexión a MongoDB: Asegúrate de que tu IP esté en la lista blanca en Atlas
- Búsqueda de Vectores: Verifica que la búsqueda de vectores esté habilitada en el clúster
- Clave API: Comprueba que la clave API de OpenAI sea válida y tenga créditos
Proyectos de Ejemplo
Consulta ejemplos de trabajo completos en el directorio examples/
:
- Agente Básico: Un agente de conversación simple con memoria
- Agente Especializado: Un experto técnico con roles
- Integración de Herramientas: Un agente con llamadas a funciones personalizadas
- Gestión de Memoria: Almacenamiento y recuperación de memoria avanzada
Valor de Aprendizaje Técnico
Esta biblioteca demuestra los siguientes conceptos clave:
- Arquitectura de Agentes de IA: Memoria, razonamiento y uso de herramientas
- Bases de Datos Vectoriales: Búsqueda y recuperación semántica
- Integración de LLM: Llamadas a funciones y gestión de contexto
- Diseño de Software: Abstracciones claras y arquitectura escalable