Discourse AI - Análisis de Sentimiento

:bookmark: Esta guía explica cómo configurar la clasificación de sentimiento y emociones en Discourse AI y usar los informes para explorar las publicaciones de tu comunidad.

:person_raising_hand: Nivel de usuario requerido: Administrador para configurar; administrador o moderador para ver los informes.

La clasificación de sentimiento y emociones te ayuda a explorar patrones en las discusiones de tu comunidad:

  • Sentimiento clasifica las publicaciones como positivas, neutras o negativas.
  • Emociones asigna puntuaciones en 28 etiquetas, incluyendo gratitud, curiosidad, ira y tristeza.

Estas son capacidades independientes. Puedes habilitar una o ambas, y elegir un backend de clasificación diferente para cada una. Los informes cuentan las publicaciones clasificadas, no las personas únicas ni los tipos de personalidad. Úsalos para encontrar discusiones que valga la pena leer, no como sustituto para entender su contexto.

Antes de empezar

Necesitas tener Discourse AI habilitado a través de discourse_ai_enabled y un backend de clasificación configurado.

¿Alojado por Discourse? Tu sitio ya puede tener endpoints de clasificación dedicados provisionados. Revisa su configuración existente antes de cambiarla. Contacta a team@discourse.org si necesitas ayuda con la disponibilidad, la configuración del endpoint o los límites de relleno histórico (backfill).

¿Alojado por ti mismo? Configura un endpoint dedicado compatible, un agente de IA con un modelo de lenguaje o un modelo de decisión. Habilitar la función por sí sola no proporciona un servicio de inferencia.

Revisa la política de privacidad, las reglas de retención y los costos de tu proveedor antes de habilitar el procesamiento automático. La clasificación envía el texto de la publicación al backend seleccionado. Las capturas de pantalla a continuación usan publicaciones inventadas en un sitio de pruebas y un modelo de decisión; no recomiendan ese proveedor para contenido comunitario privado.

Configurar sentimiento y emociones

  1. Abre Admin → Plugins → AI → Features.
  2. Abre “Sentimiento y emociones”.
  3. Bajo “Sentimiento”, selecciona “Habilitado” si quieres clasificación positiva, neutra y negativa. Esto controla ai_sentiment_enabled.
  4. Elige su “Backend” y configura el endpoint, agente o modelo correspondiente como se describe a continuación.
  5. Bajo “Emociones”, selecciona “Habilitado” si quieres clasificación de emociones. Esto controla ai_sentiment_emotion_enabled.
  6. Elige su backend y configúralo de manera independiente.
  7. Establece los límites de procesamiento en segundo plano descritos en la próxima sección.
  8. Haz clic en “Enviar” y comprueba que tus selecciones se guardaron.

Este ejemplo usa un modelo de decisión para ambas capacidades. “Publicaciones por hora” está establecido deliberadamente en 0 para pausar el escaneo automático mientras se prueba. Usa un valor positivo para procesar publicaciones nuevas e históricas automáticamente.

Usar endpoints de clasificación dedicados

Elige “Endpoint de clasificación dedicado” para cada capacidad que quieras ejecutar con un modelo dedicado. Sigue “Configurar endpoints de clasificación dedicados” hacia la configuración ai_sentiment_model_configs.

Los modelos dedicados de referencia son:

Capacidad Modelo
Sentimiento cardiffnlp/twitter-roberta-base-sentiment-latest
Emociones SamLowe/roberta-base-go_emotions

Cada entrada de configuración identifica su classification_type (sentiment o emotion), model_name, endpoint y api_key. Proporciona una entrada separada para cada clasificador dedicado que uses. Mantén las credenciales privadas; no las incluyas en publicaciones de soporte o capturas de pantalla.

Ver Alojar por ti mismo la clasificación de sentimiento y emociones para Discourse AI para el despliegue del servidor de inferencia. Habilita y selecciona cada capacidad por separado usando los controles anteriores.

El backend dedicado espera una API de clasificación compatible. Copiar un endpoint de chat de Anthropic, OpenAI o Azure Language en esta configuración no lo hace compatible. Una prueba de conexión exitosa para un modelo de lenguaje en otra parte de Discourse no prueba un endpoint de sentimiento dedicado.

Usar un agente de IA o un modelo de decisión

Para “Agente LLM”, selecciona un agente clasificador apropiado con un modelo de lenguaje configurado. Discourse incluye agentes clasificadores de sentimiento y emociones. Un agente conversacional general no es un sustituto de un agente configurado para devolver las puntuaciones de etiqueta esperadas.

Para “Modelo de decisión”, primero configura y prueba un modelo de decisión compatible, luego selecciónalo para cada capacidad habilitada. Un modelo de decisión no requiere un modelo de lenguaje conversacional separado para esta clasificación.

Las solicitudes de agentes y modelos de decisión pueden generar cargos por proveedor o consumir créditos. Revisa las reglas de manejo de datos del modelo seleccionado antes de asignarlo a una función procesada automáticamente.

Controlar el procesamiento y la cobertura histórica

Un trabajo programado revisa las publicaciones con clasificaciones faltantes cada cinco minutos. Las publicaciones nuevas e históricas comparten este escaneo; los resultados no están necesariamente disponibles inmediatamente después de publicar. No hay un número mínimo de publicaciones o días antes de que puedan aparecer datos: una publicación clasificada con éxito puede contribuir.

Control Configuración del sitio Valor predeterminado Efecto
Publicaciones por hora ai_sentiment_backfill_maximum_posts_per_hour 240 Número aproximado de publicaciones procesadas por hora. 0 detiene el escaneo programado, incluidas las publicaciones nuevas.
Límite de antigüedad de publicación, en días ai_sentiment_backfill_post_max_age_days 60 Escanea las publicaciones creadas dentro de esta ventana de antigüedad. 0 significa hoy, no historial ilimitado.

Aumenta el límite de antigüedad para incluir publicaciones más antiguas. El trabajo programado procesa los resultados faltantes con el tiempo; seleccionar un rango de fechas más antiguo en el informe no clasifica por sí mismo ese historial.

La tasa es aproximada, no un límite exacto de solicitudes o gastos. Habilitar ambos clasificadores puede generar dos solicitudes por publicación. Las solicitudes fallidas o rechazos pueden reintentarse. Las publicaciones editadas se revisan por separado y no están controladas por la tasa o los límites de antigüedad del escaneo programado.

Los mensajes privados, las publicaciones eliminadas, los temas eliminados y los tipos de publicación no regulares se excluyen del escaneo de relleno histórico programado. La exclusión de mensajes privados en el escáner y los informes no es una garantía para todas las rutas de clasificación: el trabajo de publicaciones editadas no aplica el mismo filtro de mensajes privados. Ten esto en cuenta antes de configurar un proveedor externo.

Explorar el sentimiento por categoría o etiqueta

  1. Abre Admin → Informes → Análisis de sentimiento, o visita /admin/reports/sentiment_analysis en tu sitio.
  2. Selecciona las fechas de inicio y fin.
  3. Elige “Categoría” o “Etiqueta” para agrupar los resultados.
  4. Usa el filtro de categoría o etiqueta correspondiente para acotar los resultados. El filtrado por categoría también proporciona una opción para incluir subcategorías.
  5. Lee el total de cada grupo y su desglose positivo, negativo y neutro.
  6. Haz clic en la fila de un grupo para inspeccionar su gráfico y las publicaciones subyacentes.

El ejemplo contiene nueve publicaciones clasificadas: tres positivas, tres negativas y tres neutras. Las publicaciones neutras se incluyen en este informe.

En la vista de detalles:

  • Selecciona “Todas”, “Positivas”, “Neutrales” o “Negativas” para filtrar las publicaciones cargadas.
  • Abre el tema de una publicación para leer la discusión circundante.
  • Usa el icono de enlace junto al gráfico para copiar la URL de esa vista de informe. Los destinatarios aún necesitan acceso de personal.
  • Haz clic en “Atrás” para volver a los resultados agrupados.

Las fechas del informe se refieren a cuándo se crearon las publicaciones, no a cuándo se ejecutó la clasificación. Una publicación puede contribuir a múltiples grupos de etiquetas si su tema tiene múltiples etiquetas, por lo que sumar totales por etiquetas puede contar la misma publicación más de una vez.

