From 40d6badfc718b875c41d322c434b528ca6bf1fcb Mon Sep 17 00:00:00 2001 From: Homelab Cursor Date: Thu, 26 Mar 2026 17:18:32 +0100 Subject: [PATCH] fix(rag+llm): Kfz-Kosten mit Quelle; kein nackter EUR-Betrag MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Forciertes RAG: Prompt verbietet Ein-Zahl-Antwort; Dateiname Pflicht. - User-Nachtrag [Quelle: ...] bei forced RAG. - rag: kostet/wie viel in wide recall; Subqueries Ford Transit / Kfz jährlich. --- homelab-ai-bot/llm.py | 4 ++-- homelab-ai-bot/tools/rag.py | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/homelab-ai-bot/llm.py b/homelab-ai-bot/llm.py index 3f3e4bf8..30577970 100644 --- a/homelab-ai-bot/llm.py +++ b/homelab-ai-bot/llm.py @@ -463,14 +463,14 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None, d + "(z.B. Kfz/Auto, Rechtsschutz, Haftpflicht, Sach, Ausland, Kranken) " + "mit kurzem Beleg (Dateiname oder Ordner aus den Treffern). " + "Nicht nur den ersten Treffer nennen. " - + "Bei Kosten/Beitraegen: je Treffer Betrag und Zeitraum nennen wenn im Snippet erkennbar; sonst kurz nicht eindeutig."}, + + "Bei Kosten/Beitraegen: je Treffer Betrag und Zeitraum nennen wenn im Snippet erkennbar; sonst kurz nicht eindeutig. "+ "VERBOTEN: Antwort nur als nackte Zahl (z.B. nur eine EUR-Zeile ohne Kontext). Zu JEDEM Betrag mindestens einen **Dateinamen** aus den Treffern nennen. "+ "Bei Kfz/Fahrzeug: sagen welches Dokument sich darauf bezieht oder dass die Zuordnung unsicher ist."}, {"role": "assistant", "content": None, "tool_calls": [{"id": "forced_rag", "type": "function", "function": {"name": "rag_search", "arguments": json.dumps({"query": _rag_q, "top_k": 60})}}]}, {"role": "tool", "tool_call_id": "forced_rag", "content": str(_rag_res)[:100000]}, - {"role": "user", "content": question}, + {"role": "user", "content": question + "\n\n[Quelle: Jeder genannte EUR-Betrag mit Dateiname aus den Treffern; keine reine Ein-Zahl-Antwort.]"}, ] except Exception as e: log.warning("RAG-Pflicht Fehler: %s", e) diff --git a/homelab-ai-bot/tools/rag.py b/homelab-ai-bot/tools/rag.py index ca9b9fa7..a2585960 100644 --- a/homelab-ai-bot/tools/rag.py +++ b/homelab-ai-bot/tools/rag.py @@ -230,6 +230,9 @@ def _is_wide_recall_query(q: str) -> bool: x in ql for x in ( "kosten", + "kostet", + "wie viel", + "wieviel", "beitrag", "beiträge", "beitraege", @@ -275,6 +278,8 @@ _WIDE_SUBQUERIES = [ "Ergo Versicherung Police", "Unfallversicherung Berufsunfähigkeit", "Bausparvertrag Bauspar", + "Ford Transit Nutzfahrzeug Versicherung", + "Kfz Versicherungsschein Beitrag jährlich", ]