Discourse AI - Sentimento

:bookmark: Este guia explica como configurar a classificação de sentimento e emoção no Discourse AI e usar os relatórios para explorar as publicações da sua comunidade.

:person_raising_hand: Nível de usuário necessário: Administrador para configurar; administrador ou moderador para visualizar relatórios.

A classificação de sentimento e emoção ajuda a explorar padrões nas discussões da sua comunidade:

  • Sentimento classifica as publicações como positivas, neutras ou negativas.
  • Emoção atribui pontuações em 28 categorias, incluindo gratidão, curiosidade, raiva e tristeza.

Esses são recursos separados. Você pode ativar um, ambos ou escolher um backend de classificação diferente para cada um. Os relatórios contam publicações classificadas, não pessoas únicas ou tipos de personalidade. Use-os para encontrar discussões que valem a leitura, não como substituto para entender o contexto delas.

Antes de começar

Você precisa ter o Discourse AI ativado através de discourse_ai_enabled e um backend de classificação configurado.

Hospedado pelo Discourse? Seu site pode já ter endpoints de classificação dedicados provisionados. Verifique a configuração existente antes de alterá-la. Entre em contato com team@discourse.org se precisar de ajuda com disponibilidade, configuração de endpoint ou limites de histórico.

Auto-hospedado? Configure um endpoint dedicado compatível, um agente de IA com um modelo de linguagem ou um modelo de decisão. Ativar o recurso sozinho não fornece um serviço de inferência.

Revise a política de privacidade do seu provedor, as regras de retenção e os custos antes de ativar o processamento automático. A classificação envia o texto da publicação para o backend selecionado. As capturas de tela abaixo usam publicações inventadas em um site de testes e um modelo de decisão; elas não recomendam esse provedor para conteúdo privado da comunidade.

Configurar sentimento e emoção

  1. Abra Admin → Plugins → AI → Recursos.
  2. Abra “Sentimento e emoção”.
  3. Em “Sentimento”, selecione “Ativado” se você quiser classificação positiva, neutra e negativa. Isso controla ai_sentiment_enabled.
  4. Escolha o “Backend” correspondente e configure o endpoint, agente ou modelo correspondente conforme descrito abaixo.
  5. Em “Emoção”, selecione “Ativado” se você quiser classificação de emoção. Isso controla ai_sentiment_emotion_enabled.
  6. Escolha o backend correspondente e configure-o independentemente.
  7. Defina os limites de processamento em segundo plano descritos na próxima seção.
  8. Clique em “Enviar” e verifique se suas seleções foram salvas.

Este exemplo usa um modelo de decisão para ambos os recursos. “Publicações por hora” está definido intencionalmente como 0 para pausar a varredura automática durante os testes. Use um valor positivo para processar publicações novas e históricas automaticamente.

Usar endpoints de classificação dedicados

Escolha “Endpoint de classificação dedicado” para cada recurso que você deseja executar com um modelo dedicado. Siga “Configurar endpoints de classificação dedicados” para a configuração ai_sentiment_model_configs.

Os modelos dedicados de referência são:

Recurso Modelo
Sentimento cardiffnlp/twitter-roberta-base-sentiment-latest
Emoção SamLowe/roberta-base-go_emotions

Cada entrada de configuração identifica seu classification_type (sentiment ou emotion), model_name, endpoint e api_key. Forneça uma entrada separada para cada classificador dedicado que você usar. Mantenha as credenciais privadas; não as inclua em posts de suporte ou capturas de tela.

Veja Self-hosting sentiment and emotion for Discourse AI para a implantação do servidor de inferência. Ative e selecione cada recurso separadamente usando os controles acima.

O backend dedicado espera uma API de classificação compatível. Copiar um endpoint da Anthropic, OpenAI chat ou Azure Language nesta configuração não o torna compatível. Um teste de conexão bem-sucedido para um modelo de linguagem em outro lugar do Discourse não testa um endpoint dedicado de sentimento.

Usar um agente de IA ou modelo de decisão

Para “Agente LLM”, selecione um agente de classificador apropriado com um modelo de linguagem configurado. O Discourse inclui agentes classificadores de sentimento e emoção. Um agente conversacional geral não é substituto para um agente configurado para retornar as pontuações de rótulo esperadas.

Para “Modelo de decisão”, primeiro configure e teste um modelo de decisão compatível, em seguida, selecione-o para cada recurso ativado. Um modelo de decisão não requer um modelo de linguagem conversacional separado para esta classificação.

As solicitações do agente e do modelo de decisão podem incorrer em cobranças do provedor ou consumir créditos. Revise as regras de manuseio de dados do modelo selecionado antes de atribuí-lo a um recurso processado automaticamente.

Controlar o processamento e a cobertura histórica

Um trabalho agendado verifica se há publicações com classificações ausentes a cada cinco minutos. Publicações novas e históricas compartilham esta varredura; os resultados não estão necessariamente disponíveis imediatamente após a publicação. Não há um número mínimo de publicações ou dias antes que os dados possam aparecer: uma única publicação classificada com sucesso pode contribuir.

Controle Configuração do site Padrão Efeito
Publicações por hora ai_sentiment_backfill_maximum_posts_per_hour 240 Número aproximado de publicações processadas por hora. 0 para a varredura agendada, incluindo novas publicações.
Limite de idade da publicação, em dias ai_sentiment_backfill_post_max_age_days 60 Varre publicações criadas dentro desta janela de idade. 0 significa hoje, não histórico ilimitado.

Aumente o limite de idade para incluir publicações mais antigas. O trabalho agendado processa os resultados ausentes ao longo do tempo; selecionar uma faixa de data de relatório mais antiga não classifica essa história por si só.

A taxa é aproximada, não um limite exato de solicitações ou gastos. Ativar ambos os classificadores pode fazer duas solicitações por publicação. Solicitações com falha ou recusas podem ser repetidas. Publicações editadas são verificadas separadamente e não são controladas pela taxa ou limites de idade da varredura agendada.

Mensagens privadas, publicações excluídas, tópicos excluídos e tipos de publicação não regulares são excluídos da varredura de histórico agendada. A exclusão de MP no scanner e nos relatórios não é uma garantia para todos os caminhos de classificação: o trabalho de publicações editadas não aplica o mesmo filtro de MP. Leve isso em conta antes de configurar um provedor externo.

Explorar sentimento por categoria ou tag

  1. Abra Admin → Relatórios → Análise de sentimento, ou visite /admin/reports/sentiment_analysis no seu site.
  2. Selecione as datas de início e fim.
  3. Escolha “Categoria” ou “Tag” para agrupar os resultados.
  4. Use o filtro de categoria ou tag correspondente para refinar os resultados. O filtro de categoria também fornece uma opção para incluir subcategorias.
  5. Leia o total de cada grupo e sua divisão positiva, negativa e neutra.
  6. Clique na linha de um grupo para inspecionar seu gráfico e as publicações subjacentes.

O exemplo contém nove publicações classificadas: três positivas, três negativas e três neutras. Publicações neutras estão incluídas neste relatório.

Na visão de detalhes:

  • Selecione “Todas”, “Positivas”, “Neutras” ou “Negativas” para filtrar as publicações carregadas.
  • Abra o tópico de uma publicação para ler a discussão ao redor.
  • Use o ícone de link ao lado do gráfico para copiar a URL para aquela visão de relatório. Os destinatários ainda precisam de acesso da equipe.
  • Clique em “Voltar” para retornar aos resultados agrupados.

As datas dos relatórios referem-se a quando as publicações foram criadas, não quando a classificação foi executada. Uma publicação pode contribuir para múltiplos grupos de tags se seu tópico tiver múltiplas tags, então adicionar totais de tags pode contar a mesma publicação mais de uma vez.

Ler a tendência geral de sentimento

Abra o relatório “Sentimento geral” de Admin → Relatórios, ou visite /admin/reports/overall_sentiment.

A pontuação é:

Número de publicações positivas − número de publicações negativas

Uma pontuação positiva ou negativa deve ser maior que 0,6 para que a publicação conte naquele grupo. Se nenhum dos dois exceder o limite, o relatório agrupado trata a publicação como neutra. O limite é fixo; não há configuração do site para alterá-lo.

