ನಾನು ಎಐ (AI) Git Commit Message Generator ಅನ್ನು ನಿರ್ಮಿಸಿದೆ
ನಾನು "fixed bug" ಅಥವಾ "updated stuff" ನಂತಹ ಕೆಟ್ಟ ಕಮಿಟ್ ಮೆಸೇಜ್ಗಳನ್ನು ಬರೆಯುತ್ತಿದ್ದೆ. ಇದರಿಂದ ನನ್ನ pull requests ಅಸ್ತವ್ಯಸ್ತವಾಗುತ್ತಿದ್ದವು. ಇದನ್ನು AI ಬಳಸಿ ಸ್ವಯಂಚಾಲಿತಗೊಳಿಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ. ನನ್ನ code diffs ನಿಂದ ಸ್ವಚ್ಛವಾದ, ಸಾಂಪ್ರದಾಯಿಕ ಕಮಿಟ್ ಮೆಸೇಜ್ಗಳನ್ನು ರಚಿಸುವುದು ನನ್ನ ಉದ್ದೇಶವಾಗಿತ್ತು.
ಇದು ನಾನು ಅಂದುಕೊಂಡಿದ್ದಕ್ಕಿಂತ ಕಷ್ಟವಾಗಿತ್ತು. ಒಂದು ಸರಳ prompt ಕೆಲಸ ಮಾಡಲಿಲ್ಲ.
ಆರಂಭಿಕ ಪ್ರಯತ್ನಗಳು ಹಲವು ಕಾರಣಗಳಿಂದ ವಿಫಲವಾದವು:
- ಎಐ ಸಣ್ಣ ಸಾಲುಗಳ ಬದಲಿಗೆ ಉದ್ದವಾದ ಪ್ಯಾರಾಗ್ರಾಫ್ಗಳನ್ನು ಬರೆಯುತ್ತಿತ್ತು.
- ಇದು ಅಗತ್ಯವಿರುವ "feat:" ಅಥವಾ "fix:" prefixes ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತಿತ್ತು.
- ಕೋಡ್ನಲ್ಲಿ ಇಲ್ಲದ ಫೀಚರ್ಗಳನ್ನು ಇದು ಕಲ್ಪಿಸಿಕೊಳ್ಳುತ್ತಿತ್ತು (hallucinated).
- ಲೋಕಲ್ ಮಾಡೆಲ್ಗಳು ತುಂಬಾ ನಿಧಾನವಾಗಿದ್ದವು ಮತ್ತು ಕಾವ್ಯಾತ್ಮಕವಾದ, ಪ್ರಯೋಜನವಿಲ್ಲದ ಶೈಲಿಯಲ್ಲಿ ಬರೆಯುತ್ತಿದ್ದವು.
ಅಂತಿಮವಾಗಿ ನಾನು ಕೆಲಸ ಮಾಡುವ ಹೈಬ್ರಿಡ್ ಸಿಸ್ಟಮ್ ಅನ್ನು ನಿರ್ಮಿಸಿದೆ. ನಾನು ಬಳಸುವ ರಚನೆ ಇಲ್ಲಿದೆ:
- Type Classification: ಮೆಸೇಜ್ ಬರೆಯುವ ಮೊದಲು feat, fix, ಅಥವಾ chore ನಂತಹ ಒಂದು type ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ನಾನು ಮಾಡೆಲ್ಗೆ ಕೇಳುತ್ತೇನೆ.
- Context Truncation: ನಾನು diff ನ ಮೊದಲ 250 ಸಾಲುಗಳನ್ನು ಮಾತ್ರ ಕಳುಹಿಸುತ್ತೇನೆ. ಇದು ಹಣವನ್ನು ಉಳಿಸುತ್ತದೆ ಮತ್ತು ಗಮನವನ್ನು ಚುರುಕಾಗಿಡುತ್ತದೆ.
- Validation: ಔಟ್ಪುಟ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ನಾನು regex ಬಳಸುತ್ತೇನೆ. ಮೆಸೇಜ್ ತಪ್ಪಾಗಿದ್ದರೆ, ಸ್ಕ್ರಿಪ್ಟ್ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ.
- Low Temperature: ನಾನು temperature ಅನ್ನು 0.2 ಗೆ ಹೊಂದಿಸುತ್ತೇನೆ. ಇದು ಔಟ್ಪುಟ್ ಅನ್ನು ಸ್ಥಿರವಾಗಿ ಮತ್ತು ಬೋರಿಂಗ್ ಆಗಿರಿಸುತ್ತದೆ. Logs ಗೆ ಬೋರಿಂಗ್ ಆಗಿರುವುದು ಒಳ್ಳೆಯದು.
ನಾನು ಆಟೋಮ್ಯಾಟಿಕ್ commit hooks ಬಳಸುವುದಿಲ್ಲ. AI ತಪ್ಪುಗಳನ್ನು ಮಾಡುತ್ತದೆ. ನಾನು ಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು git alias ಆಗಿ ರನ್ ಮಾಡುತ್ತೇನೆ. ಅದು ಒಂದು ಮೆಸೇಜ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ ಮತ್ತು ನಾನು commit ಮಾಡುವ ಮೊದಲು ಅದನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇನೆ. ಕೆಟ್ಟ git history ವಿರುದ್ಧ manual review ಅತ್ಯುತ್ತಮ ವಿಮೆ.
ನಾನು ಕಲಿತ ಮೂರು ಪಾಠಗಳು:
- Token limits ನಿಮ್ಮ ಶತ್ರುಗಳು. ದೊಡ್ಡ diffs ನಿಮ್ಮ ಬಜೆಟ್ ಅಥವಾ ನಿಮ್ಮ prompt ಅನ್ನು ಹಾಳುಮಾಡಬಹುದು.
- Validation ಕಡ್ಡಾಯ. ಅದು ಇಲ್ಲದಿದ್ದರೆ, ನಿಮಗೆ ಅರ್ಥವಿಲ್ಲದ ವಿಷಯಗಳು ಸಿಗುತ್ತವೆ.
- ವೇಗ ಮುಖ್ಯವಾಗುತ್ತದೆ. ನಾನು GPT-4o-mini ಅನ್ನು ಬಳಸುತ್ತೇನೆ ಏಕೆಂದರೆ ಅದು ವೇಗವಾಗಿದೆ ಮತ್ತು ಅಗ್ಗವಾಗಿದೆ.
ನೀವು ಸೂಕ್ಷ್ಮವಾದ ಕೋಡ್ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತಿದ್ದರೆ, ನಿಮ್ಮ diffs ಅನ್ನು ಹೊರಗಿನ API ಗೆ ಕಳುಹಿಸಬೇಡಿ. ಬದಲಿಗೆ ಲೋಕಲ್ ಮಾಡೆಲ್ ಬಳಸಿ.
ನೀವು ನಿಮ್ಮ commit messages ಅನ್ನು ಹೇಗೆ ನಿರ್ವಹಿಸುತ್ತೀರಿ? ನೀವು AI ಬಳಸುತ್ತೀರಾ ಅಥವಾ ಕೈಯಿಂದ ಬರೆಯುತ್ತೀರಾ?
