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