నేను ఒక AI Git Commit Message Generatorను రూపొందించాను

నేను గతంలో "fixed bug" లేదా "updated stuff" వంటి చెత్త కమిట్ మెసేజ్‌లను రాసేవాడిని. దీనివల్ల నా pull requests గందరగోళంగా ఉండేవి. అందుకే AIని ఉపయోగించి దీనిని ఆటోమేట్ చేయాలని నిర్ణయించుకున్నాను. నా కోడ్ diffs నుండి క్లీన్ మరియు కన్వెన్షనల్ (conventional) కమిట్ మెసేజ్‌లను రూపొందించాలని నేను అనుకున్నాను.

ఇది నేను అనుకున్నదానికంటే కష్టంగా ఉంది. ఒక సాధారణ ప్రాంప్ట్ (prompt) సరిగ్గా పనిచేయలేదు.

ప్రారంభ ప్రయత్నాలు అనేక కారణాల వల్ల విఫలమయ్యాయి:

  • AI చిన్న లైన్లకు బదులుగా పెద్ద పెద్ద పేరాగ్రాఫ్‌లను రాసేది.
  • ఇది అవసరమైన "feat:" లేదా "fix:" ప్రిఫిక్స్‌లను (prefixes) విస్మరించేది.
  • కోడ్‌లో లేని ఫీచర్లను ఇది ఊహించి (hallucinated) రాసేది.
  • లోకల్ మోడల్స్ చాలా నెమ్మదిగా ఉండేవి మరియు కవిత్వ శైలిలో, ఉపయోగం లేని విధంగా రాసేవి.

చివరకు నేను పనిచేసే ఒక హైబ్రిడ్ సిస్టమ్‌ను రూపొందించాను. నేను ఉపయోగించే నిర్మాణం (structure) ఇక్కడ ఉంది:

  • Type Classification: మెసేజ్ రాయడానికి ముందే feat, fix, లేదా chore వంటి ఒక టైప్‌ను ఎంచుకోమని నేను మోడల్‌ను అడుగుతాను.
  • Context Truncation: నేను diffలోని మొదటి 250 లైన్లను మాత్రమే పంపిస్తాను. ఇది ఖర్చును తగ్గిస్తుంది మరియు ఫోకస్‌ను పెంచుతుంది.
  • Validation: అవుట్‌పుట్‌ను తనిఖీ చేయడానికి నేను regexని ఉపయోగిస్తాను. మెసేజ్ తప్పుగా ఉంటే, స్క్రిప్ట్ మళ్ళీ ప్రయత్నిస్తుంది.
  • Low Temperature: నేను temperatureను 0.2కి సెట్ చేస్తాను. ఇది అవుట్‌పుట్‌ను స్థిరంగా (consistent) మరియు బోరింగ్‌గా ఉంచుతుంది. లాగ్స్ (logs) కోసం బోరింగ్‌గా ఉండటమే మంచిది.

నేను ఆటోమేటిక్ కమిట్ హుక్స్ (commit hooks) ఉపయోగించను. AI తప్పులు చేస్తుంది. నేను స్క్రిప్ట్‌ను git aliasగా రన్ చేస్తాను. అది ఒక మెసేజ్‌ను సూచిస్తుంది, నేను కమిట్ చేసే ముందు దానిని రివ్యూ చేస్తాను. చెత్త git history రాకుండా ఉండటానికి మాన్యువల్ రివ్యూయే ఉత్తమమైన మార్గం.

నేను నేర్చుకున్న మూడు పాఠాలు:

  • Token limits మీ శత్రువులు. పెద్ద diffs మీ బడ్జెట్‌ను లేదా ప్రాంప్ట్‌ను దెబ్బతీస్తాయి.
  • Validation తప్పనిసరి. అది లేకపోతే, మీకు అర్థం లేని విషయాలు (nonsense) వస్తాయి.
  • Speed ముఖ్యం. నేను GPT-4o-miniని ఉపయోగిస్తాను ఎందుకంటే అది వేగంగా మరియు చౌకగా ఉంటుంది.

మీరు సెన్సిటివ్ కోడ్‌పై పనిచేస్తుంటే, మీ diffsను ఎక్స్‌టర్నల్ APIకి పంపకండి. దానికి బదులుగా లోకల్ మోడల్‌ను ఉపయోగించండి.

మీరు మీ కమిట్ మెసేజ్‌లను ఎలా హ్యాండిల్ చేస్తారు? మీరు AIని ఉపయోగిస్తారా లేదా స్వయంగా రాస్తారా?

Source: https://dev.to/__c1b9e06dc90a7e0a676b/i-built-a-git-commit-message-generator-with-ai-heres-what-i-learned-2534