Leer la tendencia general del sentimiento

Abre el informe “Sentimiento general” desde Admin → Informes, o visita /admin/reports/overall_sentiment.

La puntuación es:

Número de publicaciones positivas − número de publicaciones negativas

Una puntuación positiva o negativa debe ser mayor que 0.6 para que la publicación cuente en ese grupo. Si ninguna supera el umbral, el informe agrupado trata la publicación como neutral. El umbral está fijo; no hay una configuración del sitio para cambiarlo.

El sentimiento general es un conteo neto de publicaciones, no una probabilidad promedio o porcentaje de felicidad. Tres publicaciones positivas y tres negativas producen una puntuación general de 0, independientemente de cuántas publicaciones neutras haya. Inspecciona el desglose agrupado y las discusiones subyacentes antes de interpretar una tendencia plana como una ausencia de opiniones fuertes.

Explorar emociones

Cada emoción tiene un informe bajo Admin → Informes. Por ejemplo, visita /admin/reports/emotion_anger para “Ira” o /admin/reports/emotion_curiosity para “Curiosidad”. Elige un rango de fechas y agrupación diaria, semanal o mensual para explorar la tendencia.

Un informe de emociones cuenta las publicaciones cuya puntuación para esa etiqueta es mayor que 0.1. Este umbral también está fijo. Más de una emoción puede calificar para la misma publicación, por lo que los totales de emociones no son mutuamente excluyentes.

También puedes filtrar temas por una emoción. Visita /filter?q=order:emotion_anger para encontrar temas coincidentes, clasificados por su número de publicaciones clasificadas con ira calificadas en lugar de por una puntuación promedio de emoción. Usa order:emotion_anger-asc para invertir el orden. Sin un filtro activity-after:, este orden cuenta publicaciones calificadas del último año. Se aplican aún los permisos normales de acceso a la lista de temas.

Etiquetas de emociones disponibles

Admiración, diversión, ira, molestia, aprobación, afecto, confusión, curiosidad, deseo, decepción, desaprobación, disgusto, vergüenza, emoción, miedo, gratitud, duelo, alegría, amor, nerviosismo, neutro, optimismo, orgullo, comprensión, alivio, remordimiento, tristeza y sorpresa.

Entender las limitaciones

  • La clasificación depende del modelo. El sarcasmo, el material citado, el lenguaje especializado y las discusiones multilingües pueden malinterpretarse. La cobertura lingüística y la precisión dependen de tu modelo elegido. Las puntuaciones de diferentes backends no están necesariamente calibradas de la misma manera.
  • Los informes solo cubren los resultados almacenados. Una función habilitada sin un backend operativo, procesamiento pausado o cobertura histórica insuficiente pueden producir informes vacíos o incompletos.
  • Se reutilizan las clasificaciones existentes. Editar una publicación clasificada no reemplaza automáticamente sus resultados. Cambiar el agente o modelo de decisión seleccionado dentro del mismo backend tampoco reclasifica los resultados existentes.
  • Cambiar el backend cambia la fuente de resultados del informe. Los resultados antiguos no se convierten al backend seleccionado. Los informes pueden parecer vacíos mientras se procesan las clasificaciones faltantes.
  • Los informes excluyen mensajes privados. Esta exclusión de informes es independiente de la limitación de procesamiento de datos descrita anteriormente.

Solucionar problemas de resultados faltantes o inesperados

Problema Qué revisar
Sin resultados después de habilitar Confirma que la capacidad relevante esté habilitada, que su backend esté configurado, que “Publicaciones por hora” sea positivo y que los trabajos en segundo plano estén ejecutándose. Permite tiempo para el escaneo de cinco minutos y la cola de procesamiento.
El sentimiento funciona pero las emociones están vacías Habilita y configura “Emociones” por separado. Un endpoint dedicado solo para sentimiento no proporciona clasificaciones de emociones.
Fechas más antiguas no tienen resultados Aumenta el límite de antigüedad de publicaciones, permite tiempo de procesamiento y verifica que el rango del informe incluya las fechas de creación de las publicaciones.
El endpoint dedicado devuelve un error Revisa su URL, credenciales, modelo y formato de respuesta. El adaptador espera una matriz plana de etiquetas y puntuaciones, con etiquetas de sentimiento como positive, neutral y negative, no respuestas arbitrarias de chat o etiquetas estilo LABEL_0.
No se puede alcanzar un endpoint de red privada Revisa la conectividad y, donde sea necesario, añade solo el nombre de host o IP del endpoint de inferencia confiable a allowed_internal_hosts. No deshabilites ampliamente las protecciones contra falsificación de solicitudes del lado del servidor.
Los resultados no cambian después de una edición o selección de modelo Se reutilizan los resultados existentes. No asumas que editar contenido o guardar otro modelo programa una reclasificación completa.
Un filtro muestra menos publicaciones que su conteo El conteo describe todo el grupo, mientras que las pestañas de sentimiento filtran las publicaciones cargadas. Busca más resultados para cargar y abre los temas originales al investigar discrepancias.

Los administradores pueden revisar los registros de solicitudes de agentes y modelos de decisión en Admin → Plugins → AI → Registros. Revisa /logs para errores de clasificación en segundo plano, incluidas fallas del endpoint dedicado. Trata el contenido de los registros como sensible: pueden contener texto de publicaciones y respuestas del modelo. Elimina credenciales y contenido privado antes de compartir diagnósticos.

Recursos adicionales

10 Me gusta

Una publicación se fusionó en un tema existente: Problemas con el relleno de sentimiento

Se fusionó una publicación en un tema existente: Problemas con el relleno de sentimiento

Se ha actualizado la publicación principal con un nuevo vídeo que muestra las características actualizadas de Sentiment, que incluyen muchas más emociones y la comprensión de qué temas/publicaciones están asociados con cada emoción.

Configuré el modelo de sentimiento con un model_name, endpoint y api_key copiados de la configuración de LLM, donde pasa la prueba, pero obtengo el siguiente error en /logs.

(¿Pero tal vez no entiendo correctamente, porque por qué el sentimiento no usa uno de los LLM configurados?)

Usando claude-3-5-sonnet.


{"type":"error","error":{"type":"invalid_request_error","message":"anthropic-version: header is required"}} (Net::HTTPBadResponse)
/var/www/discourse/plugins/discourse-ai/lib/inference/hugging_face_text_embeddings.rb:71:in `classify'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:142:in `request_with'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:78:in `block (4 levels) in bulk_classify!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1593:in `evaluate_to'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1776:in `block in on_resolvable'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:359:in `run_task'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:350:in `block (3 levels) in create_worker'

<internal:kernel>:187:in `loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'
Estado: 400

{"type":"error","error":{"type":"invalid_request_error","message":"anthropic-version: header is required"}} (Net::HTTPBadResponse)
/var/www/discourse/plugins/discourse-ai/lib/inference/hugging_face_text_embeddings.rb:71:in `classify'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:142:in `request_wit...

El módulo de sentimiento no utiliza LLM generales, sino modelos específicamente ajustados para la clasificación de sentimientos. Si desea ejecutar esos modelos por su cuenta, se documenta en Autoalojamiento de Sentimiento y Emoción para DiscourseAI

3 Me gusta

@Falco Acabo de notar que el análisis de sentimientos dejó de funcionar a partir de enero de 2025. Mi suposición es que existe esta nueva configuración ai_sentiment_model que, como se explica en el enlace anterior, es para ejecutar tu propio modelo de sentimientos/imagen dedicado. Noté que después de actualizar discourse, ahora ai_sentiment_model_configs está en blanco (¿debería estar en blanco?).Cuando intento ejecutar un rake de backfill, me da un error:

rake ai:sentiment:backfill
rake aborted!
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR:  error de sintaxis cerca de ")" (ActiveRecord::StatementInvalid)
LINE 1: ...e_upload_id", "posts"."outbound_message_id" FROM () as posts..

El plugin utilizaba por defecto un servidor ubicado en DigitalOcean que monté para facilitar las pruebas.

Desde entonces, he cambiado los valores predeterminados del plugin a un estado limpio y las personas que deseen la clasificación de IA deben ejecutar servidores siguiendo la documentación aquí en Meta.

