મારા બે AI કાર્યો એક જ માઉસ માટે લડતા રહ્યા
પેરેલલ એજન્ટ ડેમો દેખાવમાં સારા લાગે છે, જ્યાં સુધી બે કાર્યો એક જ માઉસનો ઉપયોગ કરવાનો પ્રયાસ ન કરે.
એક કાર્ય કોઈ સાઇટ પર લોગિન કરે છે. બીજું બ્રાઉઝર ખોલે છે. ત્રીજું કાર્ય એક સાદા પ્રશ્નનો જવાબ આપવાનો પ્રયાસ કરે છે. અચાનક, સિસ્ટમ ખોટી જગ્યાએ ક્લિક કરે છે અથવા નિષ્ફળતાની જાણ કરે છે. આ બુદ્ધિની સમસ્યા નથી. આ સંસાધનની (resource) સમસ્યા છે.
CliGate બનાવતી વખતે, મેં ડેસ્કટોપ ઓટોમેશન વિશે એક કઠિન પાઠ શીખ્યો.
કોડ કાર્યો પેરેલલમાં ચાલી શકે છે. જ્યારે રનટાઇમ સેશન કામ કરી રહ્યું હોય ત્યારે તમે હવામાન જાણી શકો છો. બેકગ્રાઉન્ડ સમરીઝને કંઈપણ રોકવાની જરૂર નથી.
ડેસ્કટોપ અલગ છે. તમારી પાસે એક કીબોર્ડ, એક માઉસ અને એક સ્ક્રીન છે. જો બે એજન્ટ્સ એમ વિચારે કે તે સપાટી પર તેમનો અધિકાર છે, તો તેઓ એકબીજાને નુકસાન પહોંચાડે છે.
જ્યારે નવું કાર્ય આવે ત્યારે જૂના કાર્યને રદ કરવાની મારી પ્રથમ વૃત્તિ હતી. આ ખોટું હતું.
એક વપરાશકર્તા જે "તે કેટલું આગળ વધ્યું?" એવું પૂછે છે, તેના કારણે લોગિન ફ્લો બંધ ન થવો જોઈએ. હવામાન પૂછતા વપરાશકર્તાને ડેસ્કટોપ કાર્ય રોકવું જોઈએ નહીં. સૌથી ખરાબ બગ ત્યારે થાય છે જ્યારે એક એજન્ટ બીજા સક્રિય રન (active run) ને જુએ છે અને અજાણતા પોતાને જ રદ કરી દે છે.
મારે કન્કરન્સી (concurrency) ને પ્રોમ્પ્ટ સમસ્યા તરીકે જોવાનું બંધ કરવું પડ્યું. મારે તેને સંસાધનની સમસ્યા તરીકે જોવી પડી.
મેં ત્રણ નવા નિયમો બનાવ્યા:
- સ્વતંત્ર કાર્યો પેરેલલમાં ચાલે છે.
- ડેસ્કટોપની જરૂર હોય તેવા કાર્યોએ કતાર (queue) માં રહેવું જોઈએ.
- રદ કરવાનું ત્યારે જ થાય છે જ્યારે વપરાશકર્તા તેની માંગ કરે.
CliGate માં, ડેસ્કટોપ ઇનપુટ લીઝ (lease) ની જેમ કામ કરે છે. જો કોઈ કાર્ય માઉસનો ઉપયોગ કરે છે, તો તે લીઝ ધરાવે છે. અન્ય કાર્યોએ રાહ જોવી પડશે.
નવું લોજિક આ ફ્લો અનુસરે છે:
- નવું કાર્ય આવે છે.
- શું તેને ડેસ્કટોપની જરૂર છે?
- જો ના, તો તેને પેરેલલમાં ચલાવો.
- જો હા અને ડેસ્કટોપ ખાલી હોય, તો તે લઈ લો.
- જો હા અને ડેસ્કટોપ વ્યસ્ત હોય, તો તેને કતારમાં (queue) મૂકો.
- જ્યારે વપરાશકર્તા 'સ્ટોપ' કહે ત્યારે જ રદ કરો.
આ ફેરફારે મૂંઝવણભર્યા નિષ્ફળતાઓને અનુમાનિત વર્તનમાં બદલી નાખી. ક્લિક ફરીથી કરવાનો પ્રયાસ કરીને વધુ દખલગીરી કરવાને બદલે, આસિસ્ટન્ટ હવે સત્ય કહે છે: "ડેસ્કટોપ વ્યસ્ત છે. હું કતારમાં છું અને તે ખાલી થશે ત્યારે શરૂ કરીશ."
મેં સેલ્ફ-કેન્સલેશન (self-cancellation) રોકવા માટે પણ એક નિયમ ઉમેર્યો છે. એજન્ટે ક્યારેય તેના પોતાના સક્રિય રનને રદ કરવાના લક્ષ્ય તરીકે સૂચિબદ્ધ ન કરવું જોઈએ.
AI ટૂલિંગ બનાવતી વખતે ઘણીવાર નિષ્ફળતા ત્યારે મળે છે જ્યારે તમે ખૂબ જ ચતુર બનવાનો પ્રયાસ કરો છો. વપરાશકર્તાઓને જાદુની જરૂર નથી. તેમને સરળ લોજિકની જરૂર છે:
- જો કાર્યો વચ્ચે સંઘર્ષ ન હોય, તો તેમને ચાલવા દો.
- જો તેઓ ભૌતિક સંસાધન (physical resource) માટે સંઘર્ષ કરે છે, તો તેમને કતારમાં મૂકો.
- જો વપરાશકર્તા સ્ટેટસ પૂછે, તો તે આપો.
- જો વપરાશકર્તા 'સ્ટોપ' કહે, તો અટકી જાઓ.
જો તમારું AI ડેસ્કટોપને સ્પર્શે છે, તો આ યાદ રાખો: પેરેલલ કાર્યો ઠીક છે, પરંતુ ભૌતિક સંસાધનોને માલિકીની જરૂર છે.
Source: https://dev.to/codekingai/my-two-ai-tasks-kept-fighting-for-the-same-mouse-1hij