O sentimento geral é uma contagem líquida de publicações, não uma probabilidade média ou porcentagem de felicidade. Três publicações positivas e três negativas produzem uma pontuação geral de 0, independentemente de quantas publicações neutras existam. Inspecione a divisão agrupada e as discussões subjacentes antes de interpretar uma tendência plana como uma ausência de opiniões fortes.

Explorar emoções

Cada emoção tem um relatório sob Admin → Relatórios. Por exemplo, visite /admin/reports/emotion_anger para “Raiva” ou /admin/reports/emotion_curiosity para “Curiosidade”. Escolha uma faixa de datas e agrupamento diário, semanal ou mensal para explorar a tendência.

Um relatório de emoção conta publicações cuja pontuação para aquele rótulo é maior que 0,1. Este limite também é fixo. Mais de uma emoção pode se qualificar para a mesma publicação, então os totais de emoção não são mutuamente exclusivos.

Você também pode filtrar tópicos por uma emoção. Visite /filter?q=order:emotion_anger para encontrar tópicos correspondentes, classificados pelo número de publicações qualificadas de raiva classificada, em vez de pela pontuação média de emoção. Use order:emotion_anger-asc para inverter a ordem. Sem um filtro activity-after:, essa ordem conta publicações qualificadas do último ano. As permissões normais de acesso à lista de tópicos ainda se aplicam.

Rótulos de emoção disponíveis

Admiração, diversão, raiva, irritação, aprovação, cuidado, confusão, curiosidade, desejo, decepção, desaprovação, nojo, vergonha, excitação, medo, gratidão, luto, alegria, amor, nervosismo, neutro, otimismo, orgulho, compreensão, alívio, remorso, tristeza e surpresa.

Entender as limitações

  • A classificação depende do modelo. Sarcasmo, material citado, linguagem especializada e discussões multilíngues podem ser mal interpretados. A cobertura e a precisão linguística dependem do modelo escolhido. Pontuações de backends diferentes não estão necessariamente calibradas igualmente.
  • Os relatórios só cobrem resultados armazenados. Um recurso ativado sem um backend funcional, processamento pausado ou cobertura histórica insuficiente pode produzir relatórios vazios ou incompletos.
  • As classificações existentes são reutilizadas. Editar uma publicação classificada não substitui automaticamente seus resultados. Alterar o agente ou modelo de decisão selecionado dentro do mesmo backend também não reclassifica os resultados existentes.
  • Alterar o backend altera a fonte de resultados do relatório. Resultados antigos não são convertidos para o backend selecionado. Relatórios podem parecer vazios enquanto as classificações ausentes são processadas.
  • Os relatórios excluem mensagens privadas. Esta exclusão de relatório é separada da limitação de processamento de dados descrita acima.

Solucionar problemas de resultados ausentes ou inesperados

Problema O que verificar
Sem resultados após ativar Confirme se o recurso relevante está ativado, seu backend está configurado, “Publicações por hora” é positivo e os trabalhos em segundo plano estão sendo executados. Permita tempo para a varredura de cinco minutos e a fila de processamento.
Sentimento funciona, mas emoção está vazio Ative e configure “Emoção” separadamente. Um endpoint dedicado apenas de sentimento não fornece classificações de emoção.
Datas antigas não têm resultados Aumente o limite de idade da publicação, permita tempo de processamento e verifique se a faixa do relatório inclui as datas de criação das publicações.
Endpoint dedicado retorna erro Verifique sua URL, credenciais, modelo e formato de resposta. O adaptador espera um array plano de rótulos e pontuações, com rótulos de sentimento como positive, neutral e negative, não respostas de chat arbitrárias ou rótulos do estilo LABEL_0.
Endpoint de rede privada não pode ser alcançado Verifique a conectividade e, onde necessário, adicione apenas o nome do host ou IP do endpoint de inferência confiável em allowed_internal_hosts. Não desative amplamente as proteções contra falsificação de solicitações do lado do servidor.
Resultados não mudam após edição ou seleção de modelo Resultados existentes são reutilizados. Não presuma que editar conteúdo ou salvar outro modelo agenda uma reclassificação completa.
Um filtro mostra menos publicações que sua contagem A contagem descreve o grupo inteiro, enquanto as abas de sentimento filtram as publicações carregadas. Verifique se há mais resultados para carregar e abra os tópicos originais ao investigar discrepâncias.

