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 チャットボット!
  • カスタマーサポートのインフォメーションタスクにこのボットを使用できます(このガイド Building a technical support chatbot を参照)
  • 任意のトピックまたはチャットチャンネルでボットと会話できます。1対1でも、他のユーザーとでも!スレッドに対応しています。
  • フォーラムに合わせてボットのキャラクターをカスタマイズできます!
    • ウィリアム・シェイクスピアやウィンストン・チャーチルのように話させたい?できます!
  • 「RAG モード」のボットは以下のことができます:
    • フォーラムを検索して回答を見つけるため、ボットはあなたのフォーラムの主題について専門知識を持つことができます。
      • 特定の著者グループやトピックタグを優先するように検索結果を再ランク付けします
      • 現在のトピックまたはチャンネルの情報のみを知っているわけではありません。
    • 未完了のユーザーフィールドについてユーザーにプライベートで質問します。
    • AI 画像のレンダリングと編集
    • Wikipedia の検索
    • 現在のニュースの検索*
    • Google の検索*
    • リモートサイトのクロール*
    • 株式の現在の終値データを返します。*
    • 「複雑な」数学演算を正確に行います(作り話や「幻覚」の回答はありません!)
    • これらの「ツール」はプラグインで拡張できます。以下を参照。
  • ビジョンサポート - ボットはあなたの画像を見て、それに関する質問に答えることができます!
  • 特定のカテゴリの新しいトピックに自動的に返信します
  • 最先端の Open AI API と、業界をリードする大規模言語モデル(LLM)の優れた機能を使用します。
  • ボットへのアクセスを管理するための特別なクォータシステムを含んでいます:より信頼性の高い、または有料メンバーはボットへのアクセス権をより多く持つことができます!
    • クエリまたはトークン単位で使用量を計測します。
  • Azure およびプロキシサーバー接続にも対応しています。
    • サードパーティのプロキシプロセスを使用して、Gemini などの代替 LLM をサポートするように呼び出しを変換します。例:こちら

*外部(関連のない)API サービスへの登録が必要です。リンクは設定にあります。

RAG モードは非常に賢く、あなたのフォーラムに投稿された事実を知っています:

基本的なボットモードは時折間違いを犯すことがありますが、大規模言語モデルへの呼び出し回数が少ないため、運用コストが安くなります:


(ごめんね、中国! :wink:

:biohazard: **ボットの「ビジョン」- 何が見えるか(潜在的に共有される可能性)とプライバシー :biohazard:

このボットはあなたのフォーラムの公共スペースで使用できます。特に有用にするために、RAG モードがあります(ボット信頼度レベルごとに1つの設定)。これはデフォルトでは設定されていません。

このモードでは、デフォルトとして、以下の設定に基づいて、信頼度レベル1のユーザーが閲覧できるすべてのコンテンツにボットがアクセスできます:

したがって、公開トピックで対話する場合、カテゴリ権限を通じて信頼度レベル0または1でコンテンツを制限している場合、ボットが情報を「漏洩」する可能性があります。このレベルが選ばれたのは、経験上、ほとんどのサイトが低信頼度レベルで機密コンテンツを制限していないからです。ただし、あなたの特定のニーズによります。

このモードでは、少なくとも1人の信頼度レベル1のユーザーがいて、自動化されたグループ以外の追加のグループメンバーシップがないことを確認してください。(ボットはその後、TL1レベルのユーザーが知っているすべてのことを知り、それを共有できることになります)。自動化されたグループ以外の追加のグループメンバーシップがない信頼度レベル0のユーザーがいる場合、chatbot embeddings benchmark user trust level を下げることもできます。

あるいは:

  • chatbot embeddings strategycategory に切り替え、chatbot embeddings categories にボットが知っておくべきカテゴリを入力します。(プライベートカテゴリを追加すると、ボットはそれらを知ることになり、ボットが公共の場で言うことは、権限の低いユーザーに漏洩する可能性があるため、追加する内容には注意してください)。
  • 通常モードのみでボットを使用します(ただし、ボットは投稿を見なくなります)
  • モデレーションで緩和します

さらに、ボットが「見える」ものはすべて Open AI と共有されることに注意してください。

この設定が妥協点であることをお分かりいただけるでしょう。ボットを有用にするためには、あなたのサイトのコンテンツについて知識を持っている必要があります。現在、ボットがメンバー限定コンテンツを選択的に読み取り、それをメンバーのみに共有することはできません。一部の管理者はこれを制限的だと感じるかもしれませんが、ボットが公共の場で話せる間、これを簡単に解決する方法はありません。特別なニーズがある場合は、この分野での作業をスポンサーしていただくためにご連絡ください。セマンティック検索によるボットの権限管理は非自明な問題です。システムは現在、速度に最適化されています。なお、プライベートメッセージはボットによって読み取られません。

FYI

  • マルチサイトインストールでは動作しない場合があります(明示的にテストされていません)が、サポートを改善するための PR は歓迎します :+1:
  • 高度なモデルでは、需要が高いため、Open AI API の応答が遅くなる場合があります。ただし、チャットボットは GPT 3.5 もサポートしており、これは高速で応答が良く、十分に能力を持っています。
  • 拡張可能で、他のクラウドボットをサポートする予定ですが(そのためプラグインの一般的な名前)、現在「のみ」Open AI の大規模言語モデル(LLM)との相互作用をサポートしています。GPT-4 など。追加のボットタイプを追加したい場合、またはサポートしていただく場合はご連絡ください。PR は歓迎します。ただし、すでにプロキシサーバーを使用してコード変更なしで他のサービスにアクセスできます!
  • 現在のセット以上の他のコンテンツの検索をサポートするように拡張可能です。

設定

前提条件

app.yml の通常の変更 の他に、以下の点に注意する必要があります:

チャットボットまたは AI トピック要約 でビルドするには、pgvector postgres 拡張のバージョン 0.5.1 以上が必要です。

ほとんどの人はすでにこのバージョン以上を持っています。ただし、まれに古いバージョンがインストールされている場合があります。これにより、以下のようなエラーでビルドが妨げられます:PG::UndefinedObject: ERROR: access method "hnsw" does not exist

まず、コンテナが実行中であることを確認します:

./launcher restart app

次に、コンテナに入ります

./launcher enter app

次に、データベースに入り、pgvector のバージョンを更新します:

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

これで exit でコンテナから抜け出します

これで再ビルドできるはずです。

エンベディングの作成

チャットボットがあなたのサイトのコンテンツについて知っているようにするには、この設定を ON にします:

chatbot_embeddings_enabled

RAG タイプのボットを使用し、現在のトピックだけでなく、あなたのフォーラムのコンテンツについて知るようにする場合にのみ必要です。

最初は、範囲内のすべての投稿のエンベディングを作成する必要があります。これで、ボットはフォーラムの情報を検索できます。この設定が有効になると、バックグラウンドでこれが行われ、何もする必要はありません。

このシードジョブは、非常に大きなサイトでは数日かかる場合があります。

エンベディングの範囲

これはいくつかの設定によって決定されます:

  • chatbot_embeddings_strategy は “benchmark_user” または “category” のいずれかです
  • chatbot_embeddings_benchmark_user_trust_level は前者に関連する信頼度レベルを設定します
  • chatbot_embeddings_categoriescategory 戦略が設定されている場合、ボットが指定されたカテゴリ内のすべての投稿を考慮できるようにします。

これらの設定を変更すると、時間の経過とともにエンベディングの人口が変化します。

人口の増加を速める方法

コンテナに入ります:

./launcher enter app

そして、以下の rake コマンドを実行します:

rake chatbot:refresh_embeddings[1]

これは現在、不明な理由で2回実行されます(ごめんなさい!PR を歓迎します)が、[1] は2回目に実行する際に欠けているエンベディングのみを追加する(つまり、最初の実行後すぐに何もない)ことを保証するため、ある意味では無意味です。

OpenAI によってレート制限がかかるというまれな場合(ありえない!)、これを実行してエンベディングを完了できます:

rake chatbot:refresh_embeddings[1,1]

これは欠けているものを埋めます(エラーから何も失われません)が、Open AI への各呼び出しの間に1秒の遅延を設けて、より慎重に進みます。

ボットとの相互作用と比較して、エンベディングの作成はコストがかかりませんが、いずれにせよ Open AI ダッシュボードでの使用量に注意してください。

なお、エンベディングは投稿に対してのみ作成され、信頼度レベル1のユーザーがアクセスできる投稿のみが対象です。これは妥当な妥協点 seemed like a reasonable compromise. 信頼度レベル2以上のみにアクセス可能なコンテンツの投稿に対してエンベディングを作成しません。

エンベディング人口を監視するための有用な Data Explorer クエリ

@37Rb が書きます:「これは私が Data Explorer プラグインを使用してエンベディングを監視・検証するために使用している SQL クエリです。他の人にも役立つかもしれません。"

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

文字数が多すぎるエンベディングを取得しようとした場合のエラー。

以下のようなエラーが発生する場合があります:

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}}

