मैंने एक AI Git Commit Message Generator बनाया
मैं पहले खराब commit messages लिखता था।
"fixed bug" या "updated stuff" जैसे मैसेज आम थे। इससे मेरे pull requests काफी अस्त-व्यस्त हो जाते थे। मैंने इसे ऑटोमेट करने के लिए एक AI टूल बनाने का फैसला किया। मैं अपने code diffs से स्पष्ट और प्रोफेशनल मैसेज जेनरेट करना चाहता था।
यह मेरी सोच से कहीं अधिक कठिन था। आप केवल एक साधारण prompt का उपयोग नहीं कर सकते।
इस प्रक्रिया से मैंने जो सीखा, वह यहाँ है:
असफलताएँ
- शुरुआती प्रयास बहुत लंबे थे। AI छोटी लाइनों के बजाय पैराग्राफ लिख रहा था।
- AI ने Conventional Commits जैसे स्टैंडर्ड फॉर्मेट्स को नज़रअंदाज़ कर दिया।
- अधिक निर्देश जोड़ने से AI उन बदलावों के बारे में भी बताने लगा (hallucinate करने लगा) जो वास्तव में वहाँ नहीं थे।
- लोकल मॉडल्स बहुत धीमे थे या फिर एक अजीब, काव्यात्मक शैली में लिख रहे थे।
समाधान
मैंने Node.js में तीन चरणों का उपयोग करके एक हाइब्रिड सिस्टम बनाया:
- Type Classification: मैं AI को पहले एक टाइप (feat, fix, chore, आदि) चुनने के लिए मजबूर करता हूँ।
- Context Truncation: मैं diff की केवल पहली 250 लाइनें भेजता हूँ। इससे पैसे बचते हैं और फोकस बना रहता है।
- Validation: मैं आउटपुट चेक करने के लिए regex का उपयोग करता हूँ। यदि यह विफल हो जाता है, तो स्क्रिप्ट फिर से प्रयास करती है।
मेरी तकनीकी सेटिंग्स
- Model: मैं GPT-4o-mini का उपयोग करता हूँ। यह तेज़ और सस्ता है।
- Temperature: मैंने इसे 0.2 पर सेट किया है। कम तापमान बोरिंग लेकिन सुसंगत (consistent) मैसेज सुनिश्चित करता है।
- Workflow: मैं auto-commit नहीं करता हूँ। मैं मैसेज का सुझाव देने के लिए टूल का उपयोग करता हूँ, फिर मैं उसे रिव्यू करता हूँ और मैन्युअल रूप से पेस्ट करता हूँ।
डेवलपर्स के लिए सबक
- Token limits आपकी मुख्य दुश्मन हैं। बड़े diffs आपके बजट या prompt को खराब कर सकते हैं।
- Validation आवश्यक है। regex चेक के बिना, आपको बेकार टेक्स्ट मिलेगा।
- Manual review सुरक्षा है। AI गलतियाँ करता है। इसे बिना देखे कभी भी commit न करने दें।
- Privacy मायने रखती है। यदि आपकी कंपनी मना करती है, तो संवेदनशील कोड को किसी बाहरी API पर न भेजें।
यदि आप इसे आज़माना चाहते हैं, तो इसे Git alias के रूप में चलाएँ। यह प्रक्रिया को सहज बनाता है।
Optional learning community: https://t.me/GyaanSetuAi
