Python-Bibliothek für eine Speicherschicht für KI-Anwendungen mit Unterstützung für MongoDB-Integration und semantische Suche
Detaillierte Projektbeschreibung von MemoRizz
Projektübersicht
MemoRizz ist eine Python-Bibliothek zur Speicherverwaltung, die speziell für KI-Anwendungen entwickelt wurde. Sie bietet KI-Agenten die Möglichkeit, Informationen persistent, kontextsensitiv und semantisch durchsuchbar zu speichern. Durch die nahtlose Integration von MongoDB und Vektor-Embedding-Technologien verleiht dieses Projekt Agenten komplexe kognitive Funktionen, einschließlich der Verfolgung von Gesprächsverläufen, der Verwaltung der Tool-Nutzung und der Aufrechterhaltung konsistenter Rollen.
⚠️ Wichtiger Hinweis: MemoRizz ist eine experimentelle Bibliothek und dient ausschließlich zu Bildungszwecken. Die Verwendung in Produktionsumgebungen oder mit sensiblen Daten wird nicht empfohlen.
Kernfunktionen
🧠 Persistenter Speicher
- Ermöglicht KI-Agenten, sich zwischen Sitzungen zu erinnern
- Unterstützt die Speicherung und den Abruf von Langzeitinformationen
- Kontextsensitive Speicherverwaltung
🔍 Semantische Suche
- Findet relevante Informationen mithilfe natürlicher Sprache
- Ähnlichkeitssuche basierend auf Vektor-Embeddings
- MongoDB Atlas Vektorsuche-Integration
🛠️ Tool-Integration
- Automatische Erkennung und Ausführung von Funktionen
- Konvertiert Python-Funktionen in von LLM aufrufbare Tools
- Semantische Indizierung und natürliche Spracherkennung von Tools
👤 Rollensystem
- Erstellt konsistente, spezialisierte Agenten-Rollen
- Passt das Verhalten und den Antwortstil des Agenten an
- Festlegung von Rollenhintergrund und Zielen
📊 Vektorsuche
- Effizienter Abruf mit MongoDB Atlas Vektorsuche
- Automatisches Embedding und Indizierung gespeicherter Informationen
- Unterstützung für die Klassifizierung verschiedener Speichertypen
Systemarchitektur
┌─────────────────┐
│ MemAgent │ ← Hochstufige Agenten-Schnittstelle
├─────────────────┤
│ Persona │ ← Agenten-Persönlichkeit und -Verhalten
├─────────────────┤
│ Toolbox │ ← Funktionsregistrierung und -erkennung
├─────────────────┤
│ Memory Provider │ ← Speicherabstraktionsschicht
├─────────────────┤
│ Vector Search │ ← Semantische Ähnlichkeit und Abruf
├─────────────────┤
│ MongoDB │ ← Persistentes Speicher-Backend
└─────────────────┘
Installationsanforderungen
- Python 3.7+
- MongoDB Atlas Konto (oder lokales MongoDB mit Vektorsuche)
- OpenAI API-Schlüssel (für Embeddings und LLM-Funktionen)
Installationsmethode
pip install memorizz
Grundlegendes Anwendungsbeispiel
1. Grundlegende Agenten-Einrichtung
import os
from memorizz.memory_provider.mongodb.provider import MongoDBConfig, MongoDBProvider
from memorizz.memagent import MemAgent
from memorizz.llms.openai import OpenAI
# API-Schlüssel festlegen
os.environ["OPENAI_API_KEY"] = "your-openai-api-key"
# MongoDB-Speicheranbieter konfigurieren
mongodb_config = MongoDBConfig(uri="your-mongodb-atlas-uri")
memory_provider = MongoDBProvider(mongodb_config)
# MemAgent erstellen
agent = MemAgent(
model=OpenAI(model="gpt-4"),
instruction="You are a helpful assistant with persistent memory.",
memory_provider=memory_provider
)
# Konversation starten - der Agent behält die Erinnerung zwischen den Sitzungen
response = agent.run("Hello! My name is John and I'm a software engineer.")
print(response)
# Später in einer anderen Sitzung...
response = agent.run("What did I tell you about myself?")
print(response) # Der Agent erinnert sich, dass John ein Softwareentwickler ist
2. Verwendung des Rollensystems
from memorizz.persona import Persona
# Rolle des Tech-Experten erstellen
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."
)
# Rolle auf den Agenten anwenden
agent.set_persona(tech_expert)
agent.save()
# Der Agent wird nun als Tech-Experte antworten
response = agent.run("How should I design a scalable microservices architecture?")
3. Tool-Integration
from memorizz.database.mongodb import MongoDBTools, MongoDBToolsConfig
# Tool-Datenbank konfigurieren
tools_config = MongoDBToolsConfig(
uri="your-mongodb-atlas-uri",
database_name="my_tools_db"
)
# Tools mit Dekorator registrieren
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."""
# Dein Wetter-API-Integrationscode
return f"Weather in {city}: 72°F, sunny"
# Tools zum Agenten hinzufügen
agent.add_tool(toolbox=tools)
# Der Agent kann diese Tools nun automatisch erkennen und verwenden
response = agent.run("What's the weather in San Francisco and calculate interest on $1000 at 5% for 3 years?")
Speichertypen
MemoRizz unterstützt verschiedene Speicherkategorien zur Organisation von Informationen:
- Conversation: Chat-Verlauf und Konversationskontext
- Task: Zielorientierte Informationen und Fortschrittsverfolgung
- Workflow: Informationen zu mehrstufigen Prozessen
- General: Faktenwissen und deklarative Informationen
- Working: Temporärer Arbeitsbereich (LLM-Kontext)
Erweiterte Funktionen
Speichern und Abrufen von Speicherinhalten
# Informationen mit automatischem Embedding speichern
agent.store_memory("I prefer Python for backend development", memory_type="general")
# Später werden semantisch relevante Abfragen diese Informationen abrufen
response = agent.run("What programming languages do I like?")
# Der Agent wird die gespeicherte Präferenz finden und verwenden
Speicherverwaltung mit Metadaten
# Informationen mit Metadaten speichern
agent.store_memory(
content="Completed project X with React and Node.js",
memory_type="task",
metadata={"project": "X", "technologies": ["React", "Node.js"]}
)
# Spezifische Speicherinhalte abrufen
memories = agent.retrieve_memories(
query="projects with React",
memory_type="task",
limit=5
)
Umgebungskonfiguration
# Erforderlich
export OPENAI_API_KEY="your-openai-api-key"
export MONGODB_URI="your-mongodb-atlas-uri"
# Optional
export MONGODB_DB_NAME="memorizz" # Standard-Datenbankname
Einrichtungsschritte
- Erstellen Sie einen MongoDB Atlas Cluster
- Aktivieren Sie die Vektorsuche auf dem Cluster
- Erstellen Sie eine Datenbank und Sammlungen für Ihren Agenten
- Rufen Sie die Verbindungszeichenfolge ab
Häufig gestellte Fragen (FAQ)
- MongoDB-Verbindung: Stellen Sie sicher, dass Ihre IP in Atlas auf der Whitelist steht
- Vektorsuche: Überprüfen Sie, ob die Vektorsuche auf dem Cluster aktiviert ist
- API-Schlüssel: Überprüfen Sie, ob der OpenAI API-Schlüssel gültig ist und Guthaben vorhanden ist
Beispielprojekte
Vollständige funktionierende Beispiele finden Sie im Verzeichnis examples/
:
- Grundlegender Agent: Ein einfacher Konversationsagent mit Speicher
- Spezialisierter Agent: Ein technischer Experte mit Rollen
- Tool-Integration: Ein Agent mit benutzerdefinierten Funktionsaufrufen
- Speicherverwaltung: Erweiterte Speicherung und Abruf von Speicherinhalten
Technischer Lernwert
Diese Bibliothek demonstriert die folgenden Schlüsselkonzepte:
- KI-Agenten-Architektur: Speicher, Inferenz und Tool-Nutzung
- Vektordatenbanken: Semantische Suche und Abruf
- LLM-Integration: Funktionsaufrufe und Kontextverwaltung
- Software-Design: Klare Abstraktionen und skalierbare Architektur