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 installierst du Plugins in Discourse
:heart: Sponsoring Bitte erwäge, ein regelmäßiger Sponsor meiner Open-Source-Arbeit zu werden, auf einem Niveau, das zu den Ressourcen und Bedürfnissen deiner Person oder Organisation passt, um sicherzustellen, dass dieses Plugin die Wartung erhält, die es verdient, und in Zukunft weiterhin auf deiner Website funktioniert.

Gefällt dir dieses Plugin? Bitte gib ihm einen :star: auf GitHub! :pray:

:information_source: Da es sich um ein unabhängig beigesteuertes Plugin handelt, bitte ich dich, Supportanfragen, Fehlerberichte, UX-Feedback und Funktionswünsche hier in diesem Thema zu stellen. Hinweis: Dieses Plugin ist nicht auf Discourse.org-Hosting verfügbar. Du kannst es installieren, wenn du selbst gehostet bist, und möglicherweise auch, wenn du Drittanbieter-Hosting nutzt (aber prüfe dies bei deinem Anbieter).

Der ursprüngliche KI-Chatbot für Discourse

Chatbot bringt konfigurierbare KI-Gespräche in Themen, persönliche Nachrichten, Chat-Kanäle und Chat-Threads. Gib dem Bot einen Charakter, der zu deiner Community passt, entscheide, welche Gruppen ihn nutzen dürfen, und wähle verschiedene Modelle und Tools für Benutzer mit niedrigem, mittlerem und hohem Vertrauensniveau.

Er kann:

  • normal aus dem aktuellen Gespräch antworten;
  • ausgewählte Foreninhalte mit semantischer oder hybrider Suche durchsuchen;
  • Wikipedia, aktuelle Nachrichten und das Web durchsuchen;
  • ferne Seiten crawlen und Tagesend-Marktdaten abrufen;
  • zuverlässige ausdrucksbasierte Berechnungen durchführen;
  • hochgeladene Bilder sehen und optional PDFs lesen;
  • Bilder generieren und bearbeiten;
  • offene, bearbeitbare Benutzerfelder in privaten Gesprächen sammeln;
  • private Chat-Gespräche an konfigurierte Staff-Gruppen eskalieren;
  • automatisch auf neue Themen in ausgewählten Kategorien antworten; und
  • zusätzliche Tools akzeptieren, die von anderen Plugins bereitgestellt werden.

Für einen praktischen Support-Workflow siehe Einen technischen Support-Chatbot erstellen.

Mit aktivierter lokaler Forensuche kann der Bot Antworten auf den Inhalten deiner Community basieren:

Für einfachere Gespräche, stelle weniger oder keine Tools bereit, um Aufrufe, Latenz und Kosten zu reduzieren:

Anbieterunterstützung

Wähle die Anbieter unabhängig für Antworten, Embeddings, Vision und Bildgenerierung. Jede Funktion verwendet den API-Schlüssel des jeweiligen ausgewählten Anbieters.

Funktion OpenAI Anthropic Google Gemini xAI
LLM-Antworten und Tools :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Embeddings :white_check_mark: :white_check_mark: :white_check_mark:
Vision :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
Bildgenerierung :white_check_mark: :white_check_mark: :white_check_mark:
Bildbearbeitung GPT Image models :white_check_mark:
PDF-Gesprächseingabe :white_check_mark:

Wenn keine benutzerdefinierte URL festgelegt ist, verwendet Chatbot den eingebauten offiziellen Endpunkt für den ausgewählten Anbieter. Benutzerdefinierte Modellnamen und URLs unterstützen Azure OpenAI, Ollama, Proxys und andere Dienste, die die API-Struktur eines unterstützten Anbieters implementieren.

Anbieterspezifische Modell-Dropdowns werden nur angezeigt, wenn dieser Anbieter aktiv ist. Das Antwortmodell kann je nach Vertrauensniveau variieren, während Embeddings, Vision und Bildgenerierung jeweils über einen eigenen Anbieter- und Modell-Selektor verfügen.

Lies den vollständigen Leitfaden zu Anbietern und benutzerdefinierten Endpunkten.

Zugriff, Kontingente und Tools

Niemand hat Zugriff, bis du Gruppen in den Chatbot-Einstellungen für niedriges, mittleres oder hohes Vertrauensniveau zuweist. Benutzer erben das Kontingent, das Modell und die Tool-Allowlist ihres höchsten übereinstimmenden Chatbot-Vertrauensniveaus. Kontingente können nach Abfragen oder Tokens gemessen werden.

Eingebaute Tools werden unabhängig für jedes Vertrauensniveau ausgewählt. Anmeldeinformationen und unterstützende Einstellungen steuern weiterhin die Verfügbarkeit zur Laufzeit, sodass die Auswahl eines Web-Tools ohne dessen API-Schlüssel es nicht offenlegt.

Lies über Zugriff und Kontingente und Tools nach Vertrauensniveau.

Lokale Forensuche und Datenschutz

:biohazard: Bitte verstehe den Embedding-Umfang, bevor du die lokale Forensuche aktivierst.