Administradores podem revisar registros de solicitações de agente e modelo de decisão em Admin → Plugins → AI → Logs. Verifique /logs para erros de classificação em segundo plano, incluindo falhas de endpoint dedicado. Trate o conteúdo dos logs como sensível: eles podem conter texto da publicação e respostas do modelo. Remova credenciais e conteúdo privado antes de compartilhar diagnósticos.

Recursos adicionais

10 Curtiram

Uma postagem foi mesclada em um tópico existente: Problemas com o preenchimento de sentimento

Uma postagem foi mesclada em um tópico existente: Problemas com o preenchimento de sentimento

O OP foi atualizado com um novo vídeo mostrando os recursos atualizados do Sentiment, incluindo muito mais emoções e a compreensão de quais tópicos/postagens estão associados a cada emoção.

Configurei a configuração do modelo de sentimento com um model_name, endpoint e api_key copiados das configurações do LLM, onde passa no teste, mas recebo o erro abaixo em /logs.

(Mas talvez eu não entenda corretamente, pois por que o sentimento não usa um dos LLMs 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'
Status: 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...

O módulo de sentimento não usa LLMs gerais, mas modelos especificamente ajustados para classificação de sentimento. Se você quiser executar esses modelos por conta própria, isso está documentado em Auto-hospedagem de Sentimento e Emoção para DiscourseAI

3 Curtiram

@Falco Acabei de perceber que o sentiment parou de funcionar a partir de jan de 2025. Meu palpite é que exista essa nova configuração ai_sentiment_model, que, como o link acima explica, serve para rodar seu próprio modelo de sentiment/image dedicado. Notei que, após atualizar o discourse, agora ai_sentiment_model_configs está completamente em branco (deve estar em branco?).

Quando tento executar um rake de backfill, ele me dá um erro:

rake ai:sentiment:backfill
rake abortado!
ActiveRecord::StatementInvalid: PG::SyntaxError: ERRO: erro de sintaxe próximo de ")" (ActiveRecord::StatementInvalid)
LINHA 1: ...e_upload_id", "posts"."outbound_message_id" FROM () as posts..

O plugin usava por padrão um servidor localizado na DigitalOcean que montei para facilitar os testes.

Desde então, alterei os padrões do plugin para uma configuração limpa e as pessoas que desejam classificação de IA precisam executar servidores seguindo a documentação aqui no Meta.

De fato, mas estávamos pagando esse custo para fins de teste. Não é sustentável oferecer isso para todos os auto-hospedeiros.

Vale mencionar que oferecemos este serviço de classificação em servidores acelerados por GPU como parte do nosso serviço de hospedagem.

2 Curtiram

Problemas de Análise de Sentimento com Discourse AI: Formato do Modelo Hugging Face e Falha no Endpoint do Azure


Olá Comunidade Discourse e Desenvolvedores,

Estou encontrando problemas significativos ao tentar configurar e usar o recurso de Análise de Sentimento no plugin Discourse AI no meu fórum. Parece haver dois problemas distintos impedindo que ele funcione corretamente.


Problema 1: Incompatibilidade no Formato da Resposta do Modelo Hugging Face

Configurei o modelo cardiffnlp/twitter-roberta-base-sentiment do Hugging Face para análise de sentimento. Embora minha chave de API seja válida e eu consiga chamar a API com sucesso da minha instância Discourse usando curl, o plugin Discourse AI parece estar analisando a resposta incorretamente devido a uma mudança no formato de saída do modelo Hugging Face.

Meu comando curl (confirmando chave de API válida e novo 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!\"}"

Saída do curl (mostrando o novo formato de array aninhado):

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

Problema: O modelo twitter-roberta-base-sentiment costumava retornar um único array de hashes de rótulo-pontuação: [{"label": "LABEL_2", "score": 0.98}, ...]. No entanto, agora ele retorna um array aninhado: [[{"label": "LABEL_2", "score": 0.98}, ...]].
A lógica de análise codificada do plugin Discourse AI (especificamente, classification["label"][/\d+/].to_i conforme indicado pelo backtrace) não leva em consideração essa camada externa de array. Isso leva a um TypeError quando ele tenta acessar um Símbolo como um Inteiro.

Mensagem de Erro (da Exceção do Job):

nenhuma conversão implícita de Símbolo em Inteiro (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 o Problema 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'
nenhuma conversão implícita de Símbolo em Inteiro (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: Configuração do Modelo Microsoft Azure Leva a Erro Hugging Face

Quando tentei mudar para o modelo Microsoft Text Analytics nas configurações do Discourse AI, encontrei um erro 404 Resource not found e, surpreendentemente, o backtrace ainda aponta para hugging_face_text_embeddings.rb.

Mensagem de Erro (da Exceção do Job):

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

Trecho Relevante do Backtrace (apontando para Hugging Face apesar do modelo Microsoft selecionado):

/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'

Observação: Isso indica que, mesmo quando seleciono e configuro o endpoint e a chave de API do modelo Microsoft, o plugin Discourse AI parece estar codificado ou roteando incorretamente as requisições de análise de sentimento através da lógica ou endpoints específicos do Hugging Face. Isso impede que o modelo Microsoft seja usado.


Capturas de Tela da Configuração:

Anexei capturas de tela das minhas configurações do Discourse AI para mostrar a configuração:

  • Configuração detalhada para modelos de IA de sentimento (mostrando modelos Hugging Face e Microsoft) - Testei apenas com configurações de modelo Hugging Face ou apenas Microsoft com o mesmo resultado

Esses problemas tornam o recurso de análise de sentimento efetivamente inutilizável. Parece que o plugin precisa de uma atualização para lidar com o novo formato de resposta do Hugging Face e para rotear corretamente as requisições quando diferentes provedores de sentimento são configurados.

Qualquer assistência ou orientação sobre esses problemas seria muito apreciada.

Obrigado!

2 Curtiram

Estou curioso para saber se o relatório de sentimento está funcionando para outras pessoas, ou se eu configurei algo incorretamente. Gostaria de saber o que mais preciso verificar ou configurar para habilitar o relatório de sentimento, pois ainda estou enfrentando o mesmo problema.

1 Curtiu

Estamos tentando usar este recurso com o Azure AI Language (de nossa instância auto-hospedada do Discourse) - pois já estamos usando nossa assinatura do Azure para integrar o GPT-4.5 ao Discourse (para funcionalidade de resumo e chatbot):

…mas não estamos recebendo dados no painel de sentimento e podemos ver estes erros nos logs:

Discourse AI: Erros durante a classificação em massa: Falha ao classificar 208 posts (ids de exemplo: 2256, 909, 2270, 2260, 2797) : JSON::ParserError : Uma string vazia não é uma string JSON válida.

O backtrace mostra que o Discourse pode estar tentando usar o HuggingFace - estes são os únicos modelos suportados no momento?

Obrigado,

N

1 Curtiu

Então, a única maneira de usar este recurso é configurar suas próprias instâncias dos modelos (que precisam de instâncias de GPU com uso intensivo de recursos que seriam caras)? Este recurso parece muito útil, mas parece que custaria mais para configurar do que minha hospedagem real do Discourse.

Sim, os modelos suportados são os listados no OP.

Eventualmente, adicionaremos suporte para classificar usando LLMs para pessoas cujo custo não é um problema.

Bem, todo o recurso é construído em torno da classificação de posts usando modelos de ML, então sim, você precisa de um lugar para executá-los.

E como o Discourse pode rodar no VPS mais barato que existe, rodar modelos de ML é de fato mais caro. Se você quiser ter o recurso da maneira mais barata possível, é possível executá-lo em um servidor com apenas um punhado de núcleos de CPU, desde que você tenha RAM suficiente para carregar os modelos.

1 Curtiu

Desculpe se esta pergunta já foi feita antes, mas não consegui encontrar uma referência de onde exatamente a pontuação de limite pode ser configurada :sweat_smile:

1 Curtiu

Infelizmente, a pontuação limite não é algo configurável por usuários ou administradores. É um valor específico definido na base de código.

1 Curtiu