কোডিং এজেন্ট মূল্যায়নকারী ইঞ্জিনিয়ারিং দলগুলো সাধারণত ভুল প্রশ্ন দিয়ে শুরু করে। তারা জানতে চায় এজেন্টটি কতটা স্বায়ত্তশাসিত হতে পারে। এটি পাইপলাইনের কতটা অংশ নিয়ন্ত্রণ করতে পারে? এটি কি কাউকে বিরক্ত না করেই স্পেক (spec) লিখতে পারে, রিপোজিটরি এডিট করতে পারে এবং প্রোডাকশনে পুশ করতে পারে? ডেমোগুলো এই মোহকে আরও সহজ করে তোলে। আপনি একটি মসৃণ ওয়ার্কফ্লো দেখেন যেখানে একটি মাত্র প্রম্পট অনেকগুলো এডিট এবং ডিপ্লয়মেন্টের সূত্রপাত ঘটায়, আর সহজাত প্রবৃত্তি হলো আপনার নিজস্ব প্রতিষ্ঠানের মধ্যেও সেই একই সক্ষমতা খোঁজা। কিন্তু চাকচিক্য কোনো ভালো ডিজাইন প্রিন্সিপাল নয়। আরও ভালো প্রশ্নগুলো অনেক কম উত্তেজনাপূর্ণ: এই জিনিসটিকে কে কর্তৃত্ব দিয়েছে, এটি আসলে কোন সিস্টেমগুলোকে স্পর্শ করতে পারে, এবং যখন এটি অনিবার্যভাবে কোনো ভুল করে তখন কী ঘটে?

স্বায়ত্তশাসনের ফাঁদ

উত্তেজনাপূর্ণ স্বায়ত্তশাসন একটি ফাঁদ। এটি আমাদের এমন বটগুলোকে উদযাপন করতে শেখায় যা স্পেসিফিকেশন তৈরি করে, রিপোজিটরি পরিবর্তন করে এবং কোড ডিপ্লয় করে, আর শান্তভাবে দাবি করে যে কাজটি শেষ হয়ে গেছে। এটি ইঞ্জিনিয়ারিং নয়। এটি হলো শেল অ্যাক্সেস (shell access) সহ একটি অন্ধ বিশ্বাস। কাজটির উৎপাদন নিজেই প্রায় অতিরিক্ত সহজ হয়ে যায়। যেকোনো মডেল কয়েক সেকেন্ডের মধ্যে কোড, ডকুমেন্টেশন বা আর্কিটেকচার প্ল্যান তৈরি করে দিতে পারে। কিন্তু সফটওয়্যার ডেভেলপমেন্টে আসল খরচ কখনোই টাইপিং স্পিড ছিল না। এটি সব সময় ছিল ভ্যালিডেশন, রিভিউ এবং এই সতর্ক সিদ্ধান্ত নেওয়া যে, হ্যাঁ, এটি সঠিক এবং শিপ করার জন্য নিরাপদ। জেনারেট করা কাজ সস্তা। অনুমোদন (Approval) ব্যয়বহুল। যে কোম্পানিগুলো কীভাবে স্বচ্ছ এবং ধারাবাহিকভাবে অনুমোদন প্রক্রিয়া পরিচালনা করতে হয় তা বুঝতে পারবে, তারাই আসলে নির্ভরযোগ্য সিস্টেম শিপ করতে পারবে।

সেলফ-রিভিউ কেন ব্যর্থ হয়

ঝুঁকিগুলো অনুমেয় প্যাটার্নে প্রকাশ পায়। একটি মডেল একটি পরিকল্পনা ড্রাফট করে এবং তারপর মূল্যায়ন করে যে সেই পরিকল্পনাটি আদৌ ভালো কি না। একটি এজেন্ট আপনার কোডবেস এডিট করে এবং আপনাকে ব্যাখ্যা করে কেন তার পরিবর্তনগুলো নিরাপদ। একটি টুল অনুমতি নেওয়ার পরিবর্তে কমান্ড কার্যকর করে এবং পরে ক্ষমা চায়। এগুলোর প্রতিটি একই মূল ব্যর্থতার প্রতিনিধিত্ব করে। যদি একটি এজেন্ট একটি স্পেসিফিকেশন তৈরি করে, তবে সেটি সত্য হিসেবে গৃহীত হওয়ার আগে সেই এজেন্টের বাইরের কিছু দ্বারা অনুমোদিত হতে হবে। যদি একটি এজেন্ট কোড পরিবর্তন করে, তবে একটি আলাদা প্রক্রিয়াকে অবশ্যই 'diff' পরীক্ষা করতে হবে। জেনারেটরকে তার নিজস্ব ভ্যালিডেটর হিসেবে কাজ করতে দেওয়া কোনো শর্টকাট নয়। এটি সুবিধার ছদ্মবেশে একটি কাঠামোগত ত্রুটি (structural bug)।

প্রম্পট কোনো পারমিশন সিস্টেম নয়

চতুর শব্দচয়নের মাধ্যমে আপনি একটি এজেন্টকে সুরক্ষিত করতে পারবেন না। একটি মডেলকে সতর্ক থাকতে বলা বা কিছু মুছে ফেলার আগে জিজ্ঞাসা করতে বলা কোনো সীমানা তৈরি করে না। প্রম্পট কোনো পারমিশন সিস্টেম নয়। একটি এজেন্টকে প্রোডাকশনের কাছাকাছি যাওয়ার অনুমতি দেওয়ার আগে, তার সক্ষমতার একটি সৎ তালিকা বা ইনভেন্টরি প্রয়োজন। এটি কি পুরো রিপোজিটরি পড়তে পারে? এটি কি শেল কমান্ড কার্যকর করতে পারে? এটি কি ব্রাউজার খুলতে পারে? এটি কি তার কনটেক্সট উইন্ডোতে কাস্টমার ডেটা আনতে পারে? বেশিরভাগ দলই এর পূর্ণাঙ্গ উত্তর জানে না। তারা ধরে নেয় যে টুলটি একটি স্যান্ডবক্সের (sandbox) মধ্যে সীমাবদ্ধ, যখন আসলে এটি ক্রিটিক্যাল পাথগুলোতে রাইট অ্যাক্সেস (write access) রাখে। প্রথমে সারফেস এরিয়া (surface area) ম্যাপ করুন। তারপর দেয়াল তৈরি করুন।

একটি স্তরভিত্তিক নিয়ন্ত্রণ ব্যবস্থা তৈরি করুন

একবার আপনি বুঝে ফেলেন এজেন্ট কী করতে পারে, তখন এমন একটি নিয়ন্ত্রণ ব্যবস্থা ডিজাইন করুন যা ঝুঁকির সাথে ঘর্ষণ বা বাধার (friction) সামঞ্জস্য বজায় রাখে। কম ঝুঁকির কাজ, যেমন অভ্যন্তরীণ ডকুমেন্টেশন আপডেট করা বা কোড ফরম্যাটিং করা, স্বয়ংক্রিয়ভাবে চলতে পারে। মাঝারি ঝুঁকির কাজ, যেমন একটি মডিউল রিফ্যাক্টর করা বা নতুন ডিপেন্ডেন্সি যোগ করা, একটি চেকপয়েন্টে আসা উচিত যেখানে একজন মানুষ বা একটি ভেরিফাইড টেস্ট স্যুট সেই পদক্ষেপটি নিশ্চিত করবে। উচ্চ ঝুঁকির কাজ, যেমন প্রোডাকশনে ডিপ্লয় করা, ইনফ্রাস্ট্রাকচার পরিবর্তন করা বা সংবেদনশীল ডেটা অ্যাক্সেস করা, এর জন্য একজন আলাদা অনুমোদনকারীর প্রয়োজন যিনি জেনারেশন প্রক্রিয়ায় জড়িত ছিলেন না। প্রতিটি পদক্ষেপের একটি অডিট ট্রেইল (audit trail) থাকতে হবে। আপনি ঠিকভাবে পুনরায় দেখতে সক্ষম হতে হবে যে কোন ফাইলগুলো পড়া হয়েছে, কোন টুলগুলো ব্যবহার করা হয়েছে এবং কোন সিদ্ধান্তগুলো নেওয়া হয়েছে। এজেন্টিক ডেভেলপমেন্ট মানে রিভিউ বাদ দেওয়ার লাইসেন্স নয়। বিরক্তিকর বাধা বা ঘর্ষণ (friction) আসলে একটি ফিচার। একটি সঠিক অ্যাপ্রুভাল গেট সার্কিট ব্রেকারের মতো কাজ করে যখন পরিস্থিতি নিয়ন্ত্রণের বাইরে যেতে শুরু করে।

