నా రెండు AI టాస్క్లు ఒకే మౌస్ కోసం పోరాడుతూనే ఉన్నాయి
పారలల్ ఏజెంట్ డెమోలు చూడటానికి బాగుంటాయి. కానీ రెండు టాస్క్లు ఒకే మౌస్ను ఉపయోగించడానికి ప్రయత్నించిన వెంటనే అవి విఫలమవుతాయి.
ఒక టాస్క్ ఒక సైట్లోకి లాగిన్ అవుతుంది. మరొకటి బ్రౌజర్ను ఓపెన్ చేస్తుంది. మూడవ టాస్క్ స్టేటస్ అప్డేట్ అడుగుతుంది. అకస్మాత్తుగా, సిస్టమ్ తప్పు చోట క్లిక్ చేస్తుంది లేదా తప్పు రన్ను క్యాన్సిల్ చేస్తుంది. ఇది లాజిక్ ఎర్రర్ కాదు. ఇది రిసోర్స్ కంటెన్షన్ (resource contention).
డెస్క్టాప్ ఆటోమేషన్ కోసం నా లోకల్ కంట్రోల్ ప్లేన్ అయిన CliGateని నిర్మిస్తున్నప్పుడు నేను దీనిని తెలుసుకున్నాను.
కోడ్కు పారలలిజం (Parallelism) బాగా పనిచేస్తుంది. ఒక రన్టైమ్ సెషన్ నడుస్తున్నప్పుడు మీరు వెదర్ లుకప్ (weather lookup) రన్ చేయవచ్చు. బ్యాక్గ్రౌండ్ సమ్మరీ దేనినీ బ్లాక్ చేయాల్సిన అవసరం లేదు.
డెస్క్టాప్ విషయంలో ఇది భిన్నం. మీకు ఒక ఫిజికల్ కీబోర్డ్, ఒక మౌస్ మరియు ఒక స్క్రీన్ మాత్రమే ఉంటాయి. రెండు ఏజెంట్లు ఆ సర్ఫేస్ను తమ ఆధీనంలోకి తీసుకోవడానికి ప్రయత్నిస్తే, అవి ఒకదానికొకటి అడ్డంకిగా మారుతాయి.
కొత్త టాస్క్ వచ్చినప్పుడు పాత టాస్క్ను క్యాన్సిల్ చేయాలనేది నా మొదటి ఆలోచన. కానీ అది తప్పు. "ఎంతవరకు వచ్చింది?" అని అడిగే యూజర్ వల్ల లాగిన్ ఫ్లో ఆగిపోకూడదు.
కాన్కరెన్సీని (concurrency) ఒక ప్రాంప్ట్ సమస్యగా చూడటం నేను మానేశాను. ఇది ఒక రిసోర్స్ సమస్య.
నేను మూడు సరళమైన నియమాలను అమలు చేశాను:
- స్వతంత్ర టాస్క్లు పారలల్గా నడుస్తాయి.
- డెస్క్టాప్ అవసరమయ్యే టాస్క్లు క్యూలో ఉండాలి.
- యూజర్ అడిగినప్పుడు మాత్రమే క్యాన్సిలేషన్ జరుగుతుంది.
CliGateలో, డెస్క్టాప్ ఇన్పుట్ ఒక లీజు (lease) లాగా పనిచేస్తుంది. మౌస్ను ఉపయోగించే టాస్క్ డెస్క్టాప్ హోల్డర్గా మారుతుంది. ఇతర టాస్క్లు వేచి ఉండాలి.
కొత్త లాజిక్ ఈ ఫ్లోను అనుసరిస్తుంది:
- కొత్త టాస్క్ వస్తుంది.
- దానికి డెస్క్టాప్ అవసరమా?
- లేకపోతే, దానిని పారలల్గా రన్ చేయండి.
- అవును, మరియు డెస్క్టాప్ ఖాళీగా ఉంటే, దానిని తీసుకోండి.
- అవును, మరియు డెస్క్టాప్ బిజీగా ఉంటే, దానిని క్యూలో ఉంచండి.
- యూజర్ ఆపమని చెబితేనే క్యాన్సిల్ చేయండి.
రిట్రైలు (Retries) తరచుగా డెస్క్టాప్ ఆటోమేషన్ను మరింత అధ్వాన్నం చేస్తాయి. రెండవ టాస్క్ మౌస్ను పట్టుకోవడానికి పదేపదే ప్రయత్నిస్తే, అది అంతరాయాన్ని పెంచుతుంది. పదేపదే ప్రయత్నించే బదులు, అసిస్టెంట్ ఇలా చెప్పాలి: "డెస్క్టాప్ బిజీగా ఉంది. నేను క్యూలో ఉన్నాను. అది ఖాళీ అయినప్పుడు నేను ప్రారంభిస్తాను."
ఇది వైఫల్యాన్ని ఊహించదగిన ప్రవర్తనగా మారుస్తుంది.
నేను ఒక కఠినమైన నియమాన్ని కూడా జోడించాను: ఏజెంట్ తన స్వంత యాక్టివ్ రన్ను క్యాన్సిల్ చేయకూడదు. ఇది ఏజెంట్ కంగారులో తన స్వంత ఆఫ్ స్విచ్ను క్లిక్ చేయకుండా నిరోధిస్తుంది.
చెడు AI ప్రవర్తన తరచుగా అతి తెలివి ప్రదర్శించాలనుకోవడం వల్ల వస్తుంది. యూజర్లకు చాలా సరళమైనది కావాలి:
- పరస్పర విరుద్ధం కాని టాస్క్లను రన్ చేయండి.
- ఫిజికల్ రిసోర్స్ల కోసం పోటీ పడే టాస్క్లను క్యూలో ఉంచండి.
- స్టేటస్ లాగ్ల నుండి స్టేటస్ ప్రశ్నలకు సమాధానం ఇవ్వండి.
- యూజర్ ఆపమని చెప్పినప్పుడు ఆగిపోండి.
మీరు డెస్క్టాప్ను ఉపయోగించే AI టూల్స్ను నిర్మిస్తుంటే, ఇది గుర్తుంచుకోండి: పారలల్ టాస్క్లు పర్వాలేదు, కానీ ఫిజికల్ రిసోర్స్లకు స్పష్టమైన యాజమాన్యం (ownership) అవసరం.
Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij