Disturbo del Discorso

Ho anche modificato la tua query per visualizzare il punteggio in un modo più conveniente utilizzando Data Explorer.
I crediti vanno a ChatGPT e 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
E questa modifica restituirà quelle righe in cui uno qualsiasi dei valori di classificazione è maggiore di 50 (o qualunque cosa tu imposti)
-- [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

Puoi anche modificarla introducendo diversi parametri per poter impostare diverse soglie da segnalare utilizzando Data explorer.

Si noti che questo restituirà solo post pubblici, senza accedere ai messaggi privati.

3 Mi Piace

Stiamo lavorando proprio su questa funzionalità!

Stiamo anche pianificando di utilizzare i tassi di falsi positivi/negativi per eseguire un ottimizzatore che possa suggerirvi le migliori soglie per ogni opzione, quindi conservate queste informazioni poiché saranno utili nel prossimo futuro.

5 Mi Piace

Ottimo. Lieto di sentirlo.
Finora, tendo a rifiutare/ignorare tutti gli avvisi che Disorderbot genera, anche avendo aumentato le soglie al massimo del 90-100. Ma, a causa della natura del forum su cui lo stiamo testando (NSFW), l’IA si confonde facilmente se la comunicazione è davvero tossica o meno. Finché non sarà così affidabile per il nostro caso d’uso, continueremo a utilizzarlo, ma useremo i suoi report solo per “rafforzare” altri report su post veramente tossici.
Non appena troveremo soglie migliori da usare a lungo termine, saremo in grado di abilitare avvisi precauzionali quando un utente tenterà di pubblicare qualcosa di veramente tossico.

È quello che sospetto quando l’IA diventerà mainstream. Permetterà la censura e limiterà le genuine domande allo status quo che sono necessarie per la salute di ogni comunità nel mondo.

Non limitare o vietare, educare e discutere. Forse c’è un modo per usare gli strumenti senza l’effetto collaterale (poiché le mie preoccupazioni sono l’effetto desiderato), ma vedo che al momento non è possibile.

Grazie per il tuo feedback, ha valore per me. E ovviamente, grazie al team per aver mantenuto Discourse aggiornato e in miglioramento come sempre :slight_smile:

Impostare tutte le soglie al 100 e fare affidamento solo su quelle più estreme, come “tossicità grave” e “minaccia”, è qualcosa che posso vedere adottato in community come quella.

3 Mi Piace

Grazie. Attualmente è impostato così ed è ancora troppo sensibile. Ne aumenterò alcuni ulteriormente e vedrò come va

1 Mi Piace

Dovrei vedere le classificazioni grezze, ma aumenterei prima anche quella di insulto.

Meglio tenerti lontano dal leggerli :smiley: Potrebbero essere davvero NSFW, anche in forma testuale
Ho anche alzato la prima soglia a 100, vedremo come va ora :smiley:

1 Mi Piace

Spero davvero che in futuro sia possibile impedire a Disorder di controllare (o di segnalare) i messaggi privati. Non vi accediamo e riteniamo che l’IA che controlla le conversazioni private sia altamente non etica.

4 Mi Piace

Sì, è la stessa cosa che ha chiesto @davidkingham, la inseriremo nella nostra roadmap.

3 Mi Piace

…e inglese? :sweat_smile:

Inoltre, mi chiedo in quale misura questo possa sostituire Akismet. Al momento abbiamo un tasso di disaccordo del 97% sulle segnalazioni di Akismet. Sembra semplicemente reagire ai post con molti numeri, quindi se stai pubblicando log di lavoro, dove ogni riga inizia con un timestamp…

1 Mi Piace

La guerra tra spam e rilevamento dello spam è appena diventata nucleare con l’avvento di LLM ampiamente disponibili. Stiamo lavorando sodo su funzionalità che utilizzano una vasta gamma di modelli e, sebbene lo spam non sia la nostra priorità al momento, è qualcosa che indagheremo.

4 Mi Piace

Va bene, allora: l’ho acceso. Come faccio a sapere se funziona?

A parte abbassare le soglie al minimo per catturare tutto, intendo.

C’è una modalità diagnostica o un registro in cui posso vedere quale punteggio ha ottenuto un determinato post?

2 Mi Piace

Il modo più semplice è provocarlo pubblicando qualcosa di offensivo. Assicurati che il gruppo dei tuoi utenti non venga ignorato nelle impostazioni del plugin.

Il modo migliore è interrogare Data Explorer. Si prega di fare riferimento a una delle mie query in questo post:

1 Mi Piace

Grazie. Questo sta restituendo 0 per tutti i post finora… è da prevedere?

1 Mi Piace

La maggior parte dei nostri post presenta 0 anche in tutti i criteri. Questo è normale per un forum con una comunicazione sana.

2 Mi Piace

Fantastico — non ero sicuro di quanto fosse “trigger-happy” il modello. :slight_smile:

1 Mi Piace

Ho installato il plugin, ma non funziona, devo fare qualche configurazione aggiuntiva?

Sto riscontrando un numero elevato di errori dal plugin:\nJob exception: uninitialized constant Jobs::ClassifyChatMessage::ChatMessage\n\nIl problema sembra verificarsi quando uno dei miei plugin crea un messaggio di chat utilizzando il seguente comando:\nChat::MessageCreator.create(chat_channel: matching_channel, user: message_user, content: raw).chat_message\n\nGrazie

1 Mi Piace

Ohhh questo avrebbe dovuto interrompersi con la nuova riorganizzazione della chat. Siamo sul punto di lanciare un nuovo plugin che incorporerà la funzionalità di questo nei prossimi giorni, quindi rimanete sintonizzati.

5 Mi Piace