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 :
- Automatisation - Répondeur de Persona IA
- Discourse IA - Persona IA
- 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 :
-
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
-
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
-
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 »
-
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
-
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
-
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
-
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 :
chain.setCustomRawcela 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 tokensdiscourse.createChatMessageune nouvelle API qui peut être utilisée à partir d’outils pour créer des messages de chat.discourse.getPostqui 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.






