Selbst-Hosting von Sentiment und Emotion für DiscourseAI

Das Discourse AI-Plugin unterstützt die Anforderung der Emotions-/Stimmungsklassifizierung neuer Beiträge, die in der Datenbank gespeichert und in Berichten und Admin-Dashboards verwendet werden können.

Ausführung mit HuggingFace TEI

HuggingFace bietet ein hervorragendes Container-Image, mit dem Sie schnell loslegen können.

Zum Beispiel:

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

Damit sollten Sie eine lokale Instanz von ‘cardiffnlp/twitter-roberta-base-sentiment-latest’ eingerichtet haben, ein offenes Modell, das Beiträge in positiv/negativ/neutral klassifizieren kann.
Sie können überprüfen, ob es funktioniert, mit

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

Dies sollte im Normalbetrieb ein Array von Konfidenzen für jedes Label zurückgeben.

Unterstützte Modelle

Bereitstellung für Ihre Discourse-Instanz

Meistens werden Sie dies aufgrund der GPU-Beschleunigung auf einem dedizierten Server ausführen. Dabei empfehle ich, einen Reverse-Proxy zu verwenden, TLS-Terminierung durchzuführen und den Endpunkt abzusichern, sodass nur Ihre Discourse-Instanz darauf zugreifen kann.

Konfiguration von Discourse AI

Discourse AI enthält Site-Einstellungen zur Konfiguration des Inferenzservers für Open-Source-Modelle. Sie sollten ihn mit der Einstellung ai_sentiment_model_configs auf Ihren Server verweisen.

Aktivieren Sie anschließend die Klassifizierung, indem Sie ai_sentiment_enabled umschalten.

2 „Gefällt mir“

Gibt es Pläne, andere Modelle in anderen Sprachen als Englisch zu unterstützen?

1 „Gefällt mir“

[Zitat=“Falco, Beitrag:1, Thema:334451”]
Die meiste Zeit wird dies auf einem dedizierten Server mit GPU-Beschleunigung laufen
[/Zitat]

@Falco, wenn jemand beschließt, dies auf demselben Server auszuführen, auf dem Discourse läuft (z.B. wir haben eine sehr kleine Installation mit einigen Tausend Beiträgen), könntest du die Anweisungen aktualisieren, um aufzuzeigen:

  1. Wie kann Discourse mit einer lokalen Instanz des HuggingFace TEI-Container-Images integriert werden
  2. Vorschläge, wie viel zusätzlicher RAM/Plattenplatz benötigt wird, um das oben genannte auszuführen (z.B. wenn das Basis-Discourse auf 2 GB RAM mit 20 GB Festplatte läuft)

Ich habe eine neue selbst gehostete Discourse-Instanz eingerichtet und versuche, Sentiments einzurichten. Hier sind meine ai_sentiment_model_configs –

Schlüssel Wert
model name cardiffnlp/twitter-roberta-base-sentiment-latest
endpoint https://my_own_instance
api_key [leer]

Und es funktioniert, irgendwie, ich bekomme das Sentiment-Balkendiagramm.

Die Emotionstabelle ist jedoch leer. Dieses Dokument sieht unvollständig oder schlecht formuliert aus, als dass ich begreifen könnte, was getan werden muss.

Soll ich einen weiteren Docker-Container mit einer anderen Modell-ID (roberta-base-go_emotions?) ausführen oder etwas anderes? Was muss ich tun, damit diese Emotionstabelle gefüllt wird?

Ich würde diese Dienste, wenn möglich, gerne selbst hosten. Vielen Dank im Voraus, wenn mir jemand in die richtige Richtung weisen kann.

Für Emotionen müssen Sie auch die

ausführen.

3 „Gefällt mir“

Danke. Ich starte also einfach einen zweiten Docker-Container mit einigen Anpassungen, so:\n\nmkdir -p /opt/tei-cache2\ndocker run --detach --rm --gpus all --shm-size 1g -p 8082:80 \\\n -v /opt/tei-cache2:/data \\\n ghcr.io/huggingface/text-embeddings-inference:latest \\\n --model-id SamLowe/roberta-base-go_emotions\n\nund füge einen neuen Eintrag in ai_sentiment_model_configs hinzu, und jetzt funktioniert alles. Danke. :slight_smile:

1 „Gefällt mir“

Ich bin mit meinem Latein am Ende, was das Arbeiten auf einer EC2-Instanz ohne GPU angeht. Soweit meine extrem begrenzten Fähigkeiten und mein Verständnis reichen, bedeutet die Arbeit mit einer reinen CPU-Instanz mehr Konfigurationsaufwand, als ich verstehen kann. Die cpu-Versionen von ghcr.io/huggingface/text-embeddings-inference weigern sich, eines der beiden Modelle zu laden. Claude und GPT5 sagen mir beide, dass ich sie mit einer Reihe von Python-Tools in ONNX-Modelle konvertieren muss, und da habe ich dann aufgegeben.

(Es ist auch sehr gut möglich, dass ich einfach nur dumm bin und einen offensichtlichen Schritt übersehe!)

Eine Sache, die wir planen, ist, LLMs als Sentiment-Analyse zu ermöglichen.

Auf diese Weise können Sie ein günstiges Modell wie Gemini Flash 2.5 (oder sogar Nano) anschließen und es für die Sentiment-Analyse verwenden.

6 „Gefällt mir“

Wir versuchen, diese Funktion mit Azure AI Language (von unserer selbst gehosteten Discourse-Instanz aus) zu nutzen – da wir bereits unser Azure-Abonnement zur Integration von GPT-4.5 mit Discourse (für Zusammenfassungs- und Chatbot-Funktionalität) verwenden:

– aber wir erhalten keine Daten im Sentiment-Dashboard und sehen diese Fehler in den Protokollen:

Discourse AI: Errors during bulk classification: Failed to classify 208 posts (example ids: 2256, 909, 2270, 2260, 2797) : JSON::ParserError : An empty string is not a valid JSON string.

Der Backtrace zeigt, dass Discourse möglicherweise HuggingFace zu verwenden versucht – sind dies im Moment die einzigen unterstützten Modelle?

Danke,

N

Ja, wir haben eine sehr spezifische Implementierung, wir überlegen, wie wir sie allgemeiner gestalten können.

Ich bin optimistisch, LLMs einfach strukturiertes Output für Sentiment zurückgeben zu lassen, da dies viele Optionen eröffnet und ich das Gefühl habe, dass als Trend „hyper-spezifische“ APIs durch „hyper-generelle“ APIs ersetzt werden, die LLMs bieten.

1 „Gefällt mir“

Gibt es eine einfache Möglichkeit, dies auf selbst gehostetem WP zum Laufen zu bringen, ohne eine eigene Instanz für die Sentiment-Klassifizierung einzurichten?

Danke Sam – das wäre großartig. In der Zwischenzeit werden wir untersuchen, wie wir eines der unterstützten HuggingFace-Modelle auf einer Azure VM ausführen können…