diff --git a/homelab-ai-bot/tools/chatlog.py b/homelab-ai-bot/tools/chatlog.py index b85b08951..f0ac86327 100644 --- a/homelab-ai-bot/tools/chatlog.py +++ b/homelab-ai-bot/tools/chatlog.py @@ -131,9 +131,10 @@ TOOLS = [ "function": { "name": "chatlog_list_chats", "description": ( - "Liste aller mitgeloggten Telegram-Gruppen-Chats mit Titel, " - "ID, Anzahl Nachrichten und letztem Eintrag. Nutze dies, wenn " - "unklar ist, welche Gruppe gemeint ist." + "TELEGRAM-Gruppen die der Mitleser-Bot @arakawa_concierge_bot " + "live aufzeichnet. Liefert Titel, chat_id, Nachrichten-Count, " + "letzten Eintrag. NICHT zu verwechseln mit ChatGPT-Verlauf, " + "Memory oder RAG — das hier sind echte Telegram-Gruppen-Chats." ), "parameters": {"type": "object", "properties": {}, "required": []}, }, @@ -143,11 +144,13 @@ TOOLS = [ "function": { "name": "chatlog_recent", "description": ( - "Letzte N Nachrichten aus mitgeloggten Telegram-Gruppen-Chats " - "(z.B. Airbnb-Concierge-Gruppe für die Wohnungen). Nutze dies " - "bei Fragen wie 'Was ist der aktuelle Stand?', 'Was wurde " - "zuletzt geschrieben?', 'Wer hat zuletzt was gesagt?', 'Muss " - "ich auf etwas reagieren?'." + "Letzte N Nachrichten aus einer mitgeloggten TELEGRAM-Gruppe " + "(z.B. die Airbnb-Concierge-Gruppe der Arakawa-Wohnung G2010B). " + "Liefert echte Nachrichten mit Zeitstempel, Absender (Name + " + "Username), Inhalt. ZWINGEND nutzen bei: 'aktueller Stand der " + "Vermietung', 'was hat der Concierge gesagt', 'meine Telegram-" + "Chatverläufe', 'was wurde zuletzt geschrieben', 'muss ich " + "reagieren', 'was ist offen'. KEIN ChatGPT-/Memory-Tool." ), "parameters": { "type": "object", @@ -174,9 +177,11 @@ TOOLS = [ "function": { "name": "chatlog_search", "description": ( - "Volltextsuche (FTS5) in den mitgeloggten Telegram-Chats. " - "Nutze dies für Fragen wie 'Was wurde über X gesagt?', " - "'Hat jemand X erwähnt?', 'Wer hat X zugesagt?'." + "Volltextsuche (SQLite FTS5) im Verlauf der mitgeloggten " + "TELEGRAM-Gruppen. Findet Nachrichten anhand von Worten oder " + "Phrasen — z.B. 'Kaution', 'Listing', 'Smartlock'. Liefert " + "echte Nachrichten mit Datum und Absender. KEIN ChatGPT-Archiv, " + "KEIN Memory — nur Telegram-Live-Mitschnitt." ), "parameters": { "type": "object", @@ -185,7 +190,8 @@ TOOLS = [ "type": "string", "description": ( "Suchbegriff. FTS5-Syntax erlaubt: 'wort1 wort2' " - "(beide), '\"phrase\"' (genau), 'wort*' (Prefix)." + "(beide Wörter), '\"phrase\"' (genaue Phrase), " + "'wort*' (Prefix-Suche)." ), }, "chat": { @@ -206,16 +212,16 @@ TOOLS = [ "function": { "name": "chatlog_since", "description": ( - "Alle Nachrichten der letzten N Minuten. Nutze dies bei " - "Fragen wie 'Was war heute los?', 'Was war in der letzten " - "Stunde?'." + "Alle Nachrichten der letzten N Minuten aus mitgeloggten " + "TELEGRAM-Gruppen. Nutze für 'was war heute', 'was war in " + "der letzten Stunde', 'was war seit gestern'." ), "parameters": { "type": "object", "properties": { "minutes": { "type": "integer", - "description": "Zeitfenster in Minuten (z.B. 60 = letzte Stunde, 1440 = letzte 24h).", + "description": "Zeitfenster in Minuten (60 = 1h, 1440 = 24h, 10080 = 1 Woche).", }, "chat": { "type": "string", @@ -238,25 +244,42 @@ HANDLERS = { SYSTEM_PROMPT_EXTRA = """ -Telegram-Gruppen-Mitschnitt (chatlog_*-Tools): -Es gibt einen passiven Mitleser-Bot (@arakawa_concierge_bot), der bestimmte -Telegram-Gruppen aufzeichnet — z.B. die Airbnb-Concierge-Gruppe fuer die -ARAKAWA-Wohnungen in Phnom Penh (Wohnungen G2010B im 20. Stock und -D1603 im 16. Stock). +TELEGRAM-MITSCHNITT (chatlog_*-Tools — DAS WICHTIGSTE): -Bei JEDER dieser Frage-Arten ZUERST chatlog_*-Tool aufrufen -(NICHT Web-Suche, NICHT RAG): -- "aktueller Stand" / "Status" zu Vermietung, Wohnung, Listing, Concierge +Es gibt einen passiven Mitleser-Bot (@arakawa_concierge_bot), der bestimmte +Telegram-Gruppen-Chats LIVE aufzeichnet und in einer SQLite-DB speichert. +Z.B. die Airbnb-Concierge-Gruppe fuer die ARAKAWA-Wohnungen in Phnom Penh +(G2010B im 20. Stock, D1603 im 16. Stock). + +→ Diese Tools heissen GENAU SO und sind die EINZIGEN richtigen fuer + Fragen zum Telegram-Verlauf: + chatlog_list_chats + chatlog_recent + chatlog_search + chatlog_since + +→ NIEMALS Tool-Namen erfinden wie "mychatarchive", "search_brain", + "telegram_history". Diese existieren NICHT. Wenn du etwas Aehnliches + meinst, nutze chatlog_search. + +→ NIEMALS rag_search, openmemory_search, memory_read oder web_search + fuer Telegram-Verlaufs-Fragen verwenden — die kennen den Telegram-Chat + NICHT. + +Trigger-Phrasen die ZWINGEND chatlog_*-Tools ausloesen: +- "Telegram-Chat" / "Telegram-Gruppe" / "im Chat" / "in der Gruppe" +- "Chatverlauf" / "Chatverlaeufe" / "Verlauf" +- "Concierge" / "Bnb" / "Airbnb" / "Listing" / "Vermietung" +- "Wohnung G2010B" / "G 210" / "D1603" / "ARAKAWA-Wohnung" +- "aktueller Stand" zu Vermietung/Wohnung/Concierge - "wer hat was zugesagt" / "was ist offen" / "muss ich reagieren" -- "letzte Nachricht" / "was wurde geschrieben" / "was war heute" -- Erwaehnung einer Wohnung (G2010B, D1603, ARAKAWA, Wohnung) -- Erwaehnung von Concierge / Airbnb / Bnb / Listing / Vermietung / Kaution / Mieter +- "was wurde zuletzt geschrieben" / "was war heute" Vorgehen: -1. Wenn unklar welche Gruppe → chatlog_list_chats() zuerst. +1. Wenn unklar welche Gruppe → chatlog_list_chats() ZUERST. 2. Sonst direkt chatlog_recent(chat="") oder chatlog_search(query="...", chat=""). -3. NUR die Telegram-Daten als Quelle benutzen, KEINE Web-Suche dafuer - aufrufen — der Stand kommt aus der Gruppe, nicht aus dem Internet. -4. Antwort zitiert konkret: Datum, Absender, Inhalt. +3. Antwort zitiert KONKRET: Datum, Absender, Inhalt. +4. Wenn Tool nichts liefert → ehrlich sagen "keine Daten in der DB", + NICHT halluzinieren. """.strip()