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:
parent
6ab0a269d2
commit
03f70fdda3
2 changed files with 10 additions and 4 deletions
|
|
@ -427,20 +427,25 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) -
|
||||||
if _rag_fn:
|
if _rag_fn:
|
||||||
try:
|
try:
|
||||||
log.info("RAG-Pflicht: forciere rag_search fuer: %s", question[:80])
|
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"):
|
if _rag_res and not _rag_res.startswith("Keine"):
|
||||||
log.info("RAG-Pflicht: %d Zeichen — loesche Session-History", len(str(_rag_res)))
|
log.info("RAG-Pflicht: %d Zeichen — loesche Session-History", len(str(_rag_res)))
|
||||||
messages = [
|
messages = [
|
||||||
{"role": "system", "content": _full_prompt
|
{"role": "system", "content": _full_prompt
|
||||||
+ "\n\nWICHTIG: Ignoriere fruehere Antworten. "
|
+ "\n\nWICHTIG: Ignoriere fruehere Antworten. "
|
||||||
+ "Die Dokumentensuche unten ist die einzige Wahrheit. "
|
+ "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,
|
{"role": "assistant", "content": None,
|
||||||
"tool_calls": [{"id": "forced_rag", "type": "function",
|
"tool_calls": [{"id": "forced_rag", "type": "function",
|
||||||
"function": {"name": "rag_search",
|
"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",
|
{"role": "tool", "tool_call_id": "forced_rag",
|
||||||
"content": str(_rag_res)[:3000]},
|
"content": str(_rag_res)[:12000]},
|
||||||
{"role": "user", "content": question},
|
{"role": "user", "content": question},
|
||||||
]
|
]
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,7 @@ ERGEBNISSE AUSWERTEN:
|
||||||
- ERFINDE KEINE Details die nicht im Ergebnis stehen
|
- ERFINDE KEINE Details die nicht im Ergebnis stehen
|
||||||
- Der Ordnerpfad (vor dem Dateinamen, getrennt durch __) zeigt die Kategorie
|
- Der Ordnerpfad (vor dem Dateinamen, getrennt durch __) zeigt die Kategorie
|
||||||
- Wenn rag_search Treffer liefert: IMMER auflisten, auch wenn Inhalt unvollstaendig
|
- 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"""
|
- Antworte NIEMALS "keine gefunden" oder "nicht gespeichert" OHNE vorher rag_search aufgerufen zu haben"""
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue