From 3f4af61389edf24f503ad8b13a92191720270124 Mon Sep 17 00:00:00 2001 From: Cursor Date: Sat, 21 Mar 2026 00:29:32 +0100 Subject: [PATCH] =?UTF-8?q?fix(bot):=20Einheiten-Falle=20loesen=20?= =?UTF-8?q?=E2=80=94=20min=205=20Ergebnisse=20bei=20Preisfragen,=20Gramm/U?= =?UTF-8?q?nze=20Warnung=20in=20Prompt=20und=20Suchergebnissen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homelab-ai-bot/llm.py | 14 ++++++++------ homelab-ai-bot/tools/web_search.py | 11 +++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/homelab-ai-bot/llm.py b/homelab-ai-bot/llm.py index 61627b9e..eb5ba10e 100644 --- a/homelab-ai-bot/llm.py +++ b/homelab-ai-bot/llm.py @@ -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: diff --git a/homelab-ai-bot/tools/web_search.py b/homelab-ai-bot/tools/web_search.py index 7821703e..4cb66d99 100644 --- a/homelab-ai-bot/tools/web_search.py +++ b/homelab-ai-bot/tools/web_search.py @@ -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)