fix(bot): Einheiten-Falle loesen — min 5 Ergebnisse bei Preisfragen, Gramm/Unze Warnung in Prompt und Suchergebnissen
This commit is contained in:
parent
fdd3083628
commit
3f4af61389
2 changed files with 19 additions and 6 deletions
|
|
@ -374,12 +374,14 @@ def ask_with_image(image_base64: str, caption: str, tool_handlers: dict, session
|
||||||
if _is_price_q:
|
if _is_price_q:
|
||||||
prompt_text = (
|
prompt_text = (
|
||||||
"WICHTIG: Es geht um aktuelle Preise/Kurse. "
|
"WICHTIG: Es geht um aktuelle Preise/Kurse. "
|
||||||
"Du MUSST ZUERST web_search aufrufen (kurze Keywords, z.B. goldpreis euro unze heute) "
|
"Du MUSST ZUERST web_search aufrufen (kurze Keywords, z.B. goldpreis euro unze heute). "
|
||||||
"um den aktuellen Marktpreis zu ermitteln. "
|
"Fordere MINDESTENS 5 Ergebnisse an (max_results=5). "
|
||||||
"Das Bild ist NUR Kontext — Preise daraus NIEMALS als Antwort verwenden, "
|
"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). "
|
"EINHEITEN-FALLE: goldpreis.de zeigt Preise PRO GRAMM, nicht pro Unze! "
|
||||||
"Erst NACH der web_search darfst du antworten. "
|
"1 troy ounce = 31,103 Gramm. Wenn eine Quelle ~125 EUR zeigt und eine andere ~3.900 EUR, "
|
||||||
"Achte auf korrekte Einheiten (Gramm vs. Unze vs. Kilogramm).\n\n"
|
"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
|
+ prompt_text
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
|
|
|
||||||
|
|
@ -58,6 +58,11 @@ def handle_web_search(query: str, max_results: int = 5, **kw):
|
||||||
return "web_search: query fehlt."
|
return "web_search: query fehlt."
|
||||||
|
|
||||||
max_results = max(1, min(int(max_results or 5), 8))
|
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
|
last_err = None
|
||||||
data = 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" {snippet}")
|
||||||
lines.append(f" {url}")
|
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)
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue