Home
Login

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.

MITPython 290RichmondAlakememorizz Last Updated: 2025-06-30

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

  1. Crear un clúster de MongoDB Atlas
  2. Habilitar la búsqueda de vectores en el clúster
  3. Crear una base de datos y colecciones para tu agente
  4. 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

Star History Chart