Auto-hébergement de l'analyse du sentiment et des émotions pour DiscourseAI

Le plugin Discourse AI prend en charge la demande de classification des émotions/sentiments des nouveaux messages, qui est stockée dans la base de données et peut être utilisée dans les rapports et les tableaux de bord d’administration.

Exécution avec HuggingFace TEI

HuggingFace fournit une image de conteneur impressionnante qui peut vous permettre de démarrer rapidement.

Par exemple :

mkdir -p /opt/tei-cache
docker run --rm --gpus all --shm-size 1g -p 8081:80 \
  -v /opt/tei-cache:/data \
  ghcr.io/huggingface/text-embeddings-inference:latest \
  --model-id cardiffnlp/twitter-roberta-base-sentiment-latest \
  --revision refs/pr/30

Cela devrait vous permettre de démarrer rapidement avec une instance locale de ‘cardiffnlp/twitter-roberta-base-sentiment-latest’, un modèle ouvert capable de classifier les messages en positif/négatif/neutre.
Vous pouvez vérifier si cela fonctionne avec

curl http://localhost:8081/ \
    -X POST \
    -H 'Content-Type: application/json' \
    "{ \"inputs\": \"I am happy\" }"

Ce qui devrait renvoyer un tableau de confiance pour chaque étiquette en fonctionnement normal.

Modèles pris en charge

Le rendre disponible pour votre instance Discourse

La plupart du temps, vous l’exécuterez sur un serveur dédié en raison de l’accélération GPU. Lorsque vous le faites, je recommande d’exécuter un proxy inverse, de faire la terminaison TLS et de sécuriser le point d’accès afin qu’il ne puisse être connecté que par votre instance Discourse.

Configuration de Discourse AI

Discourse AI inclut des paramètres de site pour configurer le serveur d’inférence pour les modèles open-source. Vous devriez le pointer vers votre serveur en utilisant le paramètre ai_sentiment_model_configs.

Après cela, activez la classification en activant ai_sentiment_enabled.

2 « J'aime »

Des projets sont-ils prévus pour prendre en charge d’autres modèles dans des langues autres que l’anglais ?

1 « J'aime »

@Falco si l’on décide d’exécuter ceci sur le même serveur qui exécute Discourse (par exemple, nous avons un déploiement très petit avec quelques milliers de publications), pourriez-vous mettre à jour les instructions pour décrire :

  1. Comment Discourse peut s’intégrer à une instance locale de l’image conteneur HuggingFace TEI
  2. Suggestions sur la quantité de RAM/disque supplémentaire nécessaire pour exécuter ce qui précède (par exemple, si la base Discourse fonctionne sur 2 Go de RAM avec 20 Go de disque)

J’ai donc configuré une nouvelle instance Discourse auto-hébergée et j’essaie de configurer les sentiments. Voici mes ai_sentiment_model_configs :

Clé Valeur
nom du modèle cardiffnlp/twitter-roberta-base-sentiment-latest
point de terminaison https://my_own_instance
clé api [vide]

Et cela fonctionne, en quelque sorte, j’obtiens le graphique à barres des sentiments.

Cependant, le tableau des émotions est vide. Ce document semble incomplet, ou mal formulé pour que je comprenne ce qui doit être fait.

Dois-je exécuter un autre conteneur Docker, avec un identifiant de modèle différent (roberta-base-go_emotions ?), ou autre chose ? Que dois-je faire pour que ce tableau des émotions soit rempli ?

Je préférerais auto-héberger ces services si possible. Merci d’avance si quelqu’un peut m’indiquer la bonne direction.

Pour les émotions, vous devez également exécuter

aussi.

3 « J'aime »

Merci. Je lance donc un deuxième conteneur Docker avec quelques ajustements, comme ceci :

mkidr -p /opt/tei-cache2
docker run --detach --rm --gpus all --shm-size 1g -p 8082:80 \
  -v /opt/tei-cache2:/data \
  ghcr.io/huggingface/text-embeddings-inference:latest \
  --model-id SamLowe/roberta-base-go_emotions

et j’ajoute une nouvelle entrée dans ai_sentiment_model_configs et tout fonctionne maintenant. Merci. :slight_smile:

1 « J'aime »

J’ai foncé tête baissée dans un mur de briques de ne pas savoir ce que je faisais en essayant de faire fonctionner cela sur une instance EC2 sans GPU. Du moins, au mieux de mes capacités et de ma compréhension extrêmement limitées, essayer de faire cela avec une instance uniquement sur CPU signifie beaucoup plus de travail de configuration que je ne peux comprendre. Les versions cpu de ghcr.io/huggingface/text-embeddings-inference refusent de charger l’un ou l’autre des deux modèles d’écoute ; Claude et GPT5 me disent tous deux que je dois les convertir en modèles ONNX avec une série d’outils Python, et c’est là que j’ai abandonné.

(Il est aussi très possible que je sois juste bête et que je manque une étape évidente !)

Une chose que nous prévoyons est de permettre aux LLM d’agir comme analyse de sentiments

De cette façon, vous pouvez connecter un modèle peu coûteux comme Gemini Flash 2.5 (ou même nano) et l’utiliser pour l’analyse des sentiments.

6 « J'aime »

Nous essayons d’utiliser cette fonctionnalité avec Azure AI Language (depuis notre instance Discourse auto-hébergée) - car nous utilisons déjà notre abonnement Azure pour intégrer GPT-4.5 à Discourse (pour la fonctionnalité de résumé et de chatbot) :

  • mais nous n’obtenons aucune donnée dans le tableau de bord de sentiment, et nous pouvons voir ces erreurs dans les journaux :

Discourse AI : Erreurs lors de la classification en bloc : Échec de la classification de 208 messages (exemples d'ids : 2256, 909, 2270, 2260, 2797) : JSON::ParserError : Une chaîne vide n'est pas une chaîne JSON valide.

La trace montre que Discourse essaie peut-être d’utiliser HuggingFace - sont-ce les seuls modèles pris en charge pour le moment ?

Merci,

N

Oui, nous avons une implémentation très spécifique, nous réfléchissons à la manière de la rendre plus générique.

Je suis optimiste quant au fait de laisser simplement les LLM retourner une sortie structurée pour le sentiment, car cela ouvre la porte à de nombreuses options et je pense qu’en tant que tendance, les API “hyper spécifiques” sont remplacées par des API “hyper générales” que les LLM fournissent.

1 « J'aime »

Existe-t-il un moyen simple de faire fonctionner cela sur WP auto-hébergé sans configurer votre propre instance pour la classification des sentiments ?

Merci Sam, ce serait formidable. Entre-temps, nous étudierons la possibilité d’exécuter l’un des modèles HuggingFace pris en charge sur une machine virtuelle Azure…