Kodokon kodokon.com

AI के साथ डिबगिंग: ठीक करने से पहले समझें

किसी ऐसे फिक्स की भीख माँगने के बजाय जिसे आप समझ ही नहीं पाएँगे, AI का उपयोग एरर मैसेज को टुकड़ों में तोड़ने और एक डायग्नोस्टिक तरीका बनाने के लिए करें।

8 मिनट · 3 प्रश्न

इस पाठ को Kodokon में खोलें

जब आप किसी बग से टकराते हैं, तो सबसे प्रबल प्रवृत्ति होती है स्टैक ट्रेस को "इसे ठीक करो" के साथ किसी चैट में पेस्ट कर देना। यह अक्सर काम कर जाता है - और असली समस्या ठीक यही है। आप एक ऐसा फिक्स लेकर लौटते हैं जिसे आपने कभी समझा ही नहीं, और वह जिस बग की श्रेणी से आता है वह अगले महीने किसी और रूप में फिर लौट आएगी। एक बग एक दुर्लभ सीखने का अवसर होता है: यह आपके मानसिक मॉडल और सिस्टम के वास्तविक व्यवहार के बीच की खाई को उजागर करता है। फिक्स माँगना उस जानकारी को कूड़े में फेंक देता है। सही तरीका: AI से एरर मैसेज समझाने को कहें और एक डायग्नोस्टिक तरीका बिछाने को कहें - फिर जाँच खुद करें।

PROMPT
तुम एक सीनियर डेवलपर हो जो मुझे डिबगिंग में बेहतर बनने में मदद कर रहे हो। तुम्हारा काम समझाना है, मेरे लिए चीज़ें ठीक करना नहीं।

संदर्भ: [भाषा + संस्करण, फ्रेमवर्क, कोड को क्या करना चाहिए]।
पूरा एरर मैसेज, कॉल स्टैक सहित:
[एरर मैसेज पेस्ट करो]
प्रासंगिक कोड स्निपेट (10 से 30 लाइनें):
[कोड पेस्ट करो]

तुम्हारा काम:
1. एरर मैसेज को टुकड़े-दर-टुकड़े समझाओ: यह ठीक-ठीक क्या कह रहा है, और क्या नहीं कह रहा है?
2. मेरे संदर्भ में 2 या 3 सबसे संभावित कारण गिनाओ, सबसे संभावित से लेकर सबसे कम संभावित तक।
3. हर कारण के लिए, एक ठोस जाँच सुझाओ जिसे मैं खुद चला सकूँ (लक्षित लॉग, ब्रेकपॉइंट, अलग किया हुआ टेस्ट)।

कठोर शर्त: मुझे फिक्स मत दो। अगर तुम कारण को पूरे यकीन के साथ पहचान लेते हो, तो बस मुझे बता दो कि कहाँ देखना है।
प्रॉम्प्ट: एरर समझवाएँ और एक डायग्नोस्टिक योजना पाएँ

इस प्रॉम्प्ट में तीन गुण हैं जो पूरा फर्क डालते हैं। पहला, न्यूनतम पर संपूर्ण संदर्भ: संस्करण, कोड का इरादा, पूरा एरर मैसेज - जो AI आपके संदर्भ का अंदाज़ा लगाता है वह कारणों की कल्पना गढ़ लेता है। दूसरा, संभावना के क्रम में लगे कारणों की माँग: आप परिकल्पनाओं में तर्क करना सीखते हैं, निश्चयताओं में नहीं। तीसरा, फिक्स पर स्पष्ट रोक: इसके बिना, मॉडल लगभग हमेशा समाधान की ओर फिसल जाता है, क्योंकि उसे मददगार बनने के लिए ट्रेन किया गया है। ढाँचे को जकड़े रखना आपका काम है।

PROMPT
तुम मेरे डिबगिंग कोच हो। सख्त सुकराती तरीका: तुम कभी जवाब नहीं देते, तुम सवाल पूछते हो।

मेरा बग: [देखा गया लक्षण] जबकि मैं [अपेक्षित व्यवहार] की उम्मीद करता हूँ।
मैं पहले ही क्या-क्या जाँच चुका हूँ: [सूची]।

यह कैसे चलेगा:
- कारण को अलग करने में मदद करने के लिए मुझसे एक बार में एक ही सवाल पूछो।
- हर सवाल या तो किसी परिकल्पना को खारिज करे या किसी को मज़बूत करे।
- जब मैं जवाब दूँ, अगला सवाल पूछने से पहले समझाओ कि मेरा जवाब कौन-सी संभावना को मिटाता है।
- अगर मैं कोई परिकल्पना बताऊँ, तो उसे पुष्ट या खारिज करने वाला सबसे तेज़ टेस्ट डिज़ाइन करने में मेरी मदद करो।

निषेध: कारण का नाम कभी सीधे मत बताओ, भले ही वह तुम्हें बिल्कुल साफ़ लगे।
प्रॉम्प्ट: सुकराती कोच, उन बगों के लिए जिनका कोई साफ़ एरर मैसेज नहीं होता

यह दूसरा प्रॉम्प्ट सबसे कठिन मामला संभालता है: मौन बग, कोई अपवाद नहीं, जहाँ प्रोग्राम बस अपेक्षा से कुछ और ही कर देता है। AI को आपसे जो तरीका अभ्यास कराना चाहिए वही है जो हर अनुभवी डिबगर इस्तेमाल करता है: इसे भरोसेमंद ढंग से दोबारा पैदा करें, दायरा घटाकर (कोड या डेटा को बाइसेक्ट करके) इसे अलग करें, एक खंडनीय परिकल्पना बनाएँ, उस परिकल्पना को सबसे सस्ती संभव जाँच से परखें। यहाँ AI उस रबर डक की भूमिका निभाता है जो पलटकर जवाब देता है - एक ऐसी डक जो आपको कदम छोड़ने से रोकती है।

ज्ञान जांच

सुनिश्चित करें कि आपको इस पाठ के मुख्य बिंदु याद हैं।

  1. एरर मैसेज के सामने, कौन-सी माँग आपकी सीख को सबसे अधिक बढ़ाती है?
    • "इस बग को ठीक करो और पूरा कोड वापस भेजो"
    • "इस मैसेज को समझाओ, संभावित कारणों को क्रम में लगाओ और जाँचें सुझाओ - फिक्स नहीं"
    • "इस मॉड्यूल को दोबारा लिखो ताकि यह ज़्यादा मज़बूत हो"
  2. प्रॉम्प्ट में फिक्स पर स्पष्ट रूप से रोक क्यों लगानी चाहिए?
    • क्योंकि AI फिक्स के लिए ज़्यादा शुल्क लेता है
    • क्योंकि मॉडल, मददगार बनने के लिए ट्रेन किया गया, अपने आप समाधान की ओर फिसल जाता है
    • क्योंकि AI कोई मान्य फिक्स लिखने में असमर्थ है
    • क्योंकि जनरेट किए गए फिक्स हमेशा गलत होते हैं
  3. AI आपके बग के लिए एक संभावित कारण सुझाता है। आप क्या करते हैं?
    • आप सुझाया गया बदलाव सीधे लागू कर देते हैं
    • तुलना के लिए आप दूसरा कारण माँगते हैं
    • आप परिकल्पना को खुद किसी लॉग, ब्रेकपॉइंट या अलग किए हुए टेस्ट से सत्यापित करते हैं