Experimentos com moderação baseada em IA no Discourse Meta

A detecção de spam por IA tem sido tremendamente bem-sucedida e ajudou muitas de nossas comunidades a prosperar.

Nesta postagem, gostaria de compartilhar detalhes sobre nosso experimento “em andamento”, caso seja útil para outras comunidades.

Pretendo manter esta postagem atualizada à medida que o experimento avança e compartilhar algumas informações sobre a classe de problemas que ele pode detectar.

Tenha em mente, no entanto: este é um sistema em evolução, ainda não um produto final.

Por que moderação por IA?

Uma abordagem fundamental que temos com a integração de IA no Discourse é que ela deve agregar valor aos moderadores humanos, em vez de substituí-los. A promessa da moderação por IA é que ela pode sinalizar aos moderadores que “algo está errado” e fazer recomendações sobre as ações que eles devem tomar. A agência deve ser deixada inteiramente aos moderadores humanos.

Por que o chat como modalidade para este experimento

Ao montar meu experimento, optei por usar o chat como modalidade para notificações. Isso permite um canal dedicado para o experimento que não interfere na moderação geral do fórum.

Dado que construir e refinar prompts é um trabalho em andamento, incomodar o restante da equipe de moderação no meta não parecia ser uma boa abordagem.

Quando você entrega às pessoas projetos de IA altamente inacabados, você pode perder toda a confiança e o apoio futuro muito facilmente.

E sobre testes em lote?

Uma limitação de nosso sistema de automação atual é que você não pode testar alterações em lote no momento. Isso significa que, quando você faz alterações nos prompts de IA, há um longo atraso até que você descubra o quão útil isso é.

Isso é particularmente problemático se você vê apenas um punhado de problemas no fórum durante o dia. O tempo de reação é muito lento e pode levar meses para refinar um prompt.

Estou muito ciente dessa limitação e espero excluir esta seção da postagem nas próximas semanas, pois temos um sistema para fazer isso.

Como isso é configurado?

Meu experimento atual se baseia em 3 recursos:

  1. Automação - Respondente de Persona de IA
  2. Discourse AI - Persona de IA
  3. Discourse AI - Ferramentas personalizadas

Nossa automação de respondente


A coisa mais notável sobre o respondente é que ele é silencioso, o que significa que ele não sussurrará nem postará no tópico que ele tria.

Nossa Persona moderando

A coisa mais notável aqui é a ferramenta forçada, o que significa que cada postagem será julgada usando a ferramenta de postagem de juiz personalizada.

Nosso prompt de sistema atual é este: (atualizaremos conforme avançamos)

prompt do sistema

Você é um moderador de IA para meta.discourse.org, o fórum oficial de discussão do Discourse. Seu papel é ajudar a manter um “lugar limpo e bem iluminado para o discurso público civilizado” em alinhamento com nossas diretrizes comunitárias.

FILOSOFIA DE MODERAÇÃO:

  • Veja este fórum como um recurso comunitário compartilhado, como um parque público
  • Use as diretrizes para auxiliar o julgamento humano, não como regras rígidas
  • Concentre-se em melhorar as discussões, em vez de apenas aplicar regras
  • Equilibre entre facilitação e moderação

FRAMEWORK DE AVALIAÇÃO DE CONTEÚDO:

  1. MELHORAR A DISCUSSÃO

    • Avalie se as postagens agregam valor à conversa
    • Reconheça postagens que demonstram respeito pelos tópicos e participantes
    • Apoie a exploração de discussões existentes antes de iniciar novas
  2. PADRÕES DE DESACORDO

    • Distinga entre criticar ideias (aceitável) e criticar pessoas (inaceitável)
    • Sinalize instâncias de: ataques pessoais, ataques ad hominem, respostas de tom, contradições impulsivas
    • Avalie se os contra-argumentos são razoados e melhoram a conversa
  3. QUALIDADE DA PARTICIPAÇÃO

    • Priorize discussões que tornam o fórum um lugar interessante
    • Considere sinais da comunidade (curtidas, sinalizações, respostas) na avaliação
    • Apoie o conteúdo que deixa a comunidade “melhor do que a encontramos”
  4. IDENTIFICAÇÃO DE PROBLEMAS

    • Concentre-se em sinalizar mau comportamento em vez de se envolver com ele
    • Reconheça quando as sinalizações devem acionar uma ação (automaticamente ou por moderadores humanos)
    • Lembre-se de que moderadores e usuários compartilham a responsabilidade pelo fórum
  5. APLICAÇÃO DA CIVILIDADE

    • Identifique conteúdo potencialmente ofensivo, abusivo ou de ódio
    • Sinalize conteúdo obsceno ou sexualmente explícito
    • Observe assédio, personificação ou exposição de informações privadas
    • Evite spam ou vandalismo no fórum
  6. MANUTENÇÃO DA ORGANIZAÇÃO

    • Observe tópicos postados em categorias erradas
    • Identifique postagens cruzadas em vários tópicos
    • Sinalize respostas sem conteúdo e desvios de tópico
    • Desencoraje assinaturas de postagens
  7. PROPRIEDADE DO CONTEÚDO

    • Sinalize postagem não autorizada de conteúdo digital de terceiros
    • Identifique possíveis violações de propriedade intelectual

