I Built An AI Git Commit Message Generator
मी पूर्वी "fixed bug" किंवा "updated stuff" सारखे खराब commit messages लिहायचो. यामुळे माझे pull requests विस्कळीत व्हायचे. म्हणून मी AI वापरून हे काम स्वयंचलित (automate) करण्याचा निर्णय घेतला. मला माझ्या code diffs मधून स्वच्छ आणि conventional commit messages तयार करायचे होते.
हे माझ्या कल्पनेपेक्षा जास्त कठीण होते. एक साधा prompt काम करत नव्हता.
सुरुवातीचे प्रयत्न अनेक कारणांमुळे अपयशी ठरले:
- AI लहान ओळींऐवजी लांब परिच्छेद लिहायचे.
- ते आवश्यक "feat:" किंवा "fix:" prefixes कडे दुर्लक्ष करायचे.
- कोडमध्ये नसलेल्या फीचर्सबद्दल ते चुकीची माहिती (hallucinate) द्यायचे.
- Local models खूप संथ होते आणि काव्यमय, निरुपयोगी शैलीत लिहायचे.
शेवटी मी एक hybrid system तयार केले जे काम करते. मी वापरत असलेली रचना खालीलप्रमाणे आहे:
- Type Classification: मेसेज लिहिण्यापूर्वी मी मॉडेलला feat, fix, किंवा chore सारखा प्रकार निवडण्यास सांगतो.
- Context Truncation: मी फक्त diff च्या पहिल्या 250 ओळी पाठवतो. यामुळे पैसे वाचतात आणि लक्ष केंद्रित राहते.
- Validation: आउटपुट तपासण्यासाठी मी regex वापरतो. जर मेसेज चुकीचा असेल, तर स्क्रिप्ट पुन्हा प्रयत्न करते.
- Low Temperature: मी temperature 0.2 वर सेट करतो. यामुळे आउटपुट सुसंगत आणि 'boring' राहते. Logs साठी 'boring' असणे चांगले असते.
मी automatic commit hooks वापरत नाही. AI चुका करू शकते. मी या स्क्रिप्टला git alias म्हणून चालवतो. ते एक मेसेज सुचवते आणि मी commit करण्यापूर्वी त्याची पुनरावलोकन (review) करतो. खराब git history टाळण्यासाठी मॅन्युअल रिव्ह्यू हा सर्वोत्तम उपाय आहे.
मी शिकलेले तीन धडे:
- Token limits तुमचे शत्रू आहेत. मोठे diffs तुमचे बजेट किंवा तुमचा prompt बिघडवू शकतात.
- Validation अनिवार्य आहे. त्याशिवाय तुम्हाला अर्थहीन माहिती मिळेल.
- वेग महत्त्वाचा आहे. मी GPT-4o-mini वापरतो कारण ते वेगवान आणि स्वस्त आहे.
जर तुम्ही संवेदनशील (sensitive) कोडवर काम करत असाल, तर तुमचे diffs कोणत्याही बाह्य (external) API ला पाठवू नका. त्याऐवजी local model वापरा.
तुम्ही तुमचे commit messages कसे हाताळता? तुम्ही AI वापरता की ते स्वतः हाताने लिहिता?
