Discourse AI トピック概要 🤖

|||
-|-|-|
:information_source: | 概要 | リモートAI言語モデルを使用してトピックの要約を作成および投稿します。
:hammer_and_wrench: | リポジトリリンク | GitHub - merefield/discourse-ai-topic-summary: Uses a remote AI language model to prepare and post a summary of a Topic
:open_book: | インストールガイド | Discourseにプラグインをインストールする方法
:heart: | スポンサーシップ | このプラグインが適切なメンテナンスを受け、今後もサイトで機能し続けることを保証するために、私のオープンソース活動のスポンサーになることをご検討ください。
このプラグインを楽しんでいますか?GitHub で:star:してください!:pray:

機能

  • AI生成トピック要約:
    • いつ最初に生成されるか、および再作成に必要な新しい投稿の数を選択できるため、プラグインのコスト効率が高くなります。
    • トピック表示場所の選択、上部またはサイドバー(Barsテーマコンポーネントが必要)
    • コミュニティが不十分な要約をダウンボートできるようにする投票システム。投票がしきい値を超えると、新しい要約が求められます。
    • トピックリストで公開する-AI要約は、利用可能な場合は抜粋の代わりに表示されます
  • 自動タグ付けシステム
    • 要約を再利用してトピックをインテリジェントにタグ付けします
    • ユースケースに最適な2つの戦略から選択します
  • トピックを表すサムネイルを自動生成します
  • すべてのプロンプトは、[カスタマイズ] → [テキスト]で編集できます。
  • このプラグインは、Discourse向けの最初のAIプラグインでした:1st_place_medal:

(注、これはいくつかのひどいランダムな開発フィクスチャを使用したUIプレビューですが、実際のデータでは結果ははるかに優れています)

最小投稿数を超えると、トピックが対象カテゴリにある場合、プラグインはトピックテキストをOpen AI Large Language Modelにプロンプトとともに送信し、応答を投稿します。これはコンテンツの要約を目的としており、かなりうまく機能します。モデルの選択肢があります。

要約はしばしば驚くほど優れており、時には崇高です。しかし、十分でない場合は、コミュニティのダウンボートメカニズムを追加して、設定されたしきい値後に貧弱な要約を更新するようにしました。

いずれにしても、設定された数の追加投稿が行われると、要約が再検索されます。

プロンプトと閾値を変更できます。

重要事項:要約は匿名ユーザーには公開されないため、テキストはクロール可能になりません(これは良いことだと思うか思わないかは別として、少なくともクローラーは実際の人間データのみを操作します)。

自動タグ付けサポート:

トピックのタグ付けにうんざりしていませんか?AIに任せましょう!(比較的インテリジェントに!)

AIが指示に反して創造的になりすぎる場合があるため、既存のものに制限することができます。

レールコンソールを使用して、この目的のために非管理者ユーザーをすばやく作成できます。

rake admin:create (このユーザーに管理者権限を与えないでください)

(現在のDiscourseの「内部API」では「新規タグなし」を指定できないため、これは少しハックな回避策です。現時点では、管理者権限を持たないユーザー(つまり、min_trust_to_create_tag未満の信頼レベル)として作成するだけで簡単に防止できます。)

オプションでトピックリストの抜粋をAI要約で上書きする

ai_topic_summary_expose_as_excerpt設定が有効になっている場合、抜粋が表示されるトピックリスト(Topic List PreviewsまたはTopic List Excerptsなどのテーマコンポーネント経由)の抜粋が、利用可能な場合はAI要約で上書きされます。

抜粋の切り替え:

私のテーマコンポーネント Topic List Previews (TLP) - #592 by merefield で使用できます。

オプションのトピック件名の画像

このプラグインにオプションのサムネイル生成機能を追加しました。

要約を画像で表現し、OPの先頭に自動的に追加します。

  • プラグイン設定で有効にする必要があります
  • オプションで、毎回最後のトップ画像を自動的に削除することを選択できます
  • プラグイン設定のリンクからプロンプトを編集できるため、スタイルとコンテンツに影響を与えることができます(ただし、これは後続のすべての画像に適用されます)。

お楽しみください:framed_picture:

制限事項

トークン制限のため、現在(モデルに依存しますが)約160投稿までしか機能しません。そのため、一定のポイント以降の投稿の資料は含まれません。モデルがより強力になり、サービスがより洗練されるにつれて、将来的にはほぼ確実に変更されるでしょう。

レート制限とコスト

Open AIからデータを取得するのは無料ではありません。ただし、レート制限は暗黙的に投稿に基づいています。新しい要約が求められる前に、投稿数を制御できます。これは問題になる可能性は低いです。

サイド「バー」サポート!!

プラグインにはBars互換ウィジェットが付属しています。Bars Theme Componentをインストールして設定するだけです。

インストールしたら、標準のトピック先頭の要約をオフにして、サイドバーのウィジェットを利用できます。

注記

免責事項:LLMが応答することについては責任を負いません。LLMの長所と短所、およびその能力と限界を理解してください。それらは説得力のある、文脈を意識したテキストを作成するのが得意ですが、事実上誤っている可能性があります。

重要なプライバシーに関する注意:フォーラムデータはOpen AIに送信されます。モデルの事前トレーニング済みモデルに組み込まれることはほとんどありませんが、分析およびログ記録でデータが使用されます。この事実をフォーラムのTOSおよびプライバシー声明に追加してください。関連リンク:利用規約プライバシーポリシー

著作権:Open AIは著作権について声明を発表しました:Will OpenAI claim copyright over what outputs I generate with the API? | OpenAI Help Center

TODO

  • フロントエンドとバックエンドのテストを追加 :construction:
  • 応答のスタイルに影響を与えるユーザー設定を追加 :white_check_mark:
  • カスタムモデル名のサポートを追加 :white_check_mark:
  • GPT-4サポートを追加(利用可能になり次第) :white_check_mark:
  • モデル設定をドロップダウンリストにする :white_check_mark:
  • Layoutsプラグインのウィジェットサポートを追加 :white_check_mark:
「いいね!」 30

ついにこの時が来たか!\n\nしかし、一番知りたいのは、これにいくらかかるのかということだ。

「いいね!」 4

数日前から私のフォーラムの1つで稼働しています。ほぼすべての公開カテゴリでアクティブです。

あなたのフォーラムがどれくらいアクティブか分からないので、答えるのは難しいです。

私の提案は、1つのカテゴリで試してみて、うまくいけば様子を見ることです。

まともなダッシュボードがあります。

GPT3(最も高価なモデル)に基づいた2つのプラグインを開発し、先月下旬に1つのサイトで公開した後、2月の私のフォーラムは次のようになります。

おそらく、あなたのメール費用よりも少ないでしょう。

「いいね!」 10

それは、私たちの用語集トピックを成長させるのに良いかもしれません。

スペイン語でも機能するはずですか?

「いいね!」 3

わかりません。設定でプロンプトを変更する必要があるかもしれません。でも、試してみてください!

(これはローカライズされた文字列になるはずです。すぐに変更します)

「いいね!」 4

@merefieldさん、ありがとうございます。素晴らしいプラグインのようですね!

有効にしてAPIキー、カテゴリなどを入力しましたが、まだ要約が表示されません。Discourseフォーラムで進捗状況を確認する方法はありますか?ログやSidekiq(まだ詳しく見ていませんが)には何も見当たりません。

「いいね!」 3

クリスさん、新しい投稿に反応します。閾値内であり、カテゴリの場所の基準に適合する場合、要約が作成されます。

「いいね!」 3

承知しました。明確化ありがとうございます @merefield

「いいね!」 2

こんにちは。

このサマリープラグインを有効にすると、ビルドが失敗します。これは、私の基盤となるセットアップやプラグインの競合によるものかどうかわかりません。参考になるよう、詳細を添付します。

ai-topic-summary プラグインをコメントアウトすると、問題は解決し、ビルドは成功します。

ガイダンスがあれば幸いです。

I, [2023-03-12T17:24:25.390052 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'LOAD_PLUGINS=0 bundle exec rake plugin:pull_compatible_all'
I, [2023-03-12T17:24:31.668769 #1]  INFO -- : discourse-ai-topic-summary is already at latest compatible version
discourse-assign is already at latest compatible version
discourse-chat-integration is already at latest compatible version
discourse-chatbot is already at latest compatible version
discourse-checklist is already at latest compatible version
discourse-solved is already at latest compatible version
docker_manager is already at latest compatible version

I, [2023-03-12T17:24:31.677801 #1]  INFO -- : cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate'
rake aborted!
Gem::LoadError: can't activate ruby-openai-3.4.0, already activated ruby-openai-3.3.0
/var/www/discourse/lib/plugin_gem.rb:26:in `load'
/var/www/discourse/lib/plugin/instance.rb:796:in `gem'
/var/www/discourse/plugins/discourse-chatbot/plugin.rb:9:in `activate!'
/var/www/discourse/lib/plugin/instance.rb:693:in `instance_eval'
/var/www/discourse/lib/plugin/instance.rb:693:in `activate!'
/var/www/discourse/lib/discourse.rb:352:in `block in activate_plugins!'
/var/www/discourse/lib/discourse.rb:349:in `each'
/var/www/discourse/lib/discourse.rb:349:in `activate_plugins!'
/var/www/discourse/config/application.rb:216:in `block in <class:Application>'
/var/www/discourse/lib/plugin.rb:6:in `initialization_guard'
/var/www/discourse/config/application.rb:216:in `<class:Application>'
/var/www/discourse/config/application.rb:75:in `<module:Discourse>'
/var/www/discourse/config/application.rb:74:in `<top (required)>'
/var/www/discourse/Rakefile:7:in `require'
/var/www/discourse/Rakefile:7:in `<top (required)>'
/var/www/discourse/vendor/bundle/ruby/3.2.0/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:25:in `load'
/usr/local/bin/bundle:25:in `<main>'
(See full trace by running task with --trace)
I, [2023-03-12T17:24:38.020166 #1]  INFO -- : gem install httparty -v 0.21.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
When you HTTParty, you must party hard!
Successfully installed httparty-0.21.0
1 gem installed
gem install ruby-openai -v 3.3.0 -i /var/www/discourse/plugins/discourse-ai-topic-summary/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
Note if upgrading: The `::Ruby::OpenAI` module has been removed and all classes have been moved under the top level `::OpenAI` module. To upgrade, change `require 'ruby/openai'` to `require 'openai'` and change all references to `Ruby::OpenAI` to `OpenAI`.
Successfully installed ruby-openai-3.3.0
1 gem installed
gem install httparty -v 0.21.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
When you HTTParty, you must party hard!
Successfully installed httparty-0.21.0
1 gem installed
gem install ruby-openai -v 3.4.0 -i /var/www/discourse/plugins/discourse-chatbot/gems/3.2.1 --no-document --ignore-dependencies --no-user-install
Note if upgrading: The `::Ruby::OpenAI` module has been removed and all classes have been moved under the top level `::OpenAI` module. To upgrade, change `require 'ruby/openai'` to `require 'openai'` and change all references to `Ruby::OpenAI` to `OpenAI`.
Successfully installed ruby-openai-3.4.0
1 gem installed

I, [2023-03-12T17:24:38.021523 #1]  INFO -- : Terminating async processes
I, [2023-03-12T17:24:38.022106 #1]  INFO -- : Sending INT to HOME=/var/lib/postgresql USER=postgres exec chpst -u postgres:postgres:ssl-cert -U postgres:postgres:ssl-cert /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main pid: 41
2023-03-12 17:24:38.022 UTC [41] LOG:  received fast shutdown request
I, [2023-03-12T17:24:38.022874 #1]  INFO -- : Sending TERM to exec chpst -u redis -U redis /usr/bin/redis-server /etc/redis/redis.conf pid: 102
102:signal-handler (1678641878) Received SIGTERM scheduling shutdown...
2023-03-12 17:24:38.035 UTC [41] LOG:  aborting any active transactions
2023-03-12 17:24:38.046 UTC [41] LOG:  background worker "logical replication launcher" (PID 50) exited with exit code 1
2023-03-12 17:24:38.049 UTC [45] LOG:  shutting down
102:M 12 Mar 2023 17:24:38.053 # User requested shutdown...
102:M 12 Mar 2023 17:24:38.054 * Saving the final RDB snapshot before exiting.
102:M 12 Mar 2023 17:24:38.120 * DB saved on disk
102:M 12 Mar 2023 17:24:38.122 # Redis is now ready to exit, bye bye...
2023-03-12 17:24:38.153 UTC [41] LOG:  database system is shut down


FAILED
--------------------
Pups::ExecError: cd /var/www/discourse & su discourse -c 'bundle exec rake db:migrate' failed with return #<Process::Status: pid 1043 exit 1>
Location of failure: /usr/local/lib/ruby/gems/3.2.0/gems/pups-1.1.1/lib/pups/exec_command.rb:117:in `spawn'
exec failed with the params {"cd"=>"$home", "hook"=>"db_migrate", "cmd"=>["su discourse -c 'bundle exec rake db:migrate'"]}
bootstrap failed with exit code 1
「いいね!」 3

おっと、私のミスです。2つのAIプラグイン間で競合が発生していました。解決して、改めてご連絡します!:sweat_smile: 申し訳ありません!

「いいね!」 5

こちらをお試しください: FIX: conflict with chatbot · merefield/discourse-ai-topic-summary@0067eaf · GitHub

「いいね!」 5

早速のご返信ありがとうございます。明日試してみます。このプラグインが実際に動作するのを見るのを楽しみにしています!

「いいね!」 3

簡単なアップデートです。初めて本格的な要約がトリガーされ、かなりまともな仕事をしてくれました。@merefield このプラグインは素晴らしいと思います :slight_smile: 。実際、ChatGPTをこのように活用することは、単にディスカッショントレッドに組み込むよりもはるかに優れた将来性があると思います。

以下は生成された要約です。トピックのトップに配置され、他の人に読んでもらう(あるいは読まない)ように促すのに最適です。

要約をトリガーするはずだったアップデートの投稿時にエラー(エラー500)が発生しました。これは、設定でgpt-3.5-turboを使用しようとしたためです。おそらく、ChatGPT APIエラーが発生した場合、ユーザーがどうすればよいかわからない500エラーを受け取るよりも、投稿の送信を許可する方が良いでしょう。

ログには、私が何が間違っていたかが明確に示されていました。

StandardError (これはチャットモデルであり、v1/completions エンドポイントではサポートされていません。v1/chat/completions を使用するつもりでしたか?)

考えられる進化:

  • トピックの所有者/管理者が、要約が関連性がない/適切でない場合に削除できるようにする?
  • カテゴリ/全体ですべての要約を表示できる場所を設ける?

それ以外は、これがどのように進化するか楽しみにしています。これまでの成果に感謝します。私のサイトはユーザーが数人しかいない非常に小さなサイトですが、その可能性を本当に実感できます。

「いいね!」 4

素晴らしいフィードバック、ありがとうございます。良いアイデアですね。

はい、管理者/作成者のボタンは非常に良いかもしれません。ロードマップに追加します。

素晴らしい!

「要約を見る場所」のリストは、実際にはトピックリストの代替抜粋なのでしょうか?

ロードマップに追加します。

はい、チャットボットで行ったように、これをドロップダウンに変換する必要があります。でも、良い試みでした :wink:

ちなみに、GPT-4が登場します。これにより、要約が大幅に改善され、_はるかに長い_トピックに対応できるようになります。

「いいね!」 6

プラグインは現在、ChatGPT 4とPOEアプリケーション(Quoraが開発したAIチャットプラットフォーム)のAPIをサポートしていますか?

「いいね!」 3

笑わせないでください!:sweat_smile: 昨日発表されたばかりですよね?

APIへのアクセス権を与えられた開発者はごくわずかです。ウェイティングリストがあります。したがって、いずれにしてもプラグインのユーザーが接続できる可能性は低いです。

(ちなみにトピックのタイトルに気づきましたか?)

いいえ、現時点では予定もありません。どのようなメリットがあるでしょうか?要約に優れていることで知られていますか?

「いいね!」 2

^^
不明瞭で申し訳ない ^^ 将来的にそれらを統合することに興味がありますか? GPT 04に関するニュースをフォローしていますが、ベトナムのコミュニティにとって驚くべき特別なものです。

「いいね!」 3

ご関心をお寄せいただきありがとうございます。GPT-4のサポートについては、このように回答させていただきます。

Hell Yeah Dcuniverse GIF by DC

まずチャットボットに追加し、その後すぐにAIトピックサマリーにも対応する予定です。

OpenAIからのメールを待っています…(そして少しの空き時間も!)

「いいね!」 5

実際、UIを煩雑にしないための、もう少し簡単な解決策を考えました。

管理者と作成者の「投票の重み」を設定できるようにするのはどうでしょうか?

これにより、作成者の投票の重みを3に設定でき、しきい値が3であれば新しい要約が生成されます。

どちらの解決策(ボタン、またはしきい値に一致する重み付け)の欠点は、作成者が新しい要約をスパムできるため、API呼び出しに多くの費用がかかることです。

そのため、作成者の投票の重みをしきい値よりわずかに低く(ただし、通常のユーザーより高く)、管理者の重みをしきい値に設定することをお勧めします。

そうすれば、UIを変更する必要はなく、バックエンドのロジックと設定に組み込むだけで済みます。

管理者の反対投票は常に新しい要約を作成し、カウントをリセットします。

@JamesPick さん、ご意見をお聞かせください。

「いいね!」 4

スパムのような新しい要約の送信に関する懸念に同意します。
これは、AIが悪い要約を提供することよりも、トピック自体が良い要約に適していないことの方が問題だと思います。トピックが焦点を失ったり、単なるチャットになったりして、ChatGPTに送信される情報から重要な投稿が失われてしまうのかもしれません。

最終的には、管理者/トピックオーナーは、要約がトピックにとって意味のあるものにならないと判断した場合、それをキャンセルすることができます。

将来的には、要約のためにAPIに送信する投稿を具体的に選択する機能を追加できると思います。

このスレッドのようなものについて考えていました。要約に常に含めてほしい最初の投稿をフラグ付けできますか?そして、要約に最も適した投稿をいくつか追加することもできます。

「要約を生成する」オプションさえあれば、トピックに投稿が1つしかない場合でも要約を生成できます。これは、ロバートさんの以前のコメントによく合います。

「いいね!」 4