Discourse Chatbot 🤖

:information_source: Zusammenfassung Der ursprüngliche KI-Chatbot für Discourse
:hammer_and_wrench: Repository-Link GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: Installationsanleitung So installieren Sie Plugins in Discourse
:heart: Sponsoring Erwägen Sie bitte, ein wiederkehrender Sponsor meiner Open-Source-Arbeit zu werden, auf einem Niveau, das den Ressourcen und Anforderungen Ihrer oder Ihrer Organisation entspricht, um sicherzustellen, dass dieses Plugin die Wartung erhält, die es verdient, und auch in Zukunft auf Ihrer Website funktioniert.

Gefällt Ihnen dieses Plugin? Bitte geben Sie ihm einen :star: auf GitHub! :pray:

:information_source: Da es sich um ein unabhängig beigetragenes Plugin handelt, richten Sie bitte Supportanfragen, Fehlerberichte, UX-Feedback und Feature-Anfragen hier in diesem Thema ein. HINWEIS: Dieses Plugin ist nicht auf Discourse.org gehosteten Installationen verfügbar. Sie können es installieren, wenn Sie selbst hosten, und möglicherweise auch bei Drittanbieter-Hosting-Anbietern (fragen Sie dazu Ihren Anbieter).

Was ist das?

  • Der ursprüngliche Discourse-KI-Chatbot!
  • Sie können diesen Bot für einige Kundenbetreuungsaufgaben verwenden (siehe diese Anleitung: Building a technical support chatbot)
  • Unterhalten Sie sich mit dem Bot in jedem Thema oder Chat-Kanal, eins zu eins oder mit anderen! Unterstützt Threads.
  • Passen Sie die Persönlichkeit Ihres Bots an Ihr Forum an!
    • Sollen sie wie William Shakespeare oder Winston Churchill klingen? Kein Problem!
  • Der Bot im “RAG-Modus” kann:
    • Ihr Forum** nach Antworten durchsuchen, damit der Bot ein Experte für das Thema Ihres Forums ist.
      • Die Suchergebnisse neu bewerten, um bestimmten Autorengruppen oder Themen-Tags den Vorzug zu geben
      • nicht nur Informationen aus dem aktuellen Thema oder Kanal berücksichtigen.
    • Ihre Benutzer privat nach ausstehenden, unvollständigen Benutzerfeldern fragen.
    • KI-Bilder rendern und bearbeiten
    • Wikipedia durchsuchen
    • Aktuelle Nachrichten durchsuchen*
    • Google durchsuchen*
    • Externe Websites crawlen*
    • Aktuelle Schlusskurse für Aktien zurückgeben.*
    • “Komplexe” Mathematik genau ausführen (ohne erfundene oder “halluzinierte” Antworten!)
    • Diese “Tools” können mit einem Plugin erweitert werden, siehe unten.
  • Vision-Unterstützung – der Bot kann Ihre Bilder sehen und Fragen dazu beantworten!
  • Automatisch auf neue Themen in bestimmten Kategorien antworten
  • Nutzt die modernste OpenAI-API und die Funktionsfähigkeit ihrer hervorragenden, branchenführenden Large Language Models (LLM).
  • Enthält ein spezielles Kontingentsystem zur Steuerung des Zugriffs auf den Bot: Vertrauenswürdige und/oder zahlende Mitglieder können einen größeren Zugriff auf den Bot haben!
    • Nutzung nach Abfragen oder nach Tokens messen.
  • Unterstützt auch Azure- und Proxy-Server-Verbindungen.
    • Verwenden Sie Drittanbieter-Proxy-Prozesse, um die Aufrufe zu übersetzen, um alternative LLMs wie Gemini zu unterstützen, z. B. diesen

*Anmeldung für externe (nicht verbundene) API-Dienste erforderlich. Links in den Einstellungen.

Der RAG-Modus ist sehr intelligent und kennt Fakten, die auf Ihrem Forum gepostet wurden:

Der grundlegende Bot-Modus kann manchmal Fehler machen, ist aber günstiger im Betrieb, da er weniger Aufrufe an das Large Language Model sendet:


(Tut mir leid, China! ;))

:biohazard: **Bots “Vision” – was er sehen (potenziell teilen) kann und Datenschutz :biohazard:

Dieser Bot kann in öffentlichen Bereichen Ihres Forums verwendet werden. Um den Bot besonders nützlich zu machen, gibt es den RAG-Modus (eine Einstellung pro Bot-Vertrauensstufe). Dies ist standardmäßig nicht aktiviert.

In diesem Modus hat der Bot standardmäßig Zugriff auf alle Inhalte, die ein Benutzer der Vertrauensstufe 1 sehen würde, basierend auf dieser Einstellung:

Wenn also in einem öffentlich zugänglichen Thema interagiert wird, besteht die Möglichkeit, dass der Bot Informationen “leckiert”, wenn Sie Inhalte über Kategorieberechtigungen auf der Vertrauensstufe 0 oder 1 einschränken. Dieses Niveau wurde gewählt, weil durch Erfahrung die meisten Websites normalerweise keine sensiblen Inhalte auf niedrigen Vertrauensstufen einschränken, aber es hängt von Ihren spezifischen Anforderungen ab.

Stellen Sie für diesen Modus sicher, dass Sie mindestens einen Benutzer mit der Vertrauensstufe 1 haben und keine zusätzliche Gruppenmitgliedschaft über die automatisierten Gruppen hinaus. (Denken Sie daran, dass der Bot dann alles wissen wird, was ein Benutzer der TL1-Stufe wissen würde, und es teilen kann.) Sie können chatbot embeddings benchmark user trust level senken, wenn Sie einen Benutzer der Vertrauensstufe 0 haben, der keine zusätzliche Gruppenmitgliedschaft über automatisierte Gruppen hinaus hat.

Alternativ:

  • Schalten Sie chatbot embeddings strategy auf category und füllen Sie chatbot embeddings categories mit Kategorien, über die der Bot Bescheid wissen soll. (Seien Sie sich bewusst, dass, wenn Sie private Kategorien hinzufügen, der Bot Bescheid darüber wissen sollte und alles, was der Bot öffentlich sagt, an weniger privilegierte Benutzer geleckt werden könnte, also seien Sie vorsichtig, was Sie hinzufügen).
  • Verwenden Sie den Bot nur im normalen Modus (aber der Bot sieht dann keine Beiträge)
  • Minderung durch Moderation

Beachten Sie außerdem, dass alles, was er “sehen” kann, an OpenAI weitergegeben wird.

Sie können sehen, dass dieses Setup ein Kompromiss ist. Um den Bot nützlich zu machen, muss er über die Inhalte auf Ihrer Website Bescheid wissen. Derzeit ist es nicht möglich, dass der Bot selektiv nur für Mitglieder zugängliche Inhalte liest und diese nur mit Mitgliedern teilt, was einige Administratoren als einschränkend empfinden könnten, aber es gibt keine einfache Lösung dafür, während der Bot öffentlich kommunizieren kann. Kontaktieren Sie mich, wenn Sie besondere Anforderungen haben und gerne Arbeit in diesem Bereich sponsern möchten. Bot-Berechtigungen mit semantischer Suche sind ein nicht triviales Problem. Das System ist derzeit auf Geschwindigkeit optimiert. HINWEIS: Private Nachrichten werden niemals vom Bot gelesen.

Informationen

  • Funktioniert möglicherweise nicht auf Multi-Site-Installationen (nicht explizit getestet), aber PRs zur Verbesserung der Unterstützung sind willkommen :+1:
  • OpenAI-API-Antworten können bei fortgeschritteneren Modellen aufgrund hoher Nachfrage manchmal langsam sein. Der Chatbot unterstützt jedoch auch GPT 3.5, das schnell und reaktionsschnell ist und völlig ausreichend.
  • Ist erweiterbar und die Unterstützung anderer Cloud-Bots ist beabsichtigt (daher der generische Name des Plugins), unterstützt derzeit jedoch ‘nur’ die Interaktion mit OpenAI Large Language Models (LLM) wie GPT-4 nativ. Kontaktieren Sie mich, wenn Sie zusätzliche Bot-Typen hinzufügen möchten oder mich unterstützen möchten, mehr hinzuzufügen. PRs sind willkommen. Sie können bereits Proxy-Server verwenden, um auf andere Dienste zuzugreifen, ohne Code-Änderungen vorzunehmen!
  • Ist erweiterbar, um die Suche nach anderen Inhalten jenseits der aktuell bereitgestellten zu unterstützen.

Einrichtung

Voraussetzungen

Abgesehen von den normalen Änderungen an app.yml sollten Sie Folgendes beachten:

Um mit Chatbot oder AI Topic Summary zu kompilieren, benötigen Sie mindestens Version 0.5.1 der pgvector PostgreSQL-Erweiterung.

Die meisten haben bereits mindestens diese Version. Allerdings haben gelegentlich einige Installationen eine ältere Version installiert. Dies wird verhindern, dass Sie mit einem Fehler ähnlich wie: PG::UndefinedObject: ERROR: access method "hnsw" does not exist kompilieren.

Stellen Sie zunächst sicher, dass Ihr Container läuft:

./launcher restart app

dann betreten Sie Ihren Container

./launcher enter app

dann gehen Sie in die Datenbank und aktualisieren Sie die Version von pgvector:

:/var/www/discourse# su postgres -c 'psql discourse'
\dx
ALTER EXTENSION vector UPDATE;
\dx
exit

verlassen Sie nun den Container mit exit

Sie sollten nun in der Lage sein, neu zu kompilieren.

Erstellen der Embeddings

Wenn Sie möchten, dass Chatbot Bescheid über die Inhalte auf Ihrer Website weiß, schalten Sie diese Einstellung EIN:

chatbot_embeddings_enabled

Nur notwendig, wenn Sie den RAG-Typ-Bot verwenden möchten und sicherstellen möchten, dass er Bescheid über die Inhalte auf Ihrem Forum weiß, nicht nur über das aktuelle Thema.

Anfangs müssen wir die Embeddings für alle relevanten Beiträge erstellen, damit der Bot Forum-Informationen finden kann. Dies geschieht nun im Hintergrund, sobald diese Einstellung aktiviert ist, und Sie müssen nichts tun.

Dieser Seed-Job kann für sehr große Websites einen Zeitraum von Tagen dauern.

Embeddings-Umfang

Dies wird durch mehrere Einstellungen bestimmt:

  • chatbot_embeddings_strategy, die entweder “benchmark_user” oder “category” sein kann
  • chatbot_embeddings_benchmark_user_trust_level setzt die relevante Vertrauensstufe für die erstere
  • chatbot_embeddings_categories gibt, wenn die category-Strategie gesetzt ist, dem Bot Zugriff, um alle Beiträge in der angegebenen Kategorie zu berücksichtigen.

Wenn Sie diese Einstellungen ändern, wird sich die Population der Embeddings im Laufe der Zeit verändern.

Um die Population zu beschleunigen

Betreten Sie den Container:

./launcher enter app

und führen Sie den folgenden Rake-Befehl aus:

rake chatbot:refresh_embeddings[1]

der derzeit aus unbekannten Gründen zweimal ausgeführt wird (entschuldigen Sie! PRs sind willkommen), aber das [1] stellt sicher, dass beim zweiten Mal nur fehlende Embeddings hinzugefügt werden (also keine unmittelbar nach dem ersten Durchlauf), was somit etwas irrelevant ist.

Im unwahrscheinlichen Fall, dass Sie von OpenAI ratelimited werden (unwahrscheinlich!), können Sie die Embeddings vervollständigen, indem Sie dies tun:

rake chatbot:refresh_embeddings[1,1]

was die fehlenden auffüllt (also nichts durch den Fehler verloren geht), aber vorsichtiger fortfährt und eine 1-Sekunden-Verzögerung zwischen jedem Aufruf an OpenAI einfügt.

Im Vergleich zu Bot-Interaktionen sind Embeddings nicht teuer zu erstellen, aber beobachten Sie trotzdem Ihre Nutzung auf Ihrem OpenAI-Dashboard.

HINWEIS: Embeddings werden nur für Beiträge erstellt und nur für jene Beiträge, auf die ein Benutzer der Vertrauensstufe 1 Zugriff hätte. Dies schien ein vernünftiger Kompromiss zu sein. Es werden keine Embeddings für Beiträge aus Inhalten erstellt, die nur für die Vertrauensstufe 2+ zugänglich sind.

Nützliche Data Explorer-Abfrage zur Überwachung der Embeddings-Population

@37Rb schreibt: “Hier ist eine SQL-Abfrage, die ich mit dem Data Explorer-Plugin verwende, um Embeddings zu überwachen und zu verifizieren… falls es jemandem anderen hilft.”

SELECT e.id, e.post_id AS post, p.topic_id AS topic, p.post_number,
       p.topic_id, e.created_at, e.updated_at, p.deleted_at AS post_deleted
FROM chatbot_post_embeddings e LEFT JOIN posts p ON e.post_id = p.id

Fehler, wenn Sie versuchen, ein Embedding für zu viele Zeichen zu erhalten.

Sie könnten einen Fehler wie diesen erhalten:

OpenAI HTTP Error (spotted in ruby-openai 6.3.1): {"error"=>{"message"=>"This model's maximum context length is 8192 tokens, however you requested 8528 tokens (8528 in your prompt; 0 for the completion). Please reduce your prompt; or completion length.", "type"=>"invalid_request_error", "param"=>nil, "code"=>nil}}

So lösen Sie es …

Wie in Ihrer Fehlermeldung angegeben, hat das Embedding-Modell ein Limit von:

8192 tokens

jedoch haben Sie 8528 angefordert

Sie müssen den aktuellen Wert dieser Einstellung senken:

chatbot_open_ai_embeddings_char_limit:

um etwa das 4-fache des Unterschieds und sehen, ob es funktioniert (ein Token ist ungefähr 4 Zeichen).

Also, in diesem Beispiel, 4 x (8528 - 8192) = 1344

Senken Sie also den aktuellen Wert von chatbot_open_ai_embeddings_char_limit um 1500, um auf der sicheren Seite zu sein. Der Standardwert wurde jedoch nach vielen Tests für englische Beiträge festgelegt, aber für andere Sprachen könnte er gesenkt werden müssen.

Dies wird dann mehr Text abschneiden und Token anfordern, und hoffentlich wird das Embedding durchgehen. Wenn nicht, müssen Sie den Unterschied bestätigen und entsprechend weiter reduzieren. Schließlich wird es niedrig genug sein, so dass Sie es nicht mehr ansehen müssen.

So wechseln Sie das Embeddings-Modell

n
Sie müssen nichts tun, außer die Einstellung zu ändern: der Hintergrund-Job wird sich um die Dinge kümmern, wenn auch allmählich.

Wenn Sie den Prozess wirklich beschleunigen möchten, tun Sie Folgendes:

  • Ändern Sie die Einstellung chatbot_open_ai_embeddings_model in Ihr neues bevorzugtes Modell
  • Es ist am besten, zuerst alle Ihre aktuellen Embeddings zu löschen:
    • Gehen Sie in den Container ./launcher enter app
    • Betreten Sie die Rails-Konsole rails c
    • Führen Sie ::DiscourseChatbot::PostEmbedding.delete_all aus
    • exit (um zur Root-Ebene im Container zurückzukehren)
  • Führen Sie rake chatbot:refresh_embeddings[1] aus
  • Wenn es aus irgendeinem OpenAI-seitigen Grund halbwegs fehlschlägt, führen Sie es erneut aus, bis Sie 100% erreichen
  • Das neue Modell ist bekanntermaßen genauer, also müssen Sie möglicherweise chatbot_forum_search_function_similarity_threshold senken, oder Sie erhalten keine Ergebnisse :). Ich habe meinen Standardwert von 0.8 auf 0.6 gesenkt, aber Ihre Ergebnisse können variieren.

Bot-Typ

n
Nehmen Sie sich einen Moment Zeit, um die gesamte Reihe der Plugin-Einstellungen zu lesen. Die Einstellung chatbot bot type ist entscheidend, und es gibt eine für jede Chatbot-„Vertrauensstufe“:

Der RAG-Modus ist überlegen, wird aber mehr Aufrufe an die API senden, was die Kosten potenziell erhöhen kann. Das gesagt, die Reduzierung seiner Tendenz, ultimately ‘Halluzinationen’ auszugeben, könnte es Ihnen ermöglichen, von GPT-4 auf GPT-3.5 zu wechseln, und Sie könnten am Ende weniger ausgeben, trotz der signifikanten Erhöhung der Nützlichkeit und Zuverlässigkeit der Ausgabe. GPT 3.5 ist auch aufgrund der Antwortzeiten besser für den Agententyp geeignet. Ein potenzieller Win-Win! Experimentieren Sie!

Damit Chatbot in Chat funktioniert, muss Chat aktiviert sein.

Wie man den Bot zum Antworten bringt

Grundregeln

  • Wenn in den Plugin-Einstellungen berechtigt, wird der Bot auf jeden Beitrag oder jede Nachricht antworten, wenn er in einem Thema oder Chat-Kanal mit nur einem einzelnen Benutzer aufgerufen wird, bis mehr Leute beitreten.
  • Der Bot wird immer aufgerufen, wenn Sie ihn @ erwähnen

Spezieller Auto-Antworter pro Kategorie

  • Pro Kategorie können Sie Chatbot veranlassen, auf jedes neue Thema zu antworten, und Sie können ihm spezielle Anweisungen geben, was zu tun ist, geregelt durch einen kategoriespezifischen Prompt, den Sie in den Kategorieeinstellungen einrichten.

Sollte mit etwas wie beginnen:

“Begrüßen Sie mich, indem Sie Hallo sagen und sich vorstellen. Teilen Sie mit mir 5 Beiträge auf dem Forum, indem Sie die lokale Forensuche verwenden, die relevant für meinen ersten Beitrag ist, einschließlich Links”

dh Sie müssen es in der ersten Person schreiben, als ob der Benutzer um Hilfe bittet. Es ist kein System-Prompt. Es beschreibt nicht, wie der Bot sich verhalten soll (das ist für den System-Prompt, der immer noch gesendet wird). Es ist ein Benutzer, der um spezifische Hilfe bittet (wenn auch versteckt). Im Grunde schreiben Sie es so, als wäre es ein Benutzerbeitrag, ohne den Bot erwähnen zu müssen.

Antwortgeschwindigkeit des Bots

Dies wird hauptsächlich von einer Einstellung geregelt: ‎chatbot_reply_job_time_delay‎, über die Sie entscheiden können.

Die Absicht, diese Einstellung zu haben, ist:

  • Sie davor zu schützen, die Ratenlimits von OpenAI zu erreichen
  • Ihre Website davor zu schützen, dass Benutzer den Bot spammen und Ihnen Geld kosten
  • Discourse genug Zeit geben, um hotgelinkte Bilder hochzuladen, damit der Bot sie sehen kann.

Es ist jetzt standardmäßig ‘2’ Sekunden und kann jetzt auf Null reduziert werden :racing_car:, aber seien Sie sich der oben genannten Risiken bewusst. Bot-Vision (wenn Sie sie verwenden) ist besonders empfindlich gegenüber dieser Einstellung. Wenn Sie feststellen, dass der Bot Ihre Bilder nicht sieht, versuchen Sie, diesen Wert zu erhöhen.

Wenn Sie dies auf Null setzen, wird der Bot, auch im ‘Agent’-Modus, viel ‘reaktionsschneller’.

Offensichtlich kann dies etwas künstlich sein, und kein echter Mensch würde tatsächlich so schnell tippen … aber stellen Sie es nach Ihrem Geschmack und Ihrer Geldbörse ein.

HINWEIS: Ich kann die Antwortgeschwindigkeit der OpenAI-API nicht direkt steuern – und die allgemeine Regel war, dass je fortschrittlicher das Modell, desto langsamer die Antwort normalerweise sein wird. Was heute allgemeiner der Fall ist, ist, dass die ‘Mini’-Modelle tendenziell schneller sind.

KI-gestützte Sammlung von Benutzerfeldern (experimentell)

Wenn ein Benutzer einige optionale Benutzerfelder hat, die derzeit leer sind, wird das Aktivieren dieser Einstellung dazu führen, dass der Bot den Benutzer nach den Informationen fragt. Er wird durch die ausstehenden Benutzerfelder gehen, bis sie ausgefüllt sind, und dann zum normalen Verhalten zurückkehren.

image

(Entschuldigung für die langsame Antwort – dies wurde in der Entwicklungsumgebung aufgenommen)

HINWEIS: Diese Funktion unterstützt nur:

  • Text
  • Dropdowns
  • Bestätigungen

Mehrfachauswahl wird noch nicht unterstützt.

Die Felder müssen optional sein

Die Reihenfolge der Benutzerfelder bestimmt die Priorität.

Ollama & llama3-Unterstützung

Ollama-Unterstützung für (das völlig AWESOME!) llama3 wird jetzt ausgeliefert:

Dies ist für den Fall, dass der Bot lokal in der Entwicklungsumgebung oder in der Cloud mit einem Ollama-Server ausgeführt wird … und im Basis-Modus:

  • Stellen Sie sicher, dass das Modell llama3 ist:

  • Die benutzerdefinierte URL muss auf http://localhost:11434 gesetzt sein:

image

Wenn Sie einen großen genug Server haben, könnten Sie Ollama in der Cloud dort betreiben.

DeepSeek Hype :sweat_smile:

Steigen Sie mit Chatbot ein :rocket:

Sie können den Bot mindestens im Basis-Modus verwenden, um auf V3 und R1 zuzugreifen

Ich habe verwendet:

(Kein Affiliate)

die ihre Modelle hosten.

So eingerichtet:

Stellen Sie sicher, dass Sie den Basis-Bot-Modus setzen und Ihren Schlüssel ersetzen.

Aber Sie können möglicherweise DeepSeek AI direkt verwenden, wenn Sie auf deren Website zugreifen können, um sich anzumelden :sweat_smile:

Die Basis-URL wäre “https://api.deepseek.com”.

OpenAI

Sie müssen ein Token von https://platform.openai.com/ erhalten, um den aktuellen Bot zu verwenden. Ein Standard-Sprachmodell ist gesetzt (eines der fortschrittlichsten), aber Sie können eine günstigere Alternative ausprobieren, die Liste ist hier

Es gibt einen automatisierten Teil der Einrichtung: Bei der Hinzufügung zu einem Discourse richtet das Plugin derzeit einen KI-Bot-Benutzer mit den folgenden Attributen ein

  • Name: ‘Chatbot’
  • Benutzer-ID: -4
  • Bio: “Hallo, ich bin kein echter Mensch. Ich bin ein Bot, der Dinge mit Ihnen besprechen kann. Nehmen Sie mich nicht zu ernst. Manchmal habe ich sogar recht!”
  • Gruppenname: “ai_bot_group”
  • Gruppenvollname: “AI Bots”

Sie können den Namen, das Avatar und die Bio (siehe Lokalisierungsstring in Admin → Anpassen → Text) nach Belieben bearbeiten, aber machen Sie es einfach zu erwähnen.

Es ist nicht kostenlos, also gibt es ein Kontingentsystem, und Sie müssen dies einrichten

Anfangs wird niemand Zugriff auf den Bot haben, nicht einmal das Personal.

Der Aufruf der OpenAI-API ist nach Ablauf einer anfänglichen kostenlosen Zuteilung nicht kostenlos! Also habe ich ein Kontingentsystem implementiert, um dies unter Kontrolle zu halten, die Kosten niedrig zu halten und Missbrauch zu verhindern. Die Kosten sind bei diesen kleinen Interaktionen nicht wahnsinnig, aber sie können sich summieren, wenn es beliebt wird. Sie können mehr über die OpenAI-Preise auf ihrer Preisseite lesen.

Um mit dem Bot zu interagieren, müssen Sie zu einer Gruppe gehören, die zu einer der drei Stufen vertrauenswürdiger Gruppen-Sets hinzugefügt wurde: niedriges, mittleres und hohes Vertrauensgruppen-Set. Sie können die Anzahl der erlaubten Interaktionen pro Woche pro vertrauenswürdigen Gruppen-Set in den entsprechenden Einstellungen ändern.

Sie müssen auch die Gruppen füllen. Diese Konfiguration liegt entirely in Ihrer Hand. Sie beginnen leer, so dass initially niemand Zugriff auf den Bot hat:

In diesem Beispiel habe ich staff hohen Vertrauenszugriff gegeben, während trust_level_0 niedrigen Vertrauen hat. Sie erhalten die entsprechenden Kontingente in drei zusätzlichen Einstellungen.

Beachten Sie, dass der Benutzer das Kontingent basierend auf der höchsten vertrauenswürdigen Gruppe erhält, der er angehört.

“Prompt Engineering”

Es gibt mehrere Lokalisierungs-Text-„Einstellungen“, die beeinflussen, was der Bot erhält und wie der Bot antwortet.

Die wichtigste, die Sie in Betracht ziehen sollten zu ändern, ist der system-Prompt des Bots. Dies wird jedes Mal gesendet, wenn Sie mit dem Bot sprechen.

Für den Basis-Bot können Sie einen System-Prompt wie diesen ausprobieren:

’Du bist ein extremer Formel-1-Fan, du liebst alles, was mit Motorsport und seinen hochoktanigen Spannungsniveaus zu tun hat’ statt des Standards.

(Für den RAG-Bot müssen Sie alles nach „Du bist ein hilfreicher Assistent.“ beibehalten, oder Sie könnten das Agenten-Verhalten brechen. Setzen Sie es zurück, wenn Sie auf Probleme stoßen. Auch hier: Experimentieren Sie!)

Probieren Sie einen aus, der am besten zum Thema Ihres Forums passt. Seien Sie kreativ!

Beachten Sie, dass es jetzt zwei System-Prompts für jeden Bot-Typ gibt. Einer .open wird verwendet, wenn man mit dem Bot „öffentlich“ spricht. Der andere .private wird angewendet, wenn man mit dem Bot in persönlichen Nachrichten oder Direktnachrichten-Chat spricht. Dies ist so, dass Sie das private Verhalten für z. B. einen Support-Bot anpassen können.

Das Ändern dieser Lokalisierungsstrings kann das Verhalten des Bots sehr unterschiedlich machen, kann aber nicht auf der Fly geändert werden. Ich würde empfehlen, nur den System-Prompt zu ändern, da die anderen eine wichtige Rolle im Agenten-Verhalten oder bei der Bereitstellung von Informationen darüber spielen, wer was zum Bot gesagt hat.

HINWEIS: In Themen werden der erste Beitrag und der Titel des Themas zusätzlich zum Fenster der Beiträge (bestimmt durch die Lookback-Einstellung) gesendet, um dem Bot mehr Kontext zu geben.

Sie können diese Strings in Admin → Anpassen → Text unter chatbot.prompt. bearbeiten, wobei die wichtigsten die System-Prompts sind, die in: chatbot.prompt.system. sind.

Unterstützt sowohl Beiträge als auch Chat-Nachrichten!

Der Bot unterstützt Chat-Nachrichten und Themenbeiträge, einschließlich privater Nachrichten (wenn konfiguriert).

Sie können den Bot zum Antworten bringen, indem Sie ihm antworten oder ihn @ erwähnen. Sie können einstellen, wie weit der Bot zurückblickt, um Kontext für eine Antwort zu erhalten. Je größer der Wert, desto teurer wird jeder Aufruf.

Es gibt einen schwebenden Quick-Chat-Button, der Sie sofort mit dem Bot verbindet. Sein Styling ist ein wenig experimentell (Ändern einiger z-index-Werte Ihres Basisforums auf Mobilgeräten) und kann auf einigen Seiten kollidieren. Dies kann in den Einstellungen deaktiviert werden. Sie können wählen, ob Sie den Bot in einen 1-zu-1-Chat oder eine persönliche Nachricht laden möchten.

Jetzt können Sie Ihr bevorzugtes Symbol wählen (Standard :robot: ) oder wenn die Einstellung leer gelassen wird, wird das Avatar des Bot-Benutzers verwendet! :sunglasses:

avatar:

ODER icon:

Und denken Sie daran, Sie können auch den Text anpassen, der angezeigt wird, wenn er erweitert ist:

image

… über Admin → Anpassen → Text

(Obwohl Sie möglicherweise das CSS ein wenig anpassen müssen, um die gewünschten Farben und Größen zu berücksichtigen).

Einige Debugging-Hilfe

  • Stellen Sie sicher, dass die Einstellung chatbot include inner thoughts in private messages EINGESCHALTET ist
  • Stellen Sie sicher, dass die Einstellung chatbot enable verbose rails logging EINGESCHALTET ist
  • SSH in Ihren Server
  • cd /var/discourse/shared/standalone/log/rails
  • Fragen Sie parallel den Bot etwas in der PM
  • Gehen Sie sofort zurück zur Konsole
  • Suchen Sie nach diesen Arten von Nachrichten:
    • allgemeiner Chat = tail -n 2000 production.log | grep {\"model\":\"
    • Vision-Aufrufe = tail -n 2000 production.log | grep {\"type\":\"image_url\"
  • Überprüfen Sie die “inneren Gedanken” in der PM

Erweiterung des Chatbot-Toolkits mit Plugins

Das Chatbot-Plugin hat die Fähigkeit, andere Funktionen in separaten Plugins hinzuzufügen, so dass Sie nicht eine Gabel des Chatbot-Repositorys pflegen müssen.

Beispiel-Funktions-Plugin hier:

aber natürlich könnten Sie dies zu jedem Plugin hinzufügen …

Diese Funktion wurde in diesem PR hinzugefügt

Wenn Sie Hilfe bei der Erweiterung von Chatbot benötigen, können Sie mich beauftragen, Ihnen zu helfen.

Deinstallation des Plugins – Wichtig!

Aufgrund der jüngsten Bemühungen, das Plugin zu vereinfachen, sind die einzigen Schritte zur Deinstallation des Plugins jetzt das Entfernen der Clone-Anweisung.

Danke für Ihr Interesse am Plugin!

Haftungsausschluss: Ich bin nicht verantwortlich dafür, was der Bot antwortet. Betrachten Sie das Plugin als in der Beta-Phase, und Dinge könnten schiefgehen. Es wird sich mit Feedback verbessern. Aber nicht unbedingt die Antwort des Bots :rofl: Bitte verstehen Sie die Vor- und Nachteile eines LLM und was sie können und was nicht und ihre Grenzen. Sie sind sehr gut darin, überzeugenden Text zu erstellen, können aber oft faktisch falsch sein.

Wichtiger Datenschutz-Hinweis: Alles, was Sie auf Ihrem Forum schreiben, kann an OpenAI weitergeleitet werden, als Teil des Scans des Bots der letzten paar Beiträge, sobald er zum Antworten aufgerufen wird (offensichtlich ist dies auf das aktuelle Thema oder den Chat-Kanal beschränkt). Während es fast sicher nicht in ihre vortrainierten Modelle einfließen wird, werden sie die Daten in ihrer Analyse und Protokollierung verwenden. Stellen Sie sicher, dass Sie diese Tatsache in die AGB und Datenschutzerklärung Ihres Forums aufnehmen. Verwandte Links: https://openai.com/policies/terms-of-use, https://openai.com/policies/privacy-policy, https://platform.openai.com/docs/data-usage-policies

Urheberrecht: OpenAI hat eine Erklärung zum Urheberrecht hier abgegeben: https://help.openai.com/en/articles/5008634-will-openai-claim-copyright-over-what-outputs-i-generate-with-the-api

TODO/Roadmap-Elemente

  • Front- und Backend-Tests hinzufügen :construction:
  • “Bot tippt”-Indikator und “Antwort-Streaming” hinzufügen (@Aizada_M, @MarcP) :construction:
  • Vergessen Sie, den Bot zu erwähnen? Lassen Sie den Bot auf Bearbeitungen antworten, die seine @-Erwähnung hinzufügen (@frold )
  • Ein Abzeichen hinzufügen? Sie haben @botname erwähnt (@frold )
  • Einstellung hinzufügen, um Kategorie und pinned Posts-Prompt einzuschließen? (@Ed_S)
  • Gleichermaßen Bios zu jedem Nachrichtenverlauf-Prompt? (@Ed_S , @codergautam). Wird das überhaupt funktionieren. Lassen Sie uns Beweise sammeln.
  • Discourse Frotz mit dieser besseren Codebasis aktualisieren?
  • Wechseln Sie zur Verwendung von pgvector statt pgembedding für die Vektorsuche, da ersterer jetzt schnelle HNSW-Suche unterstützt. :white_check_mark:
  • Semantische Suche hinzufügen, damit der Bot Ihre Forum-Beiträge lesen und ein “Experte” werden kann :wink: :white_check_mark:
  • Agenten-Verhalten hinzufügen, um Halluzinationen zu reduzieren und zuverlässige, faktische Informationen zu nutzen. :white_check_mark:
  • Zusätzliche Logik hinzufügen, um verdächtige Benutzernamen in @-Erwähnungen umzuwandeln (@frold ) :white_check_mark:
  • GPT-4-Unterstützung hinzufügen (wenn OpenAI mich für würdig genug hält, Zugang zu haben! :sweat_smile: ) :white_check_mark:
  • Unterstützung für benutzerdefinierte Modellnamen hinzufügen. :white_check_mark:
  • Option hinzufügen, um Zitate aus Beiträgen zu entfernen, bevor Text an die API gesendet wird. :white_check_mark:
  • Fehltransparenz und -behandlung verbessern, wenn OpenAI einen Fehlerzustand zurückgibt :white_check_mark:
  • Wiederholungs capability für zeitüberschrittene API-Anfragen hinzufügen :white_check_mark:
  • Unterstützung für ChatGPT hinzufügen :white_check_mark:
  • Plugin an Discourse-Core-Standards linten :white_check_mark:
  • CI-Workflows hinzufügen :white_check_mark:
  • Einstellungen hinzufügen, um die Natur der Bot-Antwort zu beeinflussen (z. B. wie verrückt sie ist). :white_check_mark:
  • Thementitel & erste Beiträge zum Prompt hinzufügen :white_check_mark:
  • Einstellung hinzufügen, um von rohen Beitrag-/Nachrichtendaten zu cooked zu wechseln, um möglicherweise Web-Trainingsdaten besser zu nutzen (Vorschlag von @MarcP). HINWEIS: Kann teurer sein und einschränken, was als Eingabe zurückgegeben wird, da Eingabe-Token gezählt werden und cooked viel größer ist. Ich denke, wir haben diese Idee aufgegeben

Credits:

*Es verwendet immer noch OpenAIs ChatGPT-Engine, kann aber jetzt lokale Funktionen und Daten aus API-Aufrufen nutzen, um Halluzinationen zu begrenzen.

104 „Gefällt mir“
Building a technical support chatbot
Answer feature
Webhooks on chat messages?
How to check what prevents rake migrate?
Creating bot on discourse
AI Helper Plugin
Copy custom file in discourse container while build
Voice to text integration
Allow specifiy user different from guardian.user in chat services such as Chat::CreateMessage
How to add a ChatGPT trained AI to discourse?
Cannot get the js in my component to compile SyntaxError: Private field must be used in an enclosing class
Allow ChatBot to read PDFs so it can join in a group discussion
How to create a custom ChatGPT based bot?
Discourse and Coveo
Link for new DM / personal chat message with pre-filled information
UX IPhone issues
How to respond to automatic topics with AI
Comparison between discourse-ai AI Bot and merefield/discourse-chatbot
Allow multiple ‘new topic’ drafts
I have error when upgrade the latest discourse
Two different answers from gpt4o - one right, one wrong.. !?
Is the shortcut to start AI conversation a user setting or not?
Setting Form Templates with a tag
Recommendation: chatbot to support discussion in threads
Photography Mentor Bot
Grouped Site Settings under Headings in Plugins
Update Not Completed and Discourse not opening
Recommendation: chatbot to support discussion in threads
Discourse AI Topic Summary :robot:
Discourse AI Topic Summary :robot:
Hubot Adapter for Discourse
Hubot Adapter for Discourse
Verbose log
Making the case for a hard cap feature on user group AI usage for AI bots and AI Helper
LLMs and the impact on customer support
2024: The Year in Review
How to respond to automatic topics with AI
What User Information is Exposed to LLMs in Discourse AI
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Auto responder using AI
Discourse AI Topic Summary :robot:
Discourse Chat Bridge (Telegram)
AI personas integration of the chat plugin: It would be great if site users could chat with AI personas
What's the best way to store data with a plugin?
ChatGPT Assistant Integration
Create posts with AI
Multisite vs multiple containers
Training a model on a site's posts?
How are we all feeling about ChatGPT and other LLMs and how they'll impact forums?
GPT-4 with vision available
Use AI to request summary and others things from topic
Upgrading from /admin/upgrade takes *very* long
Embed additional explainer text in Form Template
We need prompt chains: Allow custom AI persona tools to access LangChain.js and/or longer execution time
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Configure AI Chatbot for Trust Level 0 Access
Enabling AI Bot in Chat
When I start a conversation with the AI, it gives two answers to my question
Balancing Costs and Functionality in AI-Powered Forums
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Weekly Summary of AI topics
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Interact with discourse from Python?
Sidekiq not working
Locations Plugin :earth_africa:
Lessons from Colossal Caves
Issue after Rebuilding Discourse on Digital Ocean Droplet
Locations Plugin :earth_africa:
I have error when upgrade new version of discourse
I have error when upgrade new version of discourse
Site down after upgrade via SSH - how to fix?
2023: The Year in Review
Character count when writing description
Advice on a support bot for a technical support forum (Discourse AI vs Discourse Chatbot)
Is there an option to use Discourse Chat as a customer service type of chat?
Configure AI Chatbot for Trust Level 0 Access

Ich habe Jina.ai zur Liste der unterstützten APIs hinzugefügt, die für die Websuche und das Web-Crawling verwendet werden können. Ein Schlüssel dient beiden Diensten. Vorhandene APIs werden verwendet, wenn Sie deren Schlüssel nicht entfernen.

Es gab zwei Hauptgründe:

  • Die Crawling-Leistung scheint wirklich gut zu sein
  • Sie bieten ein Pay-as-you-go-Modell im Gegensatz zu einer monatlichen Gebühr, was mir und Ihnen passen könnte.

Link in den Einstellungen.

Vielen Dank für Ihr Interesse an Discourse Chatbot.

Zwei Dinge könnten relevant sein:

  • Der Bot wird auf jeden Beitrag antworten, wenn er in einem Thema mit nur einem Benutzer aufgerufen wird, bis sich mehr Personen dem Thema anschließen.
  • Pro Kategorie können Sie den Chatbot dazu bringen, auf jedes neue Thema zu antworten, und Sie können ihm spezielle Anweisungen geben, was er tun soll, gesteuert durch eine kategoriespezifische Eingabeaufforderung, die Sie in den Kategorieeinstellungen festlegen.

Der Bot wird immer aufgerufen, wenn Sie ihn mit @ erwähnen, daher weiß ich nicht, ob Sie diese Funktion auch nutzen können.

1 „Gefällt mir“

„Jeden“ Beitrag? Oder nur diejenigen mit einem Schlüsselwort? Sind das zwei verschiedene Anforderungen?

Vielleicht könntest du im vordefinierten Antworttext den Chatbot erwähnen, und der Bot würde dann nachfassen? Das würde zwei Beiträge bedeuten, könnte aber funktionieren.

Wenn deine vordefinierte Antwort also „@Chatbot (oder wie auch immer du ihn umbenannt hast), bitte kümmere dich darum“ lautet, würde Chatbot nachfassen. Natürlich kannst du diese Antwort anpassen.

Beachte, dass Chatbot auch auf Flüstern antworten kann (wenn du es so konfigurierst). Wenn die vordefinierte Antwort also in einem Flüstern gesendet wurde, würden normale Nutzer nur die Antwort des Chatbots sehen, was vielleicht sauberer aussieht.

Ich bin offen, die Fähigkeiten von Chatbot zu erweitern, wenn du mich beauftragen möchtest, dies zu tun – vorausgesetzt, wir können eine ausreichend allgemeine Lösung finden, die auch für andere nützlich wäre. Aber es macht meines Erachtens Sinn, das Vorhandene zu nutzen.

Ich frage mich, ob der beste Schritt hier wäre, dem KI-Beitragsklassifizierer eine Flüstern-Funktion hinzuzufügen? Du könntest jemanden beauftragen, einen Pull-Request dafür einzureichen, oder es als Contribute > Feature melden und hoffen, dass es priorisiert wird. Das wäre zweifellos allgemein nützlich.

Ich habe einige Codevereinfachungen vorgenommen, indem ich eine Funktion genutzt habe, die zur OpenAI API hinzugefügt wurde. Lassen Sie mich wissen, wenn Sie auf Probleme stoßen.

Ich habe beschlossen, dass es an der Zeit war, dies 1.0.0 zu nennen :champagne: :tada: :partying_face:

4 „Gefällt mir“

Die Möglichkeit hinzugefügt, andere Funktionen in separaten Plugins hinzuzufügen, sodass Sie keinen Fork des Chatbot-Repositorys pflegen müssen.

Beispiel-Funktionsplugin hier:

aber natürlich könnten Sie dies zu jedem Plugin hinzufügen …

PR:

4 „Gefällt mir“

@Festinger hast du das gelöst?

Post-Einbettung: Es gab ein Problem, aber der erneute Versuch wird bis zum Limit fortgesetzt: undefined method `destroy!’ for nil

Nach dem letzten Update erhalte ich die obige Fehlermeldung. Ich erhalte diese Fehlermeldung insbesondere bei Bildern. Meine Einstellung für den Sichtmodus ist: direkt. Ich habe solche Fehler vorher nicht bekommen.

Erinnern Sie sich, dass Sie kurz nach dem Erstellen einen Beitrag (oder ein Thema) gelöscht haben?

Dieser Fehler tritt auf, wenn Sie einen Beitrag erstellen und ihn dann löschen, bevor er eine Einbettung erstellen kann. Wenn Sie ihn dann löschen, versucht Chatbot, eine nicht vorhandene Einbettung zu löschen, was eine ärgerliche Protokollnachricht erzeugt, aber keinen Schaden anrichtet :wink:

Wenn Ihnen eine bessere Möglichkeit einfällt, dies zu tun, können Sie gerne einen PR einreichen.

1 „Gefällt mir“

Es gab einen Fehler wie diesen in dem vom Benutzer gesendeten Problem. Das war nichts, was ich gelöscht habe.

Wie hat der Benutzer das gesehen? Das steht nur in den Protokollen?

Ich habe es in den Protokollen gesehen. Ich verfolge es seit einem Tag, insbesondere tritt das Problem bei Beiträgen von langjährigen Mitgliedern auf. Wenn ein neues Mitglied ein Thema mit einem Bild eröffnet, gibt es normalerweise kein Problem, es wird kein Fehler empfangen. Wenn alte Benutzer ein Thema mit einem Bild eröffnen, gibt es ein Problem.

Können Sie bitte den Backtrace teilen?

Warum hat der Benutzer Ihnen dann ein Problem geschickt? Was haben sie Ihnen gesagt? Der Benutzer sollte nichts von einem Problem wissen, es erscheint einfach in den Protokollen?

Klingt so, als ob Ihre „alten Mitglieder“ ihren kürzlich neuen Beitrag oder ihre neue Nachricht löschen könnten (da sie wissen, wie das geht)?

Haben Sie irgendeine Art von Automatisierung im Einsatz?

Es gibt keine Zerstörung beim Posten eines Beitrags mit einem Bild, daher bin ich mir nicht sicher, wie das passieren könnte.

Update: Ich habe gerade ein Bild auf eine Website hochgeladen und kann es nicht reproduzieren.

1 „Gefällt mir“

SerpAPI ist in Ordnung, und ihre Statistiken zeigen, dass die Anfrage zur Nutzung von Google durchgeführt wurde, aber der Chatbot behauptet, er könne Google nicht nutzen. Diese Situation besteht schon länger, aber ich habe nicht reagiert, da DAI zu diesem Zeitpunkt Google auch nicht nutzen wollte.

Keine Fehlermeldungen.

1 „Gefällt mir“

Was passiert, wenn Sie sagen „Im Web suchen nach …“?

Der interne Prompt ist generisch und geht nicht von Google aus …

Lassen Sie mich Ihnen eine sehr gute Demo dieser leistungsstarken Funktion zeigen:

(obwohl dies die gebündelte Alternative jina.ai verwendet)

Ich habe das versucht. Die Systemaufforderung enthielt „Wenn ein Benutzer Google für die Suche verwendet, meint der Benutzer tatsächlich, dass Sie die Web-Suchfunktion verwenden sollten, auf die Sie Zugriff hatten“. Ich habe diesen Teil gelöscht und dann die Formulierung „Websuche“ in meiner Benutzereingabeaufforderung versucht – schließlich verwendet sie keine API von Google. Kein Erfolg und eine ähnliche Antwort: Ich kann keine Websuche durchführen…

Das ist alles, was ich gefunden habe, aber es öffnet sich nicht:

{
  "id": "chatcmpl-A1wT9Dp1fCIVSzRsVPhr3NnNCcPjW",
  "object": "chat.completion",
  "created": 1725026447,
  "model": "gpt-4o-2024-05-13",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": null,
        "tool_calls": [
          {
            "id": "call_MvzexRPsDj6EGuXhuiFcmtrd",
            "type": "function",
            "function": {
              "name": "web_search",
              "arguments": "{\"query\":\"International Dog Day date, reason, and history\"}"
            }
          }
        ],
        "refusal": null
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1203,
    "completion_tokens": 20,
    "total_tokens": 1223
  },
  "system_fingerprint": "fp_157b3831f5"
}
2 „Gefällt mir“

Ich kann ohne das leben, denn mein Ziel ist es, Chatbot als internen Q/A-Bot zu nutzen, und Jina könnte das Problem der Nutzung meiner Hauptinhaltsseite (über WordPress) lösen.

Aber das Ergebnis, als ich von außerhalb der Welt suchte, war nicht wie erwartet.

1 „Gefällt mir“

Ich werde sehen, ob ich das reproduzieren kann

1 „Gefällt mir“

Es funktioniert für mich entweder über die Serp API oder Jina.ai.

Können Sie bitte die „inneren Gedanken“ des Bots vom PM bereitstellen?

Innere Gedanken
[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_mKY7pfG54xRduRKCz5xee9E0",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"list of English butterflies\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_mKY7pfG54xRduRKCz5xee9E0",
    "content": "A-Z der Schmetterlinge · Adonisbläuling · B Schwarzer Feuerfalter · Zitronenfalter · Rotbrauner Bläuling · Dunkler Feuerfalter · C Wolkenkuckucksheim-Bläuling · Schachbrett-Dickkopffalter · Gelbspanner · D."
  }
]
1 „Gefällt mir“

Sollten wir das per PM machen? Wir verschmutzen gerade nur dieses Thema.

Aber:

[
  {
    "role": "assistant",
    "content": "",
    "tool_calls": [
      {
        "id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
        "type": "function",
        "function": {
          "name": "web_search",
          "arguments": "{\"query\":\"International Dog Day date and history\"}"
        }
      }
    ]
  },
  {
    "role": "tool",
    "tool_call_id": "call_4xitHqRBJ8Wc1HI546r3Wj1U",
    "content": "International Dog Day date and history: my search for this on the internet failed."
  }
]