Esta guía explica cómo configurar y usar la función de detección de spam de Discourse AI, incluyendo el proceso de configuración, criterios de escaneo, lógica de clasificación, personalizaciones y contrastes con el triaje de IA.
Nivel de usuario requerido: Administrador
Esto ahora está activado por defecto para clientes Starter y Pro, así como para nuestros clientes heredados Basic, Open Source, Creator y Business.
Discourse AI proporciona una función eficiente de detección de spam que identifica y marca las publicaciones de spam con una configuración mínima. Si bien está diseñado para la simplicidad, complementa el sistema de triaje de IA más versátil, que admite flujos de trabajo más amplios y casos de uso más grandes.
Resumen
En esta guía, aprenderá:
- Cómo funciona la detección de spam de IA y qué contenido se escanea
- La lógica de clasificación y el contexto utilizados por la IA
- Pasos para configurar la detección de spam a través de
/admin/plugins/discourse-ai/ai-spam- Directrices para la selección de Modelos de Lenguaje Grandes (LLM)
- Diferencias clave entre la detección de spam y el triaje de IA
- Cómo gestionar las publicaciones marcadas y las omitidas
Cómo funciona la detección de spam de IA
¿Qué contenido se escanea?
La detección de spam de IA evalúa las publicaciones según estos criterios:
Nivel de confianza del usuario:
- Escanea publicaciones de usuarios con nivel de confianza 1 o inferior.
- Excluye publicaciones de niveles de confianza más altos.
Tipo de publicación:
- Publicaciones públicas (excluyendo mensajes privados).
- Se incluyen tanto las publicaciones de respuesta como las primeras publicaciones de temas, según umbrales adicionales.
Ediciones de publicaciones:
- Escanea publicaciones con ediciones significativas (por ejemplo, cambios que superan los 10 caracteres).
- Aplica un retraso de 10 minutos entre escaneos de la misma publicación.
Frecuencia de publicaciones:
- Prioriza las publicaciones de usuarios nuevos con menos de 4 publicaciones totales en temas públicos.
- Excluye las publicaciones de usuarios que superan este umbral.
El proceso de clasificación
Las publicaciones que cumplen los criterios se envían a un modelo de IA (LLM) para su análisis. El modelo evalúa si la publicación es “SPAM” o “NO SPAM” basándose en:
- Contexto: Incluye el contenido de la publicación, el título del tema, los datos de la cuenta del usuario (por ejemplo, antigüedad de la cuenta y nivel de confianza) y las directrices del sitio.
- Instrucciones personalizadas: Reglas definidas por el administrador para criterios de escaneo reforzados o adaptados.
- Detección automatizada:
- Marca contenido irrelevante o promocional (por ejemplo, anuncios o materiales comerciales).
- Identifica comportamientos automatizados o similares a bots.
- Evalúa la relevancia del contenido para la discusión.
Prompt y contexto predeterminados
La IA utiliza un prompt del sistema predeterminado para guiar la detección de spam. Este prompt describe las reglas de clasificación de spam. Por ejemplo:
Eres un sistema de detección de spam. Analiza el siguiente contenido y contexto. Notas: - Las respuestas deben seguir siendo relevantes para el hilo de discusión. - Marca como SPAM si el contenido es irrelevante, promocional o automatizado. - Considera las publicaciones de usuarios nuevos con enlaces como SPAM potencial a menos que sean explícitamente relevantes para el tema. Responde solo con "SPAM" o "NO SPAM".El escáner también compila un paquete de contexto, que incluye:
- Metadatos de temas y categorías.
- Relevancia de las respuestas al hilo.
- Datos del autor (por ejemplo, fecha de creación de la cuenta, total de publicaciones, nivel de confianza).
- Texto de la publicación truncado a 5000 caracteres para su procesamiento.
Configurar la detección de spam de IA
Guía de configuración
Acceder a la configuración:
Navega a/admin/plugins/discourse-ai/ai-spam.Seleccionar un LLM:
Si tu sitio está alojado por Discourse
Puedes seleccionar nuestro LLM Pequeño Alojado por CDCK de la lista de LLM.
- Elige un modelo de lenguaje adecuado a las necesidades de tu foro. Consulta la página de configuración de Modelos de Lenguaje Grandes (LLM) para configurar LLMs.
- Accede a
/admin/plugins/discourse-ai/ai-llmspara configuraciones de LLM.
- Activar la detección de spam:
Habilita la detección de spam activando la función.
Nota: Es obligatorio un LLM conectado.
- Añadir instrucciones personalizadas:
- Define reglas específicas para tu foro (por ejemplo, monitoreo más estricto de enlaces externos).
- Guarda cualquier cambio para aplicarlos.
Diferencias con el triaje de IA
Mientras que la detección de spam está diseñada específicamente para identificar spam, el triaje de IA admite tareas de gestión de publicaciones más amplias.
Característica Detección de Spam de IA Triaje de IA Complejidad Configuración simplificada y opinada Altamente personalizable y flexible Caso de uso principal Detección de spam con una sobrecarga mínima Flujos de trabajo avanzados para categorización, etiquetado, respuestas, detección de spam, detección de nsfw Acciones Marca spam, silencia usuarios Etiqueta, categoriza, oculta publicaciones, añade respuestas, marca publicaciones, silencia usuarios Recomendación Configuración fácil y efectiva para la mayoría de las situaciones Úsalo para flujos de trabajo ricos y altamente personalizables Para más detalles, consulta Discourse AI - Triaje de IA.
Recomendaciones de selección de LLM
El rendimiento de la detección de spam depende del LLM elegido.
La mayoría de los LLMs de bajo costo funcionan de manera efectiva, como:
- GPT-4o-mini
- Claude 3.5 Haiku
- Gemini 2.0 Flash
Experimenta con diferentes modelos para encontrar el que mejor se adapte. Configura tus modelos a través de
/admin/plugins/discourse-ai/ai-llms.
Probar el comportamiento del escáner de spam
Puedes probar las reglas de detección de spam directamente desde la página de configuración.
- Pega una URL o ID de publicación en el campo de prueba.
- Revisa el resultado de la clasificación (por ejemplo, “SPAM” o “NO SPAM”) y analiza los registros para comprender el razonamiento.
- Los cambios no guardados se aplican durante las pruebas, lo que permite la experimentación sin riesgos.
Gestión de publicaciones marcadas y omitidas
Manejo de publicaciones marcadas
Las publicaciones marcadas aparecen en la cola de moderación. Los administradores pueden:
- Aprobar publicaciones legítimas clasificadas incorrectamente como spam.
- Rechazar temas de spam para mantener la precisión del sistema.
Importante: Rechaza las marcas de spam para las publicaciones clasificadas incorrectamente. Los usuarios permanecen silenciados hasta que se resuelve la marca.
Manejo de spam omitido
El spam omitido se refiere a publicaciones que eluden la detección pero son marcadas por la comunidad. Los moderadores pueden gestionarlas según sea necesario.
Mejores prácticas
- Monitorea regularmente el spam marcado y omitido para refinar la precisión del sistema. Las métricas clickables simplifican este proceso.
- Utiliza casos de prueba para evaluar las instrucciones personalizadas frente a casos extremos.
- Revisa y ajusta la configuración del LLM cuando sea necesario.
Recursos adicionales
Configurar la detección de spam de IA reduce eficazmente los esfuerzos de moderación manual, garantizando una comunidad limpia y libre de spam.
Hemos realizado bastantes pruebas con esto y no parece que obtengamos resultados fiables en absoluto. Como contexto, estamos utilizando el modelo gpt-4o.
Para probar su precisión, le di las siguientes instrucciones sencillas:
Eres un sistema de detección de spam. Analiza el siguiente contenido y contexto.
Notas a continuación. Si *ALGUNO* de los elementos es verdadero a continuación, márcalo como spam:
- El nombre de usuario es muy específicamente "testjon", entonces es *SIEMPRE* spam.
- Responde solo con "SPAM - ¡Es Jon!" o "NO ES SPAM".
Al probar en una publicación, con el nombre de usuario testjon, el resultado es NO ES SPAM. Parece que no está prestando atención a las instrucciones en absoluto. ¿Alguna sugerencia?
¿Han tenido otros alguna experiencia buena o mala con la detección de spam por IA?
No sé cómo son las cosas en esta situación, pero en general, la afirmación citada es muy propensa a fallar. No entiende qué significa ALGUNO y sigue felizmente mientras lo consigue. Y a partir de ahí, finalmente encontró NO ES SPAM.
¿Estás diciendo que elimine el negrita para ANY? ¿O estás diciendo que la declaración en general de “si hay algún elemento abajo”?
Tengo que escribirlo de forma más lógica y exacta. No puedes dejar que una IA elija de ninguna manera. Recuerda que no puede contar y definitivamente no lee todo y luego regresa para intentar trabajar lógicamente. Intenta explicar de forma tan sencilla como si dieras instrucciones a un niño de 3 años perezoso con TDAH. Los ejemplos no están mal, pero aumentarán el uso de tokens.
Esta es información increíble. Por ejemplo, ¿cómo podrías escribir este escenario exacto de manera diferente?
Algo como…
Eres un sistema de detección de spam. Tu trabajo es analizar silenciosamente el contenido para mantener una alta calidad en este foro. Debes seguir las reglas para definir cuándo una publicación es spam. Cuando encuentres spam, tu respuesta se indica en las reglas. Solo usas respuestas indicadas.
## Reglas para spam
No hago esto por ti 😏 Pero necesitas algunas explicaciones y ejemplos. Como un ejemplo rápido y crudo:
* si una publicación tiene enlaces externos que están conectados a juegos de azar, sexo, criptomonedas, etc. similares (lo similar es arriesgado en este contexto, por cierto), entonces una publicación se clasifica como spam. Ejemplo: www.buy-crypto.deal
Esto debes ajustarlo caso por caso, porque obtendrás falsos positivos y falsos negativos.
Luego debes dar algunas pautas para el contenido también. Pero al probar:
* si el nombre de usuario es "testjon", omite el análisis del contenido y clasifícalo directamente como spam. Tu respuesta es "SPAM - es Jon"
Por cierto, ¿puede ver al usuario?
## Reglas para otro contenido
Cuando una publicación pasa el análisis de spam y estás seguro de que es contenido legítimo, tu única respuesta es "NO ES SPAM".
Algo así. Tienes que probar, por supuesto. Y cada vez que obtengas una respuesta incorrecta, intenta encontrar el punto confuso. Pero no le des a la IA la oportunidad de elegir qué puede hacer, porque entonces tomará la dirección última, más fácil o más agradable. Tiene la necesidad codificada de responder y ser feliz.
¡Acabo de habilitar esto y estoy emocionado de ver cómo va!
¿Hay alguna configuración o consideración para el nivel de confianza de los usuarios?
Por ejemplo: No necesito que la IA se active para TL2 y superiores, se han ganado su lugar y no deben ser considerados para el escaneo. Si se vuelven rebeldes, tendremos que hablar con ellos ![]()
Se dividieron 2 publicaciones en un nuevo tema: Falta el plugin AI de Discourse
Dado que esto reemplaza a Akismet, me pregunto cuál es la mejor alternativa para la detección/prevención de spam si no se desean los costos de LLM que conlleva la IA.
En realidad, Gemini 2.0 Flash está disponible de forma gratuita, siempre y cuando no le envíes un millón de solicitudes al día. Está funcionando bien para mi foro en este momento con cero costo, y es definitivamente más preciso y “más inteligente” que Akismet.
Sin embargo, si el plan de detección de spam con IA falla, todavía tengo el plugin Akismet instalado en mi sitio y listo para usar si alguna vez lo necesito de nuevo, y creo que todavía puedes instalarlo. (Dado que está siendo descontinuado, no espero que permanezca para siempre). También recuerda que los niveles de confianza son un núcleo fundamental de Discourse que te ayudan a gestionar el spam en tu sitio. ![]()
Genial, ¿es posible establecer un límite de tokens para asegurar que el límite (costo cero) esté presente desde el LLM?
Por lo que sé, creo que si excedes el límite, la API del LLM simplemente dejará de responder. Mi cuenta de Google Cloud Console no tiene una cuenta de facturación adjunta y todavía puedo usar la API de forma gratuita en el nivel gratuito, así que deberías estar bien. ![]()
Se dividió una publicación en un nuevo tema: Mejora de la detección de spam de IA para ediciones y fusiones
¿Dónde obtengo la “Clave API del servicio que aloja el modelo”?
Si estás en nuestro hosting, puedes usar LLM Small.
Si no, necesitas configurar un LLM y obtener una clave de OpenAI/Google/Anthropic/X/lo que sea…
Oh, una clave de API de ellos, no de Discourse.
La activación de la detección de spam con IA con Gemini 2.0 Flash no parece haber ayudado a bloquear estas cosas. Nunca antes había tenido un spam tan obvio que pasara el filtro. ¿Quizás está diseñado específicamente para sitios de Discourse?
| Error de QuickBooks Payroll después de una actualización +1-800-223-1608 Resolución paso a paso nuevo | América - Canadá |
| 1 | 2 | 1h |
|----|----|----|----|----|----|
| Entendiendo el error de actualización de la tabla de impuestos de QuickBooks Payroll +1-800-223-1608 nuevo | América - Canadá |
| 1 | 2 | 1h |
| Entendiendo el error de QuickBooks Payroll PS107 +1-800-223-1608 nuevo | América - Canadá |
| 1 | 2 | 2h |
| Lista completa de números de contacto de soporte al cliente de QuickBooks® USA: Tu guía experta nuevo | América - Canadá |
| 1 | 2 | 5h |
| Guía de referencia 2025 de números de soporte de errores y nóminas de QuickBooks® nuevo | Asia |
| 1 | 2 | 5h |
| {Guía experta} Información de contacto de soporte de nóminas de QuickBooks® – Guía USA 2025 nuevo | América - Canadá |
| 1 | 4 | 5h |
| {Llamar al +1-855-510-6777} ¿Cómo puedo hablar con el soporte de reservas de paquetes vacacionales de Expedia? nuevo | Luisiana |
| 1 | 6 | 5h |
| Lista completa de soporte™️ del Caribe – La guía oficial detallada nuevo | Asia |
| 1 | 2 | 6h |
| [Llamar^Agente^Directo] ¿Qué número conecta con el soporte de paquetes vacacionales de Expedia? {Marcar +1-855-510-6777} nuevo | América - Canadá |
Tu clave de API no es válida, por lo que no está realizando ninguna prueba.
Si realizas una prueba en https://www.foodtalkcentral.com/admin/plugins/discourse-ai/ai-spam y pegas esa URL, obtendrás un error 500. Si te adentras en los registros en
/var/discourse/shared/web-only/log/rails/production.log y buscas " 500 ", verás
Completed 200 OK in 399ms (Views: 123.1ms | ActiveRecord: 0.0ms (0 queries, 0 cached) | GC: 22.9ms)
DiscourseAi::Completions::Endpoints::Gemini: status: 400 - body: {
"error": {
"code": 400,
"message": "API key not valid. Please pass a valid API key.",
"status": "INVALID_ARGUMENT",
"details": [
{
"@type": "type.googleapis.com/google.rpc.ErrorInfo",
"reason": "API_KEY_INVALID",
"domain": "googleapis.com",
"metadata": {
"service": "generativelanguage.googleapis.com"
}
},
{
"@type": "type.googleapis.com/google.rpc.LocalizedMessage",
"locale": "en-US",
"message": "API key not valid. Please pass a valid API key."
}
]
}
}
Oh, gracias. Seleccioné accidentalmente Gemini 2.0 Flash en lugar de Gemini 2.0 Flash Lite. Ahora funciona correctamente.

