O plugin Discourse AI tem suporte para solicitar a classificação de emoção/sentimento de novas postagens, que é armazenada no banco de dados e pode ser usada em relatórios e painéis de administração.
O Discourse AI suporta dois tipos de classificação, cada um exigindo seu próprio modelo:
- Sentimento — classifica as postagens como positivas, negativas ou neutras (usando
cardiffnlp/twitter-roberta-base-sentiment-latest) - Emoção — classifica as postagens em 28 rótulos de emoção como alegria, raiva, surpresa, etc. (usando
SamLowe/roberta-base-go_emotions)
Para obter dados de sentimento e emoção em seus painéis, você precisa executar ambos os modelos.
Executando com HuggingFace TEI
O HuggingFace fornece uma imagem de contêiner impressionante que pode colocá-lo em funcionamento rapidamente.
Modelo de Sentimento
mkdir -p /opt/tei-sentiment-cache
docker run --rm --gpus all --shm-size 1g -p 8081:80 \
-v /opt/tei-sentiment-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id cardiffnlp/twitter-roberta-base-sentiment-latest
Isso deve colocá-lo em funcionamento com uma instância local de cardiffnlp/twitter-roberta-base-sentiment-latest, um modelo aberto que pode classificar postagens em positivo/negativo/neutro.
Você pode verificar se está funcionando com
curl http://localhost:8081/ \
-X POST \
-H 'Content-Type: application/json' \
-d "{ \"inputs\": \"I am happy\" }"
O que deve retornar um array de confiança para cada rótulo sob operação normal.
Modelo de Emoção
Para obter também a classificação de emoção, execute um segundo contêiner com o modelo de emoção:
mkdir -p /opt/tei-emotion-cache
docker run --rm --gpus all --shm-size 1g -p 8082:80 \
-v /opt/tei-emotion-cache:/data \
ghcr.io/huggingface/text-embeddings-inference:latest \
--model-id SamLowe/roberta-base-go_emotions
Modelos Suportados
- cardiffnlp/twitter-roberta-base-sentiment-latest · Hugging Face — sentimento (positivo/negativo/neutro)
- SamLowe/roberta-base-go_emotions · Hugging Face — emoção (28 rótulos de emoção)
Disponibilizando para sua instância Discourse
Na maioria das vezes, você estará executando isso em um servidor dedicado devido à aceleração da GPU. Ao fazer isso, recomendo executar um proxy reverso, fazendo terminação TLS e protegendo o endpoint para que ele só possa ser conectado pela sua instância Discourse.
Configurando o Discourse AI
O Discourse AI inclui configurações de site para configurar o servidor de inferência para modelos de código aberto. Você deve apontá-lo para o seu servidor usando a configuração ai_sentiment_model_configs.
Esta configuração aceita um array JSON de configurações de modelo. Cada entrada requer:
| Campo | Descrição |
|---|---|
model_name |
O ID do modelo HuggingFace (exemplo: cardiffnlp/twitter-roberta-base-sentiment-latest) |
endpoint |
O URL da sua instância TEI (exemplo: https://seu-servidor:8081) |
api_key |
Chave de API para o endpoint (pode ser deixado em branco se não for necessário) |
Para obter painéis de sentimento e emoção, adicione uma entrada para cada modelo que você está executando. Por exemplo, se você estiver executando ambos os modelos localmente:
- Entrada 1: model_name
cardiffnlp/twitter-roberta-base-sentiment-latest, endpointhttps://seu-servidor:8081 - Entrada 2: model_name
SamLowe/roberta-base-go_emotions, endpointhttps://seu-servidor:8082
Depois disso, ative a classificação alternando ai_sentiment_enabled.
