From 98d0698db0e7aa4e20ee9009cd4f2eb3a143c7ab Mon Sep 17 00:00:00 2001 From: Homelab Cursor Date: Thu, 26 Mar 2026 16:38:29 +0100 Subject: [PATCH] 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. --- homelab-ai-bot/llm.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/homelab-ai-bot/llm.py b/homelab-ai-bot/llm.py index 6daf107e..254b586f 100644 --- a/homelab-ai-bot/llm.py +++ b/homelab-ai-bot/llm.py @@ -412,6 +412,21 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) - messages.append({"role": "user", "content": question}) + # --- RAG-Pflicht: Wenn Dokument-Keywords erkannt, rag_search erzwingen --- + _DOC_KEYWORDS = [ + "versicherung", "vertrag", "verträge", "dokument", "rente", + "finanzamt", "steuer", "grundsteuer", "familienbuch", "urkunde", + "bescheid", "police", "beitrag", "mietvertrag", "arbeitsvertrag", + "kindergeld", "rechnung", "haftpflicht", "rechtsschutz", + "lebensversicherung", "bauspar", "reisepass", "personalausweis", + "lvm", "allianz", "ergo", "huk", "nürnberger", "nuernberger", + ] + if route == MODEL_LOCAL and any(k in question.lower() for k in _DOC_KEYWORDS): + messages.insert(-1, {"role": "system", "content": + "PFLICHT: Diese Frage betrifft persoenliche Dokumente. " + "Du MUSST rag_search aufrufen BEVOR du antwortest. " + "Antworte NIEMALS aus dem Gedaechtnis oder der Session-History ohne vorher gesucht zu haben."}) + # --- Online (Sonar): kein Tool-Calling, Sonar sucht selbst --- if route == MODEL_ONLINE: try: