العودة للدورة|إتقان تنسيق وكلاء الذكاء الاصطناعي: بناء ونشر وبيع الأنظمة المستقلة
معمل

نشر وكيل متعدد القنوات

35 دقيقة
متقدم
محاولات مجانية غير محدودة

التعليمات

في هذا المختبر، ستقوم بتكوين ونشر وكيل ذكاء اصطناعي متعدد القنوات يمكنه الرد على المستخدمين عبر Telegram وDiscord في وقت واحد. ستعد تكوين الوكيل وتبني معالجات البوت لكل منصة وتنشئ خدمة systemd للتشغيل على مدار الساعة وتنفذ سكريبت مراقبة للحفاظ على سير كل شيء بسلاسة.

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

نظرة عامة على البنية

+-------------------+     +-------------------+
|   Telegram Bot    |     |   Discord Bot     |
|  (telegram-bot.py)|     |  (discord-bot.py) |
+--------+----------+     +--------+----------+
         |                          |
         v                          v
+-------------------------------------------+
|          Agent Core (config.yaml)          |
|    اختيار النموذج، مفاتيح API، الإعدادات  |
+-------------------------------------------+
         |
         v
+-------------------------------------------+
|   خدمة systemd (systemd-service.conf)      |
|  إعادة التشغيل التلقائي، التسجيل، إدارة   |
+-------------------------------------------+
         |
         v
+-------------------------------------------+
|       المراقبة (monitoring.py)              |
|  فحوصات الصحة، تحليل السجلات، التنبيهات   |
+-------------------------------------------+

الخطوة 1: تكوين الوكيل (config.yaml)

أنشئ ملف تكوين مركزي يقرأ منه كلا البوتين:

تكوين النموذج:

  • اختر نموذج LLM أساسي لتوليد الردود
  • اختر نموذج احتياطي في حال عدم توفر الأساسي
  • اضبط درجة الحرارة والحد الأقصى للرموز ومعاملات التوليد الأخرى

مفاتيح API (عناصر نائبة):

  • عنصر نائب لرمز بوت Telegram
  • عنصر نائب لرمز بوت Discord
  • عنصر نائب لمفتاح API الخاص بـ LLM
  • استخدم مراجع متغيرات البيئة (مثل ${TELEGRAM_BOT_TOKEN}) بدلا من القيم المضمنة

إعدادات النشر:

  • وضع النشر (تطوير، تجهيز، إنتاج)
  • مستوى التسجيل (debug، info، warning، error)
  • إعدادات تحديد المعدل (الحد الأقصى للطلبات لكل مستخدم في الدقيقة)
  • مهلة الاستجابة بالثواني

تكوين القنوات:

  • لكل قناة (Telegram، Discord): علامة تمكين/تعطيل، معرفات المحادثات أو القنوات المسموح بها، بادئة الأوامر

الخطوة 2: معالج بوت Telegram (telegram-bot.py)

ابنِ بوت Telegram باستخدام نمط مكتبة python-telegram-bot:

المعالجات المطلوبة:

  • أمر /start: إرسال رسالة ترحيب تقدم الوكيل وقدراته
  • أمر /help: سرد جميع الأوامر المتاحة وتعليمات الاستخدام
  • معالج الرسائل: معالجة الرسائل النصية الواردة وإرسالها لـ LLM وإعادة الرد
  • معالج الأخطاء: التقاط وتسجيل الأخطاء بسلاسة دون تعطل البوت

تفاصيل التنفيذ:

  • تحميل التكوين من config.yaml باستخدام PyYAML
  • تنفيذ تحديد المعدل لكل مستخدم (التحقق من التكوين للحد الأقصى للطلبات في الدقيقة)
  • إضافة تسجيل بطوابع زمنية لكل رسالة واردة ورد صادر
  • تضمين دالة process_with_llm(message: str) -> str ترسل رسالة المستخدم لـ LLM المكوّن
  • معالجة الردود الطويلة بتقسيمها إلى رسائل متعددة (Telegram لديه حد 4096 حرف)

إعداد البوت:

  • استخدم ApplicationBuilder من python-telegram-bot لإنشاء تطبيق البوت
  • تسجيل جميع المعالجات مع المرشحات المناسبة
  • تضمين دالة main() تبدأ الاستطلاع

الخطوة 3: معالج بوت Discord (discord-bot.py)

ابنِ بوت Discord باستخدام نمط مكتبة discord.py:

الأحداث المطلوبة:

  • on_ready: تسجيل أن البوت متصل وسرد الخوادم التي انضم إليها
  • on_message: معالجة الرسائل الواردة وتجاهل رسائل البوت نفسه وإرسالها لـ LLM والرد
  • توجيه القنوات: الرد فقط في القنوات المكوّنة (التحقق من التكوين لمعرفات القنوات المسموح بها)

تفاصيل التنفيذ:

  • تحميل التكوين من config.yaml باستخدام PyYAML
  • تنفيذ تحديد المعدل لكل مستخدم (التحقق من التكوين للحد الأقصى للطلبات في الدقيقة)
  • إضافة تسجيل بطوابع زمنية لكل رسالة واردة ورد صادر
  • تضمين دالة process_with_llm(message: str) -> str (نفس نمط بوت Telegram)
  • معالجة الردود الطويلة بتقسيمها إلى رسائل متعددة (Discord لديه حد 2000 حرف)
  • استخدام commands.Bot مع بادئة أوامر قابلة للتكوين من التكوين

الأوامر:

  • !help (أو البادئة المكوّنة + help): سرد الأوامر المتاحة
  • !status: عرض وقت تشغيل البوت وعدد الرسائل المعالجة
  • الرسائل العادية في القنوات المسموح بها: المعالجة بـ LLM والرد

الخطوة 4: ملف خدمة systemd (systemd-service.conf)

أنشئ ملف وحدة خدمة systemd لتشغيل الوكيل على مدار الساعة على خادم Linux:

تكوين الخدمة:

  • قسم [Unit]: الوصف، رابط التوثيق، الاعتماد على الشبكة
  • قسم [Service]:
    • دليل العمل لكود الوكيل
    • مسار Python التنفيذي وسكريبت نقطة الدخول
    • ملف البيئة لتحميل مفاتيح API (مثل /etc/agent/.env)
    • سياسة إعادة التشغيل: on-failure مع تأخير 10 ثوان
    • الحد الأقصى لمحاولات إعادة التشغيل (5 إعادات خلال 300 ثانية)
    • التسجيل في stdout/stderr (يلتقطه journald)
    • حدود الموارد: حد الذاكرة، حصة المعالج
    • تقوية الأمان: NoNewPrivileges=true، ProtectSystem=strict
  • قسم [Install]: التمكين على هدف multi-user

الخطوة 5: سكريبت المراقبة (monitoring.py)

ابنِ سكريبت فحص الصحة والمراقبة:

فحوصات الصحة:

  • التحقق مما إذا كانت عملية بوت Telegram تعمل (بملف PID أو اسم العملية)
  • التحقق مما إذا كانت عملية بوت Discord تعمل
  • التحقق مما إذا كان LLM API قابلا للوصول (فحص HTTP مع مهلة زمنية)
  • الإبلاغ عن حالة صحة النظام العامة

تحليل السجلات:

  • قراءة آخر N سطر من ملف سجل الوكيل
  • عد الأخطاء والتحذيرات في السجلات الأخيرة
  • استخراج الطابع الزمني لآخر رد ناجح
  • حساب معدل الأخطاء (أخطاء في الساعة)

