𝗠𝘆 𝗧𝘄𝗼 𝗔𝗜 𝗧𝗮𝘀𝗸𝘀 𝗞𝗲𝗽𝘁 𝗙𝗶𝗴𝗵𝘁𝗶𝗻𝗴 𝗳𝗼𝗿 𝘁𝗵𝗲 𝗦𝗮𝗺𝗲 𝗠𝗼𝘂𝘀𝗲 (আমার দুটি AI টাস্ক একই মাউসের জন্য লড়াই করছিল)

প্যারালাল এজেন্ট ডেমো দেখতে দারুণ লাগে। কিন্তু যখন দুটি টাস্ক একই মাউস ব্যবহার করার চেষ্টা করে, তখনই সেগুলো ব্যর্থ হয়।

একটি টাস্ক কোনো সাইটে লগ-ইন করছে। অন্যটি একটি ব্রাউজার খুলছে। তৃতীয় একটি টাস্ক স্ট্যাটাস আপডেটের জন্য অনুরোধ করছে। হঠাৎ করেই সিস্টেমটি ভুল জায়গায় ক্লিক করে অথবা ভুল রান বাতিল করে দেয়। এটি কোনো লজিক এরর (logic error) নয়। এটি হলো রিসোর্স কনটেনশন (resource contention)।

ডেস্কটপ অটোমেশনের জন্য আমার লোকাল কন্ট্রোল প্লেন CliGate তৈরি করার সময় আমি এটি শিখেছি।

কোডের ক্ষেত্রে প্যারালেলিজম (Parallelism) কাজ করে। একটি রানটাইম সেশন চলাকালীন আপনি আবহাওয়ার তথ্য খোঁজার কাজ চালাতে পারেন। একটি ব্যাকগ্রাউন্ড সামারি চালানোর জন্য অন্য কিছু ব্লক করার প্রয়োজন হয় না।

ডেস্কটপ বিষয়টি আলাদা। আপনার কাছে একটি ফিজিক্যাল কিবোর্ড, একটি মাউস এবং একটি স্ক্রিন আছে। যদি দুটি এজেন্ট সেই সারফেসটি দখল করার চেষ্টা করে, তবে তারা একে অপরের কাজে বাধা দেয়।

আমার প্রথম ধারণা ছিল নতুন কোনো টাস্ক আসলে পুরনো টাস্কটি বাতিল করে দেওয়া। এটি ভুল ছিল। একজন ব্যবহারকারী যখন জিজ্ঞেস করেন "কাজটি কতদূর এগোল?", তখন তার জন্য লগ-ইন প্রসেসটি বন্ধ করে দেওয়া উচিত নয়।

আমি কনকারেন্সি (concurrency)-কে প্রম্পট সমস্যা হিসেবে দেখা বন্ধ করেছি। এটি আসলে একটি রিসোর্স সমস্যা।

আমি তিনটি সহজ নিয়ম প্রয়োগ করেছি:

  • স্বাধীন টাস্কগুলো প্যারালালে চলবে।
  • যে টাস্কগুলোর ডেস্কটপ প্রয়োজন, তাদের কিউতে (queue) থাকতে হবে।
  • শুধুমাত্র ব্যবহারকারী অনুরোধ করলেই বাতিল করা হবে।

CliGate-এ ডেস্কটপ ইনপুট একটি লিজের (lease) মতো কাজ করে। যে টাস্কটি মাউস ব্যবহার করে, সেটিই ডেস্কটপ হোল্ডার হয়ে যায়। অন্য টাস্কগুলোকে অপেক্ষা করতে হয়।

নতুন লজিকটি এই ফ্লো অনুসরণ করে:

  • একটি নতুন টাস্ক আসে।
  • এটির কি ডেস্কটপ প্রয়োজন?
  • যদি না হয়, তবে এটি প্যারালালে চালান।
  • যদি হয় এবং ডেস্কটপ খালি থাকে, তবে সেটি গ্রহণ করুন।
  • যদি হয় এবং ডেস্কটপ ব্যস্ত থাকে, তবে এটিকে কিউতে রাখুন।
  • শুধুমাত্র ব্যবহারকারী থামতে বললে বাতিল করুন।

রিট্রাই (Retry) করার চেষ্টা প্রায়শই ডেস্কটপ অটোমেশনকে আরও খারাপ করে তোলে। যদি দ্বিতীয় কোনো টাস্ক বারবার মাউস দখল করার চেষ্টা করে, তবে তা হস্তক্ষেপ বাড়িয়ে দেয়। বারবার চেষ্টা করার পরিবর্তে অ্যাসিস্ট্যান্টের বলা উচিত: "ডেস্কটপটি এখন ব্যস্ত। আমি কিউতে আছি। এটি খালি হলেই আমি কাজ শুরু করব।"

এটি একটি ব্যর্থতাকে একটি অনুমেয় (predictable) আচরণে পরিণত করে।

আমি একটি কঠোর নিয়মও যোগ করেছি: একটি এজেন্ট তার নিজের চলমান রান (active run) বাতিল করতে পারবে না। এটি এজেন্টকে আতঙ্কে নিজের অফ সুইচ ক্লিক করা থেকে বিরত রাখে।

খারাপ AI আচরণ প্রায়শই অতিরিক্ত চতুর হওয়ার চেষ্টা থেকে আসে। ব্যবহারকারীদের অনেক বেশি সহজ কিছু প্রয়োজন:

  • যে টাস্কগুলোর মধ্যে কোনো সংঘর্ষ নেই, সেগুলো চালান।
  • যে টাস্কগুলো ফিজিক্যাল রিসোর্স নিয়ে সংঘর্ষে লিপ্ত, সেগুলোকে কিউতে রাখুন।
  • স্ট্যাটাস লগ থেকে স্ট্যাটাস সংক্রান্ত প্রশ্নের উত্তর দিন।
  • ব্যবহারকারী থামতে বললে থেমে যান।

আপনি যদি ডেস্কটপ ব্যবহার করে এমন AI টুল তৈরি করেন, তবে এটি মনে রাখবেন: প্যারালাল টাস্ক ঠিক আছে, কিন্তু ফিজিক্যাল রিসোর্সের ক্ষেত্রে স্পষ্ট মালিকানা (ownership) প্রয়োজন।

Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij