Commit graph

70 commits

Author SHA1 Message Date
Homelab Cursor
dcf70b087b fix(rag): breite Mehrfachsuche + mehr Treffer fuer Uebersichten
- wide_recall: bis 16 ES-Runden mit Sparten-/Gesellschafts-Queries, Merge
  nach Dedup-Key, bis 25 distinct Treffer, groessere Snippets.
- Normale Suche: top_k bis 15, ES bis 150.
- Forciertes RAG: top_k 25, Tool-Payload 32k Zeichen.
- Hinweis: 100% Vollstaendigkeit haengt von Index/OCR ab.
2026-03-26 17:12:13 +01:00
Homelab Cursor
44d80d2a9e feat(bot): Schalter Betriebsart Unterlagen (RAG zuerst)
- Neue Tastaturzeile: Unterlagen AUS/AN zeigt Modus und schaltet um.
- document_mode in ask_with_tools: erzwingt lokales Modell und RAG-Pflicht
  wie bei Doc-Keywords (Session wird bei Suche wie bisher bereinigt).
- Optional: doku:/rag: Prefix fuer einmalige Suche ohne Modus.
- Sprache und Hilfetext ergaenzt.
2026-03-26 17:05:06 +01:00
Homelab Cursor
d771a330c7 fix(routing): yearly costs to local RAG, not Sonar
- Remove standalone "kosten" from WEB_TRIGGERS (matched "jährlichen kosten" and sent Perplexity without tools).
- Add LOCAL_OVERRIDES for jahreskosten/jaehrlich/beitragsrechnung phrases.
- Extend forced-RAG keywords and enrich ES query with Beitrag/Beitragsrechnung for cost questions.
- System hint: extract amounts and periods per hit when possible.
2026-03-26 17:01:43 +01:00
Homelab Cursor
03f70fdda3 fix(rag): larger forced tool payload (12k) + list all insurance Sparten
- Forced rag_search used top_k=10 and tool content up to 12k chars (was 3k, cut off most hits).
- System instruction: enumerate each Sparte/doc type for same insurer, not only first hit.
- rag.py SYSTEM_PROMPT_EXTRA: same rule for multi-hit answers.
2026-03-26 16:56:29 +01:00
Homelab Cursor
7b6543be90 fix(rag): strip session history when forced RAG fires
Poisoned session history (4x wrong answers) overrode RAG results.
Now: when doc keywords trigger forced rag_search, rebuild messages
from scratch with ONLY system prompt + RAG results + question.
No session history = no poisoning.
2026-03-26 16:51:29 +01:00
Homelab Cursor
e5327cd65e fix(rag): force rag_search in code, do not rely on LLM tool-calling
The LLM ignores system injections when session history already
contains insurance answers. Now: when doc keywords detected, call
rag_search directly in Python, inject results as fake tool-call
into messages. LLM only needs to format the answer.
2026-03-26 16:48:21 +01:00
Homelab Cursor
98d0698db0 fix(rag): inject PFLICHT-reminder for doc-keywords to prevent LLM skipping rag_search
When session history already contained insurance/document answers,
the LLM would skip rag_search and hallucinate from memory.
Now: if doc keywords detected, inject system-message reminder AFTER
session history but BEFORE user question, forcing rag_search call.

Fixes #51 follow-up: LVM query returned wrong answer.
2026-03-26 16:38:29 +01:00
Homelab Cursor
0e1c7a6ebb llm: Routing-Fix — Dokument-Keywords in LOCAL_OVERRIDES
Versicherung/Vertrag/Steuer/Rente/Dokument etc. routen jetzt lokal
statt zu Sonar, damit rag_search per Tool-Calling aufgerufen wird.
Vorher: aktuell in Frage -> Sonar -> kein Tool-Calling -> kein RAG.
Ref: Issue #51
2026-03-26 14:43:56 +01:00
Homelab Cursor
d2a6391f52 feat(llm): Ollama warmup bei Start - Modelle permanent im VRAM
- warmup_ollama() laedt qwen3:30b-a3b + nomic-embed-text mit keep_alive=-1
- Wird beim Bot-Start in post_init() aufgerufen (via asyncio.to_thread)
- keep_alive=-1 nur ueber native Ollama API (/api/generate) moeglich
- GPU haelt 22.6/24 GB permanent: Text + Embeddings ohne Swap
2026-03-25 20:59:30 +01:00
Homelab Cursor
a0724ba6f1 refactor(llm): GPU-Architektur - Text lokal, Vision Cloud
- MODEL_VISION von qwen3-vl:32b (Ollama) auf openai/gpt-4o-mini (OpenRouter)
- Vision-Modell aus OLLAMA_MODELS entfernt (kein GPU-Swap mehr)
- keep_alive=-1 fuer Ollama: Textmodell bleibt permanent im VRAM
- RTX 3090 wird dedizierter Text+Embedding-Server
- Neue Dienste koennen Ollama mitnutzen ohne Konkurrenz
2026-03-25 20:56:55 +01:00
Homelab Cursor
92898a33e3 fix(llm): kein Fallback auf Textmodell bei Vision-Anfragen
Wenn qwen3-vl:32b timeout hat, wurde bisher auf qwen2.5:14b
(Textmodell) zurueckgefallen. Das kann keine Bilder sehen und
halluziniert stattdessen. Jetzt: allow_fallback=False fuer Vision
und klare Fehlermeldung bei Timeout.
2026-03-25 19:46:35 +01:00
Homelab Cursor
dbf2497cd6 Hausmeister Kumpel-Modus: OpenMemory (CT 122) angebunden
- openmemory_client.py: REST-API Client für search/add/list
- tools/openmemory.py: openmemory_add, openmemory_search, Kumpel SYSTEM_PROMPT_EXTRA
- llm.py: OpenMemory-Block in Prompt (Text + Bild)
- homelab.conf: OPENMEMORY Optionen dokumentiert
2026-03-24 14:03:19 +01:00
Homelab Cursor
c4553b46d7 feat: KI-Systemvorhersage (tools/predict.py) + taegl. 08:00 Job
- tools/predict.py: sammelt Disk-Trends (Prometheus), Fehler-Logs (Loki),
  Container-Status (Proxmox) und laesst lokales LLM eine Prognose erstellen
- telegram_bot.py: daily_forecast Job taegl. 08:00 Uhr, sendet Prognose via Telegram
- llm.py: Forecast-Trigger (vorhersage, prognose, was bahnt sich an etc.) -> lokal
2026-03-21 13:18:20 +01:00
Cursor
ebe6d21c18 feat(llm): Tiefensuche auf Perplexity Sonar Deep Research umgestellt
Open Deep Research (CT 121 LangGraph) deaktiviert — lieferte schlechte
Qualitaet. Sonar Deep Research ist schneller, zuverlaessiger, mit Quellen.
2026-03-21 12:58:16 +01:00
Cursor
ca770cfa44 feat(llm): Deep Research Trigger-Synonyme erweitert (tiefensuche, detailrecherche, etc.) 2026-03-21 12:42:25 +01:00
Cursor
204fe8fe36 fix(llm): _LOCAL_OVERRIDES Check fehlte in _route_model — jetzt korrekt eingefuegt 2026-03-21 12:22:16 +01:00
Cursor
eac6492fa0 fix(llm): Local-Override Routing — Homelab-Fragen immer lokal, auch mit Kosten-Keywords
_LOCAL_OVERRIDES pruefen vor _WEB_TRIGGERS: api kosten, guthaben, container,
feed, backup, etc. gehen immer ans lokale Modell.
2026-03-21 12:17:32 +01:00
Cursor
36d708bee1 refactor(llm): Local-First Routing mit Sonar-Websuche
- Basis: 981118f9 (lokales Qwen3 30B) wiederhergestellt
- Drei Pfade: lokal (qwen3:30b-a3b), Vision (qwen3-vl:32b), Sonar (perplexity/sonar)
- _route_model() fuer sauberes Routing (Web-Keywords -> Sonar, Rest -> lokal)
- /no_think fuer Ollama, Timeout-Fallback auf qwen2.5:14b
- Passthrough-Tools fuer Grafana-Daten
- deep_research TOOLS wieder aktiviert
- Preis-Spaghetti-Logik entfernt
2026-03-21 12:06:00 +01:00
Homelab Cursor
81f7bbff90 bot: Passthrough fuer vorformatierte Tool-Ergebnisse
Temperaturen/Energie/Heizung-Ausgaben werden direkt an den User
weitergeleitet, ohne nochmal durch die LLM zu gehen.
Behebt Umlaut-Verlust und Formatierungs-Aenderungen durch LLM.
2026-03-21 02:13:38 +01:00
Homelab Cursor
91dc5d8261 bot: Text-Modell auf OpenRouter gpt-4o-mini umgestellt
- MODEL = openai/gpt-4o-mini (schnell, zuverlaessig, perfektes Deutsch)
- Vision bleibt lokal auf qwen3-vl:32b (Ollama)
- FALLBACK_MODEL = qwen3:30b-a3b (lokaler Fallback fuer Vision-Timeout)
- SYSTEM_PROMPT: Tool-Ergebnisse 1:1 weitergeben Regel ergaenzt
- Behebt Umlaut-Probleme und Timeout-Instabilitaet
2026-03-21 02:09:00 +01:00
Homelab Cursor
db61aaedae fix(llm): Text-Routing auf qwen3:30b-a3b, Timeout-Fallback auf qwen2.5:14b
Vorher lief normaler Text ueber das grosse Vision-Modell qwen3-vl:32b,
was bei Tool-Calls (z.B. get_temperaturen) regelmaessig in Read-Timeouts
nach 120s resultierte.

