Discourse AI 插件支持对新帖子进行情绪/情感分类请求,相关数据将存储在数据库中,并可用于报告和管理员仪表板。
Discourse AI 支持两种分类类型,每种类型都需要独立的模型:
- 情感(Sentiment) — 将帖子分类为正面、负面或中性(使用
cardiffnlp/twitter-roberta-base-sentiment-latest) - 情绪(Emotion) — 将帖子分类为 28 种情绪标签,如喜悦、愤怒、惊讶等(使用
SamLowe/roberta-base-go_emotions)
若要在仪表板中同时获取情感和情绪数据,您需要运行两个模型。
使用 HuggingFace TEI 运行
HuggingFace 提供了一个出色的容器镜像,可帮助您快速启动。
情感模型
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 \
--revision refs/pr/30
这将使您快速启动并运行 cardiffnlp/twitter-roberta-base-sentiment-latest 的本地实例,该开源模型可将帖子分类为正面/负面/中性。
您可以通过以下命令检查其是否正常工作:
curl http://localhost:8081/ \
-X POST \
-H 'Content-Type: application/json' \
-d "{ \"inputs\": \"I am happy\" }"
在正常运行情况下,该命令应返回每个标签的置信度数组。
情绪模型
若要同时获取情绪分类,请运行第二个包含情绪模型的容器:
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
支持的模型
- cardiffnlp/twitter-roberta-base-sentiment-latest · Hugging Face — 情感(正面/负面/中性)
- SamLowe/roberta-base-go_emotions · Hugging Face — 情绪(28 种情绪标签)
使其在您的 Discourse 实例中可用
大多数情况下,由于 GPU 加速的需求,您将在专用服务器上运行此服务。在这种情况下,建议您运行反向代理,进行 TLS 终止,并保护该端点,确保仅允许您的 Discourse 实例连接。
配置 Discourse AI
Discourse AI 包含站点设置,用于配置开源模型的推理服务器。您应使用 ai_sentiment_model_configs 设置将其指向您的服务器。
该设置接受一个模型配置的 JSON 数组。每个条目需要以下字段:
| 字段 | 描述 |
|---|---|
model_name |
HuggingFace 模型 ID(例如 cardiffnlp/twitter-roberta-base-sentiment-latest) |
endpoint |
您的 TEI 实例 URL(例如 https://your-server:8081) |
api_key |
端点的 API 密钥(如果不需要可留空) |
若要同时获取情感和情绪仪表板,请为每个正在运行的模型添加一个条目。例如,如果您在本地运行两个模型:
- 条目 1:model_name
cardiffnlp/twitter-roberta-base-sentiment-latest,endpointhttps://your-server:8081 - 条目 2:model_name
SamLowe/roberta-base-go_emotions,endpointhttps://your-server:8082
完成上述步骤后,通过切换 ai_sentiment_enabled 启用分类功能。
