सुरक्षित AI कोडिंग मदद के नियम
कोडिंग के लिए AI का उपयोग करने का सबसे अच्छा तरीका यह है कि ठीक उन्हीं पलों पर उसे धीमा कर दिया जाए जहां अंदाज़ा लगाना खतरनाक है। AI अनजान कोड समझा सकता है, एरर को अनुमानों में बदल सकता है, टेस्ट का ड्राफ्ट बना सकता है, डिफ की समीक्षा कर सकता है और रीफैक्टर सुझा सकता है। यह API गढ़ भी सकता है, छिपी हुई निर्भरताएं चूक सकता है, पेस्ट किए गए स्निपेट पर हद से ज़्यादा फिट हो सकता है, या ऐसा पैच दे सकता है जो साफ़ दिखता है लेकिन उस व्यवहार को बदल देता है जिसे आप बनाए रखना चाहते थे।
यह नियम अपनाएं: AI सुझाव दे सकता है, पर फैसला आपका रिपॉज़िटरी करता है। सच्चाई का स्रोत कोडबेस है, विफल होने वाला रिप्रोडक्शन है, टेस्ट सूट है, रनटाइम लॉग हैं, प्रोडक्ट की ज़रूरतें हैं और इंसानी समीक्षा है। एक अच्छे AI पेयर प्रोग्रामर को इन्हीं चीज़ों के आधार पर सोचने में आपकी मदद करनी चाहिए, उनकी जगह नहीं लेनी चाहिए।
| नियम | यह क्यों मायने रखता है | मॉडल से क्या मांगें |
|---|---|---|
| पहले दोबारा पैदा करें | बेतरतीब पैच रोकता है | "कोड सुझाने से पहले विफल व्यवहार और सबूत दोबारा बताओ।" |
| दायरा छोटा रखें | रिग्रेशन का जोखिम घटाता है | "सबसे छोटा सुरक्षित बदलाव सुझाओ और छुई गई फ़ाइलें गिनाओ।" |
| व्यवहार बनाए रखें | उपयोगकर्ताओं और अनुबंधों की रक्षा करता है | "बताओ कि इस बदलाव से कौन सी बातें नहीं टूटनी चाहिए।" |
| टेस्ट ज़रूरी रखें | जवाब को सत्यापन योग्य बनाता है | "ऐसे टेस्ट लिखो जो फिक्स से पहले विफल हों और बाद में पास हों।" |
| मर्ज से पहले समीक्षा | आत्मविश्वासी गलतियां पकड़ता है | "इस डिफ की सटीकता, सुरक्षा और छूटे किनारे के मामलों के लिए समीक्षा करो।" |
यह बात सभी मॉडलों पर लागू होती है। OpenAI, Anthropic और दूसरे प्रदाता मॉडल डॉक्स प्रकाशित करते हैं जिनमें अलग-अलग क्षमताएं, संदर्भ विंडो और टूल-उपयोग के तरीके बताए जाते हैं। ये क्षमताएं उपयोगी हैं, पर वे एक अनुशासित वर्कफ़्लो का विकल्प नहीं हैं। इंजीनियरिंग के काम में मॉडलों को उसी कसौटी पर परखें जिस पर आप किसी साथी को परखेंगे: क्या वे छूटा हुआ संदर्भ मांगते हैं, अनिश्चितता घटाते हैं, बाधाओं का सम्मान करते हैं, और ऐसा निशान छोड़ते हैं जिसे आप जांच सकें?
डिबगिंग वर्कफ़्लो
एक भरोसेमंद AI डिबगिंग वर्कफ़्लो के पांच चरण होते हैं: दोबारा पैदा करना, अलग करना, अनुमान लगाना, पैच करना और सत्यापित करना। "इसे ठीक करो" से शुरुआत मत कीजिए। सबूत से शुरुआत कीजिए। मॉडल को विफल होने वाली कमांड, सटीक एरर, अपेक्षित व्यवहार, दिख रहा व्यवहार, संबंधित कोड, एनवायरनमेंट का ब्योरा, और कोई भी हालिया बदलाव दीजिए जिससे यह दिक्कत आई हो सकती है।
चरण 1: रिप्रोडक्शन दर्ज करें। बैकएंड कोड के लिए रिक्वेस्ट, रिस्पॉन्स, स्टेटस कोड, लॉग और विफल टेस्ट शामिल करें। फ्रंटएंड कोड के लिए रूट, उपयोगकर्ता की क्रिया, ब्राउज़र कंसोल का एरर, नेटवर्क रिस्पॉन्स, कंपोनेंट की स्थिति, और ज़रूरी हो तो स्क्रीनशॉट का विवरण शामिल करें। बिल्ड की दिक्कतों के लिए कमांड, पैकेज मैनेजर, Node का वर्शन, और पहली विफलता के आसपास का पूरा एरर शामिल करें।
चरण 2: कोड से पहले अनुमान मांगें। एक सावधान मॉडल को संभावित कारणों को क्रम में लगाना चाहिए और बताना चाहिए कि हर कारण के पीछे क्या सबूत है। अगर वह कारणों में फ़र्क नहीं कर पा रहा, तो सबसे छोटा जांच वाला कदम पूछें। वह एक लॉग हो सकता है, एक केंद्रित टेस्ट, एक टाइप जांच, या बस एक और फ़ाइल पढ़ना।
चरण 3: सबसे छोटा पैच मांगें। मॉडल से कहें कि वह वेरिएबल के नाम न बदले, आसपास का कोड दोबारा न लिखे, नई निर्भरताएं न जोड़े, और सार्वजनिक व्यवहार न बदले, जब तक वह इसकी वजह न बता सके। उससे मूल कारण, पैच की रूपरेखा, छुई गई फ़ाइलें, टेस्ट और जोखिम लौटाने को कहें।
चरण 4: टेस्ट लोकल में चलाएं। AI का नतीजा सत्यापन का कदम नहीं है। सत्यापन का कदम वह कमांड या उपयोगकर्ता का रास्ता है जो व्यवहार को साबित करे। अगर कोई ऑटोमेटेड टेस्ट मौजूद नहीं है, तो मॉडल से पहले एक रिग्रेशन टेस्ट बनवाएं, फिर फिक्स लागू करें।
डिबगिंग प्रॉम्प्ट:
एक सावधान डिबगिंग साथी की तरह काम करो। अभी कोड मत लिखो। पहले रिप्रोडक्शन, अपेक्षित व्यवहार, दिख रहा व्यवहार, और तीन सबसे संभावित मूल कारण दोबारा बताओ। हर कारण को सबूत के हिसाब से क्रम दो। फिर सबसे छोटा जांच वाला कदम सुझाओ। बग: [बताएं]। कमांड या उपयोगकर्ता की क्रिया: [पेस्ट करें]। एरर/लॉग: [पेस्ट करें]। संबंधित कोड: [पेस्ट करें]। बाधाएं: [स्टैक, जिन फ़ाइलों को नहीं छूना है, जो व्यवहार बनाए रखना है]।
फिक्स प्रॉम्प्ट:
पुष्ट मूल कारण के आधार पर सबसे छोटा सुरक्षित फिक्स सुझाओ। लौटाओ: मूल कारण, बदली जाने वाली फ़ाइलें/फंक्शन, पैच की रूपरेखा, ऐसे टेस्ट जो पहले विफल हों और बाद में पास हों, किनारे के मामले, और रोलबैक का जोखिम। असंबंधित कोड को रीफैक्टर मत करो। संदर्भ: [पेस्ट करें]।
कोड समीक्षा वर्कफ़्लो
AI अक्सर पहले लेखक के बजाय समीक्षक के रूप में बेहतर होता है। जब आप उससे किसी डिफ की समीक्षा करवाते हैं, तो वह छूटे किनारे के मामले, सुरक्षा की दिक्कतें, पुरानी पड़ चुकी धारणाएं, टेस्ट की कमियां और व्यवहार में हुए बदलाव ढूंढ सकता है। असली बात समीक्षा को ठोस बनाना है। अगर आप पूछेंगे "क्या यह ठीक लग रहा है?" तो आपको शिष्ट मंज़ूरी मिलेगी। अगर आप सटीकता के जोखिम पर सवाल करेंगे, तो काम की आपत्तियां मिलने की संभावना कहीं ज़्यादा है।
मॉडल को डिफ, इच्छित व्यवहार, संबंधित टेस्ट और सारी बाधाएं दें। उससे कहें कि छोटी-मोटी शैली की बातों को तब तक अनदेखा करे जब तक वे रखरखाव पर असर न डालें। आप चाहते हैं कि समीक्षा बग को प्राथमिकता दे, दिखावटी नुक्ताचीनी को नहीं।
| समीक्षा का क्षेत्र | AI को किन सवालों के जवाब देने चाहिए |
|---|---|
| सटीकता | क्या डिफ सचमुच वह ज़रूरत पूरी करता है? |
| रिग्रेशन का जोखिम | कौन सा मौजूदा व्यवहार गलती से बदल सकता है? |
| सुरक्षा | क्या इनपुट, ऑथ, सीक्रेट, अनुमतियां या इंजेक्शन के जोखिम संभाले गए हैं? |
| एरर हैंडलिंग | null, टाइमआउट, रीट्राई, खराब रिस्पॉन्स या अधूरी स्थिति पर क्या होता है? |
| टेस्ट | व्यवहार के कौन से दावे कवर नहीं हैं? |
| रखरखाव | क्या यह स्थानीय पैटर्न का पालन करता है और बदलाव को समझने लायक रखता है? |
कोड समीक्षा प्रॉम्प्ट:
इस डिफ की समीक्षा एक सख़्त पर व्यावहारिक मेंटेनर की तरह करो। सटीकता, रिग्रेशन के जोखिम, सुरक्षा, किनारे के मामलों और छूटे टेस्ट पर ध्यान दो। छोटी-मोटी शैली को तब तक अनदेखा करो जब तक वह असली रखरखाव जोखिम न बनाए। दिक्कत, प्राथमिकता, डिफ से सबूत, सुझाया गया फिक्स और ज़रूरी टेस्ट के साथ एक टेबल लौटाओ। इच्छित व्यवहार: [पेस्ट करें]। डिफ: [पेस्ट करें]। मौजूदा टेस्ट: [पेस्ट करें]।
ज़्यादा जोखिम वाले बदलावों के लिए Whizi में मॉडलों के फिक्स की तुलना वाला वर्कफ़्लो अपनाएं। वही समीक्षा प्रॉम्प्ट दो या तीन मॉडलों पर चलाएं। अगर कोई एक मॉडल कोई संभावित दिक्कत पकड़ता है, तो उसे आंख मूंदकर मत मानिए, जांचिए कि वह दिक्कत कोडबेस में सचमुच है या नहीं। मकसद ज़्यादा राय जुटाना नहीं है। मकसद मर्ज करने से पहले समीक्षा का दायरा चौड़ा करना है।
रीफैक्टर और टेस्ट का वर्कफ़्लो
AI के साथ रीफैक्टरिंग जोखिम भरी है क्योंकि कई रीफैक्टर इस बात से आंके जाते हैं कि क्या नहीं बदला। मॉडल कोड को सुंदर बना सकता है और साथ ही व्यवहार, एरर हैंडलिंग, टाइमिंग या सार्वजनिक अनुबंधों को चुपचाप बदल सकता है। एक ज़्यादा सुरक्षित रीफैक्टर वर्कफ़्लो की शुरुआत लागू करने से पहले यह तय करने से होती है कि क्या अपरिवर्तित रहना चाहिए।
कदम 1: रीफैक्टर का लक्ष्य बताएं। उदाहरण: दोहराव घटाना, एक बड़े कंपोनेंट को बांटना, डेटा एक्सेस को अलग करना, ब्रांचिंग सरल करना, किसी API रैपर को माइग्रेट करना, या टेस्ट करने की सुविधा बढ़ाना। फिर बताएं कि क्या वैसा ही रहना चाहिए: सार्वजनिक फंक्शन के सिग्नेचर, रूट का व्यवहार, इवेंट के नाम, रिस्पॉन्स का आकार, एनालिटिक्स, अनुमतियां, एक्सेसिबिलिटी का व्यवहार, और परफ़ॉर्मेंस की उम्मीदें।
कदम 2: चरणबद्ध योजना मांगें। एक काम की AI रीफैक्टर योजना वापस लौटाई जा सकने वाली होनी चाहिए। हर चरण को एक छोटे हिस्से को छूना चाहिए, टेस्ट शामिल करने चाहिए, और एक चलता हुआ बीच का पड़ाव देना चाहिए। एक ही बार में पूरा दोबारा लिखने से बचें, जब तक कोड बहुत छोटा और अच्छी तरह कवर न हो।
कदम 3: कैरेक्टराइज़ेशन टेस्ट लिखें। कोड बदलने से पहले AI से कहें कि वह मौजूदा व्यवहार पहचाने और ऐसे टेस्ट का ड्राफ्ट बनाए जो ज़रूरी मामलों को बांध दें। ये टेस्ट खासकर उस पुराने कोड के लिए उपयोगी हैं जहां मंशा साफ़ नहीं है। इनमें सामान्य इनपुट, सीमा वाले इनपुट, विफलता के रास्ते, और रीफैक्टर की वजह से जुड़ा एक रिग्रेशन मामला शामिल होना चाहिए।
कदम 4: एक बार में एक चरण लागू करें। हर चरण के बाद टेस्ट चलाएं और एक केंद्रित समीक्षा मांगें। अगर मॉडल कोई बड़ा एब्स्ट्रैक्शन सुझाए, तो उससे साबित करवाएं कि वह एब्स्ट्रैक्शन असली दोहराव या जोखिम हटाता है। वरना कोड को उबाऊ और स्थानीय ही रहने दें।
रीफैक्टर योजना प्रॉम्प्ट:
एक चरणबद्ध रीफैक्टर योजना बनाओ। लक्ष्य: [लक्ष्य]। मौजूदा कोड: [पेस्ट करें]। बाधाएं: सार्वजनिक व्यवहार बनाए रखो, बदलाव कम से कम रखो, मौजूदा पैटर्न का पालन करो, नई निर्भरताओं से बचो, हर चरण को टेस्ट करने लायक रखो। लौटाओ: जो नहीं बदलना चाहिए वह सूची, निर्भरता का नक्शा, चरण, छुई गई फ़ाइलें, हर चरण के टेस्ट, रोलबैक का जोखिम, और समीक्षा चेकलिस्ट।
यूनिट टेस्ट प्रॉम्प्ट:
लागू करने के बदलावों से पहले टेस्ट लिखो। यहां दिखाई गई मौजूदा टेस्ट शैली का इस्तेमाल करो: [पेस्ट करें]। जो व्यवहार बनाए रखना है: [पेस्ट करें]। जिस कोड का टेस्ट होना है: [पेस्ट करें]। टेस्ट के नाम, सेटअप, इनपुट, अपेक्षित नतीजा, और हर टेस्ट क्यों मायने रखता है, यह लौटाओ। हैप्पी पाथ, सीमा वाला मामला, एरर वाला मामला और रिग्रेशन मामला शामिल करो।
प्रॉम्प्ट टेम्पलेट
मज़बूत कोडिंग प्रॉम्प्ट इसलिए लंबे नहीं होते कि वे चालाक हैं। वे इतने लंबे होते हैं कि अस्पष्टता खत्म हो जाए। मॉडल को भूमिका, काम, संदर्भ, बाधाएं, नतीजे का फ़ॉर्मेट और सत्यापन के मानदंड चाहिए। जो प्रॉम्प्ट कारगर हों उन्हें सहेज लें, ताकि AI एक बार की चैट के बजाय दोहराया जा सकने वाला इंजीनियरिंग वर्कफ़्लो बन जाए।
कोड समझाने का प्रॉम्प्ट:
इस कोड को प्रोजेक्ट में नए जुड़ रहे डेवलपर के लिए समझाओ। मकसद, इनपुट, आउटपुट, डेटा का प्रवाह, निर्भरताएं, विफलता के तरीके, और वे टेस्ट बताओ जो भरोसा बढ़ाएंगे। कोड में दिख रहे तथ्यों को धारणाओं से अलग रखो। कोड: [पेस्ट करें]।
सुरक्षित कोडिंग प्रॉम्प्ट:
इस कोड की सुरक्षा जोखिमों के लिए समीक्षा करो। ऑथ, अनुमतियां, इंजेक्शन, सीक्रेट, वैलिडेशन, असुरक्षित रीडायरेक्ट, फ़ाइल हैंडलिंग, निर्भरता का जोखिम, और संवेदनशील डेटा के उजागर होने पर ध्यान दो। सिर्फ़ वही दिक्कतें लौटाओ जिनके साथ सबूत, असर, सुझाया गया फिक्स, और टेस्ट या मैनुअल जांच हो। कोड/डिफ: [पेस्ट करें]।
मॉडलों के फिक्स की तुलना का प्रॉम्प्ट:
मैं एक कोडिंग काम के लिए AI मॉडलों की तुलना कर रहा हूं। सिर्फ़ दिए गए संदर्भ का इस्तेमाल करो। मूल कारण, सबसे छोटा सुरक्षित फिक्स, टेस्ट, जोखिम, धारणाएं और सवाल लौटाओ। भरोसे को 1-5 के पैमाने पर आंको और बताओ कि कौन सा सबूत तुम्हारा जवाब बदल देगा। काम: [पेस्ट करें]। संदर्भ: [पेस्ट करें]।
AI से बने कोड को स्वीकार करने से पहले QA चेकलिस्ट:
- मॉडल ने काम को सही ढंग से दोहराया।
- पैच समस्या से छोटा है, बड़ा नहीं।
- सार्वजनिक व्यवहार और अनुबंध साफ़ बताए गए हैं।
- टेस्ट सीधे बग या रीफैक्टर के लक्ष्य को कवर करते हैं।
- किनारे के मामले और विफलता के रास्ते सूचीबद्ध हैं।
- सुरक्षा से जुड़े इनपुट की समीक्षा हो चुकी है।
- डिफ प्रोजेक्ट के मौजूदा पैटर्न का पालन करता है।
- आपने ज़रूरी टेस्ट, लिंट, बिल्ड या मैनुअल रिप्रोडक्शन चलाया।
- किसी इंसान ने अंतिम डिफ की समीक्षा की।
Whizi तब उपयोगी है जब आप काम बदले बिना फिक्स की तुलना करना चाहते हैं। वही डिबगिंग या समीक्षा प्रॉम्प्ट कई मॉडलों में पेस्ट करें, फिर नतीजों को सबूत, दायरे, टेस्ट और जोखिम के हिसाब से आंकें। अगर आपको मॉडल चुनने की गाइड चाहिए तो कोडिंग के लिए ChatGPT विकल्प से शुरू करें, कीमत पर प्लान की तुलना करें, या अपने कोड पर यह वर्कफ़्लो चलाने के लिए खाता बनाएं।
- किसी अस्पष्ट बग विवरण से नहीं, असली रिप्रोडक्शन से शुरुआत करें।
- कोड मांगने से पहले अनुमान और सबूत मांगें।
- सबसे छोटा सुरक्षित फिक्स मांगें और छुई गई फ़ाइलें गिनवाएं।
- रीफैक्टर करने से पहले तय करें कि कौन सा व्यवहार नहीं बदलना चाहिए।
- पैच पर भरोसा करने से पहले टेस्ट लिखें या अपडेट करें।
- AI से बने डिफ की सटीकता, सुरक्षा और किनारे के मामलों के लिए समीक्षा करें।
- वही जोखिम भरा प्रॉम्प्ट कई मॉडलों पर चलाएं और Whizi में फिक्स की तुलना करें।
- AI की मदद से बने कोड को मर्ज करने से पहले इंसानी समीक्षा कराएं।
अक्सर पूछे जाने वाले सवाल
कोडिंग के लिए AI का सुरक्षित उपयोग कैसे करें?
AI को ऐसे पेयर प्रोग्रामर की तरह इस्तेमाल करें जो विकल्प, टेस्ट और समीक्षा सुझाता है। रिप्रोडक्शन से शुरुआत करें, छोटा पैच मांगें, टेस्ट चलाएं, और मर्ज करने से पहले डिफ की समीक्षा करें। बने हुए कोड को अपने आप सही मत मानिए।
क्या AI कोड डिबग करने में मदद कर सकता है?
हां। एरर, लॉग और कोड को संभावित मूल कारणों में बदलने के लिए AI उपयोगी है। सबसे सुरक्षित डिबगिंग तरीका यह है कि पहले अनुमान मांगें, फिर एक जांच वाला कदम, फिर सबसे छोटा फिक्स और रिग्रेशन टेस्ट।
क्या AI यूनिट टेस्ट लिख सकता है?
AI यूनिट टेस्ट का ड्राफ्ट बना सकता है, पर आपको व्यवहार की साफ़ कवरेज मांगनी चाहिए। हैप्पी पाथ, सीमा, एरर और रिग्रेशन के मामले मांगें, फिर जांचें कि टेस्ट फिक्स से पहले विफल होते और बाद में पास होते।
कोडिंग के लिए सबसे अच्छा AI मॉडल कौन सा है?
सबसे अच्छा मॉडल काम और कोडबेस पर निर्भर करता है। डिबगिंग, समीक्षा और रीफैक्टरिंग के लिए वही प्रॉम्प्ट कई मॉडलों पर चलाएं, फिर वह जवाब चुनें जिसमें सबसे साफ़ सबूत, सबसे छोटा दायरा और सबसे मज़बूत टेस्ट हों।