How to Build an AI Code Review Agent - Daksh Gupta, Greptile
Read full transcript 13 segments
-
আচ্ছা ঠিক আছে, আমার নাম দাক্ষ । আমি গ্রিপটাইল (Griptile) নামে একটি কোম্পানির অন্যতম সহ- প্রতিষ্ঠাতা, এবং আমরা এমন এজেন্ট তৈরি করি যা কোড বেসের পূর্ণ প্রেক্ষাপটসহ পুল রিকোয়েস্টগুলো পর্যালোচনা ও পরীক্ষা করে। এই পুল রিকোয়েস্টগুলো পর্যালোচনা ও পরীক্ষার মাধ্যমে, আমরা মূলত এআই-এর তৈরি কোডের বাগ, যৌক্তিক ত্রুটি এবং কোডের গুণমান সংক্রান্ত সমস্যাগুলো খুঁজে বের করি। এখন, কাজের পরিধি বোঝানোর জন্য বলি, হাজার হাজার কোম্পানি প্রতিদিন গ্রিপটাইল ব্যবহার করে। গিটহাবের (GitHub) মোট পুল রিকোয়েস্টের প্রায় ১%আমাদের মাধ্যমে সম্পন্ন হয়, এবং এনভিডিয়া-র (Nvidia) কুডা () কোড বেস বা কয়েনবেস-এর ( Coinbase) ওয়ালেট কোড বেসসহ বিভিন্ন ধরনের কোড বেস আমরা হ্যান্ডেল করি । মাঝে মাঝে আমরা এমন কোম্পানির মুখোমুখি হই, যাদের জন্য আমরা সঠিক কোড রিভিউ বা টেস্টিং পণ্য নই। তাদের প্রয়োজনগুলো এতটাই বিশেষায়িত এবং জটিল যে তাদের নিজস্ব টুল তৈরি করাই তাদের জন্য লাভজনক। আর যখন এমনটি ঘটে, আমরা তাদের বিনামূল্যে সাহায্য করার চেষ্টা করি। এর দুটি কারণ রয়েছে। প্রথমত, এই কাজটি কীভাবে খুব ভালোভাবে করা যায়, সে বিষয়ে আমাদের অনেক বিশেষায়িত জ্ঞান রয়েছে। এবং দ্বিতীয়ত, ভবিষ্যতে কীভাবে এমন গ্রাহকদের সেবা দেওয়া যায়, তা সম্পর্কে আমরা অনেক কিছু শিখতে পারি। এই উপস্থাপনায়, আমি আপনাদের সেই পরামর্শটিই দেব যা আমরা তাদের দিয়ে থাকি, অর্থাৎ কীভাবে নিজে একটি দারুণ এআই কোড রিভিউ এজেন্ট তৈরি করবেন। গ্রিপটাইলের এমন তিনটি বিষয় রয়েছে যা মানুষ পছন্দ করে, এবং আমি সেগুলো কীভাবে নিজে বাস্তবায়ন করবেন তা নিয়ে আলোচনা করব। প্রথমটি হলো কোড বেসের প্রেক্ষাপট। যখন গ্রাহকরা তাদের পুল রিকোয়েস্টে গ্রিপটাইল ব্যবহার করেন, তারা দেখেন যে এটি তাদের কোড বেসকে সত্যিই ভালোভাবে বুঝতে পারে। সত্যি বলতে, কোড যাচাইকারী কোম্পানি হওয়ার আগে আমরা কোড বেস কনটেক্সট কোম্পানি ছিলাম। আমরা ২০২৩ সাল থেকে
-
ল্যাঙ্গুয়েজ মডেলগুলোকে শেখাচ্ছিলাম কীভাবে বিশাল কোড বেস বুঝতে হয়, যার ফলে আমরা কোড ইনডেক্সিংয়ে খুব দক্ষ হয়ে উঠেছি। গ্রিপটাইলের দ্বিতীয় যে বিষয়টি মানুষ পছন্দ করে তা হলো, এটি আপনার কোড রান করে— অর্থাৎ এটি একটি পূর্ণাঙ্গ এবং ডিপেন্ডেন্সি- সমৃদ্ধ স্যান্ডবক্সে আপনার স্ট্যাক চালু করে, তারপর কম্পিউটার ব্যবহারকারীর মতো ক্লিক করে এবং এপিআই এন্ডপয়েন্ট টেস্ট করার মতো কাজগুলো করে। আর তৃতীয় বিষয়টি হলো, আমরা ইনফারেন্স (inference) বরাদ্দের ক্ষেত্রে খুবই দক্ষ। আমরা রিভিউ এবং যাচাইকরণ প্রক্রিয়ার প্রতিটি সাবটাস্কের জন্য সঠিক মডেল এবং সঠিক পরিমাণে ইনফারেন্স বাজেট বেছে নিই । এর ফলে, কোনো অভ্যন্তরীণ টুল বা প্রতিযোগীর তুলনায় আমরা খরচ অনুযায়ী অনেক বেশি পারফরম্যান্স দিতে সক্ষম। তো, এই উপস্থাপনাটি আপনার প্রয়োজন হওয়ার দুটি কারণ থাকতে পারে। প্রথমটি হলো, আপনি নিজের রিভিউ এজেন্ট তৈরি করতে চান। দ্বিতীয় কারণটি কিছুটা সূক্ষ্ম, আর তা হলো আপনি যদি আপনার কোম্পানির জন্য কোনো রিভিউ বা টেস্টিং এজেন্ট বেছে নিতে চান এবং বুঝতে চান কী কারণে একটি এজেন্ট ভালো হয় আর কী কারণে একটি এজেন্ট সেরা হয়। ঠিক আছে। তাহলে, সরাসরি শুরু করা যাক। এখন, নতুন করে শুরু করি। আপনি হয়তো আপনার কোম্পানির প্ল্যাটফর্ম টিমের অংশ, অথবা আপনি আপনার টিমের সেই এআই- এর প্রতি আসক্ত সদস্য এবং আপনি আপনার কোম্পানির জন্য রিভিউ ভ্যালিডেটর তৈরি করতে চান। কোম্পানিতে প্রচুর কোড লেখা হচ্ছে, মানুষ ভাইব কোডিং করছে, আপনার ইঞ্জিনিয়াররাও ভাইব কোডিং করছেন, তাদের কেউ কেউ আবার একটু বেশিই ঝুঁকি নিচ্ছেন । এমনকি মার্কেটিংয়ের লোকেরাও কোড লিখছে। আর নতুন সমস্যা হলো রিভিউ বা ভ্যালিডেশনের ক্ষেত্রে তৈরি হওয়া বাধা। আর তাই, আপনি এটাই সমাধান করতে চাইছেন। আপনার প্রথম কাজ হলো একটি স্যান্ডবক্স তৈরি করা। এখানে এমন অনেক কোম্পানি আছে যারা আপনাকে স্যান্ডবক্স বিক্রি করবে। আপনি চাইলে
-
ফায়ারক্র্যাকার বা এই জাতীয় কিছুও ব্যবহার করতে পারেন। আর আপনি সেই স্যান্ডবক্সে একটি এজেন্ট রাখতে চাইবেন। এজেন্টটি হতে পারে কোড এক্স ( Code X) বা ক্লাউড কোড (Cloud Code)। ব্যক্তিগতভাবে , আমি মডেলের ওপর নির্ভরশীল না হওয়ার পরামর্শ দেব, যার কারণ আমি পরে বলব; তাই আপনি আপনার হারনেস হিসেবে ওপেন কোড (Open Code) বা পাই (Pi)-এর মতো কিছু ব্যবহার করতে পারেন। এগুলো উভয়ই ওপেন সোর্স। এবং এরপর আপনাকে আপনার গিটহাব (GitHub) বা গিটল্যাব (GitLab) যুক্ত করতে হবে । একটি পিআর (PR) ওয়েবহুক ব্যবহার করে যেকোনো পুল রিকোয়েস্ট ওপেন হলে তার বিষয়বস্তু এজেন্টের কাছে পাঠান। এজেন্টের কাছে এমন একটি প্রম্পট থাকতে পারে যা বলবে, " হেই, এটি রিভিউ করো এবং কিছু ফিডব্যাক দাও।" এবং তারপর আপনি গিটহাবের রিভিউ এপিআই (APIs) ব্যবহার করে তা ফেরত পাঠাতে পারবেন। খুবই সহজ। আসলে, অনেকেই মনে করেন একটি রিভিউ এজেন্ট তৈরি করতে এটুকুই যথেষ্ট । এটি ব্যবহার শুরু করলে কিছু বিষয় ভুল হতে পারে। কিন্তু যা ঘটবে তা হলো, আপনার একটি পুল রিকোয়েস্ট লাইভ হবে, বিষয়বস্তু এজেন্টের কাছে যাবে এবং প্রায় ৫ মিনিট পর আপনি আপনার পুল রিকোয়েস্টে কিছু ফিডব্যাক পাবেন। তবে এটি তৈরি করার সময় যে বিষয়গুলো ভুল হতে পারে, তা হলো। প্রথমত, আপনি অনেক বাগ ( bug) ধরতে মিস করবেন। দেখা গেছে যে বাগগুলো আসলে অনেক বড় হয়। আসলে, আমি কিছুদিন আগে একটি টুইট দেখেছিলাম যেখানে বলা হয়েছিল যে বাগগুলো ফ্র্যাকটালি অসীম। তাই কোনো নির্দিষ্ট কোডের মধ্যে বাগ কখনোই শেষ হবে না। এটিই প্রথম ভুল যা ঘটবে, তা হলো আপনি বাগ ধরতে ব্যর্থ হবেন। অবশ্যই, আপনার সিস্টেমের মূল কাজ হলো অন্তত বড় ধরনের বিপর্যয় ও দুর্ঘটনা রোধ করা। দ্বিতীয় যে সমস্যাটি হবে তা হলো, এটি প্রসঙ্গ বুঝতে পারবে না এবং আপনার কোডবেস কীভাবে কাজ করে তার কিছু অংশ ভুলভাবে ব্যাখ্যা করবে । হয়তো এটি বুঝতেই পারবে না যে আপনি আপনার কোডবেস দিয়ে কী করতে চাইছেন। এটি হয়তো এর নির্দিষ্ট কোনো অংশ কীভাবে কাজ করে তা বুঝবে না। হয়তো আপনার কোনো লাইব্রেরি কীভাবে কাজ করে তাও এটি বুঝতে পারবে না। এমনও হতে পারে যে আপনি এমন একটি কোম্পানির অংশ যারা ২০১০-এর দশকের মাইক্রোসার্ভিস বিপর্যয় থেকে এখনো কাটিয়ে উঠতে পারেনি, আর তাই আপনার
-
হাজার হাজার রিপোজিটরি আছে এবং কাজ চালিয়ে যাওয়ার জন্য সেগুলোর সবকটির প্রেক্ষাপট আপনার জানা থাকা প্রয়োজন। তাই এটিই দ্বিতীয় বিষয় যা ভুল হতে চলেছে। তৃতীয় বিষয়টি হলো এটি খুব ব্যয়বহুল হবে। আমার মনে হয় মানুষ এতে খুবই অবাক হয়। সাধারণত যারা এটি করার চেষ্টা করেছেন তারা দেখেছেন যে, কোডিং এজেন্ট ব্যবহার করে প্রতিটি পুল রিকোয়েস্ট রিভিউ করতে তাদের ৩ থেকে ২৫ ডলার পর্যন্ত খরচ হচ্ছে। এই টোকেনগুলোর খরচ খুব দ্রুত বাড়তে পারে। খুব নীরবে এগুলো বেশ ব্যয়বহুল হয়ে ওঠে। চতুর্থ যে সমস্যা তারা পাবে তা হলো খুঁতখুঁতে বা অপ্রয়োজনীয় মন্তব্য। এটি আপনার ধারণার চেয়েও বেশি গুরুত্বপূর্ণ। খুঁতখুঁতে মন্তব্যগুলো হলো এমন সব মন্তব্য যা প্রযুক্তিগতভাবে সঠিক হলেও অত্যন্ত ত্যানপ্যাচানো । যখন এই ধরনের খুঁতখুঁতে মন্তব্য থাকে, তখন দুটি সমস্যা হয়। একজন মানুষ হিসেবে যখন আপনি সেই মন্তব্যগুলো পড়বেন, তখন সেগুলো খুব বিরক্তিকর মনে হবে। সেগুলো যেন 'নেকড়ে এসেছে' বলে চিৎকার করা সেই রাখাল বালকের গল্পের মতো। আপনি অনেক অনেক মন্তব্য দেখবেন এবং সেগুলোর মধ্য থেকে কোনটি ছোটখাটো স্টাইল সংক্রান্ত অভিযোগ আর কোনটি সত্যিই মারাত্মক সমস্যা তা খুঁজে বের করা আপনার জন্য বেশ বিরক্তিকর হবে । দ্বিতীয় যে ভুলটি ঘটবে তা হলো এগুলো আপনার কোডবেসকে ধ্বংস করে দেবে, কারণ রিভিউ এজেন্টরা সাধারণত গিটহাবে মন্তব্য রেখে দেয় এবং আপনার কোডিং এজেন্ট সেগুলো তুলে নিয়ে সমাধান করতে শুরু করে। আর কোডিং এজেন্টরা খুব একটা বিচক্ষণ হয় না। তারা রিভিউ মন্তব্যগুলো দেখবে এবং সবগুলো সমাধান করার চেষ্টা করবে। আর শেষ পর্যন্ত আপনি অত্যন্ত জটিল ও রক্ষণাত্মক কোড পাবেন, যা লিখতে কোডিং এজেন্টরা বিশেষ পারদর্শী। পরবর্তী সমস্যাটি হলো, প্রতিবার একই পুল রিকোয়েস্টে রিভিউ এজেন্ট চালালে আপনি কোনো না কোনোভাবে নতুন বাগ খুঁজে পাবেন, অর্থাৎ এটি বারবার নতুন নতুন জিনিস ধরতে থাকবে যা খুবই বিরক্তিকর এবং যেমনটা আমি বলেছি, বাগগুলো অসীম মনে হবে। তাই প্রথমেই যে কাজটি আপনি করতে পারেন, যা সবচেয়ে সহজ উপায়, তা হলো প্রম্পট অপ্টিমাইজ করা । আপনি খুব সাধারণ একটি
-
প্রম্পট দিয়ে শুরু করেছিলেন, যেমন এই পিআর (PR) রিভিউ করো এবং গিটহাবের এপিআই স্কিমা ফরম্যাটে মন্তব্যগুলো আউটপুট দাও। সাধারণত, বাগগুলোর মধ্যে দুটি মূল বিষয় থাকে। নির্দিষ্ট ধরণের বাগ খুঁজুন এবং দ্বিতীয়ত, খুঁতখুঁতে মন্তব্যগুলো এড়িয়ে চলুন। এবং আপনার প্রম্পটটি এই বিষয়গুলোকে কেন্দ্র করেই সাজানো উচিত। আপনি নির্দিষ্ট ধরণের বাগ খুঁজে বের করতে চাইবেন, এবং আপনার কোডবেসে ঘটে যাওয়া অতীতের বিভ্রাট ও ঘটনাগুলো নিয়ে অভ্যন্তরীণ ডেটা বিশ্লেষণ করে দেখতে পারেন যে কোন ধরণের বাগগুলো আপনার ক্ষেত্রে বেশি ঘটে। এগুলোর একটি তালিকা তৈরি করুন এবং আপনার প্রম্পটকে সেই নির্দিষ্ট বাগগুলো খুঁজে বের করতে বলুন। দ্বিতীয়ত, আপনাকে স্পষ্টভাবে বলে দিতে হবে যে 'নিটপিক' বা খুঁতখুঁতে মন্তব্য কী এবং সেগুলো যেন সে না খোঁজে। আর খুঁতখুঁতে মন্তব্য হতে পারে এমন কিছু যে, কেন এই নির্দিষ্ট জিনিসটিতে সুরক্ষার তিনটি স্তর নেই, অথবা কেন এরর হ্যান্ডলিং কিছুটা দুর্বলভাবে করা হয়েছে। এখন, এই প্রম্পটগুলো পরিবর্তন করার সময় আপনি যে সমস্যার সম্মুখীন হবেন তা হলো, প্রম্পটের ছোট একটি পরিবর্তনেও আপনার এজেন্ট আপনার পুল রিকোয়েস্টে কতগুলো মন্তব্য লিখছে তার ওপর অদ্ভুতভাবে বড় প্রভাব পড়ে। এটি বেশ ভয়ের বিষয় কারণ এর অর্থ হলো, আপনি নিশ্চিতভাবে জানেন না যে এটি কোনো বাগ ধরতে পারছে কি না। আপনি বিকল্প সম্ভাবনাটি জানেন না। ভ্যালিডেশন এজেন্ট, অথবা যেকোনো পর্যালোচক বা পরীক্ষক আপনাকে বাগের উপস্থিতি সম্পর্কে জানাতে পারে, কিন্তু দুর্ভাগ্যবশত বাগের অনুপস্থিতি সম্পর্কে তারা কিছু বলতে পারে না। এটি এই পদ্ধতির এক ধরনের সীমাবদ্ধতা। আর যা বিষয়টিকে আরও কঠিন করে তোলে তা হলো, কিছু বাগ অত্যন্ত বিরল এবং দিন দিন আরও বিরল হয়ে উঠছে। প্রকৃতপক্ষে, আমাদের ডেটা বিজ্ঞান অনুযায়ী, প্রতি এক হাজারটি পুল রিকোয়েস্টের মধ্যে মাত্র একটিতে সাধারণত বড় ধরনের কোনো মারাত্মক বাগ থাকে। অথবা হয়তো প্রতি এক হাজার লাইনের কোডের মধ্যে একটি মারাত্মক বাগ থাকে। যেহেতু এই বাগগুলো খুবই বিরল, আপনি হয়তো আপনার এজেন্টের এমন একটি সংস্করণ প্রকাশ করলেন যা আপনার কাছে খুব ভালো মনে হচ্ছে, কিন্তু এটি গোপনে কোনো পুল রিকোয়েস্টের
-
মারাত্মক বাগ এড়িয়ে যাচ্ছে এবং আপনি অনেকদিন পর্যন্ত তা জানতে পারবেন না কারণ এই বাগগুলো সচরাচর তৈরি হয় না। আর তাই এটি আমাদের দ্বিতীয় উন্নতির দিকে নিয়ে যায়। আপনার অতীতের পিআর (PR)-গুলোর একটি ডেটাসেট প্রয়োজন হবে। যদি আপনার কোম্পানি কোডবেসে ভুল হওয়া প্রতিটি বিষয় খুব সুন্দরভাবে তালিকাভুক্ত করে রাখে, তবে এটি করা তুলনামূলক সহজ । যদি আপনার কাছে তা থাকে, তবে আপনার কাছে এমন সব পুল রিকোয়েস্টের তালিকা থাকবে যা অতীতে বিভ্রাট বা সমস্যার সৃষ্টি করেছিল । আপনি সেগুলো তালিকাভুক্ত করবেন এবং আপনার রিভিউ এজেন্টের যেকোনো সংস্করণ দিয়ে সেগুলো পরীক্ষা করে দেখবেন যে সে কত ঘনঘন সেই বাগগুলো ধরতে পারে। এটি আপনাকে আরও আত্মবিশ্বাসের সাথে প্রম্পট টিউন করার সুযোগ দেবে। তবে একই সাথে, বাগের ক্ষেত্রে মজার বিষয় হলো, পরিবর্তনশীল বিশ্বে সময়ের সাথে সাথে বাগের প্রকৃতি ও বিন্যাসও বদলে যায়। তাই আপনার একটি রিয়েল-টাইম আপডেট হওয়া ডেটাসেট থাকা প্রয়োজন। এবং এটি বেশ জটিল, কারণ আপনার কাছে যদি কয়েক মিলিয়ন পুল রিকোয়েস্ট না থাকে, তবে সব ধরণের বাগের কভারেজ পাওয়া কঠিন। এটা সত্য যে আপনার ৮০ বা ৯০ শতাংশ বাগ পুরোনো ভুলের পুনরাবৃত্তি মাত্র, কিন্তু কোডিং এজেন্টগুলো উন্নত হওয়ার সাথে সাথে তারা নতুন ধরণের ভুল করা শুরু করবে। তারা এমন নতুন উপায়ে ব্যর্থ হবে যা আমরা আগে কখনো ভাবিনি। আর এখানেই আপনি সীমাবদ্ধতার সম্মুখীন হতে শুরু করবেন। একটি ছোট কথা, রেপটাইল (Reptile)-এ আমরা অনেকটা এটাই করি, তবে আমাদের কাছে অনেক কোম্পানির কোড থাকে এবং আমরা বিশাল সংখ্যক পুল রিকোয়েস্টের ওপর পরীক্ষা চালিয়ে আমাদের এজেন্টকে আত্মবিশ্বাসের সাথে উন্নত করতে পারি। এটি একটি কারণ যার ফলে আমরা ইন্টারনাল রিভিউ এজেন্টগুলোর তুলনায় কিছুটা বাড়তি পারফরম্যান্স অর্জন করতে পারি। তবে আপনার নিজের কোম্পানির ইন্টারনাল ডেটা ব্যবহার করেও আপনি অনেকটা পথ এগিয়ে যেতে পারবেন। পরবর্তী যে বিষয়টি আপনি করতে চাইবেন তা হলো মডেল ইনভার্সন। সুতরাং, এ বছরের শুরুতে সান ফ্রান্সিসকোতে এআই ইঞ্জিনিয়ার
-
সম্মেলনে আমার কথা যারা শুনেছেন, তাদের জন্য বলছি, আমি সেখানে কোডিং এজেন্টগুলোর ব্যর্থতা নিয়ে বিস্তারিত আলোচনা করেছিলাম। এবং সেই গবেষণার মাধ্যমে আমি একটি মজার প্যাটার্ন খুঁজে পেয়েছি যে, ক্লড (Claude) মডেল বা কোডেক্স (Codex) মডেলের তৈরি করা বাগের ধরণ একে অপরের থেকে বেশ আলাদা। এবং তারা বিভিন্ন দিক থেকেই আলাদা। উদাহরণস্বরূপ, ক্লড মডেলগুলো জিপিটি (GPT) মডেলের তুলনায় প্রায় তিন গুণ বেশি ‘ওয়ান-অফ’ এরর তৈরি করার প্রবণতা রাখে। অন্যদিকে, জিপিটি মডেলগুলো ক্লড মডেলের চেয়ে অনেক বেশি ‘ বাইপাস’ সমস্যা তৈরি করে। আমি যতদূর বুঝি, এগুলো সবই পোস্ট- ট্রেনিংয়ের ফল । এটি রোধ করতে, আপনি দেখবেন যে যদি একই মডেল দিয়ে তৈরি করা কোড একই মডেল দিয়ে রিভিউ করান, তবে আপনি তুলনামূলক কম বাগ শনাক্ত করতে পারবেন, কারণ কোড জেনারেশনের সময় তারা যেভাবে ব্যর্থ হয়, রিভিউ করার সময়ও সেভাবেই ব্যর্থ হয়। তাই আপনাকে মডেল ইনভার্ট বা উল্টে নিতে হবে । যদি আপনি কোড লেখার জন্য ক্লড ব্যবহার করে থাকেন, তবে সেটি রিভিউ করার জন্য জিপিটি মডেল ব্যবহার করতে হবে এবং একইভাবে অন্যান্য ক্ষেত্রেও। এটি ৮০ শতাংশ ক্ষেত্রে সহজ হলেও, শেষ ২০ শতাংশের জন্য বেশ জটিল। সুতরাং, আপনি যদি কোডিং এজেন্ট ব্যবহার করেন, তবে দেখবেন তারা একটি ডিজিটাল ফিঙ্গারপ্রিন্ট রেখে যায়, যা বলে দেয় যে কোন পুল রিকোয়েস্টের জন্য কোন কোডিং এজেন্ট ব্যবহার করা হয়েছে। উদাহরণস্বরূপ, কোডেক্স তার শাখাগুলোর নামকরণ করে ‘codex/ branch name’ ফরম্যাটে । অথবা ক্লড তার পিআর ডেসক্রিপশন এবং কমিট মেসেজে ‘co-authored by Claude’ লিখে দেয়। এবং প্রায় ৮০ শতাংশ ক্ষেত্রে এটি সত্য হবে। বাকি ২০ শতাংশ ক্ষেত্রে, যখন আপনি নিজে থেকে কোনো ব্রাঞ্চের নাম তৈরি করেন অথবা অন্য কোনো কারণে হয়তো ভিন্ন কোনো কোডিং এজেন্ট ব্যবহার করা হয়, তখন জেনারেশনের সময় কোন মডেলটি ব্যবহার করা হয়েছে তা বের করা অনেক বেশি কঠিন হয়ে পড়ে। এবং ব্যবহৃত মডেলগুলোর সিগনেচার বা বৈশিষ্ট্য শনাক্ত করতে আপনাকে এক ধরনের হিউরিস্টিক পদ্ধতি তৈরি করতে হবে। অনেক সময় আপনার অভ্যন্তরীণ কোনো ক্যাটালগ থাকতে পারে যেখানে মানুষ জানায় যে তারা কী ধরনের কোডিং
-
এজেন্ট ব্যবহার করছে, অথবা আপনার ডেভেলপমেন্ট মেশিন বা ইঞ্জিনিয়ারদের কম্পিউটার থেকে আসা কোনো ধরনের টেলিমেট্রি থাকতে পারে। আমরা দেখেছি যে মডেল পরিবর্তন করলে ১০ শতাংশ বেশি ত্রুটি শনাক্ত করা যায় । এটি শুনতে খুব সামান্য মনে হতে পারে, কিন্তু আপনার জানা উচিত যে ইনসিডেন্ট এবং বিভ্রাটের ক্ষেত্রে এই ১০ শতাংশ আসলে অনেক বড় একটি সংখ্যা। এর মানে হলো, আপনি যদি মডেল ইনভার্সন ব্যবহার না করেন, তবে সমস্যা হওয়ার সম্ভাবনা ১০ শতাংশ বেশি থাকে, যা বেশ বিপর্যয়কর হতে পারে। তাই আমরা দৃঢ়ভাবে সুপারিশ করছি যে আপনার প্রক্রিয়ায় আপনি কোনো না কোনো ধরনের মডেল ইনভার্সন ব্যবহার করুন। তৃতীয় উন্নতিটি হলো কোড বেস কনটেক্সট। এখন, এটি এমন একটি বিষয় যা নিয়ে আমি খুব গুরুত্ব দিই। কোড ভ্যালিডেশন করার আগেই আমরা কোড বেস কনটেক্সট নিয়ে কাজ করছিলাম। আমরা খুব বড় কোড বেসগুলোতে রাগ ( RAG) ব্যবহারের ভালো উপায় বের করার চেষ্টা করছিলাম। এমনকি আজও, মানুষ মনে করে গ্রিপ (grep) পুরো কোড বেস কনটেক্সটের সমস্যার সমাধান করে ফেলেছে। আমি মনে করি বিভিন্ন কারণে এটি সঠিক নয়। প্রথমত, গ্রিপ অত্যন্ত অনির্ভুল বা ইনপ্রিসাইজ। এবং দ্বিতীয়ত, এটি খুবই ব্যয়বহুল। আপনাকে পরিমাপের ধারণা দেওয়ার জন্য বলি, গত বছর জিডিপি প্রবৃদ্ধির একক শতাংশ ছিল ইনফারেন্সের অবদান। এই ইনফারেন্সের একটি বড় অংশই ছিল কোডিং এজেন্ট। এবং আপনি যদি একটি কোডিং এজেন্টের ট্রেস দেখেন, তবে কোডিং এজেন্টগুলোর ব্যবহৃত বেশিরভাগ টোকেনই একই ধরনের। গ্রিপ, ফাইল রিড এবং ফাইলের বিষয়বস্তুর জন্য ক্যাশ রাইট। এর মানে হলো জিডিপি প্রবৃদ্ধির একটি উল্লেখযোগ্য অংশ গ্রিপ, ফাইল রিড এবং ক্যাশ রাইটে ব্যয় হচ্ছে। এটি খুবই খারাপ। এবং এর কারণ হলো গ্রিপ খুবই অনির্ভুল। এটি প্রচুর পরিমাণে ফাইল পড়ছে এবং আমি জানি না, হয়তো টোকেনের মাধ্যমে অর্থ পাওয়া কোম্পানিগুলোর জন্য বেশি টোকেন খরচের কোনো নেতিবাচক উৎসাহ থাকতে পারে। তবে তবুও, আপনি দেখবেন যে আপনার কোথায় পড়া উচিত তা নির্ধারণ করতে আপনার আরও সূক্ষ্ম বা সার্জিক্যাল পদ্ধতির প্রয়োজন হবে। আর আমরা যেভাবে এটি করি তা হলো, আমরা একটি অভ্যন্তরীণ নলেজ বেস তৈরি করি যেখানে আমরা মূলত পুরো
-
কোড বেসের বিভিন্ন অংশ পরীক্ষা করি, সেগুলোকে ক্যাটালগ করি এবং ইনডেক্স করে বলি, "ঠিক আছে, এটি হলো অথেনটিকেশন।" এটি এভাবে কাজ করে। এখানে প্রবাহ বা ফ্লোগুলো দেওয়া হলো। এটি হলো প্রবাহগুলোর একটি ডায়াগ্রাম। এখানে সংশ্লিষ্ট প্রতিটি ফাইল রয়েছে। কোডবেস প্রসঙ্গ যেখানে গুরুত্বপূর্ণ তার একটি উদাহরণ হলো, যখন আপনি কোনো অথ বাইপাস ধরার চেষ্টা করেন। আসলে অথ বাইপাস ঘটেছে কিনা তা বোঝা খুব কঠিন, কারণ কোডবেসের সেই অংশে আপনি একটি অথেন্টিকেটেড পরিবেশে আছেন কিনা, সে সম্পর্কে আপনার খুব সুনির্দিষ্ট ধারণা থাকা প্রয়োজন। এবং এটি বেশ জটিল। তাই, এটি করার জন্য আপনার কোনো না কোনো ধরণের কোডবেস প্রসঙ্গের প্রয়োজন হবে। এতক্ষণ আমি বাগ বা ত্রুটির ধারণার ওপর গুরুত্ব দিয়েছি, কিন্তু কোড ত্রুটিমুক্ত হলেও তা খুব বাজে হতে পারে। প্রথমত, এর মান খারাপ হতে পারে, আর দ্বিতীয়ত, এটি লেখকের মূল উদ্দেশ্য পূরণ করতে ব্যর্থ হতে পারে। সম্প্রতি আমি একটি পোস্টে দেখলাম যে, মানুষ ক্রমশ স্ল্যাককে (Slack) তাদের আইডিই (IDE) হিসেবে ব্যবহার করছে। আমার কাছে বিষয়টি কিছুটা মজার মনে হয়, কিন্তু একইসাথে একটি স্ল্যাক বার্তায় খুব বেশি স্পষ্ট উদ্দেশ্য থাকে না। আপনি হয়তো বড়জোর এক বা দুই লাইন লিখছেন, কোনো এজেন্টকে কিছু ঠিক করতে বলছেন, যার মানে আপনার নির্দেশনায় অনেক অস্পষ্টতা থেকে যাচ্ছে। এর ফলে, আপনি দেখতে পাবেন যে কোডিং এজেন্ট হয়তো আপনার নির্দেশ ভুল বুঝেছে অথবা বিষয়টি এতটাই অস্পষ্ট ছিল যে সে ঠিক কী করতে হবে তা বুঝে উঠতে পারেনি। সুতরাং, আপনার সঠিক কোডটিও আসলে পুরোপুরি ভুল হতে পারে। এই সমস্যা সমাধানের একটি উপায় হলো এজেন্টদের ক্রমশ আরও বেশি প্রসঙ্গ বা কনটেক্সট দেওয়া। আমরা দেখেছি যে, সবচেয়ে গুরুত্বপূর্ণ দুটি প্রসঙ্গের উৎস হলো ডকুমেন্টেশন এবং টিকিট। এবং অবশ্যই, আপনার কোডবেস ইনডেক্সার বা নলেজ বেস থেকে প্রাপ্ত কোডবেস। আপনি যদি এজেন্টকে আপনার জিরা (Jira), লিনিয়ার (Linear), কনফ্লুয়েন্স ( Confluence), নোশন (Notion) বা যেখানে আপনি ডকুমেন্ট রাখেন সেখানে অ্যাক্সেস দেন, তবে আপনি অনেক দূর এগিয়ে যেতে
-
পারবেন। আপনি দেখবেন যে, অনেক প্রাতিষ্ঠানিক জ্ঞান বা ট্রাইবাল নলেজ অবচেতনভাবেই আপনাকে আরও ভালো কোড তৈরি করতে সাহায্য করছে। কিন্তু যখন এজেন্টকে একই কাজ করতে বলা হয়, তখন মনে হয় তারা যেন কিছুই বুঝতে পারছে না। এর কারণ হলো, আপনার নিজের কতটা গভীর জ্ঞান রয়েছে তা আপনি নিজেই অবমূল্যায়ন করেন। রেপটাইল ( Reptile) এই সমস্যার সমাধানে যা করে তা হলো, আমরা একটি লিভিং উইকির মাধ্যমে এই সব প্রসঙ্গের উৎসগুলোকে একত্রিত করি। এই উইকিটি মূলত আপনার কোম্পানি কীভাবে কাজ করে তার একটি বিশ্ব মডেলের মতো। এটি আপনার কোডবেস, প্রোডাকশন টেলিম্যাট্রি ও লগ থেকে পাওয়া আপনার অ্যাপ্লিকেশন, এবং আপনার ডকুমেন্টেশন ও লিনিয়ার টিকিট থেকে পাওয়া রোডম্যাপ সম্পর্কে সবকিছু জানে। এটি এই উইকি ব্যবহার করে প্রাসঙ্গিক তথ্য সরবরাহ করে, যা এজেন্টকে আরও সচেতন করে তোলে এবং এর কোড অনুসন্ধানকে অনেক বেশি নির্ভুল করে, কারণ এটি এমন কোনো ফাইল পড়বে না যা পড়ার প্রয়োজন নেই। সর্বশেষ যে বিষয়টি আপনার করা উচিত, অথবা এটি পাঁচটির মধ্যে চারটি হতে পারে। পরবর্তী যে কাজটি আপনার করা উচিত তা হলো স্বায়ত্তশাসিত পরীক্ষা (autonomous testing)। আমরা যে বিষয়টি নিয়ে অনেক বেশি ভাবি তা হলো, উদাহরণস্বরূপ, UI পরিবর্তনের জন্য, আপনি রিঅ্যাক্ট কোডের অনেকগুলো পরিবর্তিত ফাইল পড়ে এই সিদ্ধান্তে পৌঁছাতে পারেন যে কোডে কোনো সমস্যা নেই। কিন্তু প্রকৃতপক্ষে, যখন আপনি এটি রেন্ডার করেন, এটি হয়তো আইফোনে লুকানো থাকতে পারে। এখন, এটি সমাধানের জন্য প্রযুক্তিগতভাবে কঠিন সমস্যাগুলোর মধ্যে একটি। রেপটাইল (Reptile)-এ আমরা যেভাবে এর সমাধান করি তা হলো, আমরা মূলত এই ডিপেন্ডেন্সি- সমৃদ্ধ স্যান্ডবক্স তৈরি করি, যা সম্পূর্ণ কনফিগারযোগ্য ভার্চুয়াল মেশিন। আমাদের গ্রাহকদের সাথে আমরা কাজ করি যাতে তারা এই স্যান্ডবক্সগুলোতে তাদের স্ট্যাক চালু করতে পারে এবং তারপর
-
রেপটাইল-এর এজেন্ট কম্পিউটার ভিশন ব্যবহার করে সেগুলোকে পুরোপুরি পরীক্ষা করে। আপনি যদি খেয়াল না করে থাকেন, তবে কম্পিউটার ভিশন অনেক উন্নত হয়েছে এবং নতুন প্রজন্মের জিপিটি মডেল ও ওপাস মডেলে এটি আগের চেয়ে অনেক বেশি কার্যকর। প্রথমবারের মতো, আমার মনে হয় এন্ড-টু-এন্ড কিউএ (QA) সমস্যার সমাধান প্রায় হয়ে গেছে। তবে আপনাকে যে কাজটি করতে হবে তা হলো আপনার অ্যাপ্লিকেশনের সমস্ত প্রবাহ ( flows) নথিভুক্ত করা। দ্বিতীয়ত, আপনার একটি যথেষ্ট সহজ বিল্ড স্ক্রিপ্ট থাকা প্রয়োজন যাতে এজেন্ট আপনার পরিবেশে আপনার স্ট্যাক চালু করতে পারে । আমাদের চারজন ইঞ্জিনিয়ারের একটি দল আছে যারা কোম্পানিগুলোকে এই কাজে সহায়তা করে। আমরা দেখেছি যে এটি অন্যতম জটিল অংশ। অবশ্য যদি আপনার আগে থেকেই খুব ভালো ডেভ বক্স থাকে, তবে স্ট্রাইপ ( Stripe)-এ কাজ করার জন্য আপনাকে অভিনন্দন। তো, ওহ, আমি এই ডায়াগ্রামটিই আপনাদের দেখাতে যাচ্ছি । তবে হ্যাঁ, আপনার একটি ডেভ বক্স প্রয়োজন, আপনার পিআর ব্রাঞ্চ ডিপেন্ডেন্সি প্রয়োজন যেখানে আপনি অ্যাপটি চালাচ্ছেন এবং আপনার এমন এক ধরনের ফ্লো ম্যাপ দরকার যা বলবে, "এটি অথ কোড এবং এটি সাইন-আপ ফ্লো।" এবং এভাবেই চলতে থাকবে। এবং এটি ব্যবহার করে, আপনার এজেন্ট এখন আপনার কোড এন্ড-টু-এন্ড পরীক্ষা করতে পারে এবং ভিশন মডেল ব্যবহার করে বলতে পারে, " ওহ, এই বাটনটি টেকনিক্যালি দেখা যাচ্ছে, কিন্তু এটি আইফোনে লুকানো আছে, অথবা এটি আইফোন ডুও-এর প্রথম ফোল্ডে নেই ইত্যাদি।" এখন, আপনি যদি এই সবকিছু করেন, তবে দেখবেন যে খরচ এখনও বেশ বেশি। একটি সিঙ্গেল পুল রিকোয়েস্ট রিভিউ করতে আপনার তিন ডলার থেকে ১৫ বা ২০ ডলার পর্যন্ত খরচ হতে পারে। এখন আপনার যে বিষয়টি সমাধান করা প্রয়োজন তা হলো কিছু কাজের জন্য অপেক্ষাকৃত সস্তা মডেল ব্যবহার করা। আমার মতে, ওপেন- সোর্স মডেলগুলোর তুলনায় ফ্রন্টিয়ার মডেলগুলো সাধারণত এখনও অনেক বেশি দক্ষ । কিছুদিন ধরে এটি সত্য হয়ে আসছে, যদিও সময়ের সাথে সাথে এই পার্থক্যের ব্যবধান কমে আসছে। তাই, বর্তমানে আমাদের সবচেয়ে গুরুত্বপূর্ণ কাজগুলোর জন্য প্রায় ২০ শতাংশ ফ্রন্টিয়ার মডেল ব্যবহার করছি। আর বাকি কাজগুলো, যেমন অনুসন্ধান বা ফাইল পড়ার মতো
-
ক্ষেত্রে, আমরা বিভিন্ন ছোট মডেল ব্যবহার করি। আপনি যদি এমনটি করেন, তবে আপনার রিভিউ এজেন্ট পরিচালনার খরচ নাটকীয়ভাবে কমিয়ে আনতে পারবেন। এটি আমাদের কাজের একটি উদাহরণ: আমরা কনটেক্সট খোঁজার জন্য ছোট মডেল, ইউজার ফ্লো টেস্টের জন্য হালকা কম্পিউটার মডেল এবং বাগ বিশ্লেষণ ও রিভিউ প্রক্রিয়ার জন্য ফ্রন্টিয়ার মডেল ব্যবহার করি। বাস্তবে, আমাদের ২০ টি ভিন্ন সাব- টাস্ক রয়েছে এবং প্রতিটির জন্য আমরা নির্দিষ্ট কিছু মডেল ব্যবহার করে থাকি। আমাদের একটি ছোট গবেষণা দল রয়েছে যারা কোন কাজের জন্য কোন মডেল ব্যবহার করা হবে, তা নিয়ে প্রতিনিয়ত কাজ করছে। আপনি হয়তো এই পদ্ধতিতে ৭০ থেকে ৮০ শতাংশ কাজ সম্পন্ন করতে পারবেন, যেখানে সাধারণ কাজগুলোর জন্য খুব সাধারণ মডেল ব্যবহার করা হয়। এটি এমন একটি উদাহরণ যেখানে একটি বিশাল ডেটাসেট থাকা সত্যিই খুব সহায়ক। আপনার কাছে ভালো ডেটাসেট না থাকলে, আপনি হয়তো অনেক সাব- এজেন্টকে ছোট ও দ্রুত মডেল দিয়ে প্রতিস্থাপন করবেন, কিন্তু এজেন্টটি যে বাগ ধরতে এখন কিছুটা অদক্ষ হয়ে পড়েছে তা বুঝতে পারবেন না, যা পরবর্তীতে বড় ধরনের বিভ্রাট ঘটাতে পারে। এছাড়া আপনি দেখবেন যে, সস্তা মডেল ব্যবহার করে অতিরিক্ত ফাইল পড়ার সমস্যা সমাধান করা সম্ভব, যা আপনার সমস্ত কনটেক্সট দেখে সিদ্ধান্ত নেয় কোনগুলো অন্তর্ভুক্ত করা প্রয়োজন। তাত্ত্বিকভাবে , আপনি এর জন্য সিদ্ধান্ত নেওয়ার মতো মডেল ব্যবহার করতে পারেন, যেমন জাভা বা ডিসিশন এপিআই, যা কার্যকরভাবে সবকিছু রি- র্যাঙ্কিং করে ফ্রন্টিয়ার মডেল ক্যাশে লোড করার মতো বিষয়গুলো নির্ধারণ করে, যা মূলত আপনার সবচেয়ে ব্যয়বহুল ও সীমিত সম্পদ। আপনি যদি এই সবকিছু করতে পারেন, তবে নিজের রিভিউ এজেন্ট তৈরিতে অনেক দূর এগিয়ে যেতে পারবেন। আর যদি তা করেন,
-
তবে দয়া করে আমাকে জানাবেন । আমার ইমেইল হলো [email protected]। আমি আপনাকে সাহায্য করতে পারলে আনন্দিত হব। আর আপনি যদি এটি তৈরি না করার সিদ্ধান্ত নেন, তবে আপনি কেবল আমাদের পণ্যটিও ব্যবহার করতে পারেন, যা তুলনামূলকভাবে বিনামূল্যে। তবে, আপনাকে অনেক ধন্যবাদ।
Summary
এই উপস্থাপনায় গ্রিপটাইল (Griptile) কোম্পানির সহ-প্রতিষ্ঠাতা নিজে এআই কোড রিভিউ এবং টেস্টিং এজেন্ট তৈরি করার পদ্ধতি ও দিকনির্দেশনা নিয়ে আলোচনা করেছেন। এতে কোড বেসের পূর্ণ প্রেক্ষাপট বোঝা, স্যান্ডবক্সে কোড রান করা এবং ইনফারেন্স বাজেট দক্ষতার সাথে পরিচালনা করার মতো বিষয়গুলো তুলে ধরা হয়েছে। এর মূল উদ্দেশ্য হলো ডেভেলপারদের নিজস্ব কোড রিভিউ এজেন্ট তৈরির সঠিক কৌশল শেখানো অথবা কোনো কোম্পানির জন্য সেরা এআই এজেন্ট নির্বাচন করতে সাহায্য করা।