मी आमच्या ३ वर्षे जुन्या फिनटेक कोडबेसवर AI ला चुकीची माहिती (hallucinating) देण्यापासून कसे थांबवले
AI कोडिंग टूल्स वास्तविक प्रोडक्शन प्रोजेक्ट्सवर अपयशी ठरतात. ते नवीन कोडवर काम करतात पण इतिहास असलेल्या जुन्या कोडबेसवर कोलमडतात.
आमच्या फिनटेक प्रोजेक्टमध्ये मला याचा कडू अनुभव आला. आमच्याकडे दोन React frontends, एक admin panel आणि एक FastAPI backend आहे. आमचा डेटाबेस गुंतागुंतीचा आहे. त्यात संवेदनशील आर्थिक आणि वापरकर्त्यांचा डेटा साठवलेला असतो.
आम्ही वेगाने काम करण्यासाठी AI वापरण्याचा प्रयत्न केला. पण ते लगेच अपयशी ठरले.
मी AI ला 'contacts' टेबल तयार करण्यास सांगितले. त्याने नावासाठी आणि ईमेलसाठी नवीन कॉलम्स तयार केले. हे कॉलम्स आमच्या 'users' टेबलमध्ये आधीच अस्तित्वात होते. AI ने foreign key वापरण्याऐवजी डेटाची डुप्लिकेट कॉपी तयार केली. आमच्या 'users' टेबलबद्दल त्याला काहीच माहिती नव्हती.
मी AI ला अधिक चांगला कोड कसा लिहायचा हे विचारणे थांबवले. त्याऐवजी, AI ने योग्य निर्णय घेण्यासाठी त्याला काय माहिती असणे आवश्यक आहे, हे विचारण्यास मी सुरुवात केली.
AI किती चांगले काम करेल हे तुम्ही त्याला दिलेल्या context (संदर्भ) वर अवलंबून असते. आम्ही आमचा संदर्भ स्पष्ट आणि अधिकृत (authoritative) केला. आम्ही तयार केलेली प्रणाली खालीलप्रमाणे आहे:
• ADR Files: आम्ही docs/adrs/ फोल्डर तयार केले. हे फाइल्स आम्ही आर्किटेक्चरल निर्णय का घेतो, याची नोंद ठेवतात. एक फाईल (ADR-001) AI ला सांगते: "प्रथम अस्तित्वात असलेली टेबल्स तपासा. Foreign keys वापरा. वापरकर्त्याचा डेटा कधीही डुप्लिकेट करू नका."
• context.md: ही फाईल आमच्या विशिष्ट संज्ञा (terms) स्पष्ट करते. आमच्या सिस्टममध्ये विविध संकल्पना एकमेकांशी कशा संबंधित आहेत, हे ती AI ला सांगते.
• plot.md: हा एक हाय-लेव्हल मॅप आहे. आमच्या प्रोजेक्टचे विविध भाग एकमेकांशी कसे जोडलेले आहेत, हे तो दर्शवतो.
• Strict Rules: आम्ही AI ला सांगितले की docs डिरेक्टरी ही अंतिम अधिकृत स्रोत (ultimate authority) आहे. त्याने या नियमांचे क्रमाने पालन केले पाहिजे.
• Mandatory Tests: प्रत्येक नवीन API राउटसाठी टेस्ट केसेस असणे अनिवार्य आहे.
ही प्रणाली AI ला अधिक अंदाज वर्तवण्यायोग्य (predictable) बनवते.
एकदा, AI ने एक shared function बदलले ज्यामुळे ॲपचे इतर आठ भाग बिघडले. आमच्याकडे टेस्ट्स असल्यामुळे, AI ला त्या त्रुटी समजल्या. त्याने फंक्शनची एक नवीन आवृत्ती तयार करून स्वतःची चूक सुधारली, ज्यामध्ये जुन्या आणि नवीन दोन्ही गरजा हाताळल्या गेल्या होत्या. टेस्ट्स नसत्या तर तो बग थेट प्रोडक्शनमध्ये पोहोचला असता.
तुमच्या कोडबेसची माहिती नसल्याबद्दल AI ला दोष देणे थांबवा. त्याच्याकडे एका नवीन कर्मचाऱ्याप्रमाणे (new hire) वागा. तुमच्या नियमांची माहिती नसल्याबद्दल तुम्ही नवीन कर्मचाऱ्याला दोष देत नाही. तुम्ही त्यांना डॉक्युमेंटेशन आणि ऑनबोर्डिंग देता.
आमची रचना अशी दिसते:
docs/
- context.md (संज्ञा आणि संबंध)
- plot.md (हाय-लेव्हल मॅप)
- adr/ (टेबल तयार करणे किंवा API स्ट्रक्चर सारखे विशिष्ट नियम)
तुमच्या वर्कफ्लोसाठी तीन टिप्स:
- तुमच्या ADRs मध्ये विशिष्ट (specific) राहा. अस्पष्ट सल्ल्यांऐवजी स्पष्ट सूचना वापरा.
- डॉक्युमेंटेशन अधिकृत (authoritative) बनवा. AI ला सांगा की हे नियम प्रथम येतील.
- चुकांचे रूपांतर नियमांमध्ये करा. जेव्हा जेव्हा AI अपयशी ठरते, तेव्हा ते रोखण्यासाठी एक नवीन ADR तयार करा.
यामुळे AI परिपूर्ण होत नाही, पण ते सुसंगत (consistent) बनते.
Optional learning community: https://t.me/GyaanSetuAi
