# Nimue - Submissive AI Companion Ein lokaler Chatbot mit Langzeit- und Kurzzeitgedächtnis, multimodaler Bilderkennung und Ollama-Integration. ## Features - **Langzeitgedächtnis**: SQLite-Datenbank speichert alle Gespräche - **Kurzzeitgedächtnis**: RAM-basiert für schnellen Kontextzugriff - **Auto-Zusammenfassung**: Alte Nachrichten werden automatisch zusammengefasst statt verworfen - **Persona-System**: Konfigurierbare Charaktereigenschaften - **Präferenzen-Lernen**: Erkennt und speichert Benutzerpräferenzen - **Token-Schutz**: Verhindert Context-Overflow - **Rate Limiting**: Schutz vor Überlastung - **Stream-Response**: Echtzeit-Antworten - **Vision / Bilderkennung**: Unterstützt Bild-Uploads über das Webinterface (Gemma-4 Vision) ## Installation ### Voraussetzungen ```bash # Ollama installieren curl -fsSL https://ollama.com/install.sh | sh # Vision-Modell herunterladen ollama pull aratan/gemma-4-E4B-q8-it-heretic:latest # Python-Abhängigkeiten pip install -r requirements.txt ``` ### Konfiguration Editiere `config.yaml`: ```yaml ollama: host: "http://localhost:11434" model: "aratan/gemma-4-E4B-q8-it-heretic:latest" memory: max_context_tokens: 4096 # Kontextfenster short_term_limit: 2048 # RAM-Cache long_term_limit: 1024 # Für Zusammenfassungen persona: name: "Nimue" # System Prompt anpassbar ``` ## Verwendung ```bash # Starten python main.py # Oder cd nimue && python -m nimue.app # Webinterface öffnen firefox http://localhost:5000 ``` ### Bilder senden Im Chat-Interface auf die 📷-Schaltfläche klicken, ein Bild auswählen und optional Text hinzufügen. Nimue analysiert und beschreibt das Bild vollständig. ## Architektur ``` Benutzer-Eingabe (+ optional Bild) ↓ MemoryManager (Kurzzeit) ↓ OllamaClient → Local LLM (Vision-fähig) ↓ MemoryManager (Speicherung) ↓ Stream-Antwort ``` ## Gedächtnis-System - **Kurzzeit**: Aktuelle Sitzung (RAM) - **Langzeit**: Alle vergangenen Gespräche (SQLite) - **Zusammenfassung**: Bei 80% Token-Nutzung werden alte Nachrichten komprimiert und archiviert - **Bilder**: Werden in der Session verarbeitet, im Langzeitgedächtnis als Hinweis gespeichert ## Sicherheit - Rate Limiting: 30 Anfragen/Minute - Session Timeouts nach 60 Min Inaktivität - Maximale Eingabelänge: 2000 Zeichen - Maximale Bildgröße: 8MB (automatisch resized für Ollama) - Keine externen Datenverbindungen