મેં ૨૦ વર્ષના સપોર્ટ ટિકિટ્સની સામે એક AI એજન્ટ મૂક્યો
અમારી પાસે દસ લાખ ટિકિટો ધરાવતી એક હેલ્પડેસ્ક સિસ્ટમ છે. અમારી પાસે ૨,૪૦૦ મેન્યુઅલ્સ અને બે વિશાળ કોડબેઝ (codebases) છે.
જ્યારે કોઈ ડેવલપર પૂછે છે કે શું આપણે આ સમસ્યા પહેલા ઉકેલી છે, ત્યારે જવાબ હંમેશા 'હા' હોય છે. ડેટા ફક્ત દબાયેલો હોય છે. સિનિયર સ્ટાફ શોધવામાં કલાકો ગુમાવે છે. જુનિયર્સ અઠવાડિયાઓ ગુમાવે છે.
મેં આ તમામ ડેટાની સામે કામ કરવા માટે એક AI એજન્ટ બનાવ્યો છે. તે હવે પ્રોડક્શનમાં છે. ખરેખર શું થયું તે અહીં છે.
ડેટા અઘરો ભાગ નહોતો. ક્યાં શોધવું તે જાણવું અઘરું હતું. એજન્ટને ખોટી વાતો બનાવતા રોકવો એ તેનાથી પણ વધુ અઘરું હતું.
તે કેવી રીતે કામ કરે છે:
- નેચરલ લેંગ્વેજ ઇનપુટ સાથે એક એજન્ટ.
- તે હેલ્પડેસ્ક ડેટાબેઝ, પ્રોજેક્ટ ટૂલ્સ, GitLab અને SVN વાંચે છે.
- તે મેન્યુઅલ્સ અને જૂની ટિકિટો પર વેક્ટર સર્ચ (vector searches) કરે છે.
- તે .xlsx અથવા .docx જેવી ફાઇલો જનરેટ કરી શકે છે.
- તે પોતે જ તેના ટૂલ્સ પસંદ કરે છે અને તેને સમાંતર (parallel) ચલાવે છે.
આર્કિટેક્ચર સરળ છે. તે મુખ્ય એપથી અલગ Node કન્ટેનરમાં ચાલે છે. મેં આ 'ફેઈલ્યોર આઇસોલેશન' (failure isolation) માટે કર્યું છે. જો AI નિષ્ફળ જાય, તો પણ હેલ્પડેસ્ક ચાલતું રહે છે.
સૌથી મોટો પાઠ પ્રોમ્પ્ટ (prompt) વિશે હતો. મેં ટેક્સ્ટના એક વિશાળ પહાડથી શરૂઆત કરી હતી. તે ૪૦,૦૦૦ ટોકન્સનું હતું. તેને મેન્ટેન કરવું મુશ્કેલ હતું અને એજન્ટ પોતાનું ધ્યાન ગુમાવી દેતો હતો.
મેં મારો અભિગમ બદલ્યો. મેં પ્રોમ્પ્ટને નાની સ્કીલ ફાઇલોમાં વિભાજિત કર્યો.
- ટિકિટ સર્ચ એક ફાઇલ છે.
- કોડ હિસ્ટ્રી બીજી છે.
- પ્રોજેક્ટ મેનેજમેન્ટ ત્રીજી છે.
મુખ્ય પ્રોમ્પ્ટ એક રાઉટર તરીકે કામ કરે છે. જ્યારે જરૂર હોય ત્યારે જ તે સ્કીલ લોડ કરે છે. આનાથી પ્રતિ રિક્વેસ્ટ આપણી ટોકન્સની સંખ્યા ૪૦,૦૦૦ થી ઘટીને ૮,૦૦૦ થઈ ગઈ. એજન્ટ તેના કામ પર ધ્યાન કેન્દ્રિત રાખે છે અને કોડ અપડેટ કરવો સરળ છે.
મેં યુઝર પ્રોફાઇલ્સ પણ ઉમેરી છે. ડેવલપરને કોડ પાથ મળે છે. પ્રોજેક્ટ મેનેજરને સ્ટેટસ સમરી મળે છે. એજન્ટને જણાવ્યા વગર જ ખબર પડી જાય છે કે કોણ પૂછી રહ્યું છે.
તે સંપૂર્ણ નથી. અમે વાસ્તવિક નિષ્ફળતાઓનો સામનો કર્યો:
- Hallucinations: એજન્ટે ખોટા URL બનાવ્યા. ઉકેલ: ચોક્કસ પેટર્ન નક્કી કરો અથવા લુકઅપ (lookup) કરવા માટે મજબૂર કરો.
- Memory loss: લાંબી ચેટમાં એજન્ટ નિયમો ભૂલી જતો હતો. ઉકેલ: દરેક ટર્નમાં એક સ્ટ્રક્ચર્ડ ટુ-ડૂ લિસ્ટ ઇન્જેક્ટ કરો.
- Infinite loops: એજન્ટે ખૂબ વધારે ટૂલ કોલ્સ કર્યા. ઉકેલ: પ્રતિ રિક્વેસ્ટ માટે કડક બજેટ સેટ કરો.
- Safety: યુઝર્સે તેને છેતરવાનો પ્રયાસ કર્યો. ઉકેલ: સુરક્ષા માટે માત્ર પ્રોમ્પ્ટ્સ પર આધાર રાખશો નહીં. તમારા ઇન્ફ્રાસ્ટ્રક્ચરમાં રીડ-ઓન્લી (read-only) ડેટાબેઝ ક્રેડેન્શિયલ્સનો ઉપયોગ કરો.
અસલી કામ સાપ્તાહિક લૂપ છે. હું લોગ્સ વાંચું છું. હું સેશન્સને સ્કોર આપું છું. હું સ્કીલ્સમાં સુધારો કરું છું. હું પ્રોફાઇલ્સ અપડેટ કરું છું.
જો તમે આ લૂપ છોડી દો છો, તો તમારી પાસે માત્ર એક ડેમો છે. જો તમે તે કરો છો, તો તમારી પાસે એક પ્રોડક્ટ છે.
ધ્યેય માત્ર ઝડપી જવાબો આપવાનો નથી. ધ્યેય સંસ્થાકીય જ્ઞાનને (institutional knowledge) સંસ્થામાં જાળવી રાખવાનો છે. જ્યારે કોઈ વ્યક્તિ જાય છે, ત્યારે તેમનું જ્ઞાન ટ્રાન્સક્રિપ્ટ્સમાં રહે છે.
તમારા બિલ્ડ માટે સારાંશ:
- તમારા પોતાના ઇતિહાસ પર RAG થી શરૂઆત કરો.
- એક મોટા પ્રોમ્પ્ટને બદલે લેઝી-લોડેડ (lazy-loaded) સ્કીલ ફાઇલોનો ઉપયોગ કરો.
- પર્સનલાઇઝ્ડ કોન્ટેક્સ્ટ માટે યુઝર પ્રોફાઇલ્સનો ઉપયોગ કરો.
- AI ને તેના પોતાના કન્ટેનરમાં અલગ કરો.
- ઇન્સ્ટ્રક્શન દ્વારા નહીં, પણ ઇન્ફ્રાસ્ટ્રક્ચર દ્વારા સુરક્ષા લાગુ કરો.
- દર અઠવાડિયે તમારા લોગ્સ વાંચો.
Optional learning community: https://t.me/GyaanSetuAi
