La detección de spam por IA (Discourse AI - Spam detection) ha tenido un éxito tremendo y ha ayudado a muchas de nuestras comunidades a prosperar.
En esta publicación, me gustaría compartir detalles sobre nuestro experimento “en progreso”, en caso de que sea útil para otras comunidades.
Tengo la intención de mantener esta publicación actualizada a medida que el experimento progrese y compartir información sobre la clase de problemas que puede detectar.
Sin embargo, tenga en cuenta: este es un sistema en evolución, no un producto final todavía.
¿Por qué moderación por IA?
Un enfoque clave que tenemos con la integración de IA en Discourse es que debe agregar valor a los moderadores humanos, en lugar de reemplazarlos. La promesa de la moderación por IA es que puede señalar a los moderadores que “algo está mal” y hacer recomendaciones sobre las acciones que deben tomar. La agencia debe dejarse completamente en manos de los moderadores humanos.
¿Por qué el chat como modalidad para este experimento?
Al montar mi experimento, opté por usar el chat como modalidad para las notificaciones. Esto permite un canal dedicado para el experimento que no interfiere con la moderación general en el foro.
Dado que construir y refinar indicaciones es un trabajo en progreso, molestar al resto del equipo de moderación en meta no me pareció un buen enfoque.
Cuando le das a la gente proyectos de IA muy incompletos, puedes perder muy fácilmente toda la confianza y el apoyo futuro.
¿Qué pasa con las pruebas por lotes?
Una limitación de nuestro sistema de automatización actual es que actualmente no se pueden probar los cambios por lotes. Esto significa que cuando realizas cambios en las indicaciones de IA, hay un largo retraso hasta que descubres cuán útil es.
Esto es particularmente problemático si solo ves un puñado de problemas en el foro durante el día. El tiempo de reacción es demasiado lento y puede llevar meses refinar una indicación.
Soy muy consciente de esta limitación y espero eliminar esta sección de la publicación en las próximas semanas, ya que tenemos un sistema para hacerlo.
¿Cómo está configurado esto?
Mi experimento actual se basa en 3 características:
- Automatización - Respondedor de IA Persona
- IA de Discourse - Persona de IA
- IA de Discourse - Herramientas personalizadas
Nuestra automatización de respondedor
Lo más notable del respondedor es que es silencioso, lo que significa que no susurrará ni publicará en el tema que clasifica.
Nuestra moderación de Persona
Lo más notable aquí es la herramienta forzada, lo que significa que cada publicación será juzgada utilizando la herramienta personalizada de juez de publicaciones.
Nuestro prompt del sistema actual es este: (se actualizará a medida que avancemos)
prompt del sistema
Eres un moderador de IA para meta.discourse.org, el foro de discusión oficial de Discourse. Tu función es ayudar a mantener un “lugar limpio y bien iluminado para el discurso público civilizado” en alineación con nuestras pautas comunitarias.
FILOSOFÍA DE MODERACIÓN:
- Ve este foro como un recurso comunitario compartido, como un parque público
- Utiliza las directrices para ayudar al juicio humano, no como reglas rígidas
- Enfócate en mejorar las discusiones en lugar de solo hacer cumplir las reglas
- Equilibrio entre facilitación y moderación
MARCO DE EVALUACIÓN DE CONTENIDO:
- MEJORAR LA DISCUSIÓN
- Evalúa si las publicaciones agregan valor a la conversación
- Reconoce las publicaciones que muestran respeto por los temas y los participantes
- Apoya la exploración de discusiones existentes antes de comenzar nuevas
- NORMAS DE DESACUERDO
- Distingue entre criticar ideas (aceptable) y criticar personas (inaceptable)
- Señala instancias de: insultos, ataques ad hominem, respuestas de tono, contradicciones impulsivas
- Evalúa si los contraargumentos son razonados y mejoran la conversación
- CALIDAD DE PARTICIPACIÓN
- Prioriza las discusiones que hacen del foro un lugar interesante
- Considera las señales de la comunidad (me gusta, banderas, respuestas) en la evaluación
- Apoya el contenido que deja a la comunidad “mejor de lo que la encontramos”
- IDENTIFICACIÓN DE PROBLEMAS
- Enfócate en señalar el mal comportamiento en lugar de interactuar con él
- Reconoce cuándo las banderas deben desencadenar una acción (automática o por moderadores humanos)
- Recuerda que tanto los moderadores como los usuarios comparten la responsabilidad del foro
- CUMPLIMIENTO DE LA CIVILIDAD
- Identifica discursos potencialmente ofensivos, abusivos o de odio
- Señala contenido obsceno o sexualmente explícito
- Vigila el acoso, la suplantación de identidad o la exposición de información privada
- Previene el spam o el vandalismo del foro
- MANTENIMIENTO DE LA ORGANIZACIÓN
- Anota temas publicados en categorías incorrectas
- Identifica la publicación cruzada en múltiples temas
- Señala respuestas sin contenido y desviaciones de temas
- Desalienta las firmas de publicaciones
- PROPIEDAD DEL CONTENIDO
- Señala la publicación no autorizada de contenido digital de otros
- Identifica posibles violaciones de derechos de autor
Al evaluar el contenido, considera el contexto, el historial del usuario y las normas del foro. Tu objetivo es guiar en lugar de castigar, educar en lugar de hacer cumplir, pero mantener estándares consistentes que preserven la calidad de la discusión.
Juzga TODAS las publicaciones, si una publicación no requiere moderación usa la prioridad de ignorar.
Nuestra herramienta personalizada de juez de publicaciones
el script que lo potencia
function invoke(params) {
let post,topic;
if (params.priority !== "ignore") {
// post_id para pruebas
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 rojo para urgente
} else if (params.priority === "medium") {
statusEmoji = ":warning:"; // Círculo naranja para medio
} else if (params.priority === "low") {
statusEmoji = ":writing_hand:"; // Círculo verde para bajo
}
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";
}
El script utiliza bastantes técnicas avanzadas:
chain.setCustomRawesto le dice a la persona que deje de ejecutar la cadena LLM y hace que la llamada a la herramienta sea la llamada final, ahorrando tokens.discourse.createChatMessageuna nueva API que se puede usar desde herramientas para crear mensajes de chat.discourse.getPostque se utiliza para obtener información de la publicación.
Dado esto, puedo probar la herramienta usando el botón de prueba y confirmar que funciona bien:
¿Qué modelo estás usando?
En este momento, estamos usando Sonnet 3.7, que es un modelo de vanguardia. Sin embargo, planeamos cambiar a Gemini Flash una vez que haga algunas mejoras en Discourse Automation, particularmente la capacidad de indicarle que escanee solo contenido público y evite categorías seguras.
Estoy feliz de responder preguntas aquí y seguiré actualizando a medida que el experimento se desarrolle y lancemos más funciones de Discourse Automation.






