Discourse AI - Détection de spam

:bookmark: Ce guide explique comment configurer et utiliser la fonctionnalité de détection de spam de Discourse AI, y compris le processus de configuration, les critères d’analyse, la logique de classification, les personnalisations et les contrastes avec le triage IA.

:person_raising_hand: Niveau d’utilisateur requis : Administrateur

:megaphone: Ceci est maintenant activé par défaut pour les clients Starter et Pro, ainsi que pour nos clients Basic, Open Source, Creator et Business existants.

Discourse AI fournit une fonctionnalité de détection de spam efficace qui identifie et signale les publications de spam avec une configuration minimale. Bien qu’il soit conçu pour la simplicité, il complète le système de triage IA plus polyvalent, qui prend en charge des flux de travail plus larges et des cas d’utilisation plus importants.

Résumé

Dans ce guide, vous apprendrez :

  • Comment fonctionne la détection de spam par IA et quel contenu est analysé
  • La logique de classification et le contexte utilisés par l’IA
  • Les étapes pour configurer la détection de spam via /admin/plugins/discourse-ai/ai-spam
  • Les directives pour la sélection d’un modèle linguistique étendu (LLM)
  • Les principales différences entre la détection de spam et le triage IA
  • Comment gérer les publications signalées et manquées

Comment fonctionne la détection de spam par IA

Quel contenu est analysé ?

La détection de spam par IA évalue les publications selon les critères suivants :

  1. Niveau de confiance de l’utilisateur :

    • Analyse les publications des utilisateurs ayant un niveau de confiance de 1 ou inférieur.
    • Exclut les publications des niveaux de confiance supérieurs.
  2. Type de publication :

    • Publications publiques (à l’exclusion des messages privés).
    • Les publications de réponse et les premières publications de sujet sont incluses, en fonction de seuils supplémentaires.
  3. Modifications de publication :

    • Analyse les publications avec des modifications importantes (par exemple, des changements dépassant 10 caractères).
    • Applique un délai de 10 minutes entre les analyses de la même publication.
  4. Fréquence des publications :

    • Priorise les publications des nouveaux utilisateurs ayant moins de 4 publications au total dans des sujets publics.
    • Exclut les publications des utilisateurs dépassant ce seuil.

Le processus de classification

Les publications qui répondent aux critères sont envoyées à un modèle d’IA (LLM) pour analyse. Le modèle évalue si la publication est “SPAM” ou “PAS SPAM” en fonction de :

  • Contexte : Comprend le contenu de la publication, le titre du sujet, les données du compte utilisateur (par exemple, l’âge du compte et le niveau de confiance) et les directives du site.
  • Instructions personnalisées : Règles définies par l’administrateur pour des critères d’analyse renforcés ou adaptés.
  • Détection automatisée :
    • Signale le contenu non pertinent ou promotionnel (par exemple, publicités ou matériel commercial).
    • Identifie les comportements automatisés ou de type bot.
    • Évalue la pertinence du contenu par rapport à la discussion.

Invite système par défaut et contexte

L’IA utilise une invite système par défaut pour guider la détection de spam. Cette invite décrit les règles de classification du spam. Par exemple :

Vous êtes un système de détection de spam. Analysez le contenu et le contexte suivants.
Notes :
- Les réponses doivent rester pertinentes par rapport au fil de discussion.
- Marquez comme SPAM si le contenu est non pertinent, promotionnel ou automatisé.
- Considérez les publications de nouveaux utilisateurs avec des liens comme du SPAM potentiel, sauf si elles sont explicitement pertinentes pour le sujet.
Répondez uniquement avec "SPAM" ou "PAS SPAM".

Le scanner compile également un package de contexte, comprenant :

  • Métadonnées des sujets et des catégories.
  • Pertinence des réponses par rapport au fil de discussion.
  • Données de l’auteur (par exemple, date de création du compte, nombre total de publications, niveau de confiance).
  • Texte de la publication tronqué à 5000 caractères pour le traitement.

Configurer la détection de spam par IA

Guide de configuration

  1. Accéder aux paramètres :
    Naviguez vers /admin/plugins/discourse-ai/ai-spam.

  2. Sélectionner un LLM :

:information_source: Si votre site est hébergé par Discourse

Vous pouvez sélectionner notre LLM Small hébergé par CDCK dans la liste des LLM.

  1. Activer la détection de spam :
    Activez la détection de spam en activant la fonctionnalité.

:information_source: Remarque : Un LLM connecté est obligatoire.

  1. Ajouter des instructions personnalisées :
    • Définissez des règles spécifiques à votre forum (par exemple, une surveillance plus stricte des liens externes).
    • Enregistrez toutes les modifications pour les appliquer.

Différences avec le triage IA

Alors que la détection de spam est spécifiquement conçue pour identifier le spam, le triage IA prend en charge des tâches de gestion de publication plus larges.

Fonctionnalité Détection de spam par IA Triage IA
Complexité Configuration simplifiée et opinionnée Hautement personnalisable et flexible
Cas d’utilisation principal Détection de spam avec une surcharge minimale Flux de travail avancés pour la catégorisation, le marquage, les réponses, la détection de spam, la détection NSFW
Actions Signale le spam, réduit au silence les utilisateurs Marque, catégorise, masque les publications, ajoute des réponses, signale les publications, réduit au silence les utilisateurs
Recommandation Configuration facile et efficace pour la plupart des situations À utiliser pour des flux de travail riches et hautement personnalisables

Pour plus de détails, voir Discourse AI - Triage IA.


Recommandations de sélection de LLM

Les performances de la détection de spam dépendent du LLM choisi.

La plupart des LLM à faible coût fonctionnent efficacement, tels que :

  • GPT-4o-mini
  • Claude 3.5 Haiku
  • Gemini 2.0 Flash

Expérimentez avec différents modèles pour trouver le meilleur ajustement. Configurez vos modèles via /admin/plugins/discourse-ai/ai-llms.


Tester le comportement du scanner de spam

Vous pouvez tester les règles de détection de spam directement depuis la page de configuration.

  • Collez une URL ou un ID de publication dans le champ de test.
  • Examinez le résultat de la classification (par exemple, “SPAM” ou “PAS SPAM”) et analysez les journaux pour comprendre le raisonnement.
  • Les modifications non enregistrées sont appliquées pendant les tests, permettant l’expérimentation sans risque.

Gestion des publications signalées et manquées

Gestion des publications signalées

Les publications signalées apparaissent dans la file d’attente de modération. Les administrateurs peuvent :

  • Approuver les publications légitimes incorrectement classées comme spam.
  • Rejeter les sujets de spam pour maintenir la précision du système.

:warning: Important : Rejetez les signalements de spam pour les publications incorrectement classées. Les utilisateurs restent réduits au silence jusqu’à ce que le signalement soit résolu.

Gestion du spam manqué

Le spam manqué fait référence aux publications qui contournent la détection mais sont signalées par la communauté. Les modérateurs peuvent les gérer selon les besoins.


Bonnes pratiques

  • Surveillez régulièrement le spam signalé et manqué pour affiner la précision du système. Les métriques cliquables simplifient ce processus.
  • Utilisez des cas de test pour évaluer les instructions personnalisées par rapport aux cas limites.
  • Examinez et ajustez les paramètres du LLM si nécessaire.

Ressources supplémentaires


:mega: La configuration efficace de la détection de spam par IA réduit les efforts de modération manuelle, garantissant une communauté propre et sans spam.

16 « J'aime »

Nous avons effectué de nombreux tests à ce sujet, et nous n’obtenons pas du tout de résultats fiables. Pour information, nous utilisons le modèle gpt-4o.

Pour tester sa précision, j’ai donné les instructions simples suivantes :

Vous êtes un système de détection de spam. Analysez le contenu et le contexte suivants.
Notes ci-dessous. Si *UN* des éléments ci-dessous est vrai, alors marquez-le comme spam :
- Le nom d'utilisateur est très spécifiquement « testjon », alors c'est *TOUJOURS* du spam.
- Répondez uniquement avec « SPAM - C'est Jon ! » ou « PAS DE SPAM ».

Tester sur un message, par le nom d’utilisateur testjon, donne PAS DE SPAM. Il semble qu’il ne suive pas du tout bien les instructions. Des suggestions ?

D’autres ont-ils eu de bonnes ou de mauvaises expériences avec la détection de spam par IA ?

Je ne sais pas comment les choses se passent dans cette situation, mais en général, une déclaration comme celle citée est très susceptible de tomber en panne. Elle ne comprend pas ce que signifie ANY et continue joyeusement tant qu’elle obtient. Et à partir de là, elle a finalement trouvé NOT SPAM.

1 « J'aime »

Donc, vous dites de supprimer la mise en gras pour ANY ? Ou vous parlez de l’énoncé dans son ensemble « si l’un des éléments ci-dessous » ?

Je dis que vous devez l’écrire de manière plus logique et exacte. Vous ne pouvez laisser aucune IA choisir de quelque manière que ce soit. Rappelez-vous qu’elle ne peut pas compter et qu’elle ne lit certainement pas tout d’abord, puis revient en arrière pour essayer de travailler logiquement. Essayez d’expliquer aussi simplement que vous donneriez des instructions à un enfant paresseux de 3 ans atteint de TDAH. Les exemples ne sont pas faux mais augmenteront l’utilisation des jetons.

1 « J'aime »

C’est une information géniale. Par exemple, comment pourriez-vous écrire ce scénario exact différemment ?

1 « J'aime »

Quelque chose comme…

Vous êtes un système de détection de spam. Votre travail consiste à analyser silencieusement le contenu pour maintenir une haute qualité sur ce forum. Vous devez suivre des règles pour définir quand un message est du spam. Lorsque vous trouvez un spam, votre réponse est indiquée dans les règles. Vous utilisez uniquement les réponses indiquées.

## Règles pour le spam

Je ne fais pas ça pour vous 😏 Mais vous avez besoin d'explications et d'exemples. Comme exemple rapide et grossier :
* si un message contient des liens externes liés aux jeux d'argent, au sexe, aux cryptomonnaies, etc. (le terme « similaire » est risqué dans ce contexte, d'ailleurs), alors un message est classé comme spam. Exemple : www.buy-crypto.deal

Vous devez ajuster cela au cas par cas, car vous obtiendrez de faux positifs et de faux négatifs.

Ensuite, vous devez également fournir des directives pour le contenu. Mais lors des tests :

* si le nom d'utilisateur est « testjon », ignorez l'analyse du contenu et classez-le directement comme spam. Votre réponse est « SPAM - c'est Jon »

Au fait, peut-il voir l'utilisateur ?

## Règles pour le contenu autre

Lorsqu'un message a passé l'analyse de spam et que vous êtes sûr qu'il s'agit d'un contenu légitime, votre seule réponse est « PAS DE SPAM ».

Quelque chose comme ça. Vous devez tester, bien sûr. Et chaque fois que vous obtenez une mauvaise réponse, essayez de trouver le point confus. Mais ne donnez pas à l’IA l’opportunité de choisir ce qu’elle peut faire, car elle prendra alors la direction la plus récente, la plus facile ou la plus agréable. Elle a besoin de répondre et d’être satisfaite.

Je viens de l’activer et j’ai hâte de voir comment ça se passe !

Y a-t-il un réglage ou une considération pour le niveau de confiance des utilisateurs ?

Par exemple : Je n’ai pas besoin que l’IA intervienne pour les TL2 et au-dessus, ils ont gagné leur place et ne devraient pas être considérés pour le scan. S’ils deviennent incontrôlables, nous devrons avoir une discussion avec eux :sweat_smile:

2 messages ont été séparés dans un nouveau sujet : Plugin Discourse AI manquant

Puisque cela remplace Akismet, je me demande quelle est la meilleure alternative pour la détection/prévention du spam si vous ne voulez pas des coûts LLM associés à l’IA ?

2 « J'aime »

En fait, Gemini 2.0 Flash est disponible gratuitement, tant que vous n’y envoyez pas un million de requêtes par jour, bien sûr. Il fonctionne très bien pour mon forum en ce moment sans aucun coût, et il est vraiment plus précis et « intelligent » qu’Akismet.

Cependant, si la détection de spam par IA échoue, j’ai toujours le plugin Akismet installé sur mon site et prêt à l’emploi si j’en ai à nouveau besoin, et je pense que vous pouvez toujours l’installer. (Comme il est déprécié, je ne m’attends pas à ce qu’il reste éternellement). N’oubliez pas non plus que les niveaux de confiance sont un élément fondamental de Discourse qui vous aide à gérer le spam sur votre site. :+1:

5 « J'aime »

C’est super, est-il possible de fixer une limite de jetons pour s’assurer que la limite (zéro coût) est là dès le LLM ?

2 « J'aime »

Pour autant que je sache, je pense que si vous dépassez la limite, l’API du LLM cessera simplement de répondre. Mon compte Google Cloud Console n’a pas de compte de facturation associé, et je peux toujours utiliser l’API gratuitement dans le cadre du niveau gratuit, donc vous devriez être tranquille. :+1:

5 « J'aime »

Un message a été divisé en un nouveau sujet : Amélioration de la détection de spam par l’IA pour les modifications et les fusions

Où puis-je obtenir la « clé API du service hébergeant le modèle » ?

Si vous êtes sur notre hébergement, vous pouvez utiliser LLM Small.

Sinon, vous devez configurer un LLM et obtenir une clé auprès d’OpenAI/Google/Anthropic/X/etc.

2 « J'aime »

Ah, une clé d’API de leur part, pas de Discourse.

2 « J'aime »

L’activation de la détection de spam par IA avec Gemini 2.0 Flash ne semble pas avoir aidé à bloquer ces éléments. Je n’ai jamais eu de spam aussi évident passer le filtre auparavant. Peut-être est-il spécifiquement conçu pour les sites Discourse ?

| Erreur QuickBooks Payroll après une mise à jour +1-800-223-1608 Résolution étape par étape nouveau | Amériques - Canada | | 1 | 2 | 1h |
|----|----|----|----|----|----|
| Comprendre l’erreur de mise à jour de la table fiscale QuickBooks Payroll +1-800-223-1608 nouveau | Amériques - Canada | | 1 | 2 | 1h |
| Comprendre l’erreur QuickBooks Payroll PS107 +1-800-223-1608 nouveau | Amériques - Canada | | 1 | 2 | 2h |
| Liste complète des numéros de contact du support client QuickBooks® USA : Votre guide expert nouveau | Amériques - Canada | | 1 | 2 | 5h |
| Guide de référence 2025 des numéros de support d’erreurs et de paie QuickBooks® complets nouveau | Asie | | 1 | 2 | 5h |
| {Guide expert} Coordonnées du support de paie QuickBooks® – Guide USA 2025 nouveau | Amériques - Canada | | 1 | 4 | 5h |
| {Appel au +1-855-510-6777} Comment puis-je parler au support de réservation de forfaits vacances Expedia ? nouveau | Louisiane | | 1 | 6 | 5h |
| Liste complète des supports™️ des Caraïbes – Le guide officiel détaillé nouveau | Asie | | 1 | 2 | 6h |
| [Appel^Agent^Direct] Quel numéro m’indique le support des forfaits vacances Expedia ? {Composez le +1-855-510-6777} nouveau | Amériques - Canada |

Votre clé API est invalide, c’est pourquoi aucun test n’est effectué.

Si vous effectuez un test sur https://www.foodtalkcentral.com/admin/plugins/discourse-ai/ai-spam et collez cette URL, vous obtiendrez une erreur 500. Si vous examinez les journaux dans
/var/discourse/shared/web-only/log/rails/production.log et recherchez " 500 ", vous verrez

Completed 200 OK in 399ms (Views: 123.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 22.9ms)
DiscourseAi::Completions::Endpoints::Gemini: status: 400 - body: {
  "error": {
    "code": 400,
    "message": "API key not valid. Please pass a valid API key.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "API_KEY_INVALID",
        "domain": "googleapis.com",
        "metadata": {
          "service": "generativelanguage.googleapis.com"
        }
      },
      {
        "@type": "type.googleapis.com/google.rpc.LocalizedMessage",
        "locale": "en-US",
        "message": "API key not valid. Please pass a valid API key."
      }
    ]
  }
}
1 « J'aime »

Oh, merci. J’ai accidentellement sélectionné Gemini 2.0 Flash au lieu de Gemini 2.0 Flash Lite. Maintenant, cela fonctionne correctement.

1 « J'aime »