これは以下のように解決します…

エラーメッセージによると、エンベディングモデルには次の制限があります:

8192 tokens

however you requested 8528

この設定の現在の値を約4倍の差分だけ下げる必要があります:

chatbot_open_ai_embeddings_char_limit:

そして、それが機能するか確認します(トークンは おおよそ 4文字です)。

したがって、この例では、4 x (8528 - 8192) = 1344

したがって、chatbot_open_ai_embeddings_char_limit の現在の値を安全のために1500下げます。ただし、デフォルト値は英語の投稿に対して多くのテストに基づいて設定されていますが、他の言語では下げる必要がある場合があります。

これにより、より多くのテキストが切り捨てられ、トークンが要求され、エンベディングが成功するはずです。成功しない場合は、差分を確認し、さらに減らす必要があります。最終的には、もう見なくても低くなります。

エンベディングモデルの切り替え方法

設定を変更するだけでよく、バックグラウンドジョブが徐々に処理してくれます。

本当にプロセスを速めたい場合は、以下を実行します:

  • 設定 chatbot_open_ai_embeddings_model を新しい希望のモデルに変更します
  • まず、現在のすべてのエンベディングを削除するのが最善です:
    • コンテナに入ります ./launcher enter app
    • rails コンソールに入ります rails c
    • ::DiscourseChatbot::PostEmbedding.delete_all を実行します
    • exit(コンテナ内のルートに戻ります)
  • rake chatbot:refresh_embeddings[1] を実行します
  • Open AI 側の理由で途中で失敗した場合、100% になるまで再度実行します
  • 新しいモデルはより正確であることが知られているため、chatbot_forum_search_function_similarity_threshold を下げない限り、結果が得られないかもしれません :)。私はデフォルト値を 0.8 から 0.6 に下げましたが、結果は人によって異なります。

ボットタイプ

プラグイン設定の全体を読み取る時間を取ってください。chatbot bot type 設定は重要で、各チャットボット「信頼度レベル」に1つあります:

RAG モードは優れていますが、API への呼び出しが増え、コストが増加する可能性があります。ただし、最終的に「幻覚」を出力する傾向が減少するため、GPT-4 から GPT-3.5 に下げることができ、出力の有用性と信頼性が大幅に増加しても、最終的にコストが少なくなる可能性があります。GPT 3.5 は、応答時間に基づいてエージェントタイプにも適しています。潜在的なウィンウィン!実験してください!

チャットでチャットボットを動作させるには、チャットを有効にする必要があります。

ボットに応答させる方法

基本的なルール

  • プラグイン設定で許可されている場合、ボットはトピックまたはチャットチャンネルで単一のユーザーによって呼び出されると、より多くの人が参加するまで、すべての投稿またはメッセージに返信します。
  • ボットを @メンションすると、常に呼び出されます

カテゴリごとの特殊な自動応答

  • カテゴリごとに、チャットボットが新しいトピックごとに返信するように設定でき、カテゴリ設定で設定したカテゴリ固有のプロンプトによって制御される特殊な指示を与えることができます。

以下のように始めるべきです:

“こんにちはと言って、自己紹介してください。私の最初の投稿に関連するフォーラムのローカル検索を使用して、フォーラムの5つの投稿を共有してください。リンクを含めてください”

つまり、ユーザーが助けを求めているかのように一人称で書く必要があります。これはシステムプロンプトではありません。ボットがどのように行動すべきかを説明するものではありません(それはシステムプロンプトであり、まだ送信されます)。これは、特定の助けを求めるユーザー(ただし隠れて)です。基本的に、ボットを言及せずにユーザーの投稿のように書きます。

ボットの応答速度

これは主に設定 ‎chatbot_reply_job_time_delay‎ によって制御され、あなたが裁量を持っています。

この設定を持つ意図は:

  • Open AI のレート制限に達するのを防ぐ
  • ボットをスパムしてあなたにお金をかけさせたいユーザーからあなたのサイトを守る
  • Discourse がホットリンクされた画像をアップロードするのに十分な時間を与え、ボットがそれらを見ることができるようにする

現在デフォルトは ‘2’ 秒で、ゼロに減らすことができます :racing_car: 、ただし、上記のリスクに注意してください。ボットのビジョン(使用している場合)は、この設定に特に敏感です。ボットがあなたの画像を見ない場合、この値を増やしてみてください。

これをゼロに設定すると、ボットは「エージェント」モードでもはるかに「スナップ」します。

明らかに、これは少し人工的で、実際の人間はそれほど速くタイプしません… ただし、あなたの好みと財布の大きさに合わせて設定してください。

なお、Open AI の API の応答速度を直接制御することはできません - 一般的なルールは、設定するモデルが高度であれば、この応答は通常遅くなります。現在一般的に言えるのは、「ミニ」モデルはより速いということです。

AI によるユーザーフィールドの収集(実験的

ユーザーに現在空白のオプションのユーザーフィールドがある場合、この設定を有効にすると、ボットがユーザーに情報を尋begins to ask the user for the information. 未完了のユーザーフィールドを完了するまで進行し、その後、通常の動作に戻ります。

image

(応答の遅さにごめんなさい - これは開発環境で録画されました)

なお、この機能は以下のもののみをサポートします:

  • テキスト
  • ドロップダウン
  • 確認

マルチセレクトはまだサポートされていません。

フィールドは オプション でなければなりません

ユーザーフィールドの順序が優先度を決定します。

Ollama & llama3 サポート

Ollama による(完全に素晴らしい!)llama3 のサポートが現在出荷されています:

これは、ボットが dev でローカルに実行される場合、または ollama サーバーでクラウドで実行される場合、および Basic モードの場合です:

  • モデルが llama3 であることを確認します:

  • カスタム URL を http://localhost:11434 に設定する必要があります:

image

十分な大きさのサーバーがある場合、クラウドで ollama を提供できます。

DeepSeek Hype :sweat_smile:

チャットボットで参加してください :rocket:

少なくとも Basic モードでボットを使用して、V3 と R1 にアクセスできます

私は以下を使用しました:

(アフィリエイトではありません)

彼らのモデルをホストしています。

以下のように設定します:

Basic ボットモードを設定し、あなたのキーを置き換えてください。

ただし、DeepSeek AI のウェブサイトへのアクセス権がある場合、直接 DeepSeek AI を使用できるかもしれません :sweat_smile:

ベース URL は “https://api.deepseek.com” です。

OpenAI

現在のボットを使用するには、https://platform.openai.com/ から トークン を取得する必要があります。デフォルトの言語モデルが設定されています(最も高度なものの1つ)が、より安価な代替案を試すことができます。リストはこちら

設定には自動化された部分があります。Discourse に追加すると、プラグインは現在、以下の属性を持つ AI ボットユーザーを設定します

  • 名前: ‘Chatbot’
  • ユーザーID: -4
  • 自己紹介: “こんにちは、私は実際の人間ではありません。あなたと物事を議論できるボットです。私を真剣に取りすぎないでください。時々、私は物事について正しいこともあります!”
  • グループ名: “ai_bot_group”
  • グループフルネーム: “AI Bots”

名前、アバター、自己紹介は自由に編集できます(admin → customize → text のロケール文字列を参照)が、メンションしやすくしてください。

無料ではないため、クォータシステムがあり、これを設定する必要があります

最初、誰もボットにアクセスできません。スタッフでも同様です。

Open AI API の呼び出しは、初期の無料割り当てが期限切れになると無料ではありません!したがって、これを制御し、コストを抑え、乱用を防ぐためにクォータシステムを実装しました。これらの小さな相互作用ではコストは狂気的ではありませんが、人気が出ると積み重なる可能性があります。OpenAI の価格については 価格ページ で詳しく読むことができます。

ボットと相互作用するには、3つの信頼グループセット(低、中、高信頼グループセット)のいずれかに追加されたグループに属している必要があります。各信頼グループセットごとに、1週間あたりの許可された相互作用の数を対応する設定で変更できます。

グループも埋める必要があります。この設定は完全にあなた次第です。最初は空白なので、最初、誰もボットにアクセスできません:

この例では、staff に高信頼アクセスを与え、trust_level_0 に低信頼を与えています。3つの追加設定で対応するクォータを取得します。

なお、ユーザーは、メンバーである最高信頼グループに基づいてクォータを取得します。

「プロンプトエンジニアリング」

ボットが受け取るものや、ボットがどのように応答するかに影響を与えるいくつかのロケールテキスト「設定」があります。

最も重要で、変更を検討すべきものはボットの system プロンプトです。これは、ボットと話すごとに送信されます。

基本的なボットの場合、以下のようなシステムプロンプトを試すことができます:

’あなたは極端なフォーミュラ1ファンで、モータースポーツとその高オクタンレベルの興奮について何でも好きです’ デフォルトの代わりに。

(rag ボットの場合、「You are a helpful assistant.」の後のすべてを保持する必要があります。そうしないと、エージェントの動作が壊れる可能性があります。問題が発生した場合はリセットしてください。また、実験してください!)

あなたのフォーラムの主題に最も適切なものを試してください。創造的になりましょう!

なお、現在、各ボットタイプに2つのシステムプロンプトがあります。1つ .open は「公共」でボットと話しているときに使用されます。もう1つ .private は、パーソナルメッセージまたはダイレクトメッセージチャットでボットと話しているときに適用されます。これにより、サポートボットなどのプライベート動作をカスタマイズできます。

これらのロケール文字列を変更すると、ボットの動作が非常に異なるものになりますが、オンザフライで修正することはできません。システムプロンプトのみを変更することをお勧めします。他のものはエージェントの動作や、誰が何と言ったかに関する情報を提供するという重要な役割を果たします。

なお、トピックでは、最初の投稿とトピックタイトルが、投稿のウィンドウ(ルックバック設定によって決定)に加えて送信され、ボットにより多くのコンテキストを与えます。

これらの文字列は Admin → Customize → Text の下で chatbot.prompt. で編集できます。最も重要なのは、chatbot.prompt.system. にあるシステムプロンプトです。

投稿とチャットメッセージの両方をサポート!

ボットはチャットメッセージとトピック投稿、およびプライベートメッセージ(設定されている場合)をサポートします。

ボットに応答させるために、それに返信するか、@メンションすることができます。ボットが応答のコンテキストを取得するためにどれくらい後ろを見るかを設定できます。値が大きいほど、各呼び出しのコストが高くなります。

ボットにすぐに接続するフローティングクイックチャットボタンがあります。そのスタイルは少し実験的です(モバイルのベースフォーラムのいくつかの z-index 値を変更)し、いくつかのページで競合する可能性があります。これは設定で無効にできます。1対1のチャットまたはパーソナルメッセージにボットをロードするかどうかを選択できます。

現在、お好みのアイコン(デフォルト :robot: )を選択できます。または、設定が空白のままの場合、ボットユーザーのアバターを選択します! :sunglasses:

アバター:

または アイコン:

そして、展開時に表示されるテキストもカスタマイズできることを覚えてください:

image

… Admin → Customize → Text を使用して

(ただし、望む色とサイズを収めるために CSS を少しカスタマイズする必要があるかもしれません)。

デバッグヘルプ

  • 設定 chatbot include inner thoughts in private messages が ON であることを確認します
  • 設定 chatbot enable verbose rails logging が ON であることを確認します
  • サーバーに ssh します
  • cd /var/discourse/shared/standalone/log/rails
  • 並行して PM でボットに何か質問します
  • コンソールに戻ります
  • 以下のようなメッセージを探します:
    • 一般的なチャット = tail -n 2000 production.log | grep {\"model\":\"
    • ビジョン呼び出し = tail -n 2000 production.log | grep {\"type\":\"image_url\"
  • PM で「inner thoughts」を確認します

プラグインでチャットボットのツールセットを拡張

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

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

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

この機能はこの PR で追加されました

チャットボットの拡張でヘルプが必要な場合は、私を雇って手伝ってもらうことができます。

プラグインのアンインストール - 重要!

最近のプラグインの簡素化の努力により、プラグインをアンインストールするために必要なステップは、クローンステートメントを削除することのみです。

プラグインにご興味を持っていただきありがとうございます!

免責事項: ボットが応答するものについて私は 責任を負いません。プラグインはベータ段階であるとみなし、問題が発生する可能性があります。フィードバックによって改善されます。ただし、必ずしもボットの応答ではありません :rofl: LLM の長所と短所、およびそれらが何ができるか、できないか、およびその制限を理解してください。それらは説得力のあるテキストを作成するのが非常に得意ですが、事実誤認をすることがよくあります。

重要なプライバシーノート: あなたのフォーラムに書くものはすべて、ボットが最後の数件の投稿をスキャンして応答を促されると、Open AI に転送される可能性があります(明らかに、これは現在のトピックまたはチャットチャンネルに限定されます)。それらが事前にトレーニングされたモデルに組み込まれることはほぼ肯定不会ですが、データは分析とログで使用されます。この事実をあなたのフォーラムの TOS とプライバシーステートメントに必ず追加してください。関連リンク: https://openai.com/policies/terms-of-use, https://openai.com/policies/privacy-policy, https://platform.openai.com/docs/data-usage-policies

著作権: Open AI は著作権について次のように声明を出しました: https://help.openai.com/en/articles/5008634-will-openai-claim-copyright-over-what-outputs-i-generate-with-the-api

TODO/ロードマップアイテム

  • フロントエンドとバックエンドのテストを追加 :construction:
  • 「ボット入力」インジケーターと「応答ストリーミング」を追加 (@Aizada_M, @MarcP) :construction:
  • ボットを忘れた?ボットが @メンションを追加する編集に応答するようにする (@frold )
  • バッジを追加?@botname をメンションしました (@frold )
  • カテゴリとピン留め投稿プロンプトを含める設定を追加? (@Ed_S)
  • 各メッセージ履歴プロンプトにバイオを追加? (@Ed_S , @codergautam)。 これ本当に動くのか。証拠を集めよう。
  • Discourse Frotz をこのより良いコードベースで更新?
  • ベクトル検索のために pgembedding の代わりに pgvector を使用するように移動. :white_check_mark:
  • セマンティック検索を追加して、ボットがあなたのフォーラムの投稿を読み、「専門家」になるようにする :wink: :white_check_mark:
  • 幻覚を減らし、信頼性の高い事実情報を活用するためのエージェント動作を追加 :white_check_mark:
  • 疑わしいユーザー名を @メンションに変換するための追加ロジックを追加 (@frold ) :white_check_mark:
  • GPT-4 サポートを追加(Open AI が私にアクセス権を認めてくれたら! :sweat_smile: :white_check_mark:
  • カスタムモデル名サポートを追加. :white_check_mark:
  • API にテキストを渡す前に投稿から引用符を削除するオプションを追加 :white_check_mark:
  • Open AI がエラー状態を返したときのエラー透明性とハンドリングを改善 :white_check_mark:
  • タイムアウトした API リクエストのリトライ機能を追加 :white_check_mark:
  • ChatGPT のサポートを追加 :white_check_mark:
  • Discourse コア標準にプラグインをリンティング :white_check_mark:
  • CI ワークフローを追加 :white_check_mark:
  • ボットの応答の性質に影響を与える設定を追加(例:どれくらい奇妙か). :white_check_mark:
  • トピックタイトルと最初の投稿をプロンプトに含める :white_check_mark:
  • 生データから cooked データに切り替える設定を追加して、潜在的にウェブトレーニングデータをよりよく活用する(@MarcP による提案)。 注意:コストが高くなり、入力トークンがカウントされ、cooked ははるかに大きいため、返されるものが制限される可能性があります。 このアイデアは放棄したようです

クレジット:

  • @MarcP による熱心なサポートと詳細なテストフィードバックに感謝します。
  • Open AI 用の新興標準 Ruby API に貢献した方々、これはこれを活用しています
  • フローティングボタンのデザインは主に Discourse の GitHub - discourse/material-design-stock-theme · GitHub から借りています(したがって、現在互換性がありません、どーん!)
  • フィクスチャコードは @vinothkannansここ の作業に基づいています
  • @P16 が何年も前にチャットボットを手伝うために私を雇わなかったら、これは存在しなかったかもしれません

*まだ OpenAI のチャット GPT エンジンを使用していますが、現在、ローカル関数と API 呼び出しからのデータを活用して幻覚を制限できます。

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

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