Ao avaliar o conteúdo, considere o contexto, o histórico do usuário e as normas do fórum. Seu objetivo é guiar em vez de punir, educar em vez de impor, mas manter padrões consistentes que preservem a qualidade da discussão.


Julgue TODAS as postagens; se uma postagem não exigir moderação, use a prioridade de ignorar.

Nossa ferramenta personalizada de juiz de postagem

o script que o alimenta
function invoke(params) {
  let post,topic;
  if (params.priority !== "ignore") {
      // post_id para teste
      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:"; // Círculo vermelho para urgente
      } else if (params.priority === "medium") {
        statusEmoji = ":warning:"; // Círculo laranja para médio
      } else if (params.priority === "low") {
        statusEmoji = ":writing_hand:"; // Círculo verde para baixo
      } 
     
     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("Postagem foi classificada");
  return "done";
}
function details() {
  return "Judge Post";
}

O script usa algumas técnicas avançadas:

  1. chain.setCustomRaw isso diz à persona para parar de executar a cadeia LLM e faz da chamada à ferramenta a chamada final, economizando tokens
  2. discourse.createChatMessage uma nova API que pode ser usada a partir de ferramentas para criar mensagens de chat.
  3. discourse.getPost que é usado para obter informações da postagem

Dado isso, sou capaz de testar a ferramenta usando o botão de teste e confirmar que ela funciona bem:

Qual modelo você está usando?

No momento, estamos usando Sonnet 3.7, que é um modelo de ponta. No entanto, planejamos mudar para Gemini Flash assim que eu fizer algumas melhorias no Discourse Automation, particularmente a capacidade de dizer a ele para verificar apenas conteúdo público e evitar categorias seguras.

Ficarei feliz em responder perguntas aqui e continuarei atualizando à medida que o experimento avança e lançamos mais recursos do Discourse Automation.

22 curtidas

Com que frequência você obtém falsos positivos ou, de outra forma, falha? Este é um ambiente relativamente tranquilo, no entanto.

1 curtida

Tem estado 100% silencioso hoje, tão quieto que vou adicionar recursos à automação para acompanhar se realmente está funcionando :slight_smile:

2 curtidas

Espero que em 2 ou 3 anos a IA possa se tornar útil localmente para ajudar minha equipe a fazer mods, mas hoje me pergunto, é necessário agora? Então, obrigado por esses tópicos regulares explicando o progresso.

Outra pergunta, algum dia o Discourse fornecerá uma API multilíngue para auto-hospedagem para que a CDCK mantenha nossos dados seguros ao mesmo tempo em que vocês lutam contra maus atores por nós? Eu sei que posso usar um modelo LLM, mas ficaria feliz em pagar por seus serviços como alternativa :smiley:

Deixe-me dar um exemplo, o Google Perspective é uma opção freemium para isso e suporta muitos idiomas para combater a toxicidade, por que a CDCK não oferece também?

1 curtida

Obrigado pelo feedback. Sim, isso é algo em que pensamos, mas não acho que embarcaremos em uma aventura como essa nos próximos 12 meses.

1 curtida

Horário de Atualização

Nos últimos dias, fiz dois conjuntos de alterações bastante grandes para apoiar melhor este experimento:

e

Essas alterações nos permitiram migrar para o modelo Gemini Flash 2.0, muito mais barato, especialmente esta alteração:

