الاستضافة الذاتية للمشاعر والعواطف لـ DiscourseAI

يحتوي المكون الإضافي Discourse AI على دعم لطلب تصنيف المشاعر/العواطف للمشاركات الجديدة، والذي يتم تخزينه في قاعدة البيانات ويمكن استخدامه في التقارير ولوحات معلومات المسؤول.

يدعم Discourse AI نوعين من التصنيف، يتطلب كل منهما نموذجًا خاصًا به:

  • المشاعر (Sentiment) - يصنف المشاركات على أنها إيجابية أو سلبية أو محايدة (باستخدام cardiffnlp/twitter-roberta-base-sentiment-latest)
  • العواطف (Emotion) - يصنف المشاركات عبر 28 تسمية عاطفية مثل الفرح والغضب والدهشة وما إلى ذلك (باستخدام SamLowe/roberta-base-go_emotions)

للحصول على بيانات المشاعر والعواطف في لوحات المعلومات الخاصة بك، تحتاج إلى تشغيل كلا النموذجين (both).

التشغيل باستخدام 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

يجب أن يؤدي هذا إلى تشغيل نسخة محلية من 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

النماذج المدعومة

جعلها متاحة لمثيل Discourse الخاص بك

في معظم الحالات، ستقوم بتشغيل هذا على خادم مخصص بسبب تسريع وحدة معالجة الرسومات (GPU). عند القيام بذلك، أوصي بتشغيل وكيل عكسي، وإجراء إنهاء TLS، وتأمين نقطة النهاية بحيث يمكن لمثيل Discourse الخاص بك فقط الاتصال بها.

تكوين Discourse AI

يتضمن Discourse AI إعدادات موقع لتكوين خادم الاستدلال للنماذج مفتوحة المصدر. يجب أن تشير إليه باستخدام الإعداد ai_sentiment_model_configs.

يقبل هذا الإعداد مصفوفة JSON من تكوينات النموذج. يتطلب كل إدخال:

الحقل الوصف
model_name مُعرّف نموذج HuggingFace (على سبيل المثال cardiffnlp/twitter-roberta-base-sentiment-latest)
endpoint عنوان URL لمثيل TEI الخاص بك (على سبيل المثال https://your-server:8081)
api_key مفتاح API لنقطة النهاية (يمكن تركه فارغًا إذا لم يكن مطلوبًا)

للحصول على لوحات معلومات المشاعر والعواطف، أضف إدخالًا لكل نموذج تقوم بتشغيله. على سبيل المثال، إذا كنت تقوم بتشغيل كلا النموذجين محليًا:

  • الإدخال 1: model_name cardiffnlp/twitter-roberta-base-sentiment-latest، endpoint https://your-server:8081
  • الإدخال 2: model_name SamLowe/roberta-base-go_emotions، endpoint https://your-server:8082

بعد ذلك، قم بتمكين التصنيف عن طريق تبديل ai_sentiment_enabled.

3 إعجابات

هل هناك خطط لدعم نماذج أخرى بلغات غير اللغة الإنجليزية؟

إعجاب واحد (1)

@Falco إذا قرر أحد تشغيل هذا على نفس الخادم الذي يشغل discourse (على سبيل المثال، لدينا نشر صغير جدًا ببضع آلاف من المشاركات)، هل يمكنك تحديث التعليمات لتوضح

  1. كيف يمكن ل discourse الاندماج مع نسخة محلية من صورة الحاوية HuggingFace TEI
  2. اقتراحات حول مقدار الذاكرة العشوائية/القرص الإضافي المطلوب لتشغيل ما سبق (على سبيل المثال، إذا كانت النسخة الأساسية من Discourse تعمل بذاكرة RAM 2GB و20GB من القرص)

لقد قمت بإعداد مثيل Discourse جديد مستضاف ذاتيًا وأحاول إعداد المشاعر. هذه هي إعدادات ai_sentiment_model_configs الخاصة بي -

المفتاح القيمة
اسم النموذج cardiffnlp/twitter-roberta-base-sentiment-latest
نقطة النهاية https://my_own_instance
مفتاح API [فارغ]

وهي تعمل، نوعًا ما، أحصل على الرسم البياني الشريطي للمشاعر.

ومع ذلك، فإن جدول المشاعر فارغ. تبدو هذه الوثيقة غير مكتملة، أو صياغتها سيئة بالنسبة لي لفهم ما يجب القيام به.

هل أقوم بتشغيل حاوية Docker أخرى، بمعرف نموذج مختلف (roberta-base-go_emotions؟)، أو شيء آخر؟ ماذا أحتاج أن أفعل لملء جدول المشاعر هذا؟

أفضل استضافة هذه الخدمات ذاتيًا إذا أمكن. شكرًا مقدمًا إذا كان بإمكان أي شخص توجيهي في الاتجاه الصحيح.

بالنسبة للمشاعر، تحتاج إلى تشغيل

أيضًا.

3 إعجابات

شكراً لك. لذا، سأقوم بتشغيل حاوية دوكر ثانية مع بعض التعديلات، كالتالي:

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

وإضافة إدخال جديد في ai_sentiment_model_configs وكل شيء يعمل الآن. شكراً لك. :slight_smile:

إعجاب واحد (1)

اصطدمتُ بوجهي بجدار من الطوب من عدم معرفتي بما أفعله لمحاولة تشغيل هذا على مثيل EC2 بدون وحدة معالجة رسومات. على الأقل إلى أقصى حدود قدراتي وفهمي المحدود للغاية هنا، فإن محاولة القيام بذلك مع مثيل يعتمد على وحدة المعالجة المركزية فقط يعني المزيد من أعمال التكوين التي لا يمكنني فهمها. إصدارات cpu من ghcr.io/huggingface/text-embeddings-inference ترفض تحميل أي من نموذجي الاستماع؛ يخبرني كل من Claude و GPT5 أنني بحاجة إلى تحويلهما إلى نماذج ONNX باستخدام مجموعة من أدوات بايثون، وهذا هو المكان الذي انسحبت فيه.

(من الممكن جدًا أيضًا أنني غبي وأفتقد خطوة واضحة!)

أحد الأشياء التي نخطط لها هو السماح لنماذج اللغة الكبيرة (LLMs) بالعمل كتحليل للمشاعر

بهذه الطريقة يمكنك توصيل نموذج رخيص مثل Gemini Flash 2.5 (أو حتى nano) واستخدامه لتحليل المشاعر.

6 إعجابات

نحن نحاول استخدام هذه الميزة مع Azure AI Language (من مثيل 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

نعم، لدينا تطبيق محدد جدًا، ونفكر في كيفية جعله أكثر عمومية

أنا متفائل بشأن مجرد السماح لنماذج اللغة الكبيرة بإرجاع مخرجات منظمة للمشاعر، لأن ذلك يفتح الأبواب أمام العديد من الخيارات هناك وأشعر أنه كاتجاه، يتم استبدال واجهات برمجة التطبيقات “المحددة للغاية” بواجهات برمجة التطبيقات “العامة للغاية” التي توفرها نماذج اللغة الكبيرة.

3 إعجابات

هل هناك طريقة مباشرة لتشغيل هذا على ووردبريس مستضاف ذاتيًا دون إعداد مثيل خاص بك لتصنيف المشاعر؟

شكراً سام - سيكون ذلك رائعاً. في غضون ذلك، سنتحقق من تشغيل أحد نماذج HuggingFace المدعومة على جهاز Azure افتراضي…