كيف تضبط أوامر المساعدة المخصصة؟

أفكر في تفعيل بعض الأوامر المخصصة في مساعد Discourse.

حتى الآن، أقصى ما تمكنت من فعله هو استخدامها من خلال الوكلاء (agents) عبر روبوت الذكاء الاصطناعي. فعلى سبيل المثال، تقوم دالة بتطوير منشور بشكل موجز من رابط مُلصق. يعمل الأمر بشكل رائع، لكنه يتطلب جهدًا كبيرًا لتحويل الرسالة الشخصية إلى موضوع، ثم نقله، ثم إضافة الوسوم.

السلوك المطلوب هو السماح بإضافة نفس الوظيفة إلى الأوامر المحددة مسبقًا في المساعد، دون الحاجة إلى لصق الأمر الأولي مرة أخرى.

حسنًا، انتهى بي الأمر إلى إعادة استخدام بعض الأدوات المساعدة المتاحة حاليًا (لكنها غير مستخدمة في مجتمعنا) والتي تم شحنها بالفعل مع Discourse.

الموقع الإعداد القيمة إعادة تسمية التسمية (تخصيص → نص)
استفسار الذكاء الاصطناعي (المنشورات/المواضيع) ai_helper_translator_agent وكيل البحث المخصص discourse_ai.ai_helper.prompts.translate → تسمية البحث المخصص
ترجمة المحرر ai_helper_markdown_tables_agent وكيل الترجمة المدمج discourse_ai.ai_helper.prompts.markdown_table → ترجمة
منسّق Markdown في المحرر ai_helper_smart_dates_agent وكيل منسّق Markdown (تم نقله) discourse_ai.ai_helper.prompts.replace_dates → تنسيق كـ Markdown

ثم مقتطفان:

javascripts/discourse/api-initializers/ai-helper-slots.gjs

import { apiInitializer } from "discourse/lib/api";

const AI_HELPER_ICONS = {
  translate: "ph-dt-magnifying-glass", // for forum search agent
  markdown_table: "ph-dt-translate", // composer: built-in Translator
  replace_dates: "ph-dt-markdown", // composer: Markdown formatter
};

export default apiInitializer((api) => {
  api.getCurrentUser()?.ai_helper_prompts?.forEach((prompt) => {
    prompt.icon = AI_HELPER_ICONS[prompt.name] ?? prompt.icon;
  });
});

common.scss

.ai-composer-helper-menu ul.ai-helper-options li[data-value="translate"] {
  display: none;
}

ملاحظة: أنا أستخدم مجموعة أيقونات Phosphor مخصصة؛ يمكن دمج الأيقونات الجديدة في Font Awesome أو Material أو أي مجموعة أيقونات أخرى.