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.
This commit is contained in:
parent
ecfe546d45
commit
98d0698db0
1 changed files with 15 additions and 0 deletions
|
|
@ -412,6 +412,21 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) -
|
||||||
|
|
||||||
messages.append({"role": "user", "content": question})
|
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 ---
|
# --- Online (Sonar): kein Tool-Calling, Sonar sucht selbst ---
|
||||||
if route == MODEL_ONLINE:
|
if route == MODEL_ONLINE:
|
||||||
try:
|
try:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue