Trouble de la Discours

J’ai également modifié votre requête pour afficher le classement d’une manière plus pratique à l’aide de l’explorateur de données.
Crédits à ChatGPT et PostgreSQL clues by Leonardo :

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
Et cette modification retournera ces lignes, où l'une des valeurs de classification est supérieure à 50 (ou ce que vous définissez)
-- [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

Vous pouvez également le modifier en introduisant plusieurs autres paramètres pour pouvoir définir différents seuils à signaler à l’aide de l’explorateur de données.

Veuillez noter : cela ne retournera que les publications publiques, sans accéder aux messages privés.

3 « J'aime »

Nous travaillons actuellement sur cette fonctionnalité exacte !

Nous prévoyons également d’utiliser les taux de faux positifs / négatifs pour exécuter un optimiseur qui peut vous suggérer les meilleurs seuils pour chaque option, alors conservez ces informations car elles seront utiles dans un avenir proche.

5 « J'aime »

C’est super. Je suis content de l’entendre.
Jusqu’à présent, j’ai tendance à refuser/ignorer tous les drapeaux que Disorderbot émet, même en augmentant les seuils jusqu’à un maximum de 90-100. Mais, en raison de la nature du forum sur lequel nous le testons (NSFW), l’IA est facilement confuse quant à savoir si la communication est vraiment toxique ou non. Tant qu’il ne sera pas fiable pour notre cas d’utilisation, nous continuerons à l’utiliser, mais nous utiliserons ses rapports uniquement pour « renforcer » d’autres rapports sur des publications vraiment toxiques.

Dès que nous trouverons de meilleurs seuils à utiliser à long terme, nous pourrons activer les avertissements de précaution lorsqu’un utilisateur essaiera de publier quelque chose de vraiment toxique.

C’est ce que je suspecte quand l’IA deviendra courante. Elle permettra la censure et limitera les remises en question authentiques du statu quo, nécessaires à la santé de chaque communauté dans le monde.

Ne pas limiter ou interdire, éduquer et discuter. Peut-être existe-t-il un moyen d’utiliser les outils sans l’effet secondaire (car je crains que ce soit l’effet recherché), mais je vois que ce n’est pas possible pour le moment.

Merci pour votre retour, il a de la valeur pour moi. Et bien sûr, merci à l’équipe de maintenir Discourse à jour et de l’améliorer comme toujours :slight_smile:

Définir tous les seuils à 100 et ne s’appuyer que sur les plus extrêmes, comme la « toxicité sévère » et la « menace », est quelque chose que je peux imaginer être adopté dans de telles communautés.

3 « J'aime »

Merci. Il est actuellement configuré comme ceci, et il est toujours trop sensible. Je vais en augmenter certains encore plus et voir comment cela se passe

1 « J'aime »

Il faudrait voir les classifications brutes, mais j’augmenterais d’abord aussi celle de l’insulte.

Je ferais mieux de vous empêcher de lire ça :smiley: Ça pourrait être vraiment NSFW, même sous forme de texte.
J’ai également augmenté le premier seuil à 100, on verra comment ça se passe maintenant :smiley:

1 « J'aime »

J’espère vraiment qu’il sera possible à l’avenir que Disorder ne vérifie pas (ou ne signale pas) les messages privés. Nous n’y accédons pas et avons l’impression que l’IA qui vérifie les conversations privées est très contraire à l’éthique.

4 « J'aime »

Oui, c’est la même chose que @davidkingham a demandé, nous allons l’intégrer à notre feuille de route.

3 « J'aime »

…et l’anglais ? :sweat_smile:

De plus, je me demande dans quelle mesure cela peut remplacer Akismet. Nous avons actuellement un taux de désaccord de 97 % sur les drapeaux d’Akismet. Il semble simplement réagir aux publications contenant beaucoup de chiffres, donc si vous publiez des journaux de travail, où chaque ligne commence par un horodatage…

1 « J'aime »

La guerre des armes entre le spam et la détection de spam vient de devenir nucléaire avec l’avènement des LLM largement disponibles. Nous travaillons d’arrache-pied sur des fonctionnalités utilisant une large gamme de modèles, et bien que le spam ne soit pas notre priorité pour le moment, c’est quelque chose que nous allons étudier.

4 « J'aime »

D’accord, alors : Je l’ai allumé. Comment savoir si ça fonctionne ?

Autre que baisser les seuils vraiment bas pour tout attraper, je veux dire.

Existe-t-il un mode de diagnostic ou un journal où je peux voir quel score a été attribué à un article donné ?

2 « J'aime »

La façon la plus simple est de le provoquer en publiant quelque chose d’insultant. Assurez-vous que votre groupe d’utilisateurs n’est pas contourné dans les paramètres du plugin.

La meilleure façon est d’interroger l’Explorateur de données. Veuillez vous référer à l’une de mes requêtes dans ce post :

1 « J'aime »

Merci. Cela renvoie des 0 sur toute la ligne pour tous les messages jusqu’à présent… faut-il s’y attendre ?

1 « J'aime »

La majorité de nos publications présentent également des 0 pour tous les critères. C’est normal pour un forum où la communication est saine.

2 « J'aime »

Génial — je n’étais pas sûr de la réactivité du modèle. :slight_smile:

1 « J'aime »

J’ai installé le plugin, mais il ne fonctionne pas. Dois-je effectuer une configuration supplémentaire ?

Je constate un grand nombre d’erreurs provenant du plugin :
Job exception: uninitialized constant Jobs::ClassifyChatMessage::ChatMessage

Le problème semble survenir lorsqu’un de mes plugins crée un message de chat à l’aide de la commande suivante :
Chat::MessageCreator.create(chat_channel: matching_channel, user: message_user, content: raw).chat_message

Merci.

1 « J'aime »

Ohhh cela aurait dû casser avec la nouvelle réorganisation du chat. Nous sommes sur le point de lancer un nouveau plugin qui intégrera la fonctionnalité de celui-ci dans les prochains jours, alors restez à l’écoute.

5 « J'aime »