- 🤖 Mama Bot – Persönlicher KI-Assistent für ältere Personen
🤖 Mama Bot – Persönlicher KI-Assistent für ältere Personen
Ein liebevoller, geduldiger WhatsApp-Bot für eine ältere Privatperson (55–65 Jahre). Läuft kostenlos auf Hugging Face Spaces mit Hugging Face Inference API.
📋 Inhaltsverzeichnis
- Architektur-Übersicht
- Kostenübersicht
- Deployment auf Hugging Face Spaces
- WhatsApp-Anbindung
- Konfiguration
- Funktionen
- Keep-Alive: Space wach halten
- Monitoring
- Erweiterung
- Bekannte Limitierungen
🏗️ Architektur-Übersicht
┌─────────────────────────────────────────────────────────────┐
│ Hugging Face Space │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ FastAPI │ │ Scheduler │ │ Memory (JSON) │ │
│ │ Webhook │ │ (Morgen, │ │ user_profile │ │
│ │ Handler │ │ Check-in) │ │ topics_sent │ │
│ └──────┬───────┘ └──────┬───────┘ └──────────────────┘ │
│ │ │ │
│ └────────┬─────────┘ │
│ │ │
│ ┌────────▼────────┐ │
│ │ HF Inference │ ← kostenlos, kein API-Key │
│ │ API (Mistral) │ nötig für öffentliche Spaces │
│ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
│ ▲
│ WhatsApp-Nachrichten │ Antworten
▼ │
┌──────────────────────┐ ┌──────────┴─────────┐
│ WAHA Container │ │ WhatsApp-App │
│ (WhatsApp HTTP │──────▶│ auf dem Handy │
│ API, selbst- │ │ der Person │
│ gehostet) │ └─────────────────────┘
└──────────────────────┘
Warum Hugging Face Spaces?
| Kriterium | HF Spaces | Railway | Oracle Cloud |
|---|---|---|---|
| Kosten | 0 € | 0 € (5 $/Monat Credit) | 0 € (Free Tier) |
| RAM | 16 GB | 8 GB | 1 GB (ARM: 24 GB) |
| CPU | 2 vCPU | 1 vCPU | 1-4 vCPU |
| Speicher | 50 GB | 1 GB | 50 GB |
| Docker | ✅ | ✅ | ✅ |
| Einfachheit | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ |
| Inference API | ✅ (kostenlos) | ❌ | ❌ |
Empfehlung: Hugging Face Spaces – einfachste Einrichtung, kostenlose Inference API, genug Rechenpower.
Warum Hugging Face Inference API?
- Kostenlos – kein API-Key nötig auf öffentlichen Spaces
- Deutsch – Mistral 7B versteht und spricht exzellent Deutsch
- Schnell – keine Warteliste, sofort verfügbar
- Datenschutz – Daten bleiben innerhalb der HF-Infrastruktur
Warum WAHA für WhatsApp?
| Option | Kosten | Business-Account | Einfachheit |
|---|---|---|---|
| WAHA | 0 € (selbst-gehostet) | ❌ nicht nötig | ⭐⭐⭐⭐ |
| Green API | 0 € (Developer Tier) | ❌ nicht nötig | ⭐⭐⭐⭐⭐ |
| Meta WABA | 0 € (1.000 Gespräche/Monat) | ✅ nötig | ⭐⭐⭐ |
Empfehlung: Green API für den Einstieg (einfachste Einrichtung), WAHA für volle Kontrolle.
💰 Kostenübersicht
| Komponente | Kosten | Bemerkung |
|---|---|---|
| Hugging Face Space | 0 € | Free Tier, Docker-basiert |
| HF Inference API | 0 € | Auf Spaces inkludiert |
| Green API | 0 € | Developer Tier: 100 Nachrichten/Tag |
| WAHA (selbst-gehostet) | 0 € | Läuft im gleichen Space oder VPS |
| Gesamt | 0 €/Monat | 🎉 |
🚀 Deployment auf Hugging Face Spaces
Schritt 1: Hugging Face Account erstellen
- Gehe zu huggingface.co
- Klicke auf "Sign Up" und erstelle einen kostenlosen Account
- Bestätige deine E-Mail-Adresse
Schritt 2: Neuen Space erstellen
- Klicke auf dein Profil → "New Space"
- Einstellungen:
- Name:
mama-bot - License: MIT
- Space SDK: Docker
- Visibility: Public (für kostenlose Inference API)
- Hardware: CPU Basic (kostenlos)
- Name:
- Klicke auf "Create Space"
Schritt 3: Dateien hochladen
Option A: Über die Web-Oberfläche
- Gehe zu deinem neuen Space
- Klicke auf "Files" → "Upload files"
- Lade alle Dateien hoch:
app.pyscheduler.pybot_config.pyrequirements.txtDockerfiletopics/italy.jsontopics/tenerife.jsontopics/recipes.jsontopics/travel_nature.jsonmemory/user_profile.json
Option B: Über Git (empfohlen)
# Auf deinem lokalen Rechner
cd /Users/maximiliankrupp/Documents/mama-bot
# Git initialisieren
git init
git add .
git commit -m "Initial commit - Mama Bot"
# Remote hinzufügen (ersetze <dein-username>)
git remote add origin https://huggingface.co/spaces/<dein-username>/mama-bot
# Hochladen
git push -u origin main
Schritt 4: Secrets konfigurieren
- Gehe zu deinem Space → "Settings" → "Repository secrets"
- Füge folgende Secrets hinzu:
| Secret Name | Wert | Beschreibung |
|---|---|---|
HF_TOKEN |
hf_xxxxx |
Hugging Face API Token (optional für öffentliche Spaces) |
USER_NAME |
Maria |
Name der Person |
USER_PHONE |
491711234567 |
WhatsApp-Nummer (mit Ländervorwahl, ohne +) |
MORNING_HOUR |
8 |
Uhrzeit für Morgennachrichten |
MORNING_MINUTE |
0 |
Minute für Morgennachrichten |
CHECKIN_DAYS |
3 |
Tage ohne Kontakt bis Check-in |
- Klicke auf "Save"
Schritt 5: Space starten
- Gehe zu "Settings" → "Container"
- Klicke auf "Restart Space"
- Warte 2-3 Minuten bis der Space gestartet ist
- Prüfe unter "Logs" ob alles läuft
Schritt 6: Webhook-URL notieren
Die Webhook-URL ist:
https://<dein-username>-mama-bot.hf.space/webhook
Du brauchst sie für die WhatsApp-Konfiguration.
📱 WhatsApp-Anbindung
Option A: Green API (empfohlen für Einstieg)
Gehe zu green-api.com
Erstelle einen kostenlosen Developer-Account
Erstelle eine neue Instanz (Instance)
Scanne den QR-Code mit der WhatsApp-App der Person
Notiere:
idInstanceapiTokenInstance
Webhook einrichten:
- Gehe zu deiner Instanz → "Settings"
- Setze Webhook URL:
https://<dein-username>-mama-bot.hf.space/webhook - Aktiviere: "incomingMessageReceived"
Option B: WAHA (selbst-gehostet)
Für VPS oder lokale Installation:
# WAHA starten
docker run -d \
--name waha \
-p 3000:3000 \
-e WHATSAPP_HOOK_URL=https://<dein-username>-mama-bot.hf.space/webhook \
-e WHATSAPP_HOOK_EVENTS=messages \
devlikeapro/waha:latest
# QR-Code anzeigen (zum Scannen mit WhatsApp)
docker logs waha
Scanne den QR-Code mit der WhatsApp-App der Person.
⚙️ Konfiguration
Umgebungsvariablen
| Variable | Standard | Beschreibung |
|---|---|---|
HF_TOKEN |
"" |
Hugging Face API Token |
HF_MODEL |
mistralai/Mistral-7B-Instruct-v0.3 |
Modell für Inference API |
USER_NAME |
Liebe/r Nutzer/in |
Name der Person |
USER_PHONE |
"" |
WhatsApp-Nummer |
MORNING_HOUR |
8 |
Stunde für Morgennachrichten |
MORNING_MINUTE |
0 |
Minute für Morgennachrichten |
CHECKIN_DAYS |
3 |
Tage ohne Kontakt bis Check-in |
WAHA_API_URL |
http://waha:3000 |
WAHA API URL |
WAHA_API_KEY |
"" |
WAHA API Key |
Benutzerprofil anpassen
Die Datei memory/user_profile.json enthält:
{
"name": "Maria",
"preferences": ["Italien", "Kochen", "Garten"],
"concerns": ["Rente", "Gesundheit"],
"phone_number": "491711234567",
"topics_sent": [],
"last_contact": null,
"last_morning_message": null
}
Du kannst sie über die API aktualisieren:
curl -X PUT https://<dein-username>-mama-bot.hf.space/profile \
-H "Content-Type: application/json" \
-d '{"name": "Maria", "preferences": ["Italien", "Kochen"]}'
🎯 Funktionen
1. Automatische Morgennachrichten
- Zeit: Täglich um 08:00 Uhr (konfigurierbar)
- Rotation: 4 Themen-Kategorien, rotierend nach Wochentag
- Anti-Wiederholung: Gesendete Themen werden getrackt
- Montags: Zusätzliche Frage zum Wochenprogramm
2. Interaktiver Chat-Assistent
- Normaler Chat: Freundliche, einfache Antworten
- Notfall-Modus: Sofortige Telefonnummern und Schritt-für-Schritt-Anleitung
- Behörden & Rente: Erklärungen in einfacher Sprache, Fristen, Beratungsstellen
- Gesundheit & Pflege: Pflegegrad, MDK, Pflegegeld erklärt
- Vergesslichkeits-Helper: Reminder-Funktion
3. Check-in System
- Sendet eine sanfte Nachricht nach 3 Tagen ohne Kontakt
- Konfigurierbar über
CHECKIN_DAYS
4. Kontextuelles Gedächtnis
- Speichert Name, Vorlieben, bekannte Probleme
- Konversationshistorie der letzten 10 Nachrichten
- Persistent in JSON-Dateien
🔄 Keep-Alive: Space wach halten
Problem: Hugging Face Free-Tier-Spaces schlafen nach 48 Stunden Inaktivität ein. Wenn der Space schläft, reagiert der Bot nicht mehr auf Nachrichten.
Lösung: Der Mama Bot hat einen doppelten Keep-Alive-Mechanismus:
A) Interner Self-Ping (automatisch ✅)
Der Bot pingt sich selbst alle 30 Minuten über einen internen Thread. Das kostet nichts und funktioniert sofort nach dem Deployment – keine Konfiguration nötig!
# Der Self-Ping Thread wird automatisch gestartet
# Pingt http://127.0.0.1:7860/keepalive alle 30 Minuten
B) Externer Ping (zusätzliche Sicherheit)
Für maximale Zuverlässigkeit kannst du einen kostenlosen externen Service einrichten:
Option 1: cron-job.org (empfohlen)
- Gehe zu cron-job.org
- Erstelle einen kostenlosen Account
- Klicke auf "Cronjobs erstellen"
- Einstellungen:
- URL:
https://<dein-username>-mama-bot.hf.space/keepalive - Intervall: Alle 30 Minuten
- Name: Mama Bot Keep-Alive
- URL:
- Speichern – fertig!
Option 2: UptimeRobot
- Gehe zu uptimerobot.com
- Erstelle einen kostenlosen Account
- Klicke auf "Add New Monitor"
- Einstellungen:
- Monitor Type: HTTP(s)
- URL:
https://<dein-username>-mama-bot.hf.space/ping - Monitoring Interval: 5 Minuten
- Speichern – fertig!
Option 3: Freshping
- Gehe zu freshping.io
- Erstelle einen kostenlosen Account
- Füge eine neue URL hinzu:
- URL:
https://<dein-username>-mama-bot.hf.space/keepalive - Intervall: 1 Minute
- URL:
- Speichern – fertig!
Keep-Alive Endpoints
| Endpoint | Zweck | Antwort |
|---|---|---|
/keepalive |
Vollständiger Keep-Alive mit Status | {"status": "alive", ...} |
/ping |
Einfacher Ping (UptimeRobot-kompatibel) | pong |
/health |
Detaillierter Health Check | JSON mit allen Infos |
Empfehlung
Der interne Self-Ping reicht in den meisten Fällen aus. Für maximale Sicherheit (z.B. wenn der Space mal neu startet) empfehle ich zusätzlich cron-job.org – das ist kostenlos und zuverlässig.
📊 Monitoring
Health Check
# Prüfen ob der Bot läuft
curl https://<dein-username>-mama-bot.hf.space/
# Detaillierter Health Check
curl https://<dein-username>-mama-bot.hf.space/health
Logs anzeigen
- Gehe zu deinem Space → "Logs"
- Dort siehst du alle Ausgaben des Bots
Aktive Reminders prüfen
curl https://<dein-username>-mama-bot.hf.space/reminders
Profil prüfen
curl https://<dein-username>-mama-bot.hf.space/profile
🔧 Erweiterung
Neue Themen hinzufügen
Erstelle eine neue JSON-Datei im topics/ Verzeichnis:
{
"topics": [
{
"id": "new_001",
"content": "Dein hier der Inhalt...",
"fun_fact": "Interessante Zusatzinfo"
}
]
}
Trage das neue Thema in bot_config.py ein:
TOPICS = {
...
"new_topic": {
"file": "topics/new_topic.json",
"emoji": "🌟",
"name": "Neues Thema",
"description": "Beschreibung"
}
}
Neuen Intent hinzufügen
- Keywords in
bot_config.pydefinieren - Handler-Funktion in
app.pyerstellen - In
detect_intent()undwebhook()einbinden
Neues Modell verwenden
Ändere die Umgebungsvariable:
HF_MODEL=mistralai/Mistral-7B-Instruct-v0.3
Empfohlene kostenlose Modelle:
mistralai/Mistral-7B-Instruct-v0.3(beste Deutsch-Qualität)Qwen/Qwen2.5-7B-Instruct(sehr gut für Deutsch)microsoft/Phi-3-mini-4k-instruct(schnell)
⚠️ Bekannte Limitierungen & Workarungen
1. HF Spaces schläft ein
Problem: Free Tier Spaces schlafen nach 48 Stunden Inaktivität ein.
Workaround (implementiert ✅):
- Interner Self-Ping: Der Bot pingt sich selbst alle 30 Minuten (automatisch, kein Setup nötig)
- Externer Ping (optional): cron-job.org, UptimeRobot oder Freshping rufen
/keepaliveauf - Siehe Abschnitt Keep-Alive für Details
2. Inference API Latenz
Problem: Die erste Anfrage kann 5-10 Sekunden dauern (Cold Start).
Workaround:
- Der Bot sendet sofort eine Bestätigung, dann die eigentliche Antwort
- Für Notfall-Anworten wird kein LLM verwendet (statische Antworten)
3. Kein persistentes Dateisystem
Problem: HF Spaces hat kein persistentes Dateisystem (außer dem Git-Repo).
Workaround:
- Alle Daten werden in JSON-Dateien im Repo gespeichert
- Bei Neustart werden die Daten aus dem Git-Repo geladen
- Für produktive Nutzung: Externen Storage (z.B. HF Datasets) anbinden
4. WhatsApp-Verbindung
Problem: WAHA/Green API benötigt eine aktive WhatsApp-Verbindung.
Workaround:
- Regelmäßige Health-Checks der WAHA-Instanz
- Automatische Neustarts bei Verbindungsverlust
- Green API Developer Tier: 100 Nachrichten/Tag (reicht für Privatnutzung)
5. LLM-Antworten können ungenau sein
Problem: Sprachmodelle können halluzinieren.
Workaround:
- Kritische Domains (Notfall, Behörden, Gesundheit) haben statische Antworten
- Immer Haftungshinweise hinzufügen
- System-Prompt mit klaren Grenzen
📄 Lizenz
MIT License – frei verwendbar und modifizierbar.
🙏 Dankeschön
Erstellt mit ❤️ für eine liebe Mama.
Krupp Capital Quantitative Desk – Precision in Chaos, Alpha in Variance