自托管Sentiment 和 Emotion 用于 DiscourseAI

Discourse AI 插件支持对新帖子进行情感/情绪分类请求,这些分类会存储在数据库中,并可用于报告和管理员仪表板。

使用 HuggingFace TEI 运行

HuggingFace 提供了一个很棒的容器镜像,可以帮助您快速运行。

例如:

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

这应该可以让您在本地运行 cardiffnlp/twitter-roberta-base-sentiment-latest 的实例,这是一个可以对帖子进行正面/负面/中性分类的开放模型。
您可以使用以下命令检查它是否正常工作:

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

在正常运行情况下,这应该会返回每个标签的置信度数组。

支持的模型

使其可用于您的 Discourse 实例

大多数情况下,您会因为 GPU 加速而在专用服务器上运行此程序。在这样做时,我建议运行一个反向代理,执行 TLS 终止,并保护端点,使其只能由您的 Discourse 实例连接。

配置 Discourse AI

Discourse AI 包含站点设置,用于配置开源模型的推理服务器。您应该使用 ai_sentiment_model_configs 设置将其指向您的服务器。

之后,通过切换 ai_sentiment_enabled 来启用分类。

2 个赞

有计划支持英语以外的其他语言模型吗?

1 个赞

@Falco 如果有人决定在运行 Discourse 的同一服务器上运行此程序(例如,我们有一个只有几千个帖子的非常小的部署),您能否更新说明以概述:

  1. Discourse 如何与 HuggingFace TEI 容器映像的本地实例集成
  2. 运行上述程序所需的额外 RAM/磁盘量(例如,如果基础 Discourse 在 2GB RAM 和 20GB 磁盘上运行)

我已经设置了一个新的自托管 Discourse 实例,并正在尝试设置情感分析。这是我的 ai_sentiment_model_configs

模型名称 cardiffnlp/twitter-roberta-base-sentiment-latest
端点 https://my_own_instance
api_key [空白]

它在某种程度上奏效了,我得到了情感条形图。

但是,“情绪”表是空的。这份文档看起来不完整,或者措辞不当,我无法理解需要做什么。

我需要运行另一个 Docker 容器,使用不同的模型 ID(roberta-base-go_emotions?),还是其他什么?我需要做什么才能让“情绪”表填满?

如果可能的话,我更愿意自托管这些服务。如果有人能给我指明方向,我将不胜感激。

对于情绪,您还需要运行

3 个赞

谢谢。所以我只需运行第二个 Docker 容器并进行一些调整,如下所示:

mkd ir -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

并在 ai_sentiment_model_configs 中添加一个新条目,现在一切都正常了。谢谢。 :slight_smile:

1 个赞

我一头撞上了一堵砖墙,完全不知道自己在做什么,试图在没有 GPU 的 EC2 实例上运行这个。至少以我极其有限的能力和理解,试图用仅 CPU 的实例来做这件事意味着比我能理解的要多得多的配置工作。ghcr.io/huggingface/text-embeddings-inferencecpu 版本拒绝加载我提供的两个模型中的任何一个;Claude 和 GPT5 都告诉我需要使用一堆 Python 工具将它们转换为 ONNX 模型,而我就是在这里放弃的。

(也有可能是我太笨了,错过了一个显而易见的步骤!)

我们计划的一件事是允许 LLM 进行情感分析

这样您就可以接入像 Gemini Flash 2.5(甚至 Nano)这样便宜的模型,并将其用于情感分析。

6 个赞

我们正尝试将此功能与 Azure AI 语言(从我们自托管的 Discourse 实例)一起使用——因为我们已经在将 Azure 订阅用于将 GPT-4.5 与 Discourse 集成(用于摘要和聊天机器人功能):

  • 但我们在情绪仪表板中没有获得任何数据,并且在日志中可以看到这些错误:

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.

堆栈跟踪显示 Discourse 可能正在尝试使用 HuggingFace——目前只支持这些模型吗?

谢谢,

N

我们有一个非常具体的实现,我们正在考虑如何使其更加通用

我对让大型语言模型返回结构化的情感输出持乐观态度,因为它为那里提供了许多选择,而且我认为,作为一种趋势,“超特定”API正被大型语言模型提供的“超通用”API所取代。

1 个赞

有没有简单的方法可以在不设置自己的实例来进行情感分类的情况下,在自托管的 WordPress 上运行此程序?

谢谢 Sam——那太好了。在此期间,我们将研究在 Azure VM 上运行一个受支持的 HuggingFace 模型……