مهمتا الذكاء الاصطناعي الخاصتان بي ظلتا تتنافسان على نفس الفأرة

تبدو العروض التوضيحية للوكلاء المتوازيين رائعة. لكنها تفشل في اللحظة التي تحاول فيها مهمتان استخدام نفس الفأرة.

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

تعلمت هذا أثناء بناء CliGate، وهو مستوى التحكم المحلي الخاص بي لأتمتة سطح المكتب.

التوازي يعمل بشكل جيد مع الأكواد البرمجية. يمكنك إجراء بحث عن حالة الطقس بينما تعمل جلسة تشغيل أخرى. فالتلخيص في الخلفية لا يحتاج إلى حظر أي شيء.

أما سطح المكتب فمختلف. فلديك لوحة مفاتيح فيزيائية واحدة، وفأرة واحدة، وشاشة واحدة. إذا حاول وكيلان الاستحواذ على تلك الواجهة، فسوف يفسد كل منهما عمل الآخر.

كانت غريزتي الأولى هي إلغاء المهمة القديمة عند وصول مهمة جديدة. وكان هذا خطأً؛ فالمستخدم الذي يسأل "إلى أين وصلت العملية؟" لا ينبغي أن يتسبب في إنهاء عملية تسجيل الدخول.

توقفت عن التعامل مع التزامن كمشكلة في المطالبات (prompts). بل هو مشكلة موارد.

لقد طبقت ثلاث قواعد بسيطة:

  • المهام المستقلة تعمل بالتوازي.
  • المهام التي تحتاج إلى سطح المكتب يجب أن توضع في قائمة انتظار.
  • لا يحدث الإلغاء إلا عندما يطلبه المستخدم.

في CliGate، يعمل إدخال سطح المكتب بنظام "عقد الإيجار" (lease). فالمهمة التي تستخدم الفأرة تصبح هي الحائزة على سطح المكتب، ويجب على المهام الأخرى الانتظار.

يتبع المنطق الجديد هذا التدفق:

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

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

هذا يحول الفشل إلى سلوك يمكن التنبؤ به.

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

غالباً ما ينبع سلوك الذكاء الاصطناعي السيئ من محاولة أن يكون ذكياً أكثر من اللازم. يحتاج المستخدمون إلى شيء أبسط بكثير:

  • تشغيل المهام التي لا تتعارض.
  • وضع المهام التي تتعارض على الموارد الفيزيائية في قائمة الانتظار.
  • الإجابة على أسئلة الحالة من سجلات الحالة.
  • التوقف عندما يقول المستخدم توقف.

إذا كنت تبني أدوات ذكاء اصطناعي تتعامل مع سطح المكتب، فتذكر هذا: المهام المتوازية لا بأس بها، ولكن الموارد الفيزيائية تحتاج إلى ملكية واضحة.

المصدر: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij