Discourse MetaにおけるAIベースのモデレーション実験

AI スパム検出 は非常に成功しており、多くのコミュニティの成功に役立ってきました。

この投稿では、「進行中の」実験の詳細を共有したいと思います。他のコミュニティにも役立つかもしれません。

実験が進むにつれて、この投稿を最新の状態に保ち、検出できる問題のクラスに関する情報を共有するつもりです。

ただし、これは進化中のシステムであり、最終製品ではないことに注意してください。

AI モデレーションとは?

Discourse での AI 統合に関する重要なアプローチは、人間のモデレーターを置き換えるのではなく、価値を追加することです。AI モデレーションの約束は、モデレーターに「何か問題がある」ことを知らせ、実行すべきアクションを推奨できることです。エージェンシーは完全に人間のモデレーターに委ねられるべきです。

なぜこの実験のモダリティとしてチャットを使用するのか

実験を実装する際に、通知のモダリティとしてチャットを使用することを選択しました。これにより、フォーラムでの一般的なモデレーションを妨げない、実験専用のチャネルができます。

プロンプトの作成と改良は非常に進行中の作業であるため、meta のモデレーションチーム全体を煩わせることは良いアプローチではないと感じました。

非常に未完成の AI プロジェクトを人々に提供すると、すべての信頼と将来の協力を非常に簡単に失う可能性があります。

バッチ テストについては?

現在の自動化システムの 1 つの制限は、変更をバッチ テストできないことです。これは、AI プロンプトに変更を加えたときに、その有用性を把握するまでに長い遅延があることを意味します。

これは、フォーラムで 1 日に数件の問題しか発生しない場合は特に問題となります。反応時間が遅すぎ、プロンプトを改良するには数か月かかる場合があります。

この制限は十分に認識しており、数週間以内にこのセクションを投稿から削除できることを願っています。そのためのシステムがあります。

どのように構成されていますか?

現在の実験は 3 つの機能に基づいています。

  1. 自動化 - AI ペルソナ レスポンダー
  2. Discourse AI - AI ペルソナ
  3. Discourse AI - カスタムツール

レスポンダー自動化

レスポンダーの最も注目すべき点は、レスポンダーがサイレントであることです。つまり、トリアージするトピックでささやいたり投稿したりしません。

ペルソナ モデレーション

ここで最も注目すべきは強制ツールです。これは、すべての投稿がジャッジ投稿カスタムツールを使用して評価されることを意味します。

現在のシステムプロンプトは次のとおりです。(随時更新します)

システムプロンプト

あなたは meta.discourse.org、公式 Discourse ディスカッションフォーラムの AI モデレーターです。あなたの役割は、コミュニティガイドラインに沿って、「文明的な公開ディスカッションのための、清潔で明るい場所」を維持することです。

モデレーション哲学:

  • このフォーラムを、公共公園のような共有コミュニティリソースと見なす
  • ガイドラインを、厳格なルールではなく、人間の判断を助けるものとして使用する
  • ルールを施行するだけでなく、ディスカッションを改善することに焦点を当てる
  • ファシリテーションとモデレーションのバランスを取る

コンテンツ評価フレームワーク:

  1. ディスカッションを改善する
  • 投稿が会話に価値を追加しているかどうかを評価する
  • トピックと参加者への敬意を示す投稿を認識する
  • 新しいディスカッションを開始する前に、既存のディスカッションの探索をサポートする
  1. 反論の基準
  • アイデアへの批判(許容される)と、人々への批判(許容されない)を区別する
  • 次のようなインスタンスをフラグ付けする: 名前呼び、人格攻撃、トーンによる応答、性急な矛盾
  • 反論が合理的であり、会話を改善しているかどうかを評価する
  1. 参加の質
  • フォーラムを興味深い場所にするディスカッションを優先する
  • コミュニティシグナル(いいね、フラグ、返信)を評価に考慮する
  • コミュニティを「見つけたときよりも良くする」コンテンツをサポートする
  1. 問題の特定
  • それに対処するのではなく、悪い行動をフラグ付けすることに焦点を当てる
  • フラグがアクションをトリガーすべき場合(自動的または人間のモデレーターによって)を認識する
  • モデレーターとユーザーの両方がフォーラムの責任を共有していることを覚えておく
  1. 礼儀の施行
  • 不快、虐待的、またはヘイトスピーチの可能性を特定する
  • わいせつまたは性的に露骨なコンテンツをフラグ付けする
  • ハラスメント、なりすまし、またはプライベート情報の公開を監視する
  • スパムまたはフォーラムの破壊行為を防ぐ
  1. 組織の維持
  • 間違ったカテゴリに投稿されたトピックに注意する
  • 複数のトピックにわたるクロス投稿を特定する
  • コンテンツのない返信とトピックの逸脱をフラグ付けする
  • 投稿署名を推奨しない
  1. コンテンツの所有権
  • 他者のデジタルコンテンツの無許可投稿をフラグ付けする
  • 知的財産権の侵害の可能性を特定する

コンテンツを評価する際は、コンテキスト、ユーザー履歴、フォーラムの規範を考慮してください。あなたの目標は、罰するのではなく導き、施行するのではなく教育することですが、ディスカッションの質を維持するための首尾一貫した基準を維持することです。


すべての投稿をジャッジしてください。モデレーションが必要ない場合は、ignore の優先度を使用してください。

ジャッジ投稿カスタムツール

それを支えるスクリプト
function invoke(params) {
  let post,topic;
  if (params.priority !== "ignore") {
      // post_id for testing
      const post_id = context.post_id || 1735240;
      post = discourse.getPost(post_id);
      topic = post.topic;
      let statusEmoji = "";

      if (params.priority === "urgent") {
        statusEmoji = ":police_car_light:"; // Red circle for urgent
      } else if (params.priority === "medium") {
        statusEmoji = ":warning:"; // Orange circle for medium
      } else if (params.priority === "low") {
        statusEmoji = ":writing_hand:"; // Green circle for low
      }

     const message = `${statusEmoji} [${topic.title} - ${post.username}](${post.post_url}): ${params.message}`;
     discourse.createChatMessage({ channel_name: "AI Moderation", username: "AI-moderation-bot", message: message});
  }
  chain.setCustomRaw("Post was classified");
  return "done";
}
function details() {
  return "Judge Post";
}

スクリプトはいくつかの高度なテクニックを使用しています。

  1. chain.setCustomRaw これは、ペルソナに LLM チェーンの実行を停止させ、ツールの呼び出しを最終的な呼び出しとして行うように指示し、トークンを節約します。
  2. discourse.createChatMessage ツールからチャットメッセージを作成するために使用できる新しい API です。
  3. discourse.getPost これは、投稿情報を取得するために使用されます。

これにより、テストボタンを使用してツールをテストし、正常に機能することを確認できます。

どのモデルを使用していますか?

現時点では、最先端モデルである Sonnet 3.7 を使用しています。しかし、Discourse Automation にいくつかの改善を加えたら、Gemini Flash に移行する予定です。特に、公開コンテンツのみをスキャンし、セキュアなカテゴリを回避するように指示する機能です。

ここで質問があれば喜んでお答えします。実験が実行され、さらに多くの Discourse Automation 機能が展開されるにつれて、更新を続けます。

「いいね!」 22

誤検出やその他の見逃しはどのくらいの頻度で発生しますか?比較的平和な環境ですが。

「いいね!」 1

今日は100%静かだったので、実際に機能しているかどうかを追跡するために自動化に機能を追加するつもりです :slight_smile:

「いいね!」 2

2、3年後にはAIがローカルで役立ち、モデレーターチームを支援できるようになることを願っていますが、今日、今必要なのかと思いますか?進捗状況を説明するこの定期的なトピックをありがとうございます。

もう一つ質問ですが、DiscourseはいつかCDCKのためにセルフホスト型の多言語APIを提供し、皆さんが私たちに代わって悪意のあるアクターと戦うのと同時に、私たちのデータを安全に保つことができるようになりますか?LLMモデルを使用できることは知っていますが、喜んで代替サービスとして有料で利用したいと思います😃

例を挙げさせてください。Google Perspectiveは、このためのフリーミアムオプションであり、多くの言語で毒性に対抗することをサポートしています。なぜCDCKも提供しないのですか?

「いいね!」 1

フィードバックありがとうございます。はい、これは私たちが考えてきたことですが、今後12ヶ月以内にこのような冒険に乗り出すことはないと思います。

「いいね!」 1

更新時間

この数日間、この実験をより良くサポートするために、2つのかなり大きな変更セットを作成しました。

および

これらの変更により、特にこの変更のおかげで、はるかに安価なGemini Flash 2.0モデルに移行することができました。

これにより、フォーラム上の公開投稿のみがスキャンされるという極端な確信を持つことができました。

CDCKでは、データクラスごとに異なるデータ処理ルールがあり、現時点ではGemini Flashの公開データへの使用のみを承認しています。

OPの私の元のプロンプトは、メタでは何もトリガーしませんでした。公平に言えば、メタは親切でフレンドリーな場所であり、手動モデレーションの必要性は非常に少ないため、驚くことではありません。

とはいえ、何も機能しているか確信が持てませんでした…

それを解決するために、自動化に統計を追加しました(数時間前にマージされました)。

したがって、この自動化は20分前に実行され、今月8回実行されたことから、機能していることがわかります。


展開した日、すべてが非常に静かだったので、システムの感触をより良く掴むために、自動化に「狼少年」になってもらうことにしました。プロンプトを次のように変更しました。

あなたはmeta.discourse.org、公式のDiscourseディスカッションフォーラムのAIモデレーターです。あなたの役割は、コミュニティガイドラインに沿って、「文明化された公開討論のための、清潔で明るい場所」を維持するのを助けることです。

モデレーション哲学:
- このフォーラムを、公共公園のような共有コミュニティリソースとして見なす
- ガイドラインを厳格なルールではなく、人間の判断を補助するものとして使用する
- ルールを施行するだけでなく、議論を改善することに焦点を当てる
- ファシリテーションとモデレーションのバランスを取る
- 問題のあるコンテンツは人間のレビューのためにフラグを立てる方に傾く

コンテンツ評価フレームワーク:
1. 議論を改善する
   - 投稿が会話に実質的な価値を追加しているかを評価する
   - 内容が乏しい、一般的すぎる応答、または浅いエンゲージメントの投稿をフラグ付けする
   - トピックや参加者への敬意を示す投稿を認識する
   - 新しい議論を開始する前に、既存の議論の探求をサポートする
   - 議論にほとんど価値を加えない「通りすがりの」コメントに注意する

2. 反論の基準
   - アイデアへの批判(許容される)と個人への批判(許容されない)を区別する
   - 次のインスタンスをフラグ付けする:個人攻撃、アドホミネム攻撃、トーンによる応答、衝動的な矛盾
   - 反論が合理的で、会話を改善しているかを評価する
   - 軽蔑や見下しの微妙な形態に敏感になる

3. 参加の質
   - フォーラムを興味深い場所にする議論を優先する
   - コミュニティのシグナル(いいね、フラグ、返信)を評価に考慮する
   - 一般的、テンプレート的、または個人的な洞察に欠けるコンテンツをフラグ付けする
   - 定型的または具体性に欠ける貢献に注意する
   - コミュニティを「見つけたときよりも良くする」コンテンツをサポートする

4. 問題の特定
   - 問題のある行動に対処するのではなく、フラグ付けすることに焦点を当てる
   - 問題のあるパターンがエスカレートする前に、積極的に特定する
   - フラグが(自動的または人間のモデレーターによって)アクションをトリガーすべき場合を認識する
   - モデレーターとユーザーの両方がフォーラムの責任を共有していることを忘れない

5. シビリティの施行
   - 微妙な形態を含む、潜在的に攻撃的、虐待的、またはヘイトスピーチを特定する
   - 露骨または性的に露骨なコンテンツをフラグ付けする
   - ハラスメント、なりすまし、またはプライベート情報の開示に注意する
   - スパム、フォーラムの破壊行為、または貢献を装ったマーケティングを防ぐ

6. 組織の維持
   - 間違ったカテゴリに投稿されたトピックに注意する
   - 複数のトピックにわたるクロス投稿を特定する
   - コンテンツのない返信、トピックの逸脱、スレッドジャックをフラグ付けする
   - 投稿署名や不要なフォーマットを抑制する

7. コンテンツの所有権
   - 他者のデジタルコンテンツの不正投稿をフラグ付けする
   - 潜在的な知的財産権侵害を特定する

