GitHub Issue Triage-এর দায়িত্ব AI-কে দিয়ে

একটি GitHub repo পরিচালনা করা কঠিন। নতুন ইস্যুগুলো প্রায়ই অস্পষ্ট শিরোনাম বা সমস্যাটি পুনরায় তৈরি করার (reproduce) কোনো ধাপ ছাড়াই আসে। আপনি আপনার দিনটি লেবেল করা, ডুপ্লিকেট চেক করা এবং আরও বিস্তারিত জানতে চেয়ে প্রশ্ন করার মাধ্যমে কাটিয়ে দেন। এই কাজগুলো আপনার কোডিং করার সময় কমিয়ে দেয়।

২০২৪ সালের একটি জরিপ দেখিয়েছে যে ৬০% ওপেন-সোর্স মেইনটেইনার কাজ ছেড়ে দেওয়ার কথা ভেবেছেন। ইস্যুগুলো পরিচালনা করা একটি বড় বোঝা।

আমি প্রাথমিক ধাপগুলো সামলানোর জন্য একটি বট তৈরি করেছি। এটি GitHub Actions-এ চলে এবং একটি ল্যাঙ্গুয়েজ মডেল ব্যবহার করে। এটি নিচের কাজগুলো করে:

  • আপনার নিয়ম অনুযায়ী লেবেল প্রয়োগ করে।
  • সম্ভাব্য ডুপ্লিকেটগুলো চিহ্নিত করে।
  • অস্পষ্ট বর্ণনার ক্ষেত্রে প্রয়োজনীয় তথ্য জানতে চায়।

বটটি একটি এজেন্ট, কোনো কঠোর স্ক্রিপ্ট নয়। আমি মডেলটিকে কতগুলো টুলের সেট দিয়ে দিই। এটি সিদ্ধান্ত নেয় কোন টুলটি কখন এবং কোন ক্রমে ব্যবহার করতে হবে। একটি পরিষ্কার ইস্যুর জন্য হয়তো একটি টুলের প্রয়োজন হতে পারে, আবার একটি অগোছালো ইস্যুর জন্য তিনটি টুলের প্রয়োজন হতে পারে।

প্রথম ভার্সনটি খুব বেশি কথা বলত (chatty)। এটি প্রতিটি ইস্যুতে কমেন্ট পোস্ট করত। এতে অপ্রয়োজনীয় শব্দ বা 'noise' তৈরি হতো। আর এই নয়েজের কারণে মানুষ বটগুলোকে এড়িয়ে চলে।

আমি সিস্টেম প্রম্পটে মাত্র একটি বাক্য লিখে এটি ঠিক করেছি। আমি মডেলটিকে কিছু না করার অনুমতি দিয়েছি। আমি তাকে বলেছি যে অনেক সময় নীরব থাকাই সবচেয়ে ভালো উত্তর। এটি কোডের যেকোনো পরিবর্তনের চেয়ে এর আচরণে বেশি পরিবর্তন এনেছে।

আমি LiteLLM ব্যবহার করেছি যাতে বটটি Claude, GPT, বা Gemini-এর সাথে কাজ করতে পারে। বটটি ইস্যুগুলোর ওপর কাজ করার জন্য function calling-এর ওপর নির্ভর করে।

বাস্তব ক্ষেত্রে পরীক্ষার মাধ্যমে তিনটি প্রধান চ্যালেঞ্জ ধরা পড়েছে:

  • GitHub security বটগুলোকে pull requests-এর সিক্রেটগুলো দেখতে বাধা দেয়।
  • যখন আপনি কোনো মডেলের কাছে অনির্ভরযোগ্য টেক্সট পাঠান, তখন prompt injection একটি ঝুঁকি হয়ে দাঁড়ায়।
  • পারমিশন এবং API এররগুলো ডিবাগ করা বিভ্রান্তিকর হতে পারে।

আমি বটের জন্য একটি নিয়মও তৈরি করেছি: এটি শুধুমাত্র সিকিউরিটি রিস্ক বা নিরাপত্তা ঝুঁকি পরীক্ষা করে। এটি কোডের মান (code quality) বিচার করে না। ডিজাইন বিচার করার জন্য বট ব্যবহার করলে কন্ট্রিবিউটররা দূরে সরে যায়। সেই সিদ্ধান্তগুলো মানুষের জন্যই রেখে দিন।

ইস্যু সংক্রান্ত কাগজপত্রের ঝামেলা যদি আপনাকে ক্লান্ত করে দেয়, তবে এই সেটআপটি সাহায্য করতে পারে। এটি পুনরাবৃত্তিমূলক কাজগুলো সরিয়ে নেয় এবং আসল সিদ্ধান্তগুলো আপনার জন্য রেখে দেয়।

Source: https://dev.to/jescalada/putting-an-ai-agent-in-charge-of-github-issue-triage-3085

Optional learning community: https://t.me/GyaanSetuAi