𝗠𝘆 𝗧𝘄𝗼 𝗔𝗜 𝗧𝗮𝘀𝗸𝘀 𝗞𝗲𝗽𝘁 𝗙𝗶𝗴𝗵𝘁𝗶𝗻𝗴 𝗳𝗼𝗿 𝘁𝗵𝗲 𝗦𝗮𝗺𝗲 𝗠𝗼𝘂𝘀𝗲
پیرالل ایجنٹ ڈیمو دیکھنے میں بہت اچھے لگتے ہیں۔ لیکن جیسے ہی دو ٹاسک ایک ہی ماؤس استعمال کرنے کی کوشش کرتے ہیں، وہ ناکام ہو جاتے ہیں۔
ایک ٹاسک کسی سائٹ پر لاگ ان کرتا ہے۔ دوسرا براؤزر کھولتا ہے۔ تیسرا ٹاسک اسٹیٹس اپ ڈیٹ مانگتا ہے۔ اچانک، سسٹم غلط جگہ کلک کر دیتا ہے یا غلط رن (run) کو کینسل کر دیتا ہے۔ یہ کوئی منطقی غلطی (logic error) نہیں ہے۔ یہ وسائل کا تصادم (resource contention) ہے۔
میں نے یہ CliGate بناتے ہوئے سیکھا، جو ڈیسک ٹاپ آٹومیشن کے لیے میرا لوکل کنٹرول پلین ہے۔
کوڈ کے لیے پیراللزم (Parallelism) کام کرتا ہے۔ آپ ایک رن ٹائم سیشن کے دوران موسم کی معلومات تلاش کرنے کا کام چلا سکتے ہیں۔ بیک گراؤنڈ سمری کے لیے کسی چیز کو روکنے کی ضرورت نہیں ہوتی۔
ڈیسک ٹاپ مختلف ہے۔ آپ کے پاس ایک فزیکل کی بورڈ، ایک ماؤس اور ایک اسکرین ہوتی ہے۔ اگر دو ایجنٹس اس سطح (surface) پر قبضہ کرنے کی کوشش کریں، تو وہ ایک دوسرے کے کام میں خلل ڈالتے ہیں۔
میرا پہلا خیال یہ تھا کہ جب نیا ٹاسک آئے تو پرانے ٹاسک کو کینسل کر دیا جائے۔ یہ غلط تھا۔ ایک صارف جو یہ پوچھ رہا ہو کہ "کام کہاں تک پہنچا؟" اسے لاگ ان کے عمل (flow) کو ختم نہیں کرنا چاہیے۔
میں نے کنکرنسی (concurrency) کو پرامپٹ کا مسئلہ سمجھنا چھوڑ دیا۔ یہ وسائل (resource) کا مسئلہ ہے۔
میں نے تین سادہ اصول نافذ کیے:
- آزاد ٹاسک پیرالل میں چلتے ہیں۔
- ڈیسک ٹاپ کی ضرورت والے ٹاسک کو قطار (queue) میں ہونا چاہیے۔
- کینسل صرف تب ہوتا ہے جب صارف کہے۔
CliGate میں، ڈیسک ٹاپ ان پٹ ایک لیز (lease) کی طرح کام کرتا ہے۔ وہ ٹاسک جو ماؤس استعمال کرتا ہے، وہ ڈیسک ٹاپ کا مالک بن جاتا ہے۔ دوسرے ٹاسک کو انتظار کرنا پڑتا ہے۔
نیا لاجک اس بہاؤ (flow) پر عمل کرتا ہے:
- ایک نیا ٹاسک آتا ہے۔
- کیا اسے ڈیسک ٹاپ کی ضرورت ہے؟
- اگر نہیں، تو اسے پیرالل میں چلائیں۔
- اگر ہاں اور ڈیسک ٹاپ خالی ہے، تو اسے لے لیں۔
- اگر ہاں اور ڈیسک ٹاپ مصروف ہے، تو اسے قطار (queue) میں ڈال دیں۔
- صرف تب کینسل کریں جب صارف کہے۔
بار بار کوشش کرنا (Retries) اکثر ڈیسک ٹاپ آٹومیشن کو مزید خراب کر دیتا ہے۔ اگر دوسرا ٹاسک مسلسل ماؤس حاصل کرنے کی کوشش کرتا رہے، تو یہ مداخلت کو بڑھا دیتا ہے۔ زیادہ زور لگانے کے بجائے، اسسٹنٹ کو کہنا چاہیے: "ڈیسک ٹاپ مصروف ہے۔ میں قطار میں ہوں۔ جب یہ خالی ہو جائے گا تو میں شروع کر دوں گا۔"
یہ ناکامی کو ایک قابلِ پیش گوئی رویے (predictable behavior) میں بدل دیتا ہے۔
میں نے ایک سخت اصول بھی شامل کیا: ایک ایجنٹ اپنے ہی فعال رن (active run) کو کینسل نہیں کر سکتا۔ یہ ایجنٹ کو گھبراہٹ میں اپنا آف سوئچ کلک کرنے سے روکتا ہے۔
AI کا برا رویہ اکثر بہت زیادہ چالاک بننے کی کوشش سے پیدا ہوتا ہے۔ صارفین کو بہت سادہ چیز کی ضرورت ہے:
- وہ ٹاسک چلائیں جو آپس میں ٹکراؤ نہ کریں۔
- وہ ٹاسک قطار میں رکھیں جو فزیکل وسائل کے لیے ٹکراؤ کریں۔
- اسٹیٹس لاگز سے اسٹیٹس کے سوالات کے جواب دیں۔
- جب صارف کہے تو رک جائیں۔
اگر آپ ایسے AI ٹولز بناتے ہیں جو ڈیسک ٹاپ کو استعمال کرتے ہیں، تو یہ یاد رکھیں: پیرالل ٹاسک ٹھیک ہیں، لیکن فزیکل وسائل کے لیے واضح ملکیت (ownership) ضروری ہے۔
Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij