Discourse チャットボット 🤖

:information_source: 概要 Discourse用のオリジナルAIチャットボット
:hammer_and_wrench: リポジトリリンク GitHub - merefield/discourse-chatbot: An AI bot with RAG capability for Topics, Chat & Customer Support in Discourse, currently powered by OpenAI · GitHub
:open_book: インストールガイド Discourseにプラグインをインストールする方法
:heart: スポンサーシップ このプラグインがふさわしいメンテナンスを受け、将来もあなたのサイトで機能し続けるよう、あなたやあなたの組織の資源とニーズに合ったレベルで、私のオープンソース活動の継続的なスポンサーになってください。

このプラグインをお楽しみいただいている場合は、GitHubで:star: を押してください! :pray:

:information_source: これは独立して貢献されたプラグインであるため、サポート、バグ、UX、機能のリクエストは、このトピック内で行ってください。なお、このプラグインはDiscourse.orgのホスティングでは利用できません。セルフホスティングの場合、またはサードパーティのホスティング(プロバイダーに確認してください)の場合にはインストールできます。

Discourse用のオリジナルAIチャットボット

Chatbotは、設定可能なAI対話をトピック、パーソナルメッセージ、チャットチャンネル、チャットスレッドに持ち込みます。コミュニティに合ったキャラクターをボットに与え、どのグループが使用できるかを決定し、低・中・高信頼度ユーザーに対して異なるモデルやツールを選択できます。

以下のことができます:

  • 現在の会話から通常に回答する;
  • セマンティック検索またはハイブリッド検索で選択されたフォーラムコンテンツを検索する;
  • ウィキペディア、最新のニュース、ウェブを検索する;
  • リモートページをクロールし、日中の市場データを取得する;
  • 信頼性の高い式ベースの計算を実行する;
  • アップロードされた画像を表示し、オプションでPDFを読む;
  • 画像を生成および編集する;
  • プライベートな会話で未記入の編集可能なユーザーフィールドを収集する;
  • プライベートなチャット会話を設定されたスタッフグループにエスカレーションする;
  • 選択されたカテゴリの新規トピックに自動的に応答する;
  • 他のプラグインによって提供される追加のツールを受け入れる。

実践的なサポートワークフローについては、技術サポートチャットボットの構築を参照してください。

ローカルフォーラム検索を有効にすると、ボットはコミュニティのコンテンツに基づいて回答を裏付けることができます:

よりシンプルな会話のために、呼び出し、レイテンシ、コストを削減するために、ツールを少なくまたは無効にします:

プロバイダーサポート

返信、エンベディング、ビジョン、画像生成のために、プロバイダーを独立して選択できます。各機能は、選択されたプロバイダーに属するAPIキーを再利用します。

機能 OpenAI Anthropic Google Gemini xAI
LLMの返信とツール :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
エンベディング :white_check_mark: :white_check_mark: :white_check_mark:
ビジョン :white_check_mark: :white_check_mark: :white_check_mark: :white_check_mark:
画像生成 :white_check_mark: :white_check_mark: :white_check_mark:
画像編集 GPT Imageモデル :white_check_mark:
PDF会話入力 :white_check_mark:

カスタムURLが設定されていない場合、Chatbotは選択されたプロバイダーの組み込みの公式エンドポイントを使用します。カスタムモデル名とURLは、Azure OpenAI、Ollama、プロキシ、およびサポートされているプロバイダーのAPI形状を実装する他のサービスをサポートしています。

プロバイダー固有のモデルドロップダウンは、そのプロバイダーがアクティブな場合のみ表示されます。返信モデルは信頼度レベルによって異なり、エンベディング、ビジョン、画像生成はそれぞれ独自のプロバイダーとモデルセレクターを持っています。

完全なプロバイダーとカスタムエンドポイントガイドを読む

アクセス、クォータ、ツール

Chatbotの低・中・高信頼度グループ設定にグループを割り当てるまで、誰もアクセスできません。ユーザーは、彼らの最も高い一致するChatbot信頼度レベルのクォータ、モデル、ツール許可リストを継承します。クォータはクエリまたはトークンで測定できます。

組み込みツールは、各信頼度レベルに対して独立して選択されます。認証情報とサポート設定は依然としてランタイムでの利用可能性を制御するため、APIキーなしでウェブツールを選択しても、それは公開されません。

アクセスとクォータおよび信頼度レベルツールについて読む。

ローカルフォーラム検索とプライバシー

:biohazard: ローカルフォーラム検索を有効にする前に、エンベディングの範囲を理解してください。

デフォルトの benchmark_user 戦略は、設定された信頼度レベルで適切なユーザーに見えるコンテンツをエンベディングします。 categories 戦略は、明示的に選択されたカテゴリのコンテンツをエンベディングします。セマンティック検索は速度のために最適化されており、ボットに質問するすべての人に対して可視性チェックを繰り返さないため、範囲が制限されたコンテンツを含む場合、一致するコンテンツは元のオーディエンスの外で共有される可能性があります。

パーソナルメッセージは決してエンベディングされません。ベンチマーク信頼度レベルを低く保ち、そのコンテンツがすべてのChatbotユーザーに開示される可能性がある場合を除き、プライベートなカテゴリを避けてください。また、使用すべきではない信頼度レベルから local_forum_search を削除してください。

選択されたプロバイダーは、会話内容、アップロード、エンベディングされた検索一致、ツール結果を受け取る可能性があります。それらの保持とデータ使用の条件を確認し、フォーラムの利用規約とプライバシー通知でこの処理を開示してください。

完全なエンベディング、範囲、プライバシーガイドを読む

クイックスタート

  1. 通常のセルフホスティングプラグイン手順を使用してプラグインをインストールします。
  2. chatbot_llm_provider を選択し、そのプロバイダーのAPIキーを入力し、各信頼度レベルのモデルを選択します。
  3. 低・中・高信頼度アクセス設定にグループを追加し、クォータを設定します。
  4. 各信頼度レベルで利用可能な組み込みツールを選択します。
  5. local_forum_search を有効にする場合、そのエンベディングプロバイダーを設定し、その範囲を慎重にレビューします。
  6. ボットにメンションし、それに応答し、クイックアクセスボタンを使用するか、カテゴリの自動応答プロンプトを設定します。

クイックOpenAI例

  1. OpenAI APIキーを作成し、API請求が有効であることを確認します。
  2. chatbot_llm_provider をOpenAIに設定し、キーを chatbot_open_ai_token に貼り付けます。
  3. カスタムURLを空白にし、使用予定の各信頼度レベルにOpenAIモデルを選択し、テストグループを一致するChatbotアクセス設定に追加します。
  4. 許可されたトピック、パーソナルメッセージ、またはチャットでボットにメンションしてテストします。

リポジトリのREADMEは、前提条件、すべての主要な設定グループ、プロバイダー固有の動作、カスタムエンドポイント、エンベディングのメンテナンス、プロンプトのカスタマイズ、デバッグ、拡張機能の開発、アンインストールの信頼できる情報源です:

:books: 完全なREADMEを開く

選択されたUI機能

カテゴリは新しいトピックを迎え、関連するコミュニティコンテンツを検索するようにボットに依頼できます:

オプションのクイックアクセスボタンは、ボットとの直接のチャットまたはパーソナルメッセージを開くことができます:

ユーザーフィールドツールは、サポートされている空のフィールドをプライベートに収集できます:

User Fields collection

サポートとスポンサーシップ

サポートリクエスト、バグ、UXフィードバック、機能アイデアは、このMetaトピックで報告してください。プロバイダー、モデル名、関連する設定、HTTPステータスとプロバイダー応答ボディを含め、APIキーとプライベートなコンテンツを削除してください。

この作業はコミュニティのサポートに依存しています。プラグインがあなたのサイトで価値がある場合、継続的なメンテナンスのスポンサーになってください。

プロジェクトスポンサー

スポンサー レベル ウェブサイト
Surety Silver Plus suretyhome.com

免責事項

LLMは、説得力のあるが誤った出力を生成する可能性があります。プラグインをコミュニティのニーズに対してテストし、プライバシーとコストの影響を理解し、適切なモデレーションを適用してください。生成出力の条件はプロバイダーと管轄区域によって異なります;有効にするすべてのプロバイダーの条件を確認してください。

「いいね!」 104
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)

Jina.ai を、ウェブ検索およびウェブクロールに使用できるサポート対象 API のリストに追加しました。1 つのキーで両方のサービスを利用できます。キーを削除しない限り、既存の API が使用されます。

主な理由は 2 つあります。

  • クロールのパフォーマンスが非常に良好に見える
  • 月額料金制ではなく、従量課金制を提供しているため、私にもあなたにも適している可能性があります。

設定へのリンク。

Discourse Chatbotにご関心をお寄せいただきありがとうございます。

関連する可能性のある点が2つあります。

  • トピックにユーザーが1人しかいない場合、より多くの人が参加するまで、ボットはすべての投稿に返信します。
  • カテゴリごとに、ボットがすべての新しいトピックに返信するように設定でき、カテゴリ設定で設定したカテゴリ固有のプロンプトによって、何をするか特別な指示を与えることができます。

ボットは常に@メンションされると起動するため、この機能も利用できるかどうかはわかりません。

「いいね!」 1

「すべての」投稿?それともキーワードが含まれるものだけ?これらは異なる要件でしょうか?

もしかすると、事前に定義された応答に「Chatbot」を記載しておき、ボットがフォローアップする仕組みにすればよいかもしれません?これでは投稿が 2 件になるかもしれませんが、機能するかもしれません。

つまり、事前に定義された応答を「@Chatbot(またはリネームした名前にしてください)この件を処理してください」とすれば、Chatbot がフォローアップします。もちろん、その応答はカスタマイズ可能です。

