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.
This commit is contained in:
Homelab Cursor 2026-03-26 16:56:29 +01:00
parent 6ab0a269d2
commit 03f70fdda3
2 changed files with 10 additions and 4 deletions

View file

@ -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:

View file

@ -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"""