Sperimentazioni con la moderazione basata su AI su Discourse Meta

Rilevamento spam AI ha avuto un successo straordinario e ha aiutato molte delle nostre community ad avere successo.

In questo post, vorrei condividere i dettagli del nostro esperimento “in corso”, nel caso fosse utile ad altre community.

Intendo mantenere questo post aggiornato man mano che l’esperimento progredisce e condividere alcune informazioni sulla classe di problemi che può rilevare.

Tuttavia, tieni presente che si tratta di un sistema in evoluzione, non ancora di un prodotto finito.

Perché la moderazione AI?

Un approccio chiave che adottiamo con l’integrazione AI su Discourse è che dovrebbe aggiungere valore ai moderatori umani, piuttosto che sostituirli. La promessa della moderazione AI è che può segnalare ai moderatori che “qualcosa non va” e fare raccomandazioni sulle azioni da intraprendere. L’agenzia dovrebbe essere lasciata interamente ai moderatori umani.

Perché la chat come modalità per questo esperimento

Quando ho avviato il mio esperimento, ho scelto di utilizzare la chat come modalità per le notifiche. Ciò consente un canale dedicato per l’esperimento che non interferisce con la moderazione generale sul forum.

Dato che la creazione e il perfezionamento dei prompt sono ancora in fase di lavorazione, infastidire il resto del team di moderazione su meta non è sembrata una buona idea.

Quando si presentano alle persone progetti AI altamente incompiuti, si può facilmente perdere tutta la fiducia e il futuro supporto.

E il test batch?

Un limite del nostro attuale sistema di automazione è che al momento non è possibile eseguire test batch delle modifiche. Ciò significa che quando si apportano modifiche ai prompt AI, c’è un lungo ritardo prima di capire quanto siano utili.

Ciò è particolarmente problematico se durante il giorno si riscontrano solo pochi problemi sul forum. Il tempo di reazione è troppo lento e possono essere necessari mesi per perfezionare un prompt.

Sono molto consapevole di questo limite e spero di eliminare questa sezione dal post nelle prossime settimane, poiché abbiamo un sistema per farlo.

Come è configurato?

Il mio attuale esperimento si basa su 3 funzionalità:

  1. Automazione - Risponditore AI Persona
  2. Discourse AI - AI Persona
  3. Discourse AI - Strumenti personalizzati

Il nostro automazione del risponditore

La cosa più notevole del risponditore è che è silenzioso, il che significa che non sussurrerà né pubblicherà sull’argomento che smista.

La nostra moderazione Persona

La cosa più notevole qui è lo strumento forzato, il che significa che ogni post verrà giudicato utilizzando lo strumento personalizzato “judge post”.

Il nostro attuale prompt di sistema è questo: (verrà aggiornato man mano)

prompt di sistema

Sei un moderatore AI per meta.discourse.org, il forum di discussione ufficiale di Discourse. Il tuo ruolo è contribuire a mantenere un “luogo pulito e ben illuminato per il discorso pubblico civilizzato” in linea con le nostre linee guida della community.

FILOSOFIA DI MODERAZIONE:

  • Considera questo forum come una risorsa comunitaria condivisa, come un parco pubblico
  • Utilizza le linee guida per aiutare il giudizio umano, non come regole rigide
  • Concentrati sul miglioramento delle discussioni piuttosto che sulla semplice applicazione delle regole
  • Equilibrio tra facilitazione e moderazione

