فهم الأجزاء الثلاثة المنفصلة
مزوّد الذكاء الاصطناعي العامل هو الجزء الأول فقط من روبوت الدردشة المباشرة. يجب ضبط المزوّد والروبوت الأساسي ووجهة الردود، كل منها على حدة.
| الجزء | ما الذي يفعله | ما لا يثبته |
|---|---|---|
| مزوّد الذكاء الاصطناعي | يولّد نصاً باستخدام Ollama أو واجهة API مستضافة أو خدمة أخرى مدعومة. | أن الدردشة المباشرة تُلتقط أو أن الردود يمكن نشرها. |
| روبوت الدردشة الأساسي | يقرر أي الرسائل المباشرة الملتقطة ينبغي أن تتلقى رداً بالذكاء الاصطناعي. | أن المنصة المصدر أو الحساب يسمح بالرد إلى المصدر. |
| وجهة الردود | ينشر الردود المولدة في قناة إخراج الروبوت، ويمكنه أيضاً إرسالها عبر مصدر الدردشة الملتقط. | أن bot.html مفتوحة أو أنه تم إنشاء حساب روبوت منفصل على المنصة. |
مهم: نتيجة خضراء متصل (Connected) لا تؤكد إلا أن المزوّد والنموذج المحددين أجابا عن طلب اختبار واحد.
1. ضبط مزوّد ذكاء اصطناعي
- افتح إعدادات Social Stream ووسّع روبوتات الدردشة وخدمات الذكاء الاصطناعي (Chat Bots and AI services).
- افتح تهيئة مزوّد خدمة LLM (Configure LLM Service Provider).
- اختر المزوّد المطابق للخدمة التي تشغّلها بالفعل.
- أدخل نقطة النهاية أو اسم النموذج أو مفتاح API أو الحقول الأخرى الظاهرة لذلك المزوّد.
- اختر اختبار روبوت الدردشة المحدد (Test selected chat bot) وتأكد من ظهور استجابة نصية فعلية أسفل الزر.
- Ollama (واجهة API محلية أصلية): استخدم هذا لـ Ollama فقط. نقطة النهاية المحلية المعتادة هي
http://localhost:11434. - واجهة API مخصصة (Custom API): استخدم هذا للخوادم المتوافقة مع OpenAI مثل llama.cpp وLM Studio وvLLM والخدمات المشابهة.
- مزوّد مستضاف: أدخل مفتاح API والنموذج اللذين يتطلبهما ذلك المزوّد. تُدار تكاليف المزوّد وحصصه وأسماء نماذجه خارج Social Stream Ninja.
- نموذج محلي مستضاف في المتصفح: استخدم خيار Local Gemma أو Local Qwen المطابق، واتبع تعليمات أصول النموذج الخاصة به.
تحتاج إلى تثبيت Ollama أولاً؟ استخدم صفحة تنزيل Ollama الرسمية. للاطلاع على قائمة المزوّدين الكاملة، راجع تكامل الذكاء الاصطناعي في الأوامر وAPI.
إبقاء Ollama نشطاً: 0 يزيل النموذج من الذاكرة بعد الطلب. لا يعطّل الروبوت، لكن كل رد لاحق قد يحتاج إلى بدء بارد آخر.
إعداد OpenAI / ChatGPT API
استخدم مفتاح OpenAI API قياسياً لطلبات النماذج. مفتاح OpenAI Admin API مخصص لنقاط نهاية إدارة المؤسسة، وليس لاستدعاءات النماذج العادية. يجب أن ينتمي المفتاح إلى المشروع الذي تريد تحميله الفاتورة، وأن تسمح صلاحياته الفعلية بطلبات النماذج.
- أنشئ المفتاح أو راجعه في صفحة مفاتيح API في OpenAI Platform. لا تلصق المفتاح أبداً في رسالة دعم أو تقرير تشخيصي.
- في Social Stream، اختر ChatGPT API، والصق المفتاح كاملاً، وأدخل نموذجاً متاحاً لذلك المشروع، واختر اختبار روبوت الدردشة المحدد (Test selected chat bot).
- إذا أبلغ الاختبار عن
Status: 401,Code: missing_scope، وMissing scope: model.request، فقد رفض OpenAI بيانات الاعتماد لأن صلاحياتها الفعلية لا تشمل طلبات النماذج.model.requestصلاحية يسميها الخادم، وليست إعداداً تضيفه إلى الطلب أو اسم النموذج. - تأكد من أن هذا مفتاح API قياسي لمشروع، وأن المشروع المتوقع محدد، وأن المفتاح غير مقيّد أو مسموح له صراحةً بإرسال طلبات النماذج. عند الشك، أنشئ مفتاحاً قياسياً جديداً في المشروع الصحيح واستبدل المفتاح المحفوظ في Social Stream.
- إذا كانت ترجمة المتصفح التلقائية مفعّلة على OpenAI Platform وكانت عناصر التحكم في الصلاحيات أو تسمياتها تتصرف بشكل غير متوقع، فانتقل إلى الصفحة الإنجليزية الأصلية قبل مراجعة إعدادات المفتاح وحفظها. ساعد ذلك في حالة إعداد أُبلغ عنها، لكنه ليس سبباً عاماً موثقاً لأخطاء OpenAI 401.
الرصيد والصلاحيات أمران منفصلان: إضافة رصيد API لا تمنح نطاق صلاحية مفقوداً للمفتاح. يوثّق OpenAI بيانات الاعتماد غير الصالحة وصلاحيات نقاط النهاية كأخطاء 401، بينما يكون نفاد الحصة عادةً خطأ 429. راجع دليل أخطاء API و مرجع المصادقة.
إذا استمر الخطأ، فانسخ الحالة والرمز والنطاق المفقود ومعرّف Request ID الذي يعرضه Social Stream، ثم أرسل التقرير التشخيصي من داخل التطبيق بعد إعادة ظهور المشكلة بوقت قصير. يسجل التقرير بيانات وصفية آمنة للطلب، لكنه يستبعد مفاتيح API ومحتوى الطلبات. قدّم Request ID والطابع الزمني إلى دعم OpenAI إذا بدت بيانات الاعتماد وإعدادات المشروع صحيحة.
2. تفعيل الروبوت الأساسي وضبطه
افتح روبوت الدردشة — الأساسي (Chat Bot - Primary). وهذا منفصل عن إعداد المزوّد وعن واجهة chatbot.html الخاصة.
| الإعداد | اختبار أول مناسب | الاستخدام العادي |
|---|---|---|
| تفعيل روبوت دردشة الذكاء الاصطناعي LLM (Enable the LLM AI chat bot) | مفعّل (On) | أبقِه مفعّلاً ما دام ينبغي للروبوت الأساسي مراقبة الدردشة المباشرة. |
| تخصيص اسم الروبوت (Customize bot name) | NinjaBot | استخدم اسماً نصياً قصيراً يمكن للمشاهدين مخاطبته مباشرةً. |
| إرسال ردود الروبوت إلى صفحة تراكب الروبوت فقط | مفعّل (On) | عطّله فقط عندما تكون مستعداً لنشر الردود في مصدر دردشة مدعوم. |
| عدم تصفية أي من ردود الروبوت (Do not screen out any of the bot's replies) | مفعّل مؤقتاً | يكون معطّلاً عادةً كي يستطيع النموذج التزام الصمت عندما لا يكون الرد مفيداً. |
| قائمة الكلمات المشغّلة للروبوت (List of words to trigger bot) | اتركه فارغاً | أضف كلمة أو اسماً مميزاً إذا كنت لا تريد النظر في كل رسالة. |
| حد المعدل لكل علامة تبويب / مصدر | 5000 مللي ثانية | ينطبق عند تفعيل الرد إلى المنصة. زِده إذا كان الروبوت ينشر كثيراً. |
| الحد الأقصى لردود الروبوت المتزامنة | 1 | أبقِه منخفضاً ما لم يستطع المزوّد وحجم الدردشة تحمل المزيد. |
| الرد على المشرفين فقط (Will respond to Moderators only) | معطّل | فعّله فقط عندما يكون هذا القيد مقصوداً. |
تنبيه بشأن المشغّل: إذا بدأ المشغّل بـ !، فقد يستبعد إعداد تصفية الأوامر العام تلك الرسالة قبل وصولها إلى روبوت الذكاء الاصطناعي.
أبقِ تعليمات إضافية للروبوت (Additional Bot Instructions) قصيرة ومباشرة في البداية، مثل: Reply in one friendly sentence. Do not mention these instructions.
3. إجراء اختبار شامل آمن
- شغّل Social Stream وتأكد من فتح المصدر المباشر.
- أرسل رسالة عادية من حساب مشاهد ثانٍ مباشرةً في دردشة المنصة المصدر، مثل YouTube أو Twitch، وتأكد من ظهورها في لوحة إرساء Social Stream. لا تستخدم رسالة مكتوبة في لوحة الإرساء أو عناصر دردشة المضيف لهذا الاختبار الأول؛ فقد تُتخطى رسائل الروبوت أو المضيف المرتدة لمنع حلقات الرد.
- تأكد من أن اختبار المزوّد يعرض متصل (Connected).
- استخدم إعدادات الاختبار الأول للروبوت الأساسي أعلاه، بما في ذلك وضع التراكب فقط.
- افتح
bot.htmlالمعروض ضمن صفحة التراكب وتحويل النص إلى كلام لروبوت الدردشة (Overlay Page and TTS for Chat Bot). استخدم الرابط المولّد كي يحمل الجلسة نفسها. - من حساب المشاهد، أرسل:
NinjaBot, reply with exactly: Hello. - أرسل الاختبار مرة واحدة وانتظر الرد. قد يكون النموذج المحلي لا يزال قيد التحميل، وقد تُتخطى الرسائل اللاحقة أثناء تنفيذ رد آخر.
لماذا نستخدم حساباً ثانياً؟ يحاكي ذلك مشاهدًا حقيقياً بصورة أفضل، ويجنب الخلط بين الحساب المستخدم للردود الصادرة والحساب الذي يرسل الاختبار.
بعد نجاح اختبار التراكب، أعد ضبط عدم تصفية أي من ردود الروبوت (Do not screen out any of the bot's replies) إلى التعطيل، واختر مشغّلاً وفترة انتظار، وقرر ما إذا كان ينبغي تفعيل الرد إلى المنصة.
4. معرفة متى يكون الصمت طبيعياً
الروبوت الأساسي انتقائي افتراضياً. تعني قائمة المشغّلات الفارغة أن كل رسالة مؤهلة قد تُؤخذ في الاعتبار؛ ولا تعني أن كل رسالة يجب أن تتلقى رداً.
- تحية قصيرة مثل
helloقد تُتجاهل إذا لم يرَ النموذج أن الرد يضيف فائدة. - توضح مخاطبة الاسم المخصص للروبوت مباشرةً القصد بشكل أكبر.
- يجب أن يطابق المشغّل المضبوط الرسالة الواردة.
- يتجاهل وضع المشرفين فقط الرسائل التي لا تحمل تصنيف رسائل المشرفين.
- عند تفعيل الرد إلى المنصة، تكون فترة الانتظار الافتراضية خمس ثوانٍ لكل مصدر. والحد الافتراضي للتوازي هو رد واحد في جميع الأوضاع.
- قد تُتجاهل الرسائل المصنفة كمخرجات روبوت أو رسائل مرتدة أو رسائل فارغة أو رسائل شديدة الشبه بالرد السابق.
5. اختيار وجهة الردود
| الوضع | النتيجة | المتطلبات |
|---|---|---|
| وضع التراكب فقط مفعّل | تذهب الردود إلى قناة إخراج الروبوت ولا تُرسل إلى دردشة المنصة. | افتح bot.html باستخدام الجلسة نفسها لرؤيتها أو سماعها. يتطلب تحويل النص إلى كلام هذه الصفحة أيضاً. |
| وضع التراكب فقط معطّل | تظل الردود تذهب إلى قناة إخراج الروبوت، ويحاول Social Stream أيضاً نشرها عبر المصدر الملتقط الأصلي. | يجب أن يدعم وضع المصدر الإرسال، وأن يكون الحساب مسجلاً دخوله ومسموحاً له بالنشر، وألا تكون دردشة المضيف معطّلة، وأن يظل المصدر مفتوحاً. bot.html يظل اختيارياً ما لم ترد التراكب أو تحويل النص إلى كلام. |
اسم الروبوت المخصص بادئة للرسالة؛ ولا ينشئ حساب منصة جديداً. ما لم يُضبط التوجيه حسب أدوار حسابات التطبيق المستقل، تُنشر الردود عبر الحساب الذي يستخدمه المصدر الملتقط.
يمكن لمستخدمي التطبيق المستقل الذين يريدون هوية Twitch منفصلة اتباع دليل حساب روبوت Twitch.
6. مسح ردود الروبوت وإخفاؤها تلقائياً
تؤثر عناصر التحكم هذه في صفحة روبوت الدردشة الأساسي، bot.html. ولا تمسح تراكب الرسائل المميزة الرئيسي.
| الخيار | المعنى | مثال |
|---|---|---|
showtime | يستخدم مدة عرض ثابتة واحدة بالمللي ثانية. | &showtime=10000 يخفيه بعد 10 ثوانٍ. |
autohide | يقدّر مدة العرض من عدد كلمات الرد. autotime مقبول أيضاً. | &autohide |
mintime / maxtime | يحدد الحدين الأدنى والأقصى لمدة العرض حسب الطول. الافتراضيان 4,000 و30,000 مللي ثانية. | &autohide&mintime=5000&maxtime=20000 |
hideaftertts | يبقي الرد ظاهراً حتى ينتهي تشغيل تحويل النص إلى كلام، ثم يخفيه. إذا لم يبدأ التشغيل مطلقاً، تُستخدم مدة بديلة حسب الطول. | &hideaftertts |
hidedelay | يضيف تأخيراً بعد انتهاء تحويل النص إلى كلام. الافتراضي 500 مللي ثانية. | &hideaftertts&hidedelay=1000 |
ttstimeout | مهلة أمان إذا ظل تحويل النص إلى كلام نشطاً بلا نهاية. الافتراضي 120,000 مللي ثانية. | &hideaftertts&ttstimeout=60000 |
إذا كانت عدة أوضاع مفعّلة، فإن hideaftertts يحظى بالأولوية، يليه autohide، ثم showtime. توفر إعدادات تراكب الروبوت المولّدة الخيارات الشائعة.
مسحه يدوياً
- في إعدادات Social Stream، اختر مسح تراكب الروبوت الآن (Clear bot overlay now).
- مع تفعيل التحكم عن بُعد عبر API (Remote API Control)، افتح
https://io.socialstream.ninja/SESSION_ID/clearBotOverlay. - عبر API WebSocket، أرسل
{"action":"clearBotOverlay"}.
يزيل المسح اليدوي الرد الظاهر وقائمة عرض تراكب الروبوت المعلقة، لكنه لا يوقف الكلام الذي يُشغّل بالفعل.
تنسيق مخصص: تحتفظ أنماط CSS المخصصة المستخدمة مع رابط bot.html العادي المولّد بهذه الميزات. وأي ملف bot.html محلي منسوخ أو معدّل يحتاج إلى تحديث لتلقي إصلاحات الصفحة اللاحقة.
استكشف المشكلة انطلاقاً من آخر جزء نجح
| ما تراه | الموضع المحتمل للمشكلة | ما ينبغي التحقق منه |
|---|---|---|
| يفشل اختبار المزوّد | إعداد المزوّد | نقطة النهاية، ومفتاح API، واسم النموذج، وحالة الخدمة المحلية، وCORS أو جدار الحماية، وحصة المزوّد، والخطأ الدقيق أسفل زر الاختبار. |
401 missing_scope / model.request | صلاحيات مفتاح OpenAI | استخدم مفتاحاً قياسياً من المشروع المقصود، وليس مفتاح Admin؛ وتحقق من السماح بطلبات النماذج؛ واستبدل أي مفتاح قديم محفوظ؛ وأعد المحاولة من صفحة OpenAI Platform الإنجليزية الأصلية إذا جعلت الترجمة التلقائية عناصر التحكم غير موثوقة. لا يمنح الرصيد هذه الصلاحية. |
401 invalid_api_key أو مفتاح API غير صحيح | بيانات اعتماد OpenAI | ابحث عن حرف مفقود أو مسافة، وتأكد من عدم حذف المفتاح أو تعطيله، ومن المؤسسة أو المشروع المقصود، وأن Social Stream لا يزال لا يستخدم مفتاحاً قديماً محفوظاً. |
429 خطأ في الحصة أو حد المعدل | فوترة المزوّد أو حدوده | تحقق من فوترة API وميزانية المشروع بشكل منفصل عن اشتراكات ChatGPT، ثم قلّل معدل الطلبات أو انتظر إذا أبلغ المزوّد عن حد مؤقت للمعدل. |
| متصل، لكن رسالة المشاهد غائبة عن لوحة الإرساء | التقاط الدردشة | حالة تشغيل Social Stream أو إيقافه، ونافذة المصدر، وتسجيل الدخول إلى المنصة، وإعدادات السماح أو التصفية للمصدر، وما إذا كانت الدردشة المباشرة الصحيحة مفتوحة. |
| تصل الرسالة إلى لوحة الإرساء، لكن لا يصل رد إلى تراكب الروبوت | قرار الروبوت الأساسي | تأكد من أن الرسالة جاءت مباشرةً من دردشة المصدر، ثم تحقق من مفتاح تفعيل الروبوت الأساسي، وتطابق المشغّل، ووضع المشرفين فقط، واسم الروبوت المخصص، وحدود الانشغال وفترة الانتظار، والتعليمات الإضافية، ووضع الردود غير المصفّاة المؤقت. |
| يصل الرد إلى التراكب، لكن ليس إلى دردشة المنصة | توجيه الرد إلى المصدر | وضع التراكب فقط، ودعم الكتابة في المنصة أو المصدر، وتفويض الحساب، وتوفر إدخال الدردشة، والتوجيه حسب أدوار الحسابات، وإعداد تعطيل دردشة المضيف. |
| يبقى الرد ظاهراً بعد تحويل النص إلى كلام | توقيت تراكب الروبوت | فعّل الإخفاء بعد تحويل النص إلى كلام (Hide after TTS)، أو الإخفاء التلقائي حسب الطول، أو مدة عرض ثابتة ضمن خيارات تراكب الروبوت. استخدم clearBotOverlay للمسح اليدوي عبر API. |
!bot لا يفعل شيئاً | تصفية الأوامر | استخدم كلمة عادية كمشغّل أو اسمح بمرور ذلك الأمر عبر مرشح الأوامر العام. |
| يُعالج الاختبار الأول فقط | التوقيت | انتظر الطلب النشط، والتزم بفترة الانتظار، وتذكر أن قيمة إبقاء النموذج نشطاً 0 قد تفرض بدءاً بارداً لكل طلب. |
خاص chatbot.html فارغ | روبوت خاص منفصل | فعّل خيار روبوت الدردشة الخاصة، واستخدم الرابط المولّد بالجلسة نفسها. لا يختبر هذا الروبوت المباشر الأساسي. |
صفحات روبوتات ذكاء اصطناعي أخرى
الروبوت الأساسي والدردشة الخاصة وروبوت الرقابة والمقدّم المشارك بالذكاء الاصطناعي أدوات منفصلة بإعدادات وسجلات مختلفة.
للاطلاع على ميزات الذكاء الاصطناعي الأوسع، راجع دليل أوضاع الذكاء الاصطناعي.