fix(bot): Einheiten-Falle loesen — min 5 Ergebnisse bei Preisfragen, Gramm/Unze Warnung in Prompt und Suchergebnissen

This commit is contained in:
Cursor 2026-03-21 00:29:32 +01:00
parent fdd3083628
commit 3f4af61389
2 changed files with 19 additions and 6 deletions

View file

@ -374,12 +374,14 @@ def ask_with_image(image_base64: str, caption: str, tool_handlers: dict, session
if _is_price_q:
prompt_text = (
"WICHTIG: Es geht um aktuelle Preise/Kurse. "
"Du MUSST ZUERST web_search aufrufen (kurze Keywords, z.B. goldpreis euro unze heute) "
"um den aktuellen Marktpreis zu ermitteln. "
"Das Bild ist NUR Kontext — Preise daraus NIEMALS als Antwort verwenden, "
"sie koennten veraltet sein oder andere Einheiten zeigen (z.B. Preis/Gramm statt Preis/Unze). "
"Erst NACH der web_search darfst du antworten. "
"Achte auf korrekte Einheiten (Gramm vs. Unze vs. Kilogramm).\n\n"
"Du MUSST ZUERST web_search aufrufen (kurze Keywords, z.B. goldpreis euro unze heute). "
"Fordere MINDESTENS 5 Ergebnisse an (max_results=5). "
"Das Bild ist NUR Kontext — Preise daraus NIEMALS als Antwort verwenden. "
"EINHEITEN-FALLE: goldpreis.de zeigt Preise PRO GRAMM, nicht pro Unze! "
"1 troy ounce = 31,103 Gramm. Wenn eine Quelle ~125 EUR zeigt und eine andere ~3.900 EUR, "
"dann ist 125 EUR der GRAMM-Preis und 3.900 EUR der UNZEN-Preis. "
"Nutze Quellen die explizit pro Unze oder per ounce schreiben (z.B. finanzen.net, boerse.de). "
"Erst NACH der web_search darfst du antworten.\n\n"
+ prompt_text
)
else:

View file

@ -58,6 +58,11 @@ def handle_web_search(query: str, max_results: int = 5, **kw):
return "web_search: query fehlt."
max_results = max(1, min(int(max_results or 5), 8))
_pq = query.lower()
_is_price = any(w in _pq for w in ["preis", "price", "kurs", "kostet",
"gold", "silber", "unze", "ounce"])
if _is_price:
max_results = max(max_results, 5)
last_err = None
data = None
@ -95,6 +100,12 @@ def handle_web_search(query: str, max_results: int = 5, **kw):
lines.append(f" {snippet}")
lines.append(f" {url}")
if _is_price:
lines.append("")
lines.append("ACHTUNG EINHEITEN: Goldpreis-Quellen mischen oft Gramm/Unze/Kilo!")
lines.append("1 troy ounce = 31,103 g. goldpreis.de zeigt oft EUR/Gramm, NICHT EUR/Unze.")
lines.append("Rechne ggf. um: Preis/Gramm x 31,103 = Preis/Unze.")
return "\n".join(lines)