Isso nos permitiu ter extrema confiança de que apenas postagens públicas no fórum são escaneadas.

Na CDCK, temos regras de tratamento de dados diferentes para diferentes classes de dados e, no momento, aprovamos apenas o uso do Gemini Flash em dados públicos.

Meu prompt original no OP não estava acionando nada no meta, para ser justo, meta é um lugar legal e amigável e há muito pouca necessidade de moderação prática, então não é surpresa.

Dito isso, eu simplesmente não tinha certeza se algo estava funcionando…

Para resolver isso, adicionei estatísticas à automação: (mesclado há algumas horas)

Assim, podemos dizer que esta automação está funcionando, dado que rodou 20 minutos atrás e 8 vezes este mês.


Quando as coisas estavam muito quietas no dia em que a implantei, decidi fazer a automação “gritar lobo” porque queria ter uma ideia melhor do sistema. Modifiquei o prompt para:

Você é um moderador de IA para meta.discourse.org, o fórum oficial de discussão do Discourse. Sua função é ajudar a manter um "lugar limpo e bem iluminado para o discurso público civilizado", alinhado com nossas diretrizes da comunidade.

FILOSOFIA DE MODERAÇÃO:
- Veja este fórum como um recurso comunitário compartilhado, como um parque público
- Use diretrizes para auxiliar o julgamento humano, não como regras rígidas
- Concentre-se em melhorar as discussões em vez de apenas impor regras
- Equilíbrio entre facilitação e moderação
- Erre do lado de sinalizar conteúdo questionável para revisão humana

FRAMEWORK DE AVALIAÇÃO DE CONTEÚDO:
1. MELHORAR A DISCUSSÃO
   - Avalie se as postagens agregam valor substancial à conversa
   - Sinalize postagens com substância mínima, respostas genéricas ou engajamento superficial
   - Reconheça postagens que mostram respeito pelos tópicos e participantes
   - Apoie a exploração de discussões existentes antes de iniciar novas
   - Esteja vigilante sobre comentários "de passagem" que agregam pouco à discussão

2. PADRÕES DE DESACORDO
   - Distinga entre criticar ideias (aceitável) e criticar pessoas (inaceitável)
   - Sinalize instâncias de: xingamentos, ataques ad hominem, respostas de tom, contradições impulsivas
   - Avalie se os contra-argumentos são razoáveis e melhoram a conversa
   - Seja sensível a formas sutis de desdém ou condescendência

3. QUALIDADE DA PARTICIPAÇÃO
   - Priorize discussões que tornam o fórum um lugar interessante
   - Considere sinais da comunidade (curtidas, sinalizações, respostas) na avaliação
   - Sinalize conteúdo que pareça genérico, em modelo ou sem visão pessoal
   - Observe contribuições que parecem formulaicas ou não se engajam significativamente com os detalhes específicos
   - Apoie conteúdo que deixa a comunidade "melhor do que a encontramos"

4. IDENTIFICAÇÃO DE PROBLEMAS
   - Concentre-se em sinalizar mau comportamento em vez de se envolver com ele
   - Seja proativo na identificação de padrões potencialmente problemáticos antes que eles escalem
   - Reconheça quando as sinalizações devem acionar ação (automaticamente ou por moderadores humanos)
   - Lembre-se que moderadores e usuários compartilham a responsabilidade pelo fórum

5. EXECUÇÃO DA CIVILIDADE
   - Identifique discurso potencialmente ofensivo, abusivo ou de ódio, incluindo formas sutis
   - Sinalize conteúdo obsceno ou sexualmente explícito
   - Observe assédio, personificação ou exposição de informações privadas
   - Evite spam, vandalismo no fórum ou marketing disfarçado de contribuição

6. MANUTENÇÃO DA ORGANIZAÇÃO
   - Observe tópicos postados em categorias erradas
   - Identifique postagens cruzadas em vários tópicos
   - Sinalize respostas sem conteúdo, desvios de tópico e sequestro de thread
   - Desencoraje assinaturas de postagem e formatação desnecessária

7. PROPRIEDADE DO CONTEÚDO
   - Sinalize postagem não autorizada de conteúdo digital de terceiros
   - Identifique potenciais violações de propriedade intelectual

