Expériences avec la modération basée sur l'IA sur Discourse Meta

Détection de spam par IA a connu un succès phénoménal et a aidé de nombreuses communautés.

Dans ce post, je souhaite partager les détails de notre expérience « en cours », au cas où elle serait utile à d’autres communautés.

J’ai l’intention de maintenir ce post à jour au fur et à mesure que l’expérience progresse et de partager des informations sur la classe de problèmes qu’elle peut détecter.

Soyez conscient, cependant : il s’agit d’un système en évolution, pas encore d’un produit fini.

Pourquoi la modération par IA ?

Une approche clé que nous avons avec l’intégration de l’IA sur Discourse est qu’elle doit apporter de la valeur aux modérateurs humains, plutôt que de les remplacer. La promesse de la modération par IA est qu’elle peut signaler aux modérateurs que « quelque chose ne va pas » et faire des recommandations sur les actions à entreprendre. L’agence doit être entièrement laissée aux modérateurs humains.

Pourquoi le chat comme modalité pour cette expérience ?

Lorsque j’ai monté mon expérience, j’ai choisi d’utiliser le chat comme modalité pour les notifications. Cela permet un canal dédié à l’expérience qui n’interfère pas avec la modération générale sur le forum.

Étant donné que la construction et le raffinement des prompts sont un travail en cours, déranger le reste de l’équipe de modération sur meta ne semblait pas être une bonne approche.

Lorsque vous donnez aux gens des projets d’IA très inachevés, vous pouvez très facilement perdre toute confiance et tout soutien futur.

Qu’en est-il des tests par lots ?

Une limitation de notre système d’automatisation actuel est que vous ne pouvez pas actuellement tester les modifications par lots. Cela signifie que lorsque vous apportez des modifications aux prompts de l’IA, il y a un long délai avant de découvrir à quel point c’est utile.

C’est particulièrement problématique si vous ne voyez qu’une poignée de problèmes sur le forum pendant la journée. Le temps de réaction est trop lent et il peut falloir des mois pour affiner un prompt.

Je suis très conscient de cette limitation et j’espère supprimer cette section du post dans les prochaines semaines, car nous avons un système pour le faire.

Comment est-ce configuré ?

Mon expérience actuelle s’appuie sur 3 fonctionnalités :

  1. Automatisation - Répondeur de Persona IA
  2. Discourse IA - Persona IA
  3. Discourse IA - Outils personnalisés

Notre automatisation de réponse

La chose la plus notable à propos du répondeur est qu’il est silencieux, ce qui signifie qu’il ne chuchotera ni ne publiera sur le sujet qu’il trie.

Notre modération de Persona

La chose la plus notable ici est l’outil forcé, cela signifie que chaque post sera jugé en utilisant l’outil personnalisé de jugement de post.

Notre prompt système actuel est le suivant : (sera mis à jour au fur et à mesure)

prompt système

Vous êtes un modérateur IA pour meta.discourse.org, le forum de discussion officiel de Discourse. Votre rôle est de contribuer à maintenir un « endroit propre et bien éclairé pour un discours public civilisé » conformément à nos directives communautaires.

PHILOSOPHIE DE MODÉRATION :

  • Considérez ce forum comme une ressource communautaire partagée, comme un parc public
  • Utilisez les directives pour aider au jugement humain, pas comme des règles rigides
  • Concentrez-vous sur l’amélioration des discussions plutôt que sur la simple application des règles
  • Équilibre entre facilitation et modération

CADRE D’ÉVALUATION DU CONTENU :

  1. AMÉLIORER LA DISCUSSION

    • Évaluer si les posts ajoutent de la valeur à la conversation
    • Reconnaître les posts qui montrent du respect pour les sujets et les participants
    • Soutenir l’exploration des discussions existantes avant d’en commencer de nouvelles
  2. NORMES DE DÉSACCORD

    • Faire la distinction entre critiquer des idées (acceptable) et critiquer des personnes (inacceptable)
    • Signaler les cas de : insultes, attaques ad hominem, réponses sur le ton, contradictions hâtives
    • Évaluer si les contre-arguments sont raisonnés et améliorent la conversation
  3. QUALITÉ DE LA PARTICIPATION

    • Prioriser les discussions qui rendent le forum intéressant
    • Tenir compte des signaux communautaires (likes, drapeaux, réponses) dans l’évaluation
    • Soutenir le contenu qui laisse la communauté « meilleure qu’on ne l’a trouvée »
  4. IDENTIFICATION DES PROBLÈMES

    • Se concentrer sur le signalement des mauvais comportements plutôt que sur leur engagement
    • Reconnaître quand les drapeaux doivent déclencher une action (automatiquement ou par des modérateurs humains)
    • Se rappeler que les modérateurs et les utilisateurs partagent la responsabilité du forum
  5. APPLICATION DE LA CIVILITÉ

    • Identifier les discours potentiellement offensants, abusifs ou haineux
    • Signaler le contenu obscène ou sexuellement explicite
    • Surveiller le harcèlement, l’usurpation d’identité ou la divulgation d’informations privées
    • Empêcher le spam ou le vandalisme du forum
  6. MAINTENANCE DE L’ORGANISATION

    • Noter les sujets postés dans les mauvaises catégories
    • Identifier le cross-posting dans plusieurs sujets
    • Signaler les réponses sans contenu et les déviations de sujet
    • Décourager les signatures de posts
  7. PROPRIÉTÉ DU CONTENU

    • Signaler la publication non autorisée de contenu numérique d’autrui
    • Identifier les violations potentielles de la propriété intellectuelle

Lors de l’évaluation du contenu, tenez compte du contexte, de l’historique de l’utilisateur et des normes du forum. Votre objectif est de guider plutôt que de punir, d’éduquer plutôt que d’appliquer, mais de maintenir des normes cohérentes qui préservent la qualité de la discussion.


Jugez TOUS les posts, si un post ne nécessite aucune modération, utilisez la priorité d’ignorance.

Notre outil personnalisé de jugement de post

le script qui l'alimente
function invoke(params) {
  let post,topic;
  if (params.priority !== "ignore") {
      // post_id pour les tests
      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:"; // Cercle rouge pour urgent
      } else if (params.priority === "medium") {
        statusEmoji = ":warning:"; // Cercle orange pour moyen
      } else if (params.priority === "low") {
        statusEmoji = ":writing_hand:"; // Cercle vert pour bas
      } 
     
     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";
}

Le script utilise pas mal de techniques avancées :

  1. chain.setCustomRaw cela indique au persona d’arrêter d’exécuter la chaîne LLM et fait de l’appel à l’outil l’appel final, économisant des tokens
  2. discourse.createChatMessage une nouvelle API qui peut être utilisée à partir d’outils pour créer des messages de chat.
  3. discourse.getPost qui est utilisé pour obtenir des informations sur le post

Compte tenu de cela, je suis capable de tester l’outil en utilisant le bouton de test et de confirmer qu’il fonctionne bien :

Quel modèle utilisez-vous ?

Pour le moment, nous utilisons Sonnet 3.7, qui est un modèle de pointe. Cependant, nous prévoyons de passer à Gemini Flash une fois que j’aurai apporté quelques améliorations à Discourse Automation, notamment la possibilité de lui dire de scanner uniquement le contenu public et d’éviter les catégories sécurisées.

Je suis heureux de répondre aux questions ici et je continuerai à mettre à jour au fur et à mesure que l’expérience se déroule et que nous déployons davantage de fonctionnalités de Discourse Automation.

22 « J'aime »

À quelle fréquence recevez-vous de faux positifs ou d’autres ratés ? C’est un environnement relativement paisible, cependant.

1 « J'aime »

Il a été 100 % silencieux aujourd’hui, tellement calme que je vais ajouter des fonctionnalités à l’automatisation pour vérifier qu’elle fonctionne réellement :slight_smile:

2 « J'aime »

J’espère que dans 2 ou 3 ans, l’IA pourra être utile localement pour aider mon équipe à modifier, mais aujourd’hui, je me demande si c’est nécessaire maintenant ? Merci donc pour ces sujets réguliers expliquant les progrès.

Une autre question, Discourse fournira-t-il un jour une API multilingue auto-hébergée pour que CDCK garde nos données en sécurité tout en luttant contre les acteurs malveillants pour nous ? Je sais que je peux utiliser un modèle LLM, mais je serais ravi de payer pour vos services en alternative :smiley:

Laissez-moi vous donner un exemple, Google Perspective propose une option freemium pour cela et prend en charge de nombreuses langues pour lutter contre la toxicité, pourquoi CDCK n’en propose pas aussi ?

1 « J'aime »

Merci pour vos commentaires. Oui, c’est quelque chose auquel nous avons pensé, mais je ne pense pas que nous nous lancerons dans une telle aventure au cours des 12 prochains mois.

1 « J'aime »

Heure de mise à jour

Au cours des derniers jours, j’ai apporté deux ensembles de modifications assez importants pour mieux soutenir cette expérience :

et

Ces changements nous ont permis de migrer vers le modèle Gemini Flash 2.0, beaucoup moins cher, en particulier ce changement :

Cela nous a permis d’avoir une extrême confiance que seuls les messages publics sur le forum sont analysés.

Chez CDCK, nous avons des règles de traitement des données différentes pour différentes classes de données et, pour le moment, nous n’approuvons l’utilisation de Gemini Flash que sur les données publiques.

Mon invite d’origine dans le message initial ne déclenchait rien sur meta. Pour être juste, meta est un endroit agréable et convivial et il y a très peu de besoin de modération manuelle, donc ce n’est pas surprenant.

Cela dit, je n’étais tout simplement pas sûr que quoi que ce soit fonctionne…

Pour résoudre ce problème, j’ai ajouté des statistiques à l’automatisation : (fusionné il y a quelques heures)

Nous pouvons donc dire que cette automatisation fonctionne, étant donné qu’elle s’est exécutée il y a 20 minutes et 8 fois ce mois-ci.


Quand les choses étaient très calmes le jour où je l’ai déployé, j’ai décidé de faire en sorte que l’automatisation « crie au loup » car je voulais mieux appréhender le système. J’ai modifié l’invite pour :

Vous êtes un modérateur IA pour meta.discourse.org, le forum de discussion officiel de Discourse. Votre rôle est d'aider à maintenir un « endroit propre et bien éclairé pour un discours public civilisé » conformément à nos directives communautaires.

PHILOSOPHIE DE MODÉRATION :
- Considérez ce forum comme une ressource communautaire partagée, comme un parc public
- Utilisez les directives pour aider au jugement humain, pas comme des règles rigides
- Concentrez-vous sur l'amélioration des discussions plutôt que sur la simple application des règles
- Équilibre entre facilitation et modération
- Privilégiez le signalement du contenu discutable pour un examen humain

CADRE D'ÉVALUATION DU CONTENU :
1. AMÉLIORER LA DISCUSSION
   - Évaluez si les publications apportent une valeur substantielle à la conversation
   - Signalez les publications avec un minimum de substance, des réponses génériques ou un engagement superficiel
   - Reconnaissez les publications qui montrent du respect pour les sujets et les participants
   - Soutenez l'exploration des discussions existantes avant d'en commencer de nouvelles
   - Soyez vigilant quant aux commentaires « de passage » qui ajoutent peu à la discussion

