Auto-ospitare sentimenti ed emozioni per DiscourseAI

Il plugin Discourse AI supporta la richiesta di classificazione delle emozioni/sentimenti dei nuovi post, che viene memorizzata nel database e può essere utilizzata in report e dashboard di amministrazione.

Esecuzione con HuggingFace TEI

HuggingFace fornisce un’immagine container eccezionale che ti permette di essere operativo rapidamente.

Ad esempio:

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

Questo dovrebbe permetterti di avviare un’istanza locale di ‘cardiffnlp/twitter-roberta-base-sentiment-latest’, un modello aperto in grado di classificare i post in positivo/negativo/neutro.
Puoi verificare se funziona con

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

Che dovrebbe restituire un array di confidenza per ogni etichetta in condizioni operative normali.

Modelli supportati

Rendilo disponibile per la tua istanza Discourse

Nella maggior parte dei casi, eseguirai questo su un server dedicato a causa dell’accelerazione GPU. Quando lo fai, consiglio di eseguire un reverse proxy, eseguire la terminazione TLS e proteggere l’endpoint in modo che possa essere connesso solo dalla tua istanza Discourse.

Configurazione di Discourse AI

Discourse AI include impostazioni del sito per configurare il server di inferenza per modelli open-source. Dovresti puntarlo al tuo server utilizzando l’impostazione ai_sentiment_model_configs.

Successivamente, abilita la classificazione attivando ai_sentiment_enabled.

2 Mi Piace

Sono previsti piani per supportare altri modelli in lingue diverse dall’inglese?

1 Mi Piace

@Falco se si decide di eseguire questo sullo stesso server che esegue discourse (ad esempio, abbiamo un deployment molto piccolo con qualche migliaio di post), potresti aggiornare le istruzioni per delineare

  1. Come può discourse integrarsi con un’istanza locale dell’immagine container HuggingFace TEI
  2. Suggerimenti su quanta RAM/disco aggiuntivo è necessario per eseguire quanto sopra (ad esempio, se il Discourse di base viene eseguito su 2 GB di RAM con 20 GB di disco)

Ho configurato una nuova istanza Discourse self-hosted e sto cercando di configurare i sentimenti. Queste sono le mie configurazioni del modello di sentimenti ai_sentiment_model_configs -

Chiave Valore
nome del modello cardiffnlp/twitter-roberta-base-sentiment-latest
endpoint https://my_own_instance
api_key [vuoto]

E funziona, più o meno, ottengo il grafico a barre dei sentimenti.

Tuttavia, la tabella delle emozioni è vuota. Questo documento sembra incompleto o formulato male per farmi capire cosa deve essere fatto.

Devo eseguire un altro container Docker, con un ID modello diverso (roberta-base-go_emotions?), o qualcos’altro? Cosa devo fare per far compilare quella tabella delle emozioni?

Preferirei ospitare questi servizi da solo, se possibile. Grazie in anticipo se qualcuno può indicarmi la giusta direzione.

Per le emozioni devi eseguire anche il

.

3 Mi Piace

Grazie. Quindi eseguo semplicemente un secondo container Docker con alcune modifiche, in questo modo:

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

e aggiungo una nuova voce in ai_sentiment_model_configs e ora funziona tutto. Grazie. :slight_smile:

1 Mi Piace

Ho sbattuto la faccia contro un muro di mattoni di non sapere cosa diavolo sto facendo nel cercare di far funzionare questo su un’istanza EC2 senza GPU. Almeno per quanto le mie capacità e comprensione estremamente limitate mi permettono, cercare di farlo con un’istanza solo CPU significa molto più lavoro di configurazione di quanto riesca a capire. Le versioni cpu di ghcr.io/huggingface/text-embeddings-inference rifiutano di caricare entrambi i due modelli di ascolto; Claude e GPT5 mi dicono entrambi che devo convertirli in modelli ONNX con un sacco di strumenti Python, ed è lì che ho detto “no”.

(È anche molto possibile che io sia semplicemente stupido e mi stia perdendo un passaggio ovvio!)

Una cosa che stiamo pianificando è consentire agli LLM di agire come analisi del sentiment

In questo modo puoi collegare un modello economico come Gemini Flash 2.5 (o anche nano) e usarlo per l’analisi del sentiment.

6 Mi Piace

Stiamo cercando di utilizzare questa funzionalità con Azure AI Language (dalla nostra istanza Discourse self-hosted) - poiché stiamo già utilizzando il nostro abbonamento Azure per integrare GPT-4.5 con Discourse (per funzionalità di riepilogo e chatbot):

  • ma non stiamo ottenendo dati nella dashboard del sentiment e possiamo vedere questi errori nei log:

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.

Il backtrace mostra che Discourse potrebbe tentare di utilizzare HuggingFace - sono questi gli unici modelli supportati al momento?

Grazie,

N

Sì, abbiamo un’implementazione molto specifica, stiamo pensando a come renderla più generica.

Sono ottimista riguardo al fatto di lasciare semplicemente che gli LLM restituiscano output strutturati per il sentiment, poiché ciò apre molte opzioni e sento che, come tendenza, le API “iper specifiche” vengono sostituite dalle API “iper generali” che gli LLM forniscono.

1 Mi Piace

Esiste un modo semplice per farlo funzionare su WP self-hosted senza impostare la propria istanza per la classificazione del sentiment?

Grazie Sam, sarebbe fantastico. Nel frattempo, valuteremo l’esecuzione di uno dei modelli HuggingFace supportati su una VM Azure…