मैंने कैसे AI को हमारे 3 साल पुराने फिनटेक कोडबेस पर भ्रमित (hallucinating) होने से रोका

AI कोडिंग टूल्स वास्तविक प्रोडक्शन प्रोजेक्ट्स पर विफल हो जाते हैं। वे नए कोड पर तो काम करते हैं, लेकिन इतिहास वाले पुराने कोडबेस पर बिखर जाते हैं।

मैंने अपने फिनटेक प्रोजेक्ट के साथ इसे कठिन तरीके से सीखा। हमारे पास दो React फ्रंटएंड, एक एडमिन पैनल और एक FastAPI बैकएंड है। हमारा डेटाबेस जटिल है। इसमें संवेदनशील वित्तीय और उपयोगकर्ता डेटा होता है।

हमने तेजी से काम करने के लिए AI का उपयोग करने की कोशिश की। यह तुरंत विफल हो गया।

मैंने AI से एक contacts table बनाने के लिए कहा। इसने नाम और ईमेल के लिए नए कॉलम बना दिए। ये कॉलम हमारे users table में पहले से ही मौजूद थे। AI ने foreign key का उपयोग करने के बजाय डेटा को डुप्लिकेट कर दिया। उसे पता ही नहीं था कि हमारा users table मौजूद है।

मैंने AI से बेहतर कोड कैसे लिखवाया जाए, यह पूछना बंद कर दिया। मैंने यह पूछना शुरू किया कि सही निर्णय लेने के लिए AI को क्या जानने की आवश्यकता है।

AI उतना ही अच्छा है जितना कि वह संदर्भ (context) जो आप उसे देते हैं। हमने अपने संदर्भ को स्पष्ट और आधिकारिक बनाया। यहाँ वह सिस्टम है जिसे हमने बनाया है:

ADR Files: हमने एक docs/adrs/ फ़ोल्डर बनाया। ये फ़ाइलें रिकॉर्ड करती हैं कि हम आर्किटेक्चरल निर्णय क्यों लेते हैं। एक फ़ाइल (ADR-001) AI को बताती है: "पहले मौजूदा टेबल्स की जाँच करें। foreign keys का उपयोग करें। उपयोगकर्ता डेटा को कभी भी डुप्लिकेट न करें।"

context.md: यह फ़ाइल हमारे विशिष्ट शब्दों (terms) की व्याख्या करती है। यह AI को बताती है कि हमारे सिस्टम में विभिन्न अवधारणाएं एक-दूसरे से कैसे संबंधित हैं।

plot.md: यह एक हाई-लेवल मैप है। यह दिखाता है कि हमारे प्रोजेक्ट के विभिन्न हिस्से कैसे जुड़ते हैं।

Strict Rules: हमने AI को बताया कि docs डायरेक्टरी ही अंतिम अधिकार है। उसे इन नियमों का क्रमवार पालन करना चाहिए।

Mandatory Tests: प्रत्येक नए API रूट में टेस्ट केस होने चाहिए।

यह सिस्टम AI को पूर्वानुमानित (predictable) बनाता है।

एक बार, AI ने एक साझा (shared) फंक्शन को बदल दिया जिससे ऐप के आठ अन्य हिस्से टूट गए। क्योंकि हमारे पास टेस्ट थे, AI ने विफलताओं को देख लिया। उसने फंक्शन का एक नया वर्ज़न बनाकर अपनी गलती सुधार ली, जिसने पुराने और नए दोनों आवश्यकताओं को संभाला। टेस्ट के बिना, वह बग प्रोडक्शन तक पहुँच जाता।

आपके कोडबेस को न जानने के लिए AI को दोष देना बंद करें। इसके साथ एक नए कर्मचारी (new hire) की तरह व्यवहार करें। आप किसी नए कर्मचारी को आपके नियम न जानने के लिए दोष नहीं देते। आप उन्हें डॉक्यूमेंटेशन और ऑनबोर्डिंग देते हैं।

हमारा स्ट्रक्चर ऐसा दिखता है:

docs/

  • context.md (शब्दावली और संबंध)
  • plot.md (हाई-लेवल मैप)
  • adr/ (टेबल निर्माण या API स्ट्रक्चर जैसे विशिष्ट नियम)

आपके वर्कफ़्लो के लिए तीन सुझाव:

  • अपने ADRs में विशिष्ट रहें। अस्पष्ट सलाह के बजाय स्पष्ट निर्देशों का उपयोग करें।
  • डॉक्यूमेंटेशन को आधिकारिक बनाएं। AI को बताएं कि ये नियम सर्वोपरि हैं।
  • गलतियों को नियमों में बदलें। हर बार जब AI विफल हो, तो इसे रोकने के लिए एक नया ADR बनाएं।

यह AI को परफेक्ट नहीं बनाता। यह इसे सुसंगत (consistent) बनाता है।

Source: https://dev.to/jaskiratanand/how-i-made-ai-stop-hallucinating-on-our-3-year-old-fintech-codebase-3g0h

Optional learning community: https://t.me/GyaanSetuAi