મેં અમારા કોડબેઝ પર AI ને ભ્રમિત (hallucinating) થતું કેવી રીતે અટકાવ્યું

AI કોડિંગ ટૂલ્સ વાસ્તવિક પ્રોડક્શન પ્રોજેક્ટ્સ પર નિષ્ફળ જાય છે. તેઓ નવા કોડ પર સારી રીતે કામ કરે છે, પરંતુ ઇતિહાસ ધરાવતા જૂના કોડ પર તેઓ નિષ્ફળ જાય છે.

અમારા ફિનટેક (fintech) પ્રોજેક્ટનો ત્રણ વર્ષનો ઇતિહાસ છે. તેમાં બે React ફ્રન્ટએન્ડ્સ, એક એડમિન પેનલ અને એક FastAPI બેકએન્ડ છે. ડેટાબેઝ ઘણા ટેબલ્સ અને હેવી જોઇન્સ (heavy joins) સાથે જટિલ છે.

અમે ઝડપથી કામ કરવા માટે AI નો ઉપયોગ કરવાનો પ્રયાસ કર્યો. તે નિષ્ફળ રહ્યો.

મેં AI ને કોન્ટેક્ટ્સ ટેબલ (contacts table) બનાવવા માટે કહ્યું. તેણે નામ અને ઇમેઇલ માટે નવા કોલમ બનાવ્યા. તેને એ ખ્યાલ ન આવ્યો કે આ માહિતી પહેલેથી જ અમારા યુઝર્સ ટેબલમાં છે. તેણે ફોરેન કી (foreign key) નો ઉપયોગ કરવાને બદલે ડેટા ડુપ્લીકેટ કરી દીધો.

AI મૂર્ખ નહોતું. તેની પાસે કોઈ સંદર્ભ (context) નહોતો. તેણે અધૂરી માહિતી સાથે નિર્ણય લીધો હતો.

મેં વધુ સારો કોડ કેવી રીતે મેળવવો તે પૂછવાનું બંધ કર્યું. મેં એ પૂછવાનું શરૂ કર્યું કે AI ને સારા નિર્ણયો લેવા માટે કયા સંદર્ભની જરૂર છે.

અમે એક સ્ટ્રક્ચર્ડ વર્કફ્લો બનાવ્યો. AI એટલું જ સારું છે જેટલો તમે તેને સંદર્ભ આપો છો. અમે તે સંદર્ભને સ્પષ્ટ બનાવ્યો.

અમારું સેટઅપ આ મુજબ છે:

  • ADR ડિરેક્ટરી: અમે Architecture Decision Records માટે એક ફોલ્ડર બનાવ્યું. આ ફાઇલો સમજાવે છે કે અમે ચોક્કસ પસંદગીઓ શા માટે કરીએ છીએ. એક ફાઇલ AI ને નવી ટેબલ બનાવતા પહેલા હાલના ટેબલ્સ તપાસવા માટે કહે છે. તે યુઝર ડેટા ડુપ્લીકેટ કરવા પર પ્રતિબંધ મૂકે છે.
  • context.md: આ ફાઇલ અમારા ચોક્કસ શબ્દો સમજાવે છે. તે AI ને જણાવે છે કે અમારા અનન્ય શબ્દો એકબીજા સાથે કેવી રીતે સંબંધિત છે.
  • plot.md: આ પ્રોજેક્ટનો હાઈ-લેવલ મેપ અને તેના ભાગો કેવી રીતે જોડાયેલા છે તે દર્શાવે છે.
  • Mandatory Tests: દરેક નવા API રૂટ માટે ટેસ્ટ કેસ જરૂરી છે.

આનાથી બધું બદલાઈ ગયું. એકવાર, AI એ એક શેર કરેલા યુટિલિટી ફંક્શનમાં ફેરફાર કર્યો. તે ફેરફારથી સિસ્ટમના અન્ય આઠ ભાગો બગડી ગયા. ટેસ્ટ સૂટ (test suite) એ તેને તરત જ પકડી પાડ્યું. AI એ નિષ્ફળતા જોઈ અને જૂની અને નવી બંને જરૂરિયાતોને હેન્ડલ કરે તેવું વર્ઝન બનાવીને પોતાની ભૂલ સુધારી લીધી.

ટેસ્ટ વગર, તે બગ (bug) પ્રોડક્શન સુધી પહોંચી ગયો હોત.

AI સાથે નવા ડેવલપરની જેમ વર્તો. તમે કોઈ નવા કર્મચારીને તમારા કોડબેઝ વિશે ન જાણવા બદલ દોષ આપતા નથી. તમે ડોક્યુમેન્ટેશન અને ઓનબોર્ડિંગ આપો છો. અમે AI માટે પણ એ જ કર્યું.

અમારું માળખું:

  • docs/context.md: પ્રોજેક્ટના શબ્દો અને જોડાણો.
  • docs/plot.md: હાઈ-લેવલ કોડબેઝ મેપ.
  • docs/adr/: ટેબલ બનાવવું અને API સ્ટ્રક્ચર જેવા ચોક્કસ નિયમો.

તમારી ટીમ માટે ત્રણ નિયમો:

  • ADRs માં ચોક્કસ બનો. અસ્પષ્ટ સલાહને બદલે સ્પષ્ટ સૂચનાઓનો ઉપયોગ કરો.
  • ડોક્યુમેન્ટ્સને અધિકૃત (authoritative) બનાવો. AI ને કહો કે આ નિયમો પ્રથમ આવે છે.
  • ભૂલોને નિયમોમાં બદલો. જ્યારે પણ AI નિષ્ફળ જાય, ત્યારે નવો ADR લખો.

આ સિસ્ટમ AI ને સંપૂર્ણ બનાવતી નથી. તે AI ને અનુમાનિત (predictable) બનાવે છે. અમે એવો કોડબેઝ ઈચ્છીએ છીએ જ્યાં AI સુસંગત (consistent) હોય જેથી ટીમ ઝડપથી કામ કરી શકે.

સ્ત્રોત: https://dev.to/jaskiratanand/how-i-made-ai-stop-hallucinating-on-our-3-year-old-fintech-codebase-3g0h