GitHub Issue Triage നിയന്ത്രിക്കാൻ AI-യെ ഏൽപ്പിക്കാം
ഒരു GitHub repo കൈകാര്യം ചെയ്യുന്നത് പ്രയാസകരമാണ്. പുതിയ ഇഷ്യൂകൾ പലപ്പോഴും അവ്യക്തമായ തലക്കെട്ടുകളുമായോ അല്ലെങ്കിൽ അവ എങ്ങനെ പുനരാവിഷ്കരിക്കാം (reproduce) എന്നതിനെക്കുറിച്ചുള്ള വിവരങ്ങളില്ലാതെയോ ആണ് വരുന്നത്. ലേബലുകൾ നൽകുന്നതിനും, ഡ്യൂപ്ലിക്കേറ്റുകൾ പരിശോധിക്കുന്നതിനും, കൂടുതൽ വിവരങ്ങൾ ചോദിച്ചറിയുന്നതിനുമായി നിങ്ങളുടെ സമയം ചെലവഴിക്കേണ്ടി വരുന്നു. കോഡിംഗിനായി മാറ്റിവെക്കാൻ ആഗ്രഹിക്കുന്ന സമയം ഈ ജോലികൾ കവർന്നെടുക്കുന്നു.
2024-ലെ ഒരു സർവേ പ്രകാരം, 60% ഓപ്പൺ സോഴ്സ് മെയിന്റൈനർമാരും (maintainers) ജോലി ഉപേക്ഷിക്കുന്നതിനെക്കുറിച്ച് ചിന്തിച്ചിട്ടുണ്ട്. ഇഷ്യൂകൾ കൈകാര്യം ചെയ്യുന്നത് വലിയൊരു ഭാരമാണ്.
ആദ്യഘട്ടത്തിലുള്ള കാര്യങ്ങൾ കൈകാര്യം ചെയ്യാൻ ഞാൻ ഒരു ബോട്ട് നിർമ്മിച്ചു. ഇത് GitHub Actions-ൽ പ്രവർത്തിക്കുകയും ഒരു ലാംഗ്വേജ് മോഡൽ ഉപയോഗിക്കുകയും ചെയ്യുന്നു. ഇത് താഴെ പറയുന്ന ജോലികൾ ചെയ്യുന്നു:
- നിങ്ങളുടെ നിയമങ്ങൾക്കനുസരിച്ച് ലേബലുകൾ നൽകുന്നു.
- ഡ്യൂപ്ലിക്കേറ്റുകൾ ആകാൻ സാധ്യതയുള്ളവയെ അടയാളപ്പെടുത്തുന്നു.
- അപൂർണ്ണമായ വിവരണങ്ങളിൽ വിട്ടുപോയ വിവരങ്ങൾ ചോദിച്ചറിയുന്നു.
ഈ ബോട്ട് ഒരു ഏജന്റാണ് (agent), വെറുമൊരു സ്ക്രിപ്റ്റല്ല. ഞാൻ മോഡലിന് ചില ടൂളുകൾ (tools) നൽകുന്നു. ഏത് ടൂൾ ഏത് ക്രമത്തിൽ ഉപയോഗിക്കണമെന്ന് അത് സ്വയം തീരുമാനിക്കുന്നു. വ്യക്തമായ ഒരു ഇഷ്യൂവിന് ഒരു ടൂൾ മതിയാകും, എന്നാൽ അവ്യക്തമായ ഒരു ഇഷ്യൂവിന് മൂന്ന് ടൂളുകൾ വരെ ആവശ്യമായി വന്നേക്കാം.
ആദ്യ പതിപ്പ് അമിതമായി സംസാരിക്കുന്ന രീതിയിലായിരുന്നു. അത് എല്ലാ ഇഷ്യൂകളിലും കമന്റുകൾ പോസ്റ്റ് ചെയ്തിരുന്നു. ഇത് അനാവശ്യമായ ബഹളമുണ്ടാക്കി (noise). ഇത്തരം ബഹളങ്ങൾ ബോቶችን അവഗണിക്കാൻ ആളുകളെ പ്രേരിപ്പിക്കുന്നു.
സിസ്റ്റം പ്രോംപ്റ്റിൽ (system prompt) ഒരു വാചകം ചേർത്തുകൊണ്ട് ഞാൻ ഇത് പരിഹരിച്ചു. ഒന്നും ചെയ്യാതിരിക്കാൻ ഞാൻ മോഡലിന് അനുമതി നൽകി. പലപ്പോഴും മൗനമാണ് ഏറ്റവും നല്ല മറുപടി എന്ന് ഞാൻ അതിനോട് പറഞ്ഞു. ഒരു കോഡ് മാറ്റത്തേക്കാളും ഇത് അതിന്റെ പെരുമാറ്റത്തിൽ മാറ്റം വരുത്തി.
Claude, GPT, അല്ലെങ്കിൽ Gemini എന്നിവയുമായി പ്രവർത്തിക്കാൻ വേണ്ടി ഞാൻ LiteLLM ഉപയോഗിച്ചു. ഇഷ്യൂകളിൽ പ്രവർത്തിക്കാൻ ബോട്ട് ഫങ്ക്ഷൻ കോളിംഗിനെ (function calling) ആശ്രയിക്കുന്നു.
യഥാർത്ഥ ലോകത്തെ പരീക്ഷണങ്ങൾ മൂന്ന് പ്രധാന വെല്ലുവിളികൾ വെളിപ്പെടുത്തി:
- പുൾ റിക്വസ്റ്റുകളിലെ (pull requests) രഹസ്യവിവരങ്ങൾ (secrets) കാണുന്നതിൽ നിന്ന് GitHub സുരക്ഷാ സംവിധാനങ്ങൾ ബോട്ടിനെ തടയുന്നു.
- വിശ്വസിക്കാൻ കൊള്ളാത്ത ടെക്സ്റ്റുകൾ ഒരു മോഡലിലേക്ക് നൽകുന്നത് പ്രോംപ്റ്റ് ഇൻജക്ഷൻ (prompt injection) എന്ന അപകടസാധ്യതയുണ്ടാക്കുന്നു.
- പെർമിഷനുകളും API പിശകുകളും ഡിബഗ് (debug) ചെയ്യുന്നത് ആശയക്കുഴപ്പമുണ്ടാക്കാം.
ബോട്ടിനായി ഞാൻ ഒരു നിയമം കൂടി ഉണ്ടാക്കി: അത് സുരക്ഷാ ഭീഷണികൾ മാത്രമേ പരിശോധിക്കൂ. കോഡിന്റെ ഗുണനിലവാരം വിലയിരുത്തുന്നില്ല. ഡിസൈനുകളെ കുറിച്ച് ബോട്ട് തീരുമാനമെടുക്കുന്നത് കൺട്രിബ്യൂട്ടർമാരെ അകറ്റാൻ കാരണമാകും. അത്തരം തീരുമാനങ്ങൾ മനുഷ്യർക്കായി വിടുക.
ഇഷ്യൂകളുടെ രേഖാമൂലമുള്ള ജോലികൾ നിങ്ങളെ തളർത്തുന്നുണ്ടെങ്കിൽ, ഈ സംവിധാനം സഹായിക്കും. ഇത് ആവർത്തന സ്വഭാവമുള്ള ജോലികൾ ഒഴിവാക്കി യഥാർത്ഥ തീരുമാനങ്ങൾ എടുക്കാനുള്ള സമയം നിങ്ങൾക്ക് നൽകുന്നു.
Source: https://dev.to/jescalada/putting-an-ai-agent-in-charge-of-github-issue-triage-3085
Optional learning community: https://t.me/GyaanSetuAi