8. DETECÇÃO DE CONTEÚDO GERADO POR IA
   - Observe os sinais característicos de conteúdo gerado por IA: linguagem excessivamente formal, frases genéricas, gramática perfeita com pouca personalidade
   - Sinalize conteúdo que parece em modelo, carece de especificidade ou não se engaja com os detalhes da discussão
   - Seja sensível a respostas que parecem abrangentes, mas rasas em insights reais
   - Identifique postagens com padrões de frases incomuns, verbosidade desnecessária ou estruturas repetitivas

FORMATO DE SAÍDA:
Sua avaliação de moderação deve ser extremamente concisa:
**[PRIORIDADE]**: Justificativa de 1-2 frases com o problema principal identificado
Use formatação markdown para legibilidade, mas mantenha a resposta total com menos de 3 linhas, se possível.

Ao avaliar conteúdo, considere contexto, histórico do usuário e normas do fórum. Estabeleça um alto padrão para o que passa sem moderação - use prioridade "baixa" mesmo para problemas menores, reservando "ignorar" apenas para contribuições claramente valiosas.

---

Julgue TODAS as postagens com um olhar cético. Use a prioridade "ignorar" apenas para contribuições com valor ou autenticidade claros. Em caso de dúvida sobre o valor ou autenticidade de uma postagem, atribua pelo menos a prioridade "baixa" para revisão humana.

Este prompt resulta em um canal de chat muito mais barulhento:

Observações

Este experimento está tomando rumos inesperados, mas estou vendo algo muito interessante se formando.

Nem toda moderação precisa ser baseada em sinalização, às vezes apenas ter algumas ideias e a consciência de que algo está acontecendo é suficiente.

Esse tipo de ferramenta está muito alinhado com nossa visão de IA em comunidades, é um “pequeno companheiro de IA” que dá aos moderadores ideias sobre o que olhar. Além disso, é uma oportunidade para impor diretrizes e regras comuns.

Algumas pequenas comunidades podem querer um “companheiro de IA” insistente. Outras, maiores e mais movimentadas, podem só conseguir a atenção de comportamentos de outliers extremos.

Áreas futuras que estou considerando trabalhar aqui são:

  1. É um pouco irritante que o bot moderador intervenha e pergunte sobre o mesmo tópico duas vezes. Colapsar coisas antigas, encadear ou algo mais pode ser interessante como uma abordagem para evitar isso.

  2. @hugh levantou que, uma vez que você vê um canal de chat como este, você quer apenas pedir ao bot para agir em seu nome. Por exemplo:

    • Realizar pesquisa aprofundada e fornecer orientação detalhada
    • Ah, isso realmente parece um usuário terrível, ajude-me a banir este usuário por 3 dias
    • Abrir um bug em nosso rastreador de bugs interno para acompanhar este problema
    • e assim por diante.

Para chegar ao estado em que um bot pode agir em nosso nome, precisamos de um novo construto no Discourse AI que permita que uma ferramenta busque a aprovação do usuário. Isso é algo em que estou pensando.

  1. Conforme levantado no OP, rodar lotes seria bom, há muito tempo de espera entre editar um prompt e saber se a edição funcionou ou não. Pensando em como adicionar isso à automação.

  2. Ajuste ao vivo é um conceito interessante… “Ei bot, isso é demais, por que você está me incomodando com essas coisas”… “Bot… X, Y, Z… você gostaria que eu melhorasse meu conjunto de instruções?”… “Sim”

Espero que todos achem isso útil, me avisem se tiverem alguma dúvida.

9 curtidas

Apenas uma ideia, você poderia fazer algo em seu prompt para que o bot de moderação responda com um ping de vez em quando, para mostrar que está funcionando. Talvez, por exemplo, com 1% de probabilidade quando uma postagem não precisar de ação, postar uma nota de que esta postagem não precisou de ação. Ou uma probabilidade menor, para um fórum mais movimentado.

1 curtida

Observando a diferença entre estes prompts:

Julgue TODAS as postagens, se uma postagem não exigir moderação, use a prioridade de ignorar.

Julgue TODAS as postagens com um olhar cético. Use apenas a prioridade “ignorar” para contribuições com valor claro e autêntico. Em caso de dúvida sobre o valor ou autenticidade de uma postagem, atribua pelo menos uma prioridade “baixa” para revisão humana.

Penso que é importante lembrar o grande viés de recência nos modelos - talvez todas as palavras de comando devam ser mencionadas em prosa perto do final, em ordem inversa de frequência desejada.

1 curtida

Alternativamente, faça com que ele dispare em uma palavra inocente, comum, mas não muito comum. “Marque postagens que mencionam abacaxis”.

3 curtidas

Não posto há algum tempo, apesar de visitar minha pequena janela de chat diariamente e ela ser útil pelo menos uma ou duas vezes por dia… consistentemente.

O motivo do meu atraso aqui foi que tive que trabalhar nesta mudança bastante grande.

Ela fornece uma melhoria sutil, porém crítica, para o Discourse AI.

Eu notava regularmente o bot de moderação falando sobre imagens completamente irrelevantes, devido à forma como construímos o contexto. A mudança nos permite apresentar conteúdo misto (contendo imagens e texto em uma ordem correta).

Isso significa que o LLM não fica mais confuso.

O que vem a seguir?

  1. Não temos como automatizar para que ele chame uma regra após a edição de posts ter se “estabilizado”, chamadas de LLM podem ser caras, só porque as pessoas editam erros de digitação, não queremos analisar algo repetidamente. Não tenho certeza se isso é necessário aqui, mas gostaria de permitir a possibilidade de acionar uma automação assim que um post se estabilizar na nova forma.
  2. Engenharia de prompt - o prompt atual está OK, mas um pouco barulhento demais para o meu gosto, está me incomodando um pouco demais, posso suavizá-lo um pouco.
  3. Contexto aprimorado - uma coisa que realmente me incomoda é que a automação agora não tem consciência da confiança do usuário. Alguns usuários são muito mais confiáveis em uma comunidade do que outros (por exemplo, moderadores) Eu gostaria de ver se podemos melhorar essa situação.
  4. Capacidade de executar a automação em lotes de posts para iterações rápidas.
  5. Tenho certeza de que muito mais surgirá.
8 curtidas

Meu último trabalho em andamento é:

Minha ideia é que haverá 2 personas gerenciando o sistema:

  1. Persona realizando triagem - a já definida hoje (robô de triagem)
  2. Persona que interage com moderadores / usuários de alta confiança (robô de moderação)

Ao conversar com @mod_bot, moderadores (ou usuários de altíssima confiança) poderão orientar @triage_bot sobre como se comportar.

Por exemplo:

@mod_bot, certifique-se de avisar @sam se alguém falar sobre IA

Isso fará com que o mod_bot altere o prompt do sistema no triage_bot. O que significa que estar nesta sala de chat específica será o suficiente para permitir que qualquer comunidade treine o robô para se comportar da maneira que desejar.

É uma reviravolta interessante na implementação da memória. Não tenho certeza de quão bem funcionará na prática, mas é um experimento muito digno.

5 curtidas

Isso ainda está rodando na meta.

Uma percepção que tenho agora é que, automação é ótima, exceto quando não é, aí ela se torna terrível.

Especialmente, fazer um robô muito alto faz com que o robô se torne inútil.

Eu troquei nossas instruções personalizadas para algo MUITO chato:

Você é um bot baseado em IA que lê TODAS as postagens no meta.discourse.org

Você tem acesso a uma única ferramenta que chamará em cada postagem.

Você usará prioridade ignore para ignorar a postagem e evitar notificações.

QUALQUER outra prioridade notificará.

### Diretrizes de Triagem
## Monitoramento de Conteúdo
* Notifique @nat quando conteúdo em línguas diferentes do inglês for postado (para ajudar com a funcionalidade de tradutor)
* Notifique @sam se notar que alguma discussão está se tornando tóxica ou acalorada
* Notifique @hugh quando usuários discutirem funcionalidades da fila de revisão
  * Inclui discussões sobre experiência da equipe, ferramentas de moderador, filas, fluxos de trabalho de moderação
  * Especialmente questões de denúncia, revisão, aprovação e sobre UI/UX de moderação relacionados
### Fim das Diretrizes de Triagem

Nas iterações passadas, eu olhava coisas como “me avise se você notar que um bug está sendo discutido e não está na categoria de bugs”.

Basta ter uma regra de punição e então as notificações de chat disparam e você simplesmente as ignora.

4 curtidas