De hecho, pero estábamos pagando ese costo para fines de prueba. No es sostenible ofrecer eso a todos los autoalojadores.

Vale la pena mencionar que ofrecemos este servicio de clasificación en servidores acelerados por GPU como parte de nuestro servicio de alojamiento.

2 Me gusta

Problemas de Análisis de Sentimiento con Discourse AI: Formato de Modelo Hugging Face y Fallo del Endpoint de Azure


Hola Comunidad y Desarrolladores de Discourse,

Estoy experimentando problemas significativos al intentar configurar y utilizar la función de Análisis de Sentimiento dentro del plugin Discourse AI en mi foro. Parece que hay dos problemas distintos que impiden que funcione correctamente.


Problema 1: Desajuste en el Formato de Respuesta del Modelo Hugging Face

He configurado el modelo cardiffnlp/twitter-roberta-base-sentiment de Hugging Face para el análisis de sentimiento. Si bien mi clave API es válida y puedo llamar a la API con éxito desde mi instancia de Discourse usando curl, el plugin Discourse AI parece estar procesando la respuesta incorrectamente debido a un cambio en el formato de salida del modelo de Hugging Face.

Mi comando curl (confirmando clave API válida y nuevo formato):

Bashcurl -X POST https://api-inference.huggingface.co/models/cardiffnlp/twitter-roberta-base-sentiment \ -H "Authorization: Bearer hf_xxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d "{\"inputs\": \"I love Discourse!\"}"

Salida de curl (mostrando el nuevo formato de array anidado):

[[{\"label\":\"LABEL_2\",\"score\":0.9891520738601685},{\"label\":\"LABEL_1\",\"score\":0.009014752693474293},{\"label\":\"LABEL_0\",\"score\":0.0018332178005948663}]]

Problema: El modelo twitter-roberta-base-sentiment solía devolver un único array de hashes de etiqueta-puntuación: [{\"label\": \"LABEL_2\", \"score\": 0.98}, ...]. Sin embargo, ahora devuelve un array anidado: [[{\"label\": \"LABEL_2\", \"score\": 0.98}, ...]].
La lógica de procesamiento codificada del plugin Discourse AI (específicamente, classification["label"][/\d+/].to_i como indica el backtrace) no tiene en cuenta esta capa de array externa. Esto provoca un TypeError cuando intenta acceder a un Símbolo como si fuera un Entero.

Mensaje de Error (de la Excepción del Job):

no implicit conversion of Symbol into Integer (TypeError)
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:163:in block in transform_result’
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:163:in each’
/var/www/discourse/plugin…`

Backtrace Completo para el Problema de Hugging Face:

/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1268:in `raise'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:1268:in `wait_until_resolved!'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/promises.rb:998:in `value!'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:93:in `bulk_classify!'
/var/www/discourse/plugins/discourse-ai/app/jobs/scheduled/sentiment_backfill.rb:27:in `execute'
/var/www/discourse/app/jobs/base.rb:316:in `block (2 levels) in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management/null_instance.rb:49:in `with_connection'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/rails_multisite-6.1.0/lib/rails_multisite/connection_management.rb:21:in `with_connection'
/var/www/discourse/app/jobs/base.rb:303:in `block in perform'
/var/www/discourse/app/jobs/base.rb:299:in `each'
/var/www/discourse/app/jobs/base.rb:299:in `perform'
/var/www/discourse/app/jobs/base.rb:379:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:137:in `process_queue'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:77:in `worker_loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/mini_scheduler-0.18.0/lib/mini_scheduler/manager.rb:63:in `block (2 levels) in ensure_worker_threads'
internal:kernel:187:in `loop'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:341:in `block (2 levels) in create_worker'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `catch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/concurrent-ruby-1.3.5/lib/concurrent-ruby/concurrent/executor/ruby_thread_pool_executor.rb:340:in `block in create_worker'
no implicit conversion of Symbol into Integer (TypeError)
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:163:in `block in transform_result'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:163:in `each'
/var/www/discourse/plugin...

Problema 2: La Configuración del Modelo de Microsoft Azure Conduce a un Error de Hugging Face

Cuando intenté cambiar al modelo de Microsoft Text Analytics dentro de la configuración de Discourse AI, encontré un error de 404 Resource not found, y sorprendentemente, el backtrace todavía apunta a hugging_face_text_embeddings.rb.

Mensaje de Error (de la Excepción del Job):

Job exception: 416 errors
{"error":{"code":"404","message": "Resource not found"}} (Net::HTTPBadResponse)

Fragmento de Backtrace Relevante (apuntando a Hugging Face a pesar de que se selecciona el modelo de Microsoft):

/var/www/discourse/plugins/discourse-ai/lib/inference/hugging_face_text_embeddings.rb:76:in `do_request!'
/var/www/discourse/plugins/discourse-ai/lib/inference/hugging_face_text_embeddings.rb:51:in `classify_by_sentiment!'
/var/www/discourse/plugins/discourse-ai/lib/sentiment/post_classification.rb:156:in `request_with'

Observación: Esto indica que incluso cuando selecciono y configuro el endpoint y la clave API del modelo de Microsoft, el plugin Discourse AI parece estar codificado o enrutando incorrectamente las solicitudes de análisis de sentimiento a través de la lógica o endpoints específicos de Hugging Face. Esto impide que el modelo de Microsoft se utilice en absoluto.


Capturas de Pantalla de la Configuración:

He adjuntado capturas de pantalla de mi configuración de Discourse AI para mostrar la configuración:

  • Configuración detallada para modelos de IA de sentimiento (mostrando modelos Hugging Face y Microsoft) - Probé solo con la configuración del modelo Hugging Face o solo con el modelo de Microsoft con el mismo resultado

Estos problemas hacen que la función de análisis de sentimiento sea efectivamente inutilizable. Parece que el plugin requiere una actualización para manejar el nuevo formato de respuesta de Hugging Face y para enrutar correctamente las solicitudes cuando se configuran diferentes proveedores de sentimiento.

Agradecería cualquier ayuda o guía sobre estos problemas.

¡Gracias!

2 Me gusta

Tengo curiosidad por saber si el informe de sentimiento está funcionando para otros, o si he configurado algo mal. Me gustaría saber qué más necesito comprobar o configurar para habilitar el informe de sentimiento, ya que sigo experimentando el mismo problema.

1 me gusta

Estamos intentando utilizar esta función con Azure AI Language (desde nuestra instancia autoalojada de Discourse), ya que ya estamos utilizando nuestra suscripción de Azure para integrar GPT-4.5 con Discourse (para funcionalidades de resumen y chatbot):

…pero no estamos recibiendo datos en el panel de análisis de sentimientos y podemos ver estos errores en los registros:

Discourse AI: Errores durante la clasificación masiva: No se pudieron clasificar 208 publicaciones (ids de ejemplo: 2256, 909, 2270, 2260, 2797): JSON::ParserError: Una cadena vacía no es una cadena JSON válida.

La traza de la pila muestra que Discourse podría estar intentando usar HuggingFace. ¿Son estos los únicos modelos compatibles en este momento?

Gracias,

N

1 me gusta

Entonces, ¿la única forma de usar esta función es configurar tus propias instancias de los modelos (que necesitan instancias de GPU con muchos recursos que serían costosas)? Esta función parece muy útil, pero parece que me costaría más configurarla que mi alojamiento real de Discourse.

Sí, los modelos compatibles son los que se enumeran en el OP.

Eventualmente agregaremos soporte para clasificar usando LLMs para personas cuyo costo no sea un problema.

Bueno, toda la función se basa en clasificar publicaciones usando modelos de ML, así que sí, necesitas un lugar para ejecutarlos.

Y dado que Discourse puede ejecutarse en el VPS más barato que existe, ejecutar modelos de ML es, de hecho, más caro. Si quieres tener la función de la manera más económica posible, es factible ejecutarla en un servidor con solo un puñado de núcleos de CPU, siempre que tengas suficiente RAM para cargar los modelos.

1 me gusta

Disculpe si esta pregunta ya se ha hecho antes, pero no pude encontrar una referencia a dónde se puede configurar exactamente la puntuación umbral :sweat_smile:

1 me gusta

Desafortunadamente, la puntuación umbral no es algo que los usuarios o administradores puedan configurar. Es un valor específico establecido en la base de código.

1 me gusta