আমি একটি AI Git Commit Message Generator তৈরি করেছি
আমি আগে "fixed bug" বা "updated stuff"-এর মতো খারাপ commit message লিখতাম। এর ফলে আমার pull request গুলো অগোছালো হয়ে যেত। আমি AI ব্যবহার করে এটি স্বয়ংক্রিয় করার সিদ্ধান্ত নিই। আমি আমার code diff থেকে পরিষ্কার এবং conventional commit message তৈরি করতে চেয়েছিলাম।
এটি আমার ভাবনার চেয়েও কঠিন ছিল। একটি সাধারণ prompt কাজ করেনি।
শুরুর দিকের প্রচেষ্টাগুলো অনেক কারণে ব্যর্থ হয়েছিল:
- AI ছোট লাইনের পরিবর্তে বড় বড় প্যারাগ্রাফ লিখত।
- এটি প্রয়োজনীয় "feat:" বা "fix:" prefix গুলো উপেক্ষা করত।
- এটি এমন সব ফিচার নিয়ে কথা বলত (hallucinate করত) যা কোডে ছিল না।
- Local model গুলো খুব ধীরগতির ছিল এবং কাব্যিক ও অকেজো স্টাইলে লিখত।
অবশেষে আমি একটি hybrid system তৈরি করেছি যা কাজ করে। আমি যে structure ব্যবহার করি তা নিচে দেওয়া হলো:
- Type Classification: মেসেজ লেখার আগে আমি মডেলটিকে feat, fix, বা chore-এর মতো একটি type বেছে নিতে বলি।
- Context Truncation: আমি diff-এর শুধুমাত্র প্রথম ২৫০ লাইন পাঠাই। এতে খরচ বাঁচে এবং ফোকাস ঠিক থাকে।
- Validation: আউটপুট চেক করার জন্য আমি একটি regex ব্যবহার করি। যদি মেসেজটি ভুল হয়, তবে script-টি আবার চেষ্টা করে।
- Low Temperature: আমি temperature ০.২ সেট করি। এটি আউটপুটকে সামঞ্জস্যপূর্ণ এবং একঘেয়ে (boring) করে তোলে। লগ-এর জন্য একঘেয়ে হওয়া ভালো।
আমি automatic commit hooks ব্যবহার করি না। AI ভুল করতে পারে। আমি script-টি একটি git alias হিসেবে চালাই। এটি একটি মেসেজ সাজেস্ট করে এবং আমি commit করার আগে সেটি রিভিউ করি। একটি খারাপ git history থেকে বাঁচার জন্য manual review-ই হলো সেরা উপায়।
আমি যে তিনটি শিক্ষা পেয়েছি:
- Token limit আপনার শত্রু। বড় diff আপনার বাজেট বা prompt নষ্ট করে দিতে পারে।
- Validation বাধ্যতামূলক। এটি ছাড়া আপনি অর্থহীন কিছু পাবেন।
- গতি গুরুত্বপূর্ণ। আমি GPT-4o-mini ব্যবহার করি কারণ এটি দ্রুত এবং সাশ্রয়ী।
আপনি যদি সংবেদনশীল (sensitive) কোড নিয়ে কাজ করেন, তবে আপনার diff গুলো কোনো external API-তে পাঠাবেন না। পরিবর্তে একটি local model ব্যবহার করুন।
আপনি আপনার commit message কীভাবে সামলান? আপনি কি AI ব্যবহার করেন নাকি হাতে লেখেন?
