હું શા માટે એક જ AI પ્રોવાઈડર પર નિર્ભર રહેવાનું બંધ કર્યું
મેં એક કોમ્યુનિટી ફોરમ માટે રિયલ-ટાઇમ ચેટબોટ બનાવ્યો હતો. મેં ફક્ત OpenAI API નો ઉપયોગ કર્યો હતો. તે સરળ લાગતું હતું.
ત્રણ અઠવાડિયા પછી, પીક અવર્સ દરમિયાન મને 5xx એરર આવી. મારો ચેટબોટ બંધ થઈ ગયો. વપરાશકર્તાઓ ગુસ્સે હતા. મને સમજાયું કે પ્રોડક્શન એપ્સ માટે હું એક જ પ્રોવાઈડર પર વિશ્વાસ કરી શકતો નથી.
મને એક જ પ્રોવાઈડર સાથે અનેક સમસ્યાઓનો સામનો કરવો પડ્યો:
- Rate limits
- Timeouts
- સંપૂર્ણ આઉટેજ (Complete outages)
મેં અન્ય પ્રોવાઈડર્સ અજમાવ્યા, પરંતુ તે બધાના ફોર્મેટ અને ઓથેન્ટિકેશન પદ્ધતિઓ અલગ-અલગ હતી. મારો કોડ switch-case સ્ટેટમેન્ટ્સનો ગૂંચવણભર્યો જથ્થો બની ગયો.
મને એક એવી સિસ્ટમની જરૂર હતી જે:
- વિવિધ પ્રોવાઈડર્સને સ્ટાન્ડર્ડાઇઝ કરી શકે
- જ્યારે એક નિષ્ફળ જાય ત્યારે આપમેળે ફરી પ્રયાસ (retry) કરી શકે
- પ્રતિસાદો (responses) કેશ (cache) કરી શકે
- વેન્ડર લોક-ઇન (vendor lock-in) થી બચી શકે
મેં થર્ડ-પાર્ટી લાઇબ્રેરીઓ ટાળી કારણ કે તે ખૂબ જ કડક (rigid) હતી. તેના બદલે, મેં એક સરળ ડિઝાઇનનો ઉપયોગ કરીને કસ્ટમ ફોલબેક (fallback) સિસ્ટમ બનાવી.
સૌ પ્રથમ, મેં તમામ પ્રોવાઈડર્સ માટે એક કોમન ઇન્ટરફેસ બનાવ્યો. આનાથી કોઈપણ AI મોડેલ એક જ કોડ સાથે કામ કરી શકે છે.
ત્યારબાદ, મેં એક router class બનાવી. આ ક્લાસ ક્રમ અનુસાર પ્રોવાઈડર્સને અજમાવે છે. તે નિષ્ફળતાઓને સંચાલિત કરવા માટે exponential backoff અને સરળ કેશિંગનો ઉપયોગ કરે છે.
અહીં લોજિક છે:
- AI પ્રોવાઈડર્સ માટે એક abstract base class વ્યાખ્યાયિત કરો.
- OpenAI અને અન્ય પ્રોવાઈડર્સ માટે ચોક્કસ ક્લાસ લાગુ કરો.
- તમારા પ્રોવાઈડર્સની યાદીમાં લૂપ કરવા માટે router નો ઉપયોગ કરો.
- જો કોઈ પ્રોવાઈડર નિષ્ફળ જાય, તો router રાહ જુએ છે અને પછીના પ્રોવાઈડરને અજમાવે છે.
આ સિસ્ટમે તાજેતરના ત્રણ આઉટેજ દરમિયાન મારા પ્રોજેક્ટને બચાવ્યો. તે પારદર્શક અને સરળ રહે છે.
જો તમે AI સાથે કંઈક બનાવો છો, તો આ મુદ્દાઓ યાદ રાખો:
- પ્રોડક્શનમાં લોકલ ડિક્શનરીને બદલે કેશિંગ માટે Redis નો ઉપયોગ કરો.
- તમારા ખર્ચ પર દેખરેખ રાખવા માટે કોસ્ટ ટ્રેકિંગ ઉમેરો.
- ઝડપી પ્રતિસાદ માટે asynchronous સપોર્ટ લાગુ કરો.
- Rate limits ને વધુ સારી રીતે હેન્ડલ કરવા માટે "Retry-After" હેડર્સ પાર્સ કરો.
જો તમારો પ્રોજેક્ટ નાનો હોય તો તેને વધુ પડતો જટિલ (over-engineer) ન બનાવો. પરંતુ જો તમારી સેવા અપટાઇમ (uptime) પર નિર્ભર હોય, તો ફોલબેક બનાવો.
તમે તમારા પ્રોજેક્ટ્સમાં પ્રોવાઈડરની વિશ્વસનીયતા કેવી રીતે હેન્ડલ કરો છો? શું તમે ફોલબેક લેયરનો ઉપયોગ કરો છો અથવા એક જ વેન્ડર પર નિર્ભર રહો છો?