সীমানাকে ঝুঁকির সাথে সামঞ্জস্যপূর্ণ করুন

আপনার সীমানাগুলোকে প্রকৃত বিপদের সাথে সামঞ্জস্যপূর্ণ করুন। প্রতিটি মার্কডাউন ফরম্যাটিং পরিবর্তনের জন্য কমপ্লায়েন্স বা আনুষ্ঠানিকতা পালন করা আপনার টিমকে স্থবির করে দেবে। কিন্তু এজেন্ট আত্মবিশ্বাসী বলে উচ্চ-ঝুঁকিপূর্ণ কাজগুলোকে ক্ষতিকারক নয় বলে মনে করা সমানভাবে বোকামি। লক্ষ্য হলো আনুপাতিক নিয়ন্ত্রণ, নাটকীয় সীমাবদ্ধতা নয়।

আর্টিফ্যাক্টগুলোকে ছোট এবং পর্যবেক্ষণযোগ্য রাখুন

সবচেয়ে কার্যকর এজেন্ট সিস্টেমগুলো বিশাল স্বায়ত্তশাসিত (autonomous) কার্যক্রম দিয়ে আপনাকে মুগ্ধ করার চেষ্টা করে না। তারা ছোট, পর্যালোচনাযোগ্য আর্টিফ্যাক্ট (artifacts) তৈরি করে। একটি সুনির্দিষ্ট পরিকল্পনা। একটি সুসংহত ডিফ (diff)। একটি পাঠযোগ্য লগ (log)। বিশাল স্বায়ত্তশাসিত কার্যক্রম ডিবাগ করা একটি দুঃস্বপ্ন। যখন পঞ্চাশটি ফাইল নিয়ে একটি এজেন্ট সেশনের পর কিছু ভেঙে যায়, তখন আপনাকে উদ্দেশ্য, কার্য সম্পাদন এবং পার্শ্বপ্রতিক্রিয়া (side effects) সব একসাথে উন্মোচন করতে হয়। ক্ষতির পরিধি (blast radius) ছোট রাখুন। এজেন্ট কোন ফাইলগুলো পড়েছে এবং কোন টুলগুলো ব্যবহার করেছে তা জানার ব্যাপারে জোর দিন। পর্যবেক্ষণযোগ্য (Observable) সিস্টেমগুলোই হলো রক্ষণাবেক্ষণযোগ্য সিস্টেম। ব্ল্যাক-বক্স স্বায়ত্তশাসন হলো উন্নত বিপণন কৌশলযুক্ত একটি টেকনিক্যাল ডেট (technical debt) মাত্র।

অ্যাক্সেস দেওয়ার আগে ছয়টি প্রশ্ন

কোনো এজেন্টকে প্রকৃত দায়িত্ব দেওয়ার আগে, ছয়টি কঠিন প্রশ্নের মাধ্যমে আপনার সেটআপটি পরীক্ষা করে নিন।

  • সিস্টেমের আসলে কী কী সক্ষমতা রয়েছে?
  • কোন কাজগুলো ডিফল্টভাবে নিষিদ্ধ, যা সিস্টেম প্রম্পটে একটি বিনয়ী বাক্যের মাধ্যমে নিরুৎসাহিত করার পরিবর্তে ইনফ্রাস্ট্রাকচার লেভেলে ব্লক করা হয়েছে?
  • কোন কাজগুলোর জন্য স্পষ্ট অনুমোদনের প্রয়োজন?
  • কোন আর্টিফ্যাক্টগুলো এজেন্ট ব্যবহারের আগে ফ্রিজ (frozen) করে রাখা হয়, যাতে এটি নিঃশব্দে তার নিজস্ব ইনপুট পরিবর্তন করতে না পারে?
  • জেনারেটর থেকে সম্পূর্ণ আলাদা কোন ভ্যালিডেটর (validator) চূড়ান্ত আউটপুট বিচার করে?
  • কোন লগটি কোনো অস্পষ্টতা ছাড়াই প্রমাণ করে যে আসলে কী ঘটেছিল?

এটি হলো মৌলিক ইঞ্জিনিয়ারিং হাইজিন (engineering hygiene)। জেনারেটরকে ভ্যালিডেটর থেকে আলাদা রাখুন। সীমানায় মানুষের কর্তৃত্ব বজায় রাখুন।

আসল পরীক্ষা

সেখানে