fix(routing): yearly costs to local RAG, not Sonar
- Remove standalone "kosten" from WEB_TRIGGERS (matched "jährlichen kosten" and sent Perplexity without tools). - Add LOCAL_OVERRIDES for jahreskosten/jaehrlich/beitragsrechnung phrases. - Extend forced-RAG keywords and enrich ES query with Beitrag/Beitragsrechnung for cost questions. - System hint: extract amounts and periods per hit when possible.
This commit is contained in:
parent
ec83e3e433
commit
d771a330c7
1 changed files with 24 additions and 4 deletions
|
|
@ -56,10 +56,12 @@ _LOCAL_OVERRIDES = [
|
||||||
"familienbuch", "urkunde", "bescheid", "police", "beitrag",
|
"familienbuch", "urkunde", "bescheid", "police", "beitrag",
|
||||||
"meine unterlagen", "meine dokumente", "meine dateien",
|
"meine unterlagen", "meine dokumente", "meine dateien",
|
||||||
"habe ich", "welche habe", "was habe ich",
|
"habe ich", "welche habe", "was habe ich",
|
||||||
|
"jahreskosten", "jährlichen", "jährliche", "jaehrlichen", "jaehrliche",
|
||||||
|
"monatliche kosten", "versicherungskosten", "beitragsrechnung",
|
||||||
]
|
]
|
||||||
_WEB_TRIGGERS = [
|
_WEB_TRIGGERS = [
|
||||||
"recherche", "recherchiere", "suche im internet", "web search",
|
"recherche", "recherchiere", "suche im internet", "web search",
|
||||||
"preis", "preise", "kostet", "kosten", "price",
|
"preis", "preise", "kostet", "price",
|
||||||
"news", "nachrichten", "aktuell", "aktuelle",
|
"news", "nachrichten", "aktuell", "aktuelle",
|
||||||
"google", "finde heraus", "finde raus",
|
"google", "finde heraus", "finde raus",
|
||||||
"gold", "silber", "kurs", "kurse",
|
"gold", "silber", "kurs", "kurse",
|
||||||
|
|
@ -420,6 +422,8 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) -
|
||||||
"kindergeld", "rechnung", "haftpflicht", "rechtsschutz",
|
"kindergeld", "rechnung", "haftpflicht", "rechtsschutz",
|
||||||
"lebensversicherung", "bauspar", "reisepass", "personalausweis",
|
"lebensversicherung", "bauspar", "reisepass", "personalausweis",
|
||||||
"lvm", "allianz", "ergo", "huk", "nuernberger",
|
"lvm", "allianz", "ergo", "huk", "nuernberger",
|
||||||
|
"jahreskosten", "jährlichen", "jährliche", "jaehrlichen", "jaehrliche",
|
||||||
|
"monatliche kosten", "versicherungskosten", "beitragsrechnung",
|
||||||
]
|
]
|
||||||
_q_low = question.lower()
|
_q_low = question.lower()
|
||||||
if route == MODEL_LOCAL and any(k in _q_low for k in _DOC_KW):
|
if route == MODEL_LOCAL and any(k in _q_low for k in _DOC_KW):
|
||||||
|
|
@ -427,7 +431,22 @@ 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=10)
|
_rag_q = question
|
||||||
|
if any(
|
||||||
|
x in _q_low
|
||||||
|
for x in (
|
||||||
|
"kosten",
|
||||||
|
"jähr",
|
||||||
|
"jaehr",
|
||||||
|
"jahreskosten",
|
||||||
|
"monatliche kosten",
|
||||||
|
)
|
||||||
|
):
|
||||||
|
_rag_q = (
|
||||||
|
question
|
||||||
|
+ " Versicherung Beitrag Beitragsrechnung Jahresbetrag"
|
||||||
|
)
|
||||||
|
_rag_res = _rag_fn(query=_rag_q, 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 = [
|
||||||
|
|
@ -439,11 +458,12 @@ def ask_with_tools(question: str, tool_handlers: dict, session_id: str = None) -
|
||||||
+ "liste jede erkannte Sparte bzw. jeden Dokumenttyp separat "
|
+ "liste jede erkannte Sparte bzw. jeden Dokumenttyp separat "
|
||||||
+ "(z.B. Kfz/Auto, Rechtsschutz, Haftpflicht, Sach, Ausland, Kranken) "
|
+ "(z.B. Kfz/Auto, Rechtsschutz, Haftpflicht, Sach, Ausland, Kranken) "
|
||||||
+ "mit kurzem Beleg (Dateiname oder Ordner aus den Treffern). "
|
+ "mit kurzem Beleg (Dateiname oder Ordner aus den Treffern). "
|
||||||
+ "Nicht nur den ersten Treffer nennen."},
|
+ "Nicht nur den ersten Treffer nennen. "
|
||||||
|
+ "Bei Kosten/Beitraegen: je Treffer Betrag und Zeitraum nennen wenn im Snippet erkennbar; sonst kurz nicht eindeutig."},
|
||||||
{"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": 10})}}]},
|
"arguments": json.dumps({"query": _rag_q, "top_k": 10})}}]},
|
||||||
{"role": "tool", "tool_call_id": "forced_rag",
|
{"role": "tool", "tool_call_id": "forced_rag",
|
||||||
"content": str(_rag_res)[:12000]},
|
"content": str(_rag_res)[:12000]},
|
||||||
{"role": "user", "content": question},
|
{"role": "user", "content": question},
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue