From 03f70fdda336c9884948a48202f11ad0116a0119 Mon Sep 17 00:00:00 2001 From: Homelab Cursor Date: Thu, 26 Mar 2026 16:56:29 +0100 Subject: [PATCH] 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. --- homelab-ai-bot/llm.py | 13 +++++++++---- homelab-ai-bot/tools/rag.py | 1 + 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/homelab-ai-bot/llm.py b/homelab-ai-bot/llm.py index 94726a09..ac20d084 100644 --- a/homelab-ai-bot/llm.py +++ b/homelab-ai-bot/llm.py @@ -427,20 +427,25 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) - if _rag_fn: try: log.info("RAG-Pflicht: forciere rag_search fuer: %s", question[:80]) - _rag_res = _rag_fn(query=question, top_k=8) + _rag_res = _rag_fn(query=question, top_k=10) if _rag_res and not _rag_res.startswith("Keine"): log.info("RAG-Pflicht: %d Zeichen — loesche Session-History", len(str(_rag_res))) messages = [ {"role": "system", "content": _full_prompt + "\n\nWICHTIG: Ignoriere fruehere Antworten. " + "Die Dokumentensuche unten ist die einzige Wahrheit. " - + "Beantworte die Frage NUR basierend auf diesen Suchergebnissen."}, + + "Beantworte die Frage NUR basierend auf diesen Suchergebnissen. " + + "Wenn mehrere Treffer zur gleichen Gesellschaft gehoeren: " + + "liste jede erkannte Sparte bzw. jeden Dokumenttyp separat " + + "(z.B. Kfz/Auto, Rechtsschutz, Haftpflicht, Sach, Ausland, Kranken) " + + "mit kurzem Beleg (Dateiname oder Ordner aus den Treffern). " + + "Nicht nur den ersten Treffer nennen."}, {"role": "assistant", "content": None, "tool_calls": [{"id": "forced_rag", "type": "function", "function": {"name": "rag_search", - "arguments": json.dumps({"query": question, "top_k": 8})}}]}, + "arguments": json.dumps({"query": question, "top_k": 10})}}]}, {"role": "tool", "tool_call_id": "forced_rag", - "content": str(_rag_res)[:3000]}, + "content": str(_rag_res)[:12000]}, {"role": "user", "content": question}, ] except Exception as e: diff --git a/homelab-ai-bot/tools/rag.py b/homelab-ai-bot/tools/rag.py index 8c428987..a6eb2bfd 100644 --- a/homelab-ai-bot/tools/rag.py +++ b/homelab-ai-bot/tools/rag.py @@ -78,6 +78,7 @@ ERGEBNISSE AUSWERTEN: - ERFINDE KEINE Details die nicht im Ergebnis stehen - Der Ordnerpfad (vor dem Dateinamen, getrennt durch __) zeigt die Kategorie - Wenn rag_search Treffer liefert: IMMER auflisten, auch wenn Inhalt unvollstaendig +- Mehrere Treffer zur gleichen Versicherung/Gesellschaft: jede Sparte/Dokumentart separat nennen (Kfz, Rechtsschutz, Haftpflicht, Sach, Ausland, Kranken), mit Dateiname/Ordner - Antworte NIEMALS "keine gefunden" oder "nicht gespeichert" OHNE vorher rag_search aufgerufen zu haben"""