Die Standard-benchmark_user-Strategie erstellt Embeddings für Inhalte, die für einen geeigneten Benutzer auf dem konfigurierten Vertrauensniveau sichtbar sind. Die categories-Strategie erstellt Embeddings für Inhalte aus explizit ausgewählten Kategorien. Die semantische Suche ist auf Geschwindigkeit optimiert und wiederholt keine Sichtbarkeitsprüfung für jede Person, die den Bot fragt, daher können übereinstimmende Inhalte außerhalb ihres ursprünglichen Publikums geteilt werden, wenn der Umfang eingeschränkte Inhalte umfasst.

Persönliche Nachrichten werden niemals eingebettet. Halte das Benchmark-Vertrauensniveau niedrig, vermeide private Kategorien, es sei denn, deren Inhalte können jedem Chatbot-Benutzer offengelegt werden, und entferne local_forum_search von Vertrauensniveaus, die es nicht verwenden sollen.

Die ausgewählten Anbieter können Gesprächsinhalte, Uploads, eingebettete Suchtreffer und Tool-Ergebnisse erhalten. Prüfe deren Aufbewahrungs- und Datennutzungsbedingungen und lege diese Verarbeitung in den Nutzungsbedingungen und der Datenschutzerklärung deines Forums offen.

Lies den vollständigen Leitfaden zu Embeddings, Umfang und Datenschutz.

Schnellstart

  1. Installiere das Plugin mit dem normalen Self-Hosted-Plugin-Verfahren.
  2. Wähle chatbot_llm_provider, gib den API-Schlüssel dieses Anbieters ein und wähle Modelle für jedes Vertrauensniveau.
  3. Füge Gruppen zu den Zugriffseinstellungen für niedriges, mittleres oder hohes Vertrauensniveau hinzu und konfiguriere Kontingente.
  4. Wähle die für jedes Vertrauensniveau verfügbaren eingebauten Tools aus.
  5. Wenn du local_forum_search aktivierst, konfiguriere dessen Embedding-Anbieter und überprüfe dessen Umfang sorgfältig.
  6. Erwähne den Bot, antworte ihm, verwende die Schnellzugriffstaste oder konfiguriere einen Kategorie-Auto-Antwort-Prompt.

Kurzes OpenAI-Beispiel

  1. Erstelle einen OpenAI-API-Schlüssel und stelle sicher, dass API-Abrechnung aktiviert ist.
  2. Setze chatbot_llm_provider auf OpenAI und füge den Schlüssel in chatbot_open_ai_token ein.
  3. Lass die benutzerdefinierte URL leer, wähle ein OpenAI-Modell für jedes Vertrauensniveau, das du verwenden möchtest, und füge deine Testgruppe zur entsprechenden Chatbot-Zugriffseinstellung hinzu.
  4. Erwähne den Bot in einem erlaubten Thema, einer persönlichen Nachricht oder einem Chat, um ihn zu testen.

Das Repository-README ist die maßgebliche Quelle für Voraussetzungen, jede wichtige Einstellungsgroup, anbieterspezifisches Verhalten, benutzerdefinierte Endpunkte, Embedding-Wartung, Prompt-Anpassung, Debugging, Erweiterungsentwicklung und Deinstallation:

:books: Das vollständige README öffnen

Ausgewählte UI-Funktionen

Kategorien können ein neues Thema begrüßen und den Bot bitten, nach relevanten Community-Inhalten zu suchen:

Die optionale Schnellzugriffstaste kann einen direkten Chat oder eine persönliche Nachricht mit dem Bot öffnen:

Das Benutzerfelder-Tool kann unterstützte leere Felder privat sammeln:

Benutzerfelder-Sammlung

Support und Sponsoring

Bitte melde Supportanfragen, Fehler, UX-Feedback und Funktionsideen in diesem Meta-Thema. Nenne den Anbieter, den Modellnamen, die relevanten Einstellungen, den HTTP-Status und die Anbieter-Antwort, wobei du API-Schlüssel und private Inhalte entfernst.

Diese Arbeit hängt von der Unterstützung der Community ab. Wenn das Plugin für deine Website wertvoll ist, bitte sponsore seine laufende Wartung.

Projektsponsoren

Sponsor Niveau Website
Surety Silver Plus suretyhome.com

Haftungsausschluss

LLMs können überzeugende, aber falsche Ausgaben erzeugen. Teste das Plugin anhand der Bedürfnisse deiner Community, verstehe die Datenschutz- und Kostenauswirkungen und wende angemessene Moderation an. Die Bedingungen für generierte Ausgaben unterscheiden sich je nach Anbieter und Rechtsprechung; prüfe die Bedingungen für jeden Anbieter, den du aktivierst.

104 „Gefällt mir“
Building a technical support chatbot
Answer feature
Webhooks on chat messages?
How to check what prevents rake migrate?
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
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
Locations Plugin :earth_africa:
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?
Locations Plugin :earth_africa:
Locations Plugin :earth_africa:
Is there any built-in chatbot or conversational assistant available in Discourse?
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)

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."
  }
]