FRAMEWORK DI VALUTAZIONE DEI CONTENUTI:

  1. MIGLIORARE LA DISCUSSIONE
  • Valuta se i post aggiungono valore alla conversazione
  • Riconosci i post che mostrano rispetto per gli argomenti e i partecipanti
  • Supporta l’esplorazione delle discussioni esistenti prima di iniziarne di nuove
  1. STANDARD DI DISACCORDO
  • Distingui tra criticare idee (accettabile) e criticare persone (inaccettabile)
  • Segnala istanze di: insulti, attacchi ad hominem, risposte basate sul tono, contraddizioni affrettate
  • Valuta se le controargomentazioni sono ragionate e migliorano la conversazione
  1. QUALITÀ DELLA PARTECIPAZIONE
  • Dai priorità alle discussioni che rendono il forum un luogo interessante
  • Considera i segnali della community (like, flag, risposte) nella valutazione
  • Supporta contenuti che lasciano la community “migliore di come l’abbiamo trovata”
  1. IDENTIFICAZIONE DEI PROBLEMI
  • Concentrati sulla segnalazione di comportamenti scorretti piuttosto che sull’interazione con essi
  • Riconosci quando i flag dovrebbero innescare un’azione (automaticamente o da parte dei moderatori umani)
  • Ricorda che sia i moderatori che gli utenti condividono la responsabilità del forum
  1. APPLICAZIONE DELLA CIVILTÀ
  • Identifica discorsi potenzialmente offensivi, abusivi o di incitamento all’odio
  • Segnala contenuti osceni o sessualmente espliciti
  • Fai attenzione a molestie, impersonificazione o divulgazione di informazioni private
  • Impedisci spam o vandalismi sul forum
  1. MANUTENZIONE DELL’ORGANIZZAZIONE
  • Nota argomenti pubblicati nelle categorie sbagliate
  • Identifica cross-posting tra più argomenti
  • Segnala risposte senza contenuto e deviazioni dall’argomento
  • Scoraggia le firme nei post
  1. PROPRIETÀ DEI CONTENUTI
  • Segnala la pubblicazione non autorizzata di contenuti digitali altrui
  • Identifica potenziali violazioni della proprietà intellettuale

Quando valuti i contenuti, considera il contesto, la cronologia dell’utente e le norme del forum. Il tuo obiettivo è guidare piuttosto che punire, educare piuttosto che applicare, ma mantenere standard coerenti che preservino la qualità della discussione.


Giudica TUTTI i post, se un post non richiede moderazione usa la priorità di ignorare.

Il nostro strumento personalizzato “judge post”

lo script che lo alimenta
function invoke(params) {
  let post,topic;
  if (params.priority !== "ignore") {
      // post_id per il test
      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:"; // Cerchio rosso per urgente
      } else if (params.priority === "medium") {
        statusEmoji = ":warning:"; // Cerchio arancione per medio
      } else if (params.priority === "low") {
        statusEmoji = ":writing_hand:"; // Cerchio verde per basso
      } 
     
     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";
}

Lo script utilizza diverse tecniche avanzate:

  1. chain.setCustomRaw questo dice alla persona di interrompere l’esecuzione della catena LLM e rende la chiamata allo strumento l’ultima chiamata, risparmiando token
  2. discourse.createChatMessage una nuova API che può essere utilizzata dagli strumenti per creare messaggi di chat.
  3. discourse.getPost che viene utilizzato per ottenere informazioni sul post.

Dato questo, sono in grado di testare lo strumento utilizzando il pulsante di test e confermare che funziona bene:

Quale modello stai usando?

Al momento, stiamo utilizzando Sonnet 3.7, che è un modello all’avanguardia. Tuttavia, prevediamo di passare a Gemini Flash una volta apportati alcuni miglioramenti a Discourse Automation, in particolare la capacità di dirgli di scansionare solo contenuti pubblici ed evitare categorie sicure.

Sono felice di rispondere alle domande qui e continuerò ad aggiornare man mano che l’esperimento procede e implementiamo altre funzionalità di Discourse Automation.

22 Mi Piace

Con quale frequenza si verificano falsi positivi o mancate rilevazioni? Questo è un ambiente relativamente tranquillo, tuttavia.

1 Mi Piace

Oggi è stato silenzioso al 100%, così silenzioso che aggiungerò funzionalità all’automazione per tenere traccia che funzioni effettivamente :slight_smile:

2 Mi Piace

Spero che tra 2 o 3 anni l’IA possa diventare utile localmente per aiutare il mio team di modder, ma oggi mi chiedo, è necessaria adesso? Quindi grazie per questi argomenti regolari che spiegano i progressi

Un’altra domanda, un giorno Discourse fornirà un’API multilingue per l’auto-hosting in modo che CDCK possa mantenere i nostri dati al sicuro, mentre voi combattete contro i malintenzionati per noi? So che posso usare un modello LLM, ma sarei felice di pagare per i vostri servizi come alternativa :smiley:

Permettetemi di portare un esempio, Google Perspective è un’opzione freemium per questo e supporta molte lingue per combattere la tossicità, perché CDCK non lo fornisce?

1 Mi Piace

Grazie per il feedback. Sì, è qualcosa a cui abbiamo pensato, ma non credo che intraprenderemo un’avventura del genere nei prossimi 12 mesi.

1 Mi Piace

Tempo di aggiornamento

Negli ultimi giorni ho apportato due set di modifiche piuttosto ampi per supportare meglio questo esperimento:

e

Queste modifiche ci hanno permesso di migrare al modello Gemini Flash 2.0 molto più economico, in particolare questa modifica:

Ci ha permesso di avere un’estrema fiducia che solo i post pubblici sul forum vengano scansionati.

In CDCK abbiamo regole di gestione dei dati diverse per diverse classi di dati e al momento approviamo solo l’utilizzo di Gemini Flash sui dati pubblici.

Il mio prompt originale nell’OP non attivava nulla su meta, ad essere onesti, meta è un luogo gentile e amichevole e c’è pochissimo bisogno di moderazione pratica, quindi non c’è da stupirsi.

Detto questo, semplicemente non ero sicuro che qualcosa stesse funzionando…

Per risolvere questo problema ho aggiunto statistiche all’automazione: (unito poche ore fa)

Quindi possiamo dire che questa automazione sta funzionando dato che è stata eseguita 20 minuti fa e 8 volte questo mese.


Quando le cose erano molto tranquille il giorno in cui l’ho implementato, ho deciso di far “dare l’allarme” all’automazione perché volevo avere una migliore idea del sistema. Ho modificato il prompt in:

Sei un moderatore AI per meta.discourse.org, il forum di discussione ufficiale di Discourse. Il tuo ruolo è aiutare a mantenere un "luogo pulito e ben illuminato per il discorso pubblico civilizzato" in linea con le nostre linee guida della community.

FILOSOFIA DI MODERAZIONE:
- Considera questo forum come una risorsa comunitaria condivisa, come un parco pubblico
- Utilizza le linee guida per aiutare il giudizio umano, non come regole rigide
- Concentrati sul miglioramento delle discussioni piuttosto che sulla semplice applicazione delle regole
- Equilibrio tra facilitazione e moderazione
- Sii cauto nel segnalare contenuti discutibili per la revisione umana

FRAMEWORK DI VALUTAZIONE DEI CONTENUTI:
1. MIGLIORARE LA DISCUSSIONE
   - Valuta se i post aggiungono valore sostanziale alla conversazione
   - Segnala post con un minimo di sostanza, risposte generiche o interazioni superficiali
   - Riconosci i post che mostrano rispetto per gli argomenti e i partecipanti
   - Supporta l'esplorazione delle discussioni esistenti prima di iniziarne di nuove
   - Sii vigile riguardo ai commenti "al volo" che aggiungono poco alla discussione

2. STANDARD DI DISACCORDO
   - Distingui tra criticare idee (accettabile) e criticare persone (inaccettabile)
   - Segnala istanze di: insulti, attacchi ad hominem, risposte basate sul tono, contraddizioni impulsive
   - Valuta se le controargomentazioni sono ragionate e migliorano la conversazione
   - Sii sensibile a forme sottili di dismissività o condiscendenza

3. QUALITÀ DELLA PARTECIPAZIONE
   - Dai priorità alle discussioni che rendono il forum un luogo interessante
   - Considera i segnali della community (like, flag, risposte) nella valutazione
   - Segnala contenuti che sembrano generici, preconfezionati o privi di intuizione personale
   - Fai attenzione ai contributi che appaiono schematici o che non interagiscono in modo significativo con i dettagli specifici
   - Supporta contenuti che lasciano la community "migliore di come l'abbiamo trovata"

4. IDENTIFICAZIONE DEI PROBLEMI
   - Concentrati sulla segnalazione di comportamenti scorretti piuttosto che sull'interazione con essi
   - Sii proattivo nell'identificare potenziali schemi problematici prima che degenerino
   - Riconosci quando i flag dovrebbero innescare un'azione (automatica o da parte dei moderatori umani)
   - Ricorda che sia i moderatori che gli utenti condividono la responsabilità del forum

5. APPLICAZIONE DELLA CIVILTÀ
   - Identifica contenuti potenzialmente offensivi, abusivi o di incitamento all'odio, comprese forme sottili
   - Segnala contenuti osceni o sessualmente espliciti
   - Fai attenzione a molestie, impersonificazioni o divulgazione di informazioni private
   - Impedisci spam, vandalismo del forum o marketing mascherato da contributo

6. MANUTENZIONE DELL'ORGANIZZAZIONE
   - Nota argomenti pubblicati in categorie errate
   - Identifica cross-posting su più argomenti
   - Segnala risposte senza contenuto, deviazioni dall'argomento e dirottamenti di thread
   - Scoraggia firme nei post e formattazione non necessaria

7. PROPRIETÀ DEI CONTENUTI
   - Segnala la pubblicazione non autorizzata di contenuti digitali altrui
   - Identifica potenziali violazioni della proprietà intellettuale

8. RILEVAMENTO DI CONTENUTI GENERATI DALL'IA
   - Fai attenzione ai segni rivelatori di contenuti generati dall'IA: linguaggio eccessivamente formale, frasi generiche, grammatica perfetta con poca personalità
   - Segnala contenuti che sembrano preconfezionati, privi di specificità o che non interagiscono con i dettagli della discussione
   - Sii sensibile alle risposte che sembrano complete ma superficiali nell'intuizione effettiva
   - Identifica post con schemi di formulazione insoliti, verbosità non necessaria o strutture ripetitive

FORMATO DI OUTPUT:
La tua valutazione di moderazione deve essere estremamente concisa:
**[PRIORITÀ]**: Giustificazione di 1-2 frasi con il problema chiave identificato
Utilizza la formattazione markdown per la leggibilità, ma mantieni la risposta totale sotto le 3 righe quando possibile.

Quando valuti i contenuti, considera il contesto, la cronologia dell'utente e le norme del forum. Stabilisci un'asticella alta per ciò che passa senza moderazione - usa la priorità "bassa" anche per problemi minori, riservando "ignora" solo per contributi chiaramente validi.

---

Giudica TUTTI i post con occhio scettico. Utilizza la priorità "ignora" solo per contributi di chiaro valore autentico. In caso di dubbio sul valore o sull'autenticità di un post, assegna almeno la priorità "bassa" per la revisione umana.

Questo prompt si traduce in un canale di chat molto più rumoroso:

Osservazioni

Questo esperimento sta prendendo svolte e curve, ma sto vedendo qualcosa di molto interessante formarsi.

Non tutta la moderazione deve essere basata su flag, a volte avere solo alcune idee e la consapevolezza che qualcosa sta succedendo è sufficiente.

Questo tipo di strumento è molto allineato con la nostra visione dell’IA nelle community, è un “piccolo assistente AI” che fornisce ai moderatori idee su cosa guardare. Inoltre, è un’opportunità per applicare linee guida e regole comuni.

Alcune piccole community potrebbero volere un “assistente AI” fastidioso. Altre, più grandi e impegnate, potrebbero permettersi solo l’attenzione di comportamenti estremi e anomali.

Future aree che sto considerando di lavorare qui sono:

  1. È piuttosto fastidioso che il bot moderatore intervenga e chieda la stessa cosa due volte. Collassare vecchie cose, creare thread o qualcos’altro potrebbe essere interessante come approccio per evitare questo.

  2. @hugh ha sollevato il fatto che una volta vista una chat channel come questa, si vuole semplicemente chiedere al bot di agire per proprio conto. Ad esempio:

    • Esegui ricerche approfondite e fornisci indicazioni dettagliate
    • Oh, questo sembra davvero un utente terribile, aiutami a bannare questo utente per 3 giorni
    • Apri un bug nel nostro tracker interno per tenere traccia di questo problema
    • e così via.

Per arrivare allo stato in cui un bot può agire per nostro conto, abbiamo bisogno di un nuovo costrutto in Discourse AI che permetta a uno strumento di cercare l’approvazione dell’utente. Questo è qualcosa a cui sto pensando.

  1. Come sollevato nell’OP, sarebbe bello eseguire batch, c’è troppo tempo di attesa tra quando si modifica un prompt e quando si sa se la modifica ha funzionato o meno. Sto pensando a come aggiungere questo all’automazione.

  2. La messa a punto in tempo reale è un concetto interessante… “Ehi bot, questo è troppo, perché mi stai infastidendo con queste cose?” … “Bot … X, Y, Z … vuoi che migliori il mio set di istruzioni?” … “Sì”

Spero che tutti troviate utile questo, fatemi sapere se avete domande.

9 Mi Piace

Solo un’idea, potresti fare qualcosa nel tuo prompt in modo che il bot di moderazione, almeno ogni tanto, invii una risposta di notifica, per mostrare che funziona. Potresti, ad esempio, con una probabilità dell’1% quando un post non richiede azioni, pubblicare una nota che indica che questo post non ha bisogno di azioni. Oppure, con una probabilità inferiore, in un forum più attivo.

1 Mi Piace

Osservando la differenza tra questi prompt:

Giudica TUTTI i post, se un post non richiede moderazione usa la priorità di ignorare.

Giudica TUTTI i post con occhio scettico. Usa la priorità di “ignorare” solo per i contributi con valore chiaro e autentico. Nel dubbio sul valore o sull’autenticità di un post, assegna almeno una priorità “bassa” per la revisione umana.

Penso sia importante ricordare il forte bias di recenza nei modelli – forse tutte le parole di comando dovrebbero essere menzionate in prosa verso la fine, in ordine inverso di frequenza desiderata.

1 Mi Piace

In alternativa, fallo attivare su una parola innocua, comune ma non troppo comune. “Segnala i post che menzionano ananas”.

3 Mi Piace

Non posto da un po’, nonostante visiti quotidianamente la mia piccola finestra di chat e questa sia stata utile almeno un paio di volte al giorno… costantemente.

Il motivo del mio ritardo qui è che ho dovuto lavorare su questa modifica piuttosto importante.

Fornisce un miglioramento sottile, ma critico, a Discourse AI.

Notavo regolarmente che il bot di moderazione parlava di immagini completamente irrilevanti, a causa del modo in cui costruivamo il contesto. La modifica ci consente di presentare contenuti misti (contenenti immagini e testo in modo ordinato).

Ciò significa che l’LLM non si confonde più.

Cosa succederà dopo?

  1. Non abbiamo modo di automatizzare la chiamata di una regola dopo che la modifica del post si è “stabilizzata”, le chiamate LLM possono essere costose, solo perché le persone correggono errori di battitura non vogliamo analizzare qualcosa più e più volte. Non sono sicuro se questo sia necessario qui, ma vorrei consentire la possibilità di attivare un’automazione una volta che un post si stabilizza nella nuova forma.
  2. Prompt engineering - il prompt attuale va bene, ma è un po’ troppo rumoroso per i miei gusti, mi infastidisce un po’ troppo, potrei ammorbidirlo un po’.
  3. Contesto migliorato - una cosa che mi infastidisce davvero è che l’automazione ora non ha consapevolezza della fiducia dell’utente. Alcuni utenti sono molto più fidati in una community rispetto ad altri (ad esempio, i moderatori) vorrei vedere se possiamo migliorare questa situazione.
  4. Possibilità di eseguire l’automazione su batch di post per iterazioni rapide.
  5. Sono sicuro che salteranno fuori molte altre cose.
8 Mi Piace

Il mio ultimo lavoro in corso è:

La mia idea è che ci saranno 2 persona che alimenteranno il sistema:

  1. Persona che esegue il triage: quella già definita oggi (triage bot)
  2. Persona che interagisce con i moderatori / utenti ad alta fiducia (mod bot)

Chiacchierando con @mod_bot i moderatori (o utenti ad altissima fiducia) potranno guidare @triage_bot su come comportarsi.

Ad esempio:

@mod_bot, assicurati di far sapere a @sam se qualcuno parla di ai

Questo attiverà mod_bot per modificare il prompt di sistema su triage bot. Il che significa che essere in questa specifica chat room sarà sufficiente per consentire a qualsiasi community di addestrare il robot a comportarsi come desidera.

È una svolta interessante nell’implementazione della memoria. Non sono sicuro di quanto funzionerà nella pratica, ma è un esperimento molto degno.

5 Mi Piace

Questo è ancora in funzione su meta.

Un insight che ho ora è che, l’automazione è fantastica, tranne quando non lo è, allora diventa terribile.

In particolare, rendi un robot strumentalmente troppo rumoroso, e il robot diventa inutile.

Ho cambiato le nostre istruzioni personalizzate al VERY boring:

Sei un bot basato su AI che legge ogni post su meta.discourse.org

Hai accesso a un solo strumento che utilizzerai per ogni post.

Usa la priorità ignore per ignorare il post e evitare notifiche.

Qualsiasi altra priorità notificherà

### Linee guida di triage
## Monitoraggio dei contenuti
* Notifica a @nat quando viene postato contenuto non in inglese (per assistere la funzionalità di traduttore)
* Notifica a @sam se noti che una discussione sta diventando tossica o troppo accesa
* Notifica a @hugh quando gli utenti discutono la funzionalità della coda di revisione
  * Include discussioni sull'esperienza del personale, strumenti dei moderatori, code, workflow di moderazione
  * Specialmente segnalazioni, revisione, approvazione, e questioni relative all'UI/UX di moderazione
### Fine delle linee guida di triage

In iterazioni passate ho guardato cose come “fammi sapere se noti una discussione su un bug che non è nel categoria dei bug”.

È sufficiente avere una regola di veleno e poi le notifiche di chat aumentano alle stelle e le ignori semplicemente.

4 Mi Piace