मेरे दो AI टास्क एक ही माउस के लिए लड़ते रहे

पैरेलल एजेंट डेमो तब तक बहुत अच्छे लगते हैं जब तक कि दो टास्क एक ही माउस का उपयोग करने की कोशिश न करें।

एक टास्क किसी साइट पर लॉग इन करता है। दूसरा ब्राउज़र खोलता है। तीसरा टास्क एक साधारण सवाल का जवाब देने की कोशिश करता है। अचानक, सिस्टम गलत जगह क्लिक कर देता है या विफलता (failure) की रिपोर्ट करता है। यह बुद्धिमत्ता की समस्या नहीं है। यह संसाधनों (resource) की समस्या है।

CliGate बनाते समय, मैंने डेस्कटॉप ऑटोमेशन के बारे में एक कठिन सबक सीखा।

कोड टास्क पैरेलल में चल सकते हैं। जब एक रनटाइम सेशन काम कर रहा हो, तब आप मौसम देख सकते हैं। बैकग्राउंड सारांश (summaries) को किसी चीज़ को रोकने की आवश्यकता नहीं होती है।

डेस्कटॉप अलग है। आपके पास एक कीबोर्ड, एक माउस और एक स्क्रीन है। यदि दो एजेंट सोचते हैं कि उस सतह पर उनका अधिकार है, तो वे एक-दूसरे को नुकसान पहुँचाते हैं।

मेरी पहली प्रवृत्ति यह थी कि जब कोई नया टास्क आए तो पुराने टास्क को रद्द कर दिया जाए। यह गलत था।

"यह कितना आगे बढ़ा?" पूछने वाले यूजर को लॉगिन फ्लो को खत्म नहीं करना चाहिए। मौसम पूछने वाले यूजर को डेस्कटॉप टास्क को नहीं रोकना चाहिए। सबसे खराब बग तब होता है जब एक एजेंट किसी अन्य सक्रिय रन (active run) को देखता है और गलती से खुद को ही रद्द कर देता है।

मुझे कॉनकरेंसी (concurrency) को प्रॉम्प्ट की समस्या के रूप में देखना बंद करना पड़ा। मुझे इसे संसाधनों की समस्या के रूप में देखना पड़ा।

मैंने तीन नए नियम बनाए:

  • स्वतंत्र टास्क पैरेलल में चलते हैं।
  • डेस्कटॉप की आवश्यकता वाले टास्क को कतार (queue) में रहना चाहिए।
  • रद्द करना (Cancellation) तभी होता है जब यूजर ऐसा करने के लिए कहे।

CliGate में, डेस्कटॉप इनपुट एक लीज़ (lease) की तरह काम करता है। यदि कोई टास्क माउस का उपयोग करता है, तो वह लीज़ रखता है। अन्य टास्क को प्रतीक्षा करनी होगी।

नया लॉजिक इस प्रवाह का पालन करता है:

  • एक नया टास्क आता है।
  • क्या उसे डेस्कटॉप की आवश्यकता है?
  • यदि नहीं, तो उसे पैरेलल में चलाएं।
  • यदि हाँ और डेस्कटॉप खाली है, तो उसे ले लें।
  • यदि हाँ और डेस्कटॉप व्यस्त है, तो उसे कतार (queue) में डालें।
  • केवल तभी रद्द करें जब यूजर 'स्टॉप' कहे।

इस बदलाव ने भ्रमित करने वाली विफलताओं को पूर्वानुमानित व्यवहार (predictable behavior) में बदल दिया। क्लिक को दोबारा करने और अधिक हस्तक्षेप (interference) पैदा करने के बजाय, असिस्टेंट अब सच बोलता है: "डेस्कटॉप व्यस्त है। मैं कतार में हूँ और खाली होने पर शुरू करूँगा।"

मैंने सेल्फ-कैंसलेशन (self-cancellation) को रोकने के लिए एक नियम भी जोड़ा। एक एजेंट को कभी भी अपने स्वयं के सक्रिय रन को रद्द करने के लक्ष्य के रूप में सूचीबद्ध नहीं करना चाहिए।

AI टूलिंग बनाना अक्सर तब विफल हो जाता है जब आप बहुत अधिक चतुर होने की कोशिश करते हैं। यूजर्स को जादू की जरूरत नहीं है। उन्हें सरल लॉजिक चाहिए:

  • यदि टास्क आपस में टकराते नहीं हैं, तो उन्हें चलने दें।
  • यदि वे किसी भौतिक संसाधन (physical resource) के लिए टकराते हैं, तो उन्हें कतार (queue) में डालें।
  • यदि यूजर स्टेटस पूछता है, तो उसे प्रदान करें।
  • यदि यूजर 'स्टॉप' कहता है, तो रुक जाएं।

यदि आपका AI डेस्कटॉप को छूता है, तो इसे याद रखें: पैरेलल टास्क ठीक हैं, लेकिन भौतिक संसाधनों को स्वामित्व (ownership) की आवश्यकता होती है।

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