التنبيه:

  • تحديد عتبات التنبيه (مثلا معدل الأخطاء > 10/ساعة، العملية متوقفة، API غير قابل للوصول)
  • طباعة رسائل التنبيه في stdout مع مستويات الشدة
  • تضمين دالة send_alert(message: str, severity: str) يمكن توسيعها لإرسال إشعارات (بريد إلكتروني، Slack، إلخ)

توليد التقارير:

  • توليد تقرير صحة يتضمن: وقت التشغيل، الرسائل المعالجة، عدد الأخطاء، زمن استجابة API، استخدام الذاكرة
  • تضمين دالة main() تشغل جميع الفحوصات وتطبع التقرير

ماذا تقدم

المحرر يحتوي على 5 أقسام ملفات مع تعليقات TODO. استبدل كل TODO بكودك. سيقوم المقيّم الذكي بتقييم كل قسم وفقا لمعايير التقييم.

تلميحات

  • لـ config.yaml، استخدم هيكلا هرميا نظيفا. جمّع الإعدادات المرتبطة تحت مفاتيح المستوى الأعلى مثل model وtelegram وdiscord وdeployment
  • لبوت Telegram، مكتبة python-telegram-bot تستخدم نمط Application.builder().token(TOKEN).build() للإصدار 20 وما بعده
  • لبوت Discord، مكتبة discord.py تستخدم نمط commands.Bot(command_prefix="!", intents=intents)
  • لـ systemd، تذكر أن متغيرات البيئة من ملفات .env تستخدم توجيه EnvironmentFile=
  • للمراقبة، psutil مكتبة شائعة لفحوصات العمليات لكن يمكنك أيضا استخدام subprocess مع pgrep

معايير التقييم

config.yaml يحدد تكوين وكيل كامل مع إعدادات النموذج الأساسي والاحتياطي (الاسم، المزود، درجة الحرارة، الحد الأقصى للرموز) وعناصر نائبة لمفاتيح API باستخدام مراجع متغيرات البيئة وإعدادات النشر (الوضع، مستوى التسجيل، تحديد المعدل، المهلة الزمنية) وتكوين لكل قناة لكل من Telegram وDiscord (علامة التمكين، المعرفات المسموح بها، بادئة الأوامر)15 نقاط
telegram-bot.py ينفذ معالجات أوامر /start و/help مع رسائل معلوماتية ومعالج رسائل يفحص حدود المعدل ويعالج النص عبر LLM ومعالج أخطاء يسجل الأخطاء بسلاسة ودالة split_message للردود الطويلة (حد 4096 حرف) ودالة main() تبني التطبيق وتبدأ الاستطلاع25 نقاط
discord-bot.py ينفذ حدث on_ready يسجل الخوادم المتصلة وحدث on_message مع توجيه القنوات بناء على التكوين وتحديد المعدل وأوامر help وstatus ودالة split_message للردود الطويلة (حد 2000 حرف) وتكامل process_with_llm وتتبع إحصائيات الرسائل ودالة main() تشغل البوت25 نقاط
systemd-service.conf يحدد ملف وحدة systemd صالح بقسم [Unit] (الوصف، اعتماد الشبكة) وقسم [Service] (دليل العمل، ExecStart، EnvironmentFile، Restart=on-failure، RestartSec=10، حد إعادة التشغيل، stdout/stderr إلى journal، MemoryMax، CPUQuota، NoNewPrivileges=true، ProtectSystem=strict) وقسم [Install] (WantedBy=multi-user.target)15 نقاط
monitoring.py ينفذ فحوصات صحة العمليات باستخدام subprocess/pgrep وفحص صحة API باستخدام urllib مع مهلة زمنية وتحليل ملف السجلات يعد الأخطاء والتحذيرات ويجد طابع آخر نجاح وحساب معدل الأخطاء في الساعة وتقييم التنبيهات مقابل عتبات قابلة للتكوين مع دالة send_alert ودالة main() تولد وتطبع تقرير صحة كامل20 نقاط

قائمة التحقق

0/5

حلك

محاولات مجانية غير محدودة
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.