Aenderungen:
- Text-Modell: qwen3:30b-a3b (MoE, schneller fuer reinen Text)
- Vision-Modell: bleibt qwen3-vl:32b (nur fuer Fotos/Dokumente)
- Fallback bei Timeout: qwen2.5:14b (einmaliger Retry)
- Ollama-Timeout modellabhaengig (180s Text, 240s Vision, 90s Fallback)
- Alle lokalen Modelle werden korrekt als Ollama erkannt
2026-03-21 02:00:36 +01:00
Cursor
9133ca4e05 perf(bot): Thinking-Modus abschalten (/no_think) — drastisch schnellere Antworten 2026-03-21 00:49:27 +01:00
Cursor
11ecc8fa24 upgrade(bot): qwen3-vl:30b (3B aktiv) -> qwen3-vl:32b (32B dense) — 10x mehr Parameter 2026-03-21 00:42:42 +01:00
Cursor
3f4af61389 fix(bot): Einheiten-Falle loesen — min 5 Ergebnisse bei Preisfragen, Gramm/Unze Warnung in Prompt und Suchergebnissen 2026-03-21 00:29:32 +01:00
Cursor
fdd3083628 fix(bot): Preis-Erkennung bei Bildern: Session-History pruefen, mehr Keywords, Einheiten-Warnung, Fallback-Hinweis 2026-03-21 00:25:42 +01:00
Cursor
59de3e3a49 fix(bot): bei Bild+Preisfrage erzwinge web_search statt Bild-Extraktion, max_tokens 4000 2026-03-21 00:16:41 +01:00
Cursor
83d3e2c4d7 fix(bot): bei Preisfragen immer web_search nutzen, auch wenn Bild mitgeschickt wird 2026-03-21 00:13:23 +01:00
Cursor
3d0b3084ad fix(bot): Reasoning/Thinking NIEMALS an User zeigen 2026-03-21 00:03:56 +01:00
Cursor
b6d5b982bd feat(bot): Qwen3-VL 30B als einziges Modell (Text+Vision+Tools lokal) 2026-03-20 23:57:15 +01:00
Cursor
981118f940 feat(bot): Qwen3 30B-A3B lokal (Ollama/RTX3090), web_search bevorzugt, Date-Injection, Thinking-Mode Fix 2026-03-20 23:40:58 +01:00
Homelab Cursor
6e4d43f01d feat: Preisanfragen mit Zahlen-Format erzwingen
Der Bot reagiert bei Preisfragen jetzt strenger:
- nutzt verpflichtend web_search/deep_research statt Allgemeintext
- liefert Zeitraum, Preisvergleich, Delta und Quellen
- kennzeichnet fehlende belastbare Preisdaten explizit
2026-03-20 22:12:32 +01:00
root
b69650c89c System-Prompt: Passwort-Regel praezisiert — get_service_directory statt abblocken 2026-03-16 15:54:13 +07:00
root
4e07dbec77 Plugin-System: tools/*.py auto-discovery, eine Datei pro Tool 2026-03-16 14:25:22 +07:00
root
1a3f1f9a40 Hausmeister-Bot: Wochentags-Muster nur bei ausreichend Daten, WordPress/Matomo Tool-Beschreibungen geschaerft 2026-03-16 13:18:54 +07:00
root
ae7bbebede Hausmeister-Bot: Qualifizierte Matomo-Auswertung — WoW-Vergleich, Trend, Ausreisser, Bounce/Engagement-Bewertung, Wochentags-Muster, Traffic-Quellen-Analyse, Prognose 2026-03-16 13:05:26 +07:00
root
402c2eac42 Hausmeister-Bot: Matomo Analytics Integration — Besucherzahlen, Trend, Top-Seiten, Traffic-Quellen per Chat abfragbar 2026-03-16 12:57:44 +07:00
root
783e043353 Plausibilitaet: Anschlussflug-Datumscheck — verdaechtige Tagesspruenge als medium-confidence flaggen 2026-03-16 09:45:39 +07:00
root
04b218044e Dokumentenextraktion: konservativ, feldweise Confidence, kein Raten, Rohtext/Interpretation getrennt 2026-03-16 09:43:44 +07:00
root
b9d781d678 Vision: Datumserkennung verschaerft — Zeichen-genaues Lesen + Plausibilitaetspruefung bei Anschlussfluegen 2026-03-16 09:39:02 +07:00
root
345d3e45ab Vision: gpt-4o statt gpt-4o-mini fuer Bilderkennung, detail=high, 1200 Tokens 2026-03-16 09:24:04 +07:00
root
c9f1985266 Vision: Zeitlogik-Prompt bereinigt — falsches Beispiel entfernt, Zeitzonen-Erklaerung verbessert 2026-03-16 09:21:13 +07:00
root
78ba9ffd63 Vision: Zeitberechnung verschaerft — immer selbst nachrechnen, nie aus History kopieren 2026-03-16 09:16:51 +07:00
root
26f819f949 Vision: Zeit/Datumslogik-Pruefung fuer Flugdaten im Prompt 2026-03-16 09:15:28 +07:00
root
aed9e6d28a Vision: intelligente Bilderkennung + PDF-Support + Dokument-Handler 2026-03-16 09:11:29 +07:00
root
89f2c03fa0 Fotoerkennung: handle_photo + ask_with_image fuer Hausmeister-Bot 2026-03-16 09:06:01 +07:00
root
21d004f3c9 Supersede-Fix: Threshold 0.82→0.72, Prompt verhindert war-Umformulierungen 2026-03-15 19:20:47 +07:00
root
7ae6ac0e4c RAG v2: Klassifizierung (6 Typen, 3 Confidence), source_type, Auto-Supersede, /memory erweitert 2026-03-15 17:34:16 +07:00
root
a2c0279f99 RAG: Vektor-Suche statt All-Items-Prompt, Kandidaten-System entfernt, Bot speichert direkt 2026-03-15 16:16:25 +07:00
root
90722418c2 LLM: System-Prompt um Gedaechtnis-Lese-Anweisung ergaenzt 2026-03-15 15:40:40 +07:00
root
00e0bede99 Memory: LLM IMMER memory_suggest aufrufen auch bei Wiederholungen 2026-03-15 13:22:56 +07:00