عناصر المراجعة "تحتاج إلى موافقة" من سكربت "تصنيف المشاركات باستخدام الذكاء الاصطناعي" الخاص بإضافة "Automation" غير مرئية للمشرفين

الأولوية/الخطورة:

متوسط

المنصة:

Discourse b66fca70d0e3d12ef930398289fac5269cd240c7

الوصف:

يحتوي المكون الإضافي الرسمي الأتمتة” (Automation) على سكربت “تصنيف المشاركات باستخدام الذكاء الاصطناعي” (Triage posts using AI). يمتلك هذا السكربت خيارًا لوضع علامات على المشاركات.

يمكن تكوين نوع العلامة التي يولدها السكربت (بالإضافة إلى الإجراءات المصاحبة) عبر إعداد “نوع العلامة” (Flag type) الخاص بالسكربت:

  • “إضافة المشاركة إلى قائمة انتظار المراجعة” (Add post to review queue): يتسبب في أن يكون سبب العلامة هو “تحتاج إلى موافقة” (Needs Approval)
  • “وضع علامة كبريد عشوائي” (Flag as spam): يتسبب في أن يكون سبب العلامة هو “بريد عشوائي” (Spam)

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

:bug: عندما يتم تعيين إعداد “نوع العلامة” (Flag type) الخاص بالأتمتة على أحد خيارات “إضافة المشاركة إلى قائمة انتظار المراجعة”، فإن عناصر المراجعة التي تم إنشاؤها بواسطة العلامات التي يثيرها السكربت لا تكون مرئية للمشرفين. سيقع عبء مراجعة هذه العلامات بالكامل على مسؤولي المنتدى، على الرغم من أن هذه مهمة إشرافية.

خطوات التكرار:

  1. سجل الدخول إلى منتدى باستخدام حساب مسؤول.
  2. افتح صفحة إدارة Discourse AI > الشخصيات (Discourse AI > Personas) (/admin/plugins/discourse-ai/ai-personas)
  3. انقر على زر “+ شخصية جديدة” (+ New persona).
    ستفتح صفحة تكوين الشخصية.
  4. أضف محتوى عشوائيًا إلى حقلي “الاسم” (Name) و “الوصف” (Description) في صفحة تكوين الشخصية.
  5. عرّف مطالبة (prompt) في حقل “المطالبة النظامية” (System prompt) تكون مناسبة لتشغيل الأتمتة على مشاركة اختبار. على سبيل المثال:
    سيتم تزويدك بقطعة نصية، ومهمتك هي تحديد ما إذا كانت تحتوي على السلسلة النصية `foobarbazquxpippoplutopaperino`.
    
    إذا كانت المشاركة تحتوي على تلك السلسلة النصية، أجب بـ `true`. إذا لم تكن المشاركة تحتوي على تلك السلسلة النصية، أجب بـ `false`.
    
    يجب أن يتكون ردك من النص `true`، أو النص `false`، ولا شيء آخر.
    
  6. حدد نموذجًا من قائمة “نموذج اللغة الافتراضي” (Default language model) (على سبيل المثال، “CDCK المستضاف LLM صغير” (CDCK Hosted Small LLM)).
  7. انقر على زر “إرسال” (Submit) في أسفل الصفحة.
  8. إذا لم يكن المكون الإضافي “الأتمتة” (Automation) مدمجًا وممكّنًا بالفعل، فقم بتمكينه.
  9. انتقل إلى صفحة “الأتمتات” (Automations) الخاصة بالمكون الإضافي (/admin/plugins/automation/automation).
  10. انقر على زر “+ إضافة أتمتة” (+ Add automation).
    ستفتح صفحة “اختر سكربتًا” (Select a script).
  11. أضف اسمًا عشوائيًا إلى حقل “الاسم” (Name) في صفحة تكوين الأتمتة.
  12. حدد سكربت “تصنيف المشاركات باستخدام الذكاء الاصطناعي” (Triage posts using AI).
    ستفتح صفحة تكوين الأتمتة.
  13. حدد “تم إنشاء/تعديل المشاركة” (Post created/edited) من قائمة “متى/ماذا… > المشغل” (When/What… > Trigger).
  14. حدد الشخصية التي أنشأتها في الخطوات السابقة من قائمة “خيارات السكربت > الشخصية” (Script options > Persona).
  15. اكتب true في حقل “خيارات السكربت > البحث عن نص” (Script options > Search for text).
  16. حدد مربع الاختيار “خيارات السكربت > وضع علامة على المشاركة” (Script options > Flag post).
  17. حدد إضافة المشاركة إلى قائمة انتظار المراجعة (Add post to review queue) من قائمة “خيارات السكربت > نوع العلامة” (Script options > Flag type).
  18. اختياريًا، قم بإجراء تعديلات على الإعدادات الأخرى للأتمتة لتسهيل الاختبار.
  19. انقر على زر “تحديث الأتمتة” (Update automation) في أسفل صفحة تكوين الأتمتة.
    ستتم إعادتك إلى صفحة “الأتمتات” (Automations).
  20. اضبط مفتاح التبديل “تمكين الأتمتة” (Enable automation) للأتمتة التي تم إنشاؤها حديثًا على وضع “تشغيل”.
  21. قم بإنشاء مشاركة أو رسالة خاصة ستؤدي إلى تشغيل الأتمتة.
    باستخدام مثال المطالبة النظامية المقدم أعلاه، سيتم تحقيق ذلك عن طريق تضمين النص foobarbazquxpippoplutopaperino في المشاركة.
  22. انشر المشاركة أو الرسالة.
  23. باستخدام حساب المسؤول، انتقل إلى قائمة انتظار المراجعة (/review).
    :slightly_smiling_face: قامت الأتمتة بإنشاء علامة “تحتاج إلى موافقة” (Needs Approval) للمشاركة الاختبارية.
  24. سجل الدخول إلى منتدى باستخدام حساب غير مسؤول يمتلك أذونات الإشراف.
  25. انتقل إلى قائمة انتظار المراجعة (/review).

:bug: عنصر المراجعة الذي تم إنشاؤه بواسطة علامة “تحتاج إلى موافقة” (Needs Approval) الخاصة بالأتمتة غير مرئي لحساب المشرف. حتى إذا انتقلت مباشرة إلى عنوان URL الخاص بعنصر المراجعة بهذا الحساب، فستحصل فقط على صفحة 404.

سياق إضافي:

لا يحدث الخطأ إذا اخترت بدلاً من ذلك وضع علامة كبريد عشوائي وإخفاء المشاركة (Flag as spam and hide post) من قائمة “خيارات السكربت > نوع العلامة” (Script options > Flag type).

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


العلامات من نوع “تحتاج إلى موافقة” (Needs Approval) التي تم إنشاؤها بواسطة ميزة “الموافقة ما لم يتم السماح للمجموعات” (Approve unless allowed groups) تكون مرئية للمشرفين. هذا يقودني إلى الاعتقاد بأن عدم وضوح العلامات من سكربت “تصنيف المشاركات باستخدام الذكاء الاصطناعي” (Triage posts using AI) ناتج عن خطأ برمجي بدلاً من كونه تصميمًا مقصودًا (غير قابل للتفسير).

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


أنا قادر على تكرار الخطأ في منتدى forum.arduino.cc.