なお、設定次第では Chatbot がウィスパーにも返信可能です。そのため、事前に定義された応答がウィスパーであれば、通常のユーザーには Chatbot の返信のみが表示され、見た目がすっきりするかもしれません。

もし私がその機能を拡張することを依頼されれば、他のユーザーにも役立つ十分に汎用的な解決策が導き出せる限り、Chatbot の機能拡張にも前向きです。しかし、既存の機能を活用するのが理にかなっていると思います。

ここで最善の策は、AI 投稿分類器にウィスパー機能を追加することかもしれません。そのためのプルリクエストを作成する人を雇うか、Contribute > Feature として提案して優先度を上げてもらうことを期待することもできます。それは間違いなく汎用的に役立つでしょう?

OpenAI API に追加された機能を利用して、コードの簡略化を行いました。問題が発生した場合はお知らせください。

これを 1.0.0 と呼ぶことにしました :champagne: :tada: :partying_face:

「いいね!」 4

チャットボットリポジトリのフォークを維持する必要がないように、別のプラグインで他の関数を追加する機能を追加しました。

例の関数プラグインはこちら:

もちろん、これを任意のプラグインに追加できます…

PR:

「いいね!」 4

@Festinger これを解決しましたか?

投稿の埋め込み:問題が発生しましたが、制限まで再試行します:nil に対する undefined method `destroy!’

前回のアップデートの後、上記のエラーが発生し始めました。特に画像に関してこのエラーが発生します。私のビジョンモードの設定は次のとおりです。直接。以前はこの種のエラーは発生していませんでした。

投稿(またはトピック)を作成した直後に削除したことを覚えていますか?

投稿を作成してから、埋め込みが作成される前に削除した場合にこのエラーが発生します。そのため、削除すると、Chatbot は存在しない埋め込みを削除しようとし、迷惑なログメッセージが生成されますが、害はありません :wink:

より良い方法があれば、自由に PR を提出してください。

「いいね!」 1

ユーザーから送信された問題で、このようなエラーが発生しました。私が削除したものではありません。

ユーザーはこれにどのように気づいたのでしょうか?これはログにのみ表示されるものですか?

ログで確認しました。1日ほど追跡していますが、特に長期間メンバーであるユーザーの投稿で問題が発生しています。新規メンバーが画像を添付してトピックを開いた場合は、通常問題なく、エラーも受信しません。古いユーザーが画像を添付してトピックを開くと、問題が発生します。

バックトレースを共有してもらえますか?

では、なぜユーザーはあなたに問題を送信したのですか? ユーザーは何を言いましたか? ユーザーは問題に気づくべきではありません。ログに表示されるだけですよね?

「古参メンバー」が最近作成したトピックや投稿を(削除方法を知っているので)削除しているということでしょうか?

何らかの自動化は行っていますか?

画像を含む投稿の作成中に破壊は発生しないため、どのようにしてそれが起こりうるのか分かりません。

更新:画像をサイトにアップロードしましたが、再現できませんでした。

「いいね!」 1

SerpAPI は問題なく、統計情報では Google へのリクエストが実行されたことが示されていますが、チャットボットは Google を使用できないと主張しています。この状況はしばらく続いていますが、当時は DAI も Google を使用したくなかったため、対応しませんでした。

エラーメッセージはありません。

「いいね!」 1

「ウェブを検索して…」と言うとどうなりますか?

内部プロンプトは汎用的であるため、Googleを想定していません…

この強力な機能の非常に優れたデモを以下に示します。

(ただし、これはバンドルされている代替の jina.ai を使用しています)

それを試しました。システムプロンプトには「ユーザーがGoogleで検索するように求めた場合、ユーザーは実際にはあなたがアクセスできるWeb検索機能を使用することを意味します」とありました。その部分を削除し、ユーザープロンプトでWeb検索という言葉を試しました。結局、GoogleのAPIを使用しているわけではないので。うまくいかず、同様の回答でした。「Web検索はできません…」

これは見つけたものですが、開きません。

{
  "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

ターゲットはチャットボットを社内Q/Aボットとして使用することなので、それなしでも問題ありません。Jinaは(WordPress経由で)メインコンテンツサイトを使用する問題を解決してくれるかもしれません。

しかし、外部から検索した結果は期待どおりではありませんでした。

「いいね!」 1

再現できるか試してみます

「いいね!」 1

Serp API または Jina.ai のいずれかを経由して動作しています。

PM からボットの「内的思考」を提供していただけますか?

内的思考
[
  {
    "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 of butterflies · A. Adonis Blue · B Black Hairstreak · Brimstone · Brown Argus · Brown Hairstreak · C Chalk Hill Blue · Chequered Skipper · Clouded Yellow · D."
  }
]
「いいね!」 1

PMでこれをすべきでしょうか?このトピックを汚染しているだけです。

しかし:

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