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)