मैंने एक AI Git Commit Message Generator बनाया
मैं पहले "fixed bug" या "updated stuff" जैसे खराब commit messages लिखता था। इससे मेरे pull requests काफी अस्त-व्यस्त हो जाते थे। इसलिए मैंने AI का उपयोग करके इसे ऑटोमेट करने का निर्णय लिया। मैं अपने code diffs से साफ और conventional commit messages जनरेट करना चाहता था।
यह मेरी सोच से कहीं अधिक कठिन था। एक साधारण prompt काम नहीं कर रहा था।
शुरुआती प्रयास कई कारणों से विफल रहे:
- AI छोटी लाइनों के बजाय लंबे पैराग्राफ लिख रहा था।
- इसने आवश्यक "feat:" या "fix:" prefixes को नज़रअंदाज़ कर दिया।
- इसने ऐसे features के बारे में hallucinate किया जो code में मौजूद ही नहीं थे।
- Local models बहुत धीमे थे और काव्यमय (poetic), बेकार शैली में लिख रहे थे।
अंततः मैंने एक hybrid system बनाया जो काम करता है। यहाँ वह structure है जिसका मैं उपयोग करता हूँ:
- Type Classification: मैं message लिखने से पहले model से feat, fix, या chore जैसा कोई type चुनने के लिए कहता हूँ।
- Context Truncation: मैं diff की केवल पहली 250 lines ही भेजता हूँ। इससे पैसे बचते हैं और focus सटीक बना रहता है।
- Validation: मैं output चेक करने के लिए regex का उपयोग करता हूँ। यदि message गलत है, तो script फिर से प्रयास करती है।
- Low Temperature: मैं temperature को 0.2 पर सेट करता हूँ। इससे output consistent और boring रहता है। logs के लिए boring होना अच्छा है।
मैं automatic commit hooks का उपयोग नहीं करता। AI गलतियाँ करता है। मैं script को git alias के रूप में चलाता हूँ। यह एक message का सुझाव देता है, और मैं commit करने से पहले उसकी समीक्षा (review) करता हूँ। खराब git history से बचने के लिए manual review ही सबसे अच्छा बीमा है।
तीन सबक जो मैंने सीखे:
- Token limits आपकी दुश्मन हैं। बड़े diffs आपके budget या prompt को बिगाड़ सकते हैं।
- Validation अनिवार्य है। इसके बिना, आपको केवल बकवास (nonsense) मिलेगा।
- Speed मायने रखती है। मैं GPT-4o-mini का उपयोग करता हूँ क्योंकि यह तेज़ और सस्ता है।
यदि आप sensitive code पर काम करते हैं, तो अपने diffs को किसी external API पर न भेजें। इसके बजाय local model का उपयोग करें।
आप अपने commit messages को कैसे संभालते हैं? क्या आप AI का उपयोग करते हैं या उन्हें खुद लिखते हैं?
