- Langzeit- und Kurzzeitgedächtnis mit SQLite - Ollama-Integration für lokale LLMs - Flask-Webinterface mit Stream-Response - Persona-System mit konfigurierbarem Charakter - Auto-Zusammenfassung bei Token-Limit - Rate Limiting und Sicherheitsfeatures - Uncensored Modell-Support
88 lines
1.9 KiB
Markdown
88 lines
1.9 KiB
Markdown
# Nimue - Submissive AI Companion
|
|
|
|
Ein lokaler Chatbot mit Langzeit- und Kurzzeitgedächtnis basierend auf Ollama.
|
|
|
|
## 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
|
|
|
|
## Installation
|
|
|
|
### Voraussetzungen
|
|
|
|
```bash
|
|
# Ollama installieren
|
|
curl -fsSL https://ollama.com/install.sh | sh
|
|
|
|
# Modell herunterladen
|
|
ollama pull HammerAI/rocinante-v1.1:12b-q4_K_M
|
|
|
|
# Python-Abhängigkeiten
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Konfiguration
|
|
|
|
Editiere `config.yaml`:
|
|
|
|
```yaml
|
|
ollama:
|
|
host: "http://localhost:11434"
|
|
model: "HammerAI/rocinante-v1.1:12b-q4_K_M"
|
|
|
|
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
|
|
```
|
|
|
|
## Architektur
|
|
|
|
```
|
|
Benutzer-Eingabe
|
|
↓
|
|
MemoryManager (Kurzzeit)
|
|
↓
|
|
OllamaClient → Local LLM
|
|
↓
|
|
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
|
|
|
|
## Sicherheit
|
|
|
|
- Rate Limiting: 30 Anfragen/Minute
|
|
- Session Timeouts nach 60 Min Inaktivität
|
|
- Maximale Eingabelänge: 2000 Zeichen
|
|
- Keine externen Datenverbindungen |