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