8. AI生成コンテンツの検出
   - AI生成コンテンツの兆候に注意する:過度にフォーマルな言語、一般的なフレーズ、個性に欠ける完璧な文法
   - テンプレート的、具体性に欠ける、または議論に具体的に関与しないコンテンツをフラグ付けする
   - 包括的だが実際の洞察が浅いように見える応答に敏感になる
   - 通常とは異なるフレーズパターン、不必要な冗長性、または繰り返し構造を持つ投稿を特定する

出力形式:
モデレーション評価は非常に簡潔でなければなりません:
**[優先度]**: 特定された主要な問題を含む1〜2文の正当化
読みやすさのためにMarkdownフォーマットを使用しますが、可能な限り合計応答を3行未満に保ちます。

コンテンツを評価する際は、コンテキスト、ユーザー履歴、フォーラムの規範を考慮してください。モデレーションなしで通過するコンテンツには高い基準を設定してください。「無視」優先度は、明らかに価値のある貢献に対してのみ予約し、軽微な問題であっても「低」優先度を使用してください。

---

すべての投稿を懐疑的な目で判断してください。明確で本物の価値のある貢献に対してのみ「無視」優先度を使用してください。投稿の価値または信憑性について不明な点がある場合は、人間のレビューのために少なくとも「低」優先度を割り当ててください。

このプロンプトは、はるかにノイズの多いチャットチャネルにつながります。

観察

この実験は紆余曲折を経ますが、非常に興味深いものが形成されているのを見ています。

すべてのモデレーションがフラグベースである必要はありません。時には、アイデアや何かが起こっているという認識があるだけで十分です。

この種のツールは、コミュニティにおけるAIのビジョンと非常によく一致しています。モデレーターに何を見るべきかのアイデアを与える「小さなAIサイドキック」です。さらに、一般的なガイドラインやルールを施行する機会でもあります。

一部の小規模コミュニティは「しつこい」AIサイドキックを望むかもしれませんが、他のより大きく忙しいコミュニティは、極端な異常行動の注意しか払えないかもしれません。

ここで作業を検討している将来の領域は次のとおりです。

  1. モデレーターボットが介入して同じトピックについて二度尋ねるのは少し迷惑です。古いものを折りたたむ、スレッド化する、またはその他のアプローチは、これを回避するための興味深いアプローチになる可能性があります。

  2. @hugh は、このようなチャットチャネルを見ると、ボットに自分の代わりにアクションを実行するように依頼したくなると指摘しました。例:

    • 深い調査を行い、詳細なガイダンスを提供する
    • ああ、これは本当にひどいユーザーのようですね。このユーザーを3日間禁止するのを手伝ってください
    • この問題を追跡するために、内部バグトラッカーにバグを開く
    • など。

ボットが私たちの代わりにアクションを実行できる状態にするには、ツールがユーザーの承認を求めることができるDiscourse AIの新しい構造が必要です。これは私が考えていることです。

  1. OPで提起されたように、バッチを実行できると良いのですが、プロンプトを編集してから編集が機能したかどうかを知るまでのリードタイムが長すぎます。自動化にこれを追加する方法を考えています。

  2. ライブチューニングは興味深い概念です…「ねえボット、これは多すぎます。なぜ私にこの件でうるさく言うのですか?」…「ボット… X、Y、Z…私の指示セットを改善してほしいですか?」…「はい」

これが皆さんの役に立つことを願っています。質問があればお知らせください。

「いいね!」 9

ただのアイデアですが、モデレーションボットが少なくとも時々はピングレスポンスを投稿するように、あなたのプロンプトに何か工夫を加えることはできますか?それが動作していることを示すために。例えば、何の対処も必要ない投稿のときに、確率1%で「この投稿には対処が必要ありません」というメモを投稿するとか、またはもっと忙しいフォーラムでは低い確率で。

「いいね!」 1

これらのプロンプトの違いを見ると:

「すべての投稿を審査し、モデレーションが不要な場合は無視の優先度を使用してください。」

「すべての投稿を懐疑的な目で審査してください。明確で本物の価値がある貢献に対してのみ「無視」の優先度を使用してください。投稿の価値または信憑性について疑わしい場合は、人間のレビューのために少なくとも「低」の優先度を割り当ててください。」

モデルにおける大きな最近性バイアスを覚えておくことが重要だと思います。おそらく、すべてのコマンドワードは、望ましい頻度の逆順で、最後に文章で言及されるべきです。

「いいね!」 1

【引用=“Ed_S、投稿:8、トピック:357865、完全版: true”】
アイデアですが、あなたのプロンプトに何か工夫をして、モデレーションボットが少なくとも時々は応答のピンを投稿して動作していることを示せるようにできませんか?例えば、何もアクションが必要ない投稿の場合、1%の確率でこの投稿はアクション不要であったと知らせる旨のノートを投稿するとか、より忙しいフォーラムの場合は確率を下げるとか。
【/引用】

あるいは、無邪気で一般的だがそんなに頻繁ではない言葉に反応させることもできます。“パイナップルについて言及している投稿にフラグを立てる”。

「いいね!」 3

しばらく投稿していませんでした。毎日小さなチャットウィンドウを訪れ、1日に1〜2回は役立つようにしていたにもかかわらず…一貫して

ここでの遅延の理由は、このかなり大きな変更を完了する必要があったためです。

これにより、Discourse AI が微妙ながらも重要な改善がもたらされます。

コンテキストの構築方法により、モデレーションボットが完全に無関係な画像について話していることに定期的に気づいていました。この変更により、混合コンテンツ(画像とテキストを正しい順序で含む)を提示できるようになります。

これにより、LLM が混乱しなくなります。

次は何ですか?

  1. 投稿編集が「落ち着いた」後にルールを呼び出すための自動化方法がありません。LLM の呼び出しは高価になる可能性があります。人々がタイポを編集するだけで、何度もスキャンしたくはありません。ここで必要かどうかはわかりませんが、投稿が新しい形状に落ち着いたときに自動化をトリガーする可能性を許可したいと思います。
  2. プロンプトエンジニアリング - 現在のプロンプトは OK ですが、私の好みには少し大きすぎます。少しうるさすぎるので、少し柔らかくするかもしれません。
  3. コンテキストの改善 - 自動化がユーザーの信頼性を認識していないことが本当に気になります。一部のユーザーは、他のユーザー(例:モデレーター)よりもコミュニティで信頼されています。このストーリーを改善できるかどうかを確認したいと思います。
  4. 高速な反復処理のために、投稿のバッチで自動化を実行する機能。
  5. さらに多くのことが発生することは確かです。
「いいね!」 8

私の最新の作業中のものは次のとおりです。

私の考えでは、システムを動かすペルソナは2つになります。

  1. トリアージを実行するペルソナ - 今日すでに定義されているもの(トリアージボット)
  2. モデレーター/高信頼ユーザーと対話するペルソナ(モッドボット)

@mod_botとチャットすることで、モデレーター(または非常に信頼の高いユーザー)は@triage_botの動作を指示できるようになります。

例:

@mod_bot、誰かがAIについて話したら@samに知らせるようにして

これにより、mod_botはtriage_botのシステムプロンプトを修正します。これは、この特定のチャットルームにいるだけで、どのコミュニティでもロボットを望むように動作するようにトレーニングできることを意味します。

これはメモリの実装における興味深いひねりです。実際にどの程度うまくいくかはわかりませんが、非常に価値のある実験です。

「いいね!」 5

これはまだmeta上で動いています。

今私が持っている一つの洞察は、オートメーションは素晴らしいですが、そうでない場合はひどいものになってしまうということです。

特に、ロボットをあまりにも大きな音を立てさせると、そのロボットは役に立たなくなります。

私たちのカスタム指示を非常に退屈なものに切り替えました:

あなたは、meta.discourse.orgのすべての投稿を読むAIベースのボットです。

あなたは1つのツールにアクセスでき、それをすべての投稿で呼び出します。

優先度「無視」を使用して投稿を無視し、通知を避けます。

その他の優先度は通知します。

### トリアージガイドライン
## コンテンツ監視
* 非英語のコンテンツが投稿された場合は@natへ通知(翻訳者機能を支援)
* 議論が毒性または過熱し始めた場合は@samへ通知
* ユーザーがレビュークエリの機能について話し合っている場合は@hughへ通知
  * スタッフの経験、モデレータツール、キュー、モデレーションワークフローに関する議論を含む
  * 特にフラグ、レビュー、承認、および関連するモデレーションUI/UXの事項
### トリアージガイドライン終了

過去の反復では、「バグとして議論されていないバグについて知らせてほしい」といった内容を見ていました。

1つの毒性ルールを持つだけで十分で、その後のチャット通知は激増し、それらを無視すれば良いのです。

「いいね!」 4