Discourse Disorder

Data Explorer を使用して、スコアリングをより便利な方法で表示するようにクエリも変更しました。
クレジットは ChatGPT と Leonardo による PostgreSQL のヒント に帰属します。

SELECT
  json_extract_path_text(pcf.value::json, 'classification', 'toxicity') AS toxicity,
  json_extract_path_text(pcf.value::json, 'classification', 'severe_toxicity') AS severe_toxicity,
  json_extract_path_text(pcf.value::json, 'classification', 'obscene') AS obscene,
  json_extract_path_text(pcf.value::json, 'classification', 'identity_attack') AS identity_attack,
  json_extract_path_text(pcf.value::json, 'classification', 'insult') AS insult,
  json_extract_path_text(pcf.value::json, 'classification', 'threat') AS threat,
  json_extract_path_text(pcf.value::json, 'classification', 'sexual_explicit') AS sexual_explicit,
  json_extract_path_text(pcf.value::json, 'model') AS model,
  pcf.created_at,
  p.raw
FROM
  post_custom_fields AS pcf
INNER JOIN
  posts AS p ON p.id = pcf.post_id
INNER JOIN
  topics AS t ON t.id = p.topic_id
WHERE
  pcf.name = 'disorder' 
  AND t.archetype = 'regular'
ORDER BY created_at DESC
そして、この変更は、分類値のいずれかが 50 (または設定した値) より大きい行を返します
-- [params]
-- int :threshold = 50
SELECT DISTINCT ON (p.id, pcf.created_at)
  json_extract_path_text(pcf.value::json, 'classification', 'toxicity') AS toxicity,
  json_extract_path_text(pcf.value::json, 'classification', 'severe_toxicity') AS severe_toxicity,
  json_extract_path_text(pcf.value::json, 'classification', 'obscene') AS obscene,
  json_extract_path_text(pcf.value::json, 'classification', 'identity_attack') AS identity_attack,
  json_extract_path_text(pcf.value::json, 'classification', 'insult') AS insult,
  json_extract_path_text(pcf.value::json, 'classification', 'threat') AS threat,
  json_extract_path_text(pcf.value::json, 'classification', 'sexual_explicit') AS sexual_explicit,
  json_extract_path_text(pcf.value::json, 'model') AS model,
  p.id as post_id,
  pcf.created_at,
  p.raw
FROM
  post_custom_fields AS pcf
INNER JOIN
  posts AS p ON p.id = pcf.post_id
INNER JOIN
  topics AS t ON t.id = p.topic_id
WHERE
  pcf.name = 'disorder' 
  AND t.archetype = 'regular'
GROUP BY p.id, pcf.value, pcf.created_at
HAVING 
  CAST(json_extract_path_text(pcf.value::json, 'classification', 'toxicity') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'severe_toxicity') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'obscene') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'identity_attack') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'insult') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'threat') AS FLOAT) > :threshold 
  OR CAST(json_extract_path_text(pcf.value::json, 'classification', 'sexual_explicit') AS FLOAT) > :threshold
ORDER BY pcf.created_at DESC, p.id

Data explorer を使用して、レポート対象の異なるしきい値を設定できるように、さらにいくつかのパラメータを導入するように変更することもできます。

注意: これは公開投稿のみを返し、プライベートメッセージにはアクセスしません。

「いいね!」 3

まさにこの機能に取り組んでいます!

誤検知/偽陰性率を使用してオプティマイザーを実行し、各オプションの最適な閾値を提案できるようにすることも計画していますので、この情報は近い将来役立つでしょう。

「いいね!」 5

素晴らしいですね。それは良い知らせです。
今のところ、Disorderbotが生成するフラグはすべて、しきい値を最大90〜100に引き上げたとしても、すべて拒否または無視する傾向があります。しかし、テストしているフォーラムの性質(NSFW)上、コミュニケーションが本当に有害かどうかについてAIは簡単に混乱します。私たちのユースケースではまだそれほど信頼性が高くないため、引き続き使用しますが、非常に有害な投稿を「強化」するためのレポートとしてのみ使用します。

長期的に使用できるより良いしきい値が見つかり次第、ユーザーが非常に有害なものを投稿しようとしたときに予防的な警告を有効にできるようになります。

AIが主流になったらそうなるだろうと私も思います。それは検閲を可能にし、世界のあらゆるコミュニティの健全性にとって必要な、現状打破の問いかけを制限するでしょう。

制限したり禁止したりするのではなく、教育し、議論すること。副作用なしにツールを使用する方法があるのかもしれません(私の懸念が望ましい効果であると考えていますが)、しかし現時点ではそれは不可能だと思います。

フィードバックありがとうございます。私にとって価値があります。そしてもちろん、Discourseを常に更新し改善し続けているチームにも感謝します :slight_smile:

すべてのしきい値を100に設定し、「深刻な有害性」や「脅迫」などのより極端なしきい値のみに依存することは、そのようなコミュニティで採用される可能性があると思います。

「いいね!」 3

ありがとうございます。現在はこのように設定されていますが、まだ感度が高すぎます。さらにいくつか上げてみて、どうなるか見てみます。

「いいね!」 1

生の分類を確認する必要がありますが、まず侮辱の分類も増やします。

それらを読まないようにした方がいいでしょう :smiley: テキスト形式でも、本当にNSFW(職場閲覧注意)の可能性があります。
最初のしきい値も100に引き上げました。これでどうなるか見てみましょう :smiley:

「いいね!」 1

将来的には、Disorderがプライベートメッセージをチェックしない(または報告しない)ようにできればと強く願っています。私たちはそれらにアクセスせず、AIがプライベートな会話をチェックすることは非常に非倫理的だと感じています。

「いいね!」 4

はい、それは@davidkinghamさんが尋ねたのと同じことです。ロードマップに含めます。

「いいね!」 3

…英語は? :sweat_smile:

また、Akismet をどの程度置き換えることができるか疑問に思っています。現在、Akismet のフラグに対する不一致率は 97% です。数字が多い投稿に反応するだけのようです。そのため、タイムスタンプで始まるジョブログを投稿している場合…

「いいね!」 1

スパムとスパム検出との間の軍拡競争は、広く利用可能なLLMの出現により核戦争に突入しました。私たちは幅広いモデルを使用した機能に取り組んでおり、スパムは現在の優先事項ではありませんが、調査する予定です。

「いいね!」 4

わかりました。電源を入れました。どうすれば機能しているとわかりますか?

しきい値を非常に低く設定してすべてをキャッチする以外に、という意味です。

診断モードやログで、特定の投稿がどの程度スコアリングされたかを確認できますか?

「いいね!」 2

最も簡単な方法は、侮辱的な投稿をして挑発することです。プラグインの設定でユーザーグループがバイパスされていないことを確認してください。

より良い方法は、Data Explorer をクエリすることです。この投稿にある私のクエリのいずれかを参照してください。

「いいね!」 1

ありがとうございます。これまでのすべての投稿で、すべてゼロが返ってきていますが、これは予想されることでしょうか?

「いいね!」 1

投稿のほとんどすべての基準でゼロになっています。これは、健全なコミュニケーションが行われているフォーラムでは正常なことです。

「いいね!」 2

クール — モデルがどれほどトリガーハッピーか確信が持てませんでした。:slight_smile:

「いいね!」 1

プラグインをインストールしましたが、動作しません。追加の設定は必要ですか?

プラグインから以下のエラーが多数発生しています。
ジョブ例外: 初期化されていない定数 Jobs::ClassifyChatMessage::ChatMessage

この問題は、私のプラグインのいずれかが次のコマンドを使用してチャットメッセージを作成したときに発生するようです。
Chat::MessageCreator.create(chat_channel: matching_channel, user: message_user, content: raw).chat_message

ありがとうございます。

「いいね!」 1

ああ、これは新しいチャットの再編成で壊れるはずでした。数日中にこの機能を取り込む新しいプラグインを発売する予定ですので、ご期待ください。

「いいね!」 5