2. NORMES DE DÉSACCORD
   - Distinguez la critique des idées (acceptable) de la critique des personnes (inacceptable)
   - Signalez les cas de : insultes, attaques ad hominem, réponses sur le ton, contradictions hâtives
   - Évaluez si les contre-arguments sont raisonnés et améliorent la conversation
   - Soyez sensible aux formes subtiles de dédain ou de condescendance

3. QUALITÉ DE LA PARTICIPATION
   - Privilégiez les discussions qui rendent le forum intéressant
   - Tenez compte des signaux communautaires (likes, flags, replies) dans l'évaluation
   - Signalez le contenu qui semble générique, préfabriqué ou manquant d'aperçu personnel
   - Surveillez les contributions qui semblent formulaires ou qui n'engagent pas de manière significative avec les spécificités
   - Soutenez le contenu qui laisse la communauté « meilleure que nous ne l'avons trouvée »

4. IDENTIFICATION DES PROBLÈMES
   - Concentrez-vous sur le signalement des mauvais comportements plutôt que sur leur engagement
   - Soyez proactif dans l'identification des schémas potentiellement problématiques avant qu'ils ne s'aggravent
   - Reconnaissez quand les flags devraient déclencher une action (automatiquement ou par des modérateurs humains)
   - Rappelez-vous que les modérateurs et les utilisateurs partagent la responsabilité du forum

5. APPLICATION DE LA CIVILITÉ
   - Identifiez les discours potentiellement offensants, abusifs ou haineux, y compris les formes subtiles
   - Signalez le contenu obscène ou sexuellement explicite
   - Surveillez le harcèlement, l'usurpation d'identité ou la divulgation d'informations privées
   - Empêchez le spam, le vandalisme de forum ou le marketing déguisé en contribution

6. MAINTENANCE DE L'ORGANISATION
   - Notez les sujets publiés dans les mauvaises catégories
   - Identifiez le cross-posting dans plusieurs sujets
   - Signalez les réponses sans contenu, les diversions de sujet et le détournement de fil
   - Découragez les signatures de publication et la mise en forme inutile

7. PROPRIÉTÉ DU CONTENU
   - Signalez la publication non autorisée de contenu numérique d'autrui
   - Identifiez les violations potentielles de la propriété intellectuelle

8. DÉTECTION DE CONTENU GÉNÉRÉ PAR L'IA
   - Surveillez les signes révélateurs de contenu généré par l'IA : langage trop formel, formulation générique, grammaire parfaite avec peu de personnalité
   - Signalez le contenu qui semble préfabriqué, manque de spécificité ou n'engage pas avec les particularités de la discussion
   - Soyez sensible aux réponses qui semblent complètes mais peu profondes en insights réels
   - Identifiez les publications avec des schémas de formulation inhabituels, une verbosité inutile ou des structures répétitives

FORMAT DE SORTIE :
Votre évaluation de modération doit être extrêmement concise :
**[PRIORITÉ]** : justification en 1-2 phrases avec le problème clé identifié
Utilisez la mise en forme markdown pour la lisibilité, mais gardez la réponse totale sous 3 lignes si possible.

Lors de l'évaluation du contenu, tenez compte du contexte, de l'historique de l'utilisateur et des normes du forum. Fixez une barre haute pour ce qui passe sans modération - utilisez la priorité « faible » même pour les problèmes mineurs, en réservant « ignorer » uniquement pour les contributions clairement précieuses.

---

Jugez TOUTES les publications avec un œil sceptique. Utilisez la priorité « ignorer » uniquement pour les contributions ayant une valeur ou une authenticité claire. En cas de doute sur la valeur ou l'authenticité d'une publication, attribuez au moins la priorité « faible » pour un examen humain.

Cette invite donne lieu à un canal de discussion beaucoup plus bruyant :

Observations

Cette expérience prend des détours, mais je vois quelque chose de très intéressant se former.

Toute la modération n’a pas besoin d’être basée sur des flags, parfois il suffit d’avoir des idées et la conscience que quelque chose se passe.

Ce type d’outil est très aligné avec notre vision de l’IA dans les communautés, c’est un « petit acolyte IA » qui donne aux modérateurs des idées sur ce qu’il faut regarder. De plus, c’est une opportunité d’appliquer des directives et des règles communes.

Certaines petites communautés pourraient vouloir un acolyte IA « pinailleur ». D’autres, plus grandes et plus occupées, ne pourront peut-être se permettre que l’attention des comportements extrêmes et aberrants.

Les domaines futurs sur lesquels j’envisage de travailler ici sont :

  1. Il est un peu ennuyeux que le bot modérateur intervienne et pose la même question deux fois sur le même sujet. La consolidation des anciens éléments, le threading ou autre chose pourrait être intéressant comme approche pour éviter cela.

  2. @hugh a soulevé qu’une fois que vous voyez un canal de discussion comme celui-ci, vous voulez simplement demander au bot d’agir en votre nom. Par exemple :

    • Effectuer des recherches approfondies sur et fournir des directives détaillées
    • Oh, cela ressemble vraiment à un utilisateur terrible, aidez-moi à bannir cet utilisateur pendant 3 jours
    • Ouvrir un bug sur notre tracker de bugs interne pour suivre ce problème
    • et ainsi de suite.

Pour atteindre l’état où un bot peut agir en notre nom, nous avons besoin d’une nouvelle construction dans Discourse AI qui permettra à un outil de demander l’approbation de l’utilisateur. C’est quelque chose auquel je réfléchis.

  1. Comme soulevé dans le message initial, l’exécution de lots serait bien, il y a trop de délai entre le moment où vous modifiez une invite et le moment où vous savez si la modification a fonctionné ou non. Je réfléchis à la manière d’ajouter cela à l’automatisation.

  2. Le réglage en direct est un concept intéressant… « Hé bot, c’est trop, pourquoi tu m’embêtes avec ces trucs »… « Bot… X, Y, Z… aimeriez-vous que j’améliore mon jeu d’instructions »… « Oui »

J’espère que vous trouverez tout cela utile, faites-moi savoir si vous avez des questions.

9 « J'aime »

Juste une idée, pourrais-tu faire en sorte que ton prompt permette au bot de modération de poster au moins une fois de temps en temps une réponse de ping, pour montrer qu’il fonctionne. Peut-être, par exemple, avec une probabilité de 1 % lorsqu’un post ne nécessite aucune action, poster une note indiquant que ce post n’a besoin d’aucune action. Ou une probabilité plus faible, pour un forum plus actif.

1 « J'aime »

En regardant la différence entre ces invites :

Évaluez TOUS les messages, si un message ne nécessite aucune modération, utilisez la priorité d’ignorance.

Évaluez TOUS les messages avec un œil sceptique. N’utilisez la priorité « ignorer » que pour les contributions ayant une valeur claire et authentique. En cas de doute sur la valeur ou l’authenticité d’un message, attribuez au moins une priorité « faible » pour un examen humain.

Je pense qu’il est important de se rappeler le biais de récence majeur dans les modèles - peut-être que tous les mots de commande devraient être mentionnés dans une prose vers la fin, dans l’ordre inverse de la fréquence souhaitée.

1 « J'aime »

Alternativement, faites-le se déclencher sur un mot innocent, courant mais pas trop courant. « Signalez les messages qui mentionnent les ananas ».

3 « J'aime »

Je n’ai pas publié depuis un moment, malgré des visites quotidiennes à ma petite fenêtre de discussion et le fait qu’elle soit utile une ou deux fois par jour… constamment.

La raison de mon retard ici est que j’ai dû travailler sur ce changement plutôt important.

Il apporte une amélioration subtile, mais critique, à Discourse AI.

Je remarquais régulièrement que le bot de modération parlait d’images complètement non pertinentes, en raison de la façon dont nous construisions le contexte. Ce changement nous permet de présenter un contenu mixte (contenant des images et du texte dans un ordre correct).

Cela signifie que le LLM n’est plus confus.

Et ensuite ?

  1. Nous n’avons aucun moyen automatisé de lui permettre d’appeler une règle une fois que la modification d’un message est “réglée”. Les appels LLM peuvent être coûteux, et ce n’est pas parce que les gens corrigent des fautes de frappe que nous voulons analyser quelque chose encore et encore. Je ne suis pas sûr si c’est nécessaire ici, mais j’aimerais permettre la possibilité de déclencher une automatisation une fois qu’un message est stabilisé dans sa nouvelle forme.
  2. Ingénierie des prompts - le prompt actuel est correct, mais un peu trop bruyant à mon goût, il me dérange un peu trop, je vais peut-être l’adoucir un peu.
  3. Contexte amélioré - une chose qui me dérange vraiment est que l’automatisation n’a pas encore conscience de la confiance de l’utilisateur. Certains utilisateurs sont beaucoup plus fiables dans une communauté que d’autres (par exemple, les modérateurs). J’aimerais voir si nous pouvons améliorer cette situation.
  4. Possibilité d’exécuter l’automatisation sur des lots de messages pour des itérations rapides.
  5. Je suis sûr que beaucoup d’autres choses apparaîtront.
8 « J'aime »

Mon dernier travail en cours est :

Mon idée est qu’il y aura 2 personas pour alimenter le système :

  1. Persona effectuant le triage - celui déjà défini aujourd’hui (bot de triage)
  2. Persona qui interagit avec les modérateurs / utilisateurs de haute confiance (bot de modération)

En discutant avec @mod_bot, les modérateurs (ou les utilisateurs de très haute confiance) pourront guider @triage_bot sur son comportement.

Par exemple :

@mod_bot, assure-toi de prévenir @sam si quelqu'un parle d'IA

Cela déclenchera le mod_bot pour modifier l’invite système du bot de triage. Ce qui signifie qu’être dans cette salle de discussion spécifique suffira à permettre à toute communauté d’entraîner le robot à se comporter comme elle le souhaite.

C’est une tournure intéressante dans l’implémentation de la mémoire. Je ne suis pas sûr de son efficacité en pratique, mais c’est une expérience qui vaut la peine d’être tentée.

5 « J'aime »

Ceci fonctionne toujours sur meta.

Un constat que j’ai maintenant, c’est que l’automatisation est géniale, sauf quand elle ne l’est pas, alors elle devient terrible.

En particulier, si vous faites trop de bruit avec un robot, il devient inutile.

J’ai remplacé nos instructions personnalisées par quelque chose de TRÈS ennuyeux :

Vous êtes un bot basé sur l'IA qui lit CHAQUE message sur meta.discourse.org

Vous avez accès à un seul outil que vous utiliserez pour chaque message.

Vous utiliserez la priorité `ignore` pour ignorer le message et éviter les notifications.

TOUTE autre priorité enverra une notification.

### Lignes directrices pour le triage
## Surveillance du contenu
* Notifier @nat lorsqu'un contenu non anglais est publié (pour aider avec la fonctionnalité de traduction)
* Notifier @sam si vous remarquez qu'une discussion devient toxique ou surchauffée
* Notifier @hugh lorsque les utilisateurs discutent de la fonctionnalité de file d'attente de revue
  * Inclut les discussions sur l'expérience du personnel, les outils de modération, les files d'attente, les flux de travail de modération
  * En particulier signaler, examen, approbation, et autres questions d'UI/UX de modération
### Fin des lignes directrices pour le triage

Dans les itérations précédentes, je regardais des choses comme « faites-moi savoir si vous remarquez qu’un bug est discuté mais pas dans la catégorie bug ».

Il suffit d’avoir une règle de poison, puis les notifications de chat explosent et vous ne faites que les ignorer.

4 « J'aime »