𝟳 𝗖𝗿𝗶𝘁𝗶𝗰𝗮𝗹 𝗠𝗶𝘀𝘁𝗮𝗸𝗲𝘀 𝗧𝗵𝗮𝘁 𝗕𝗿𝗲𝗮𝗸 𝗔𝗜 𝗔𝗴𝗲𝗻𝘁𝘀
আপনার AI এজেন্ট টেস্টিং পর্যায়ে দারুণ কাজ করছে। এটি দ্রুত এবং নির্ভুল। তারপর আপনি এটি প্রোডাকশনে ডেপ্লয় করলেন। হঠাৎ করেই ব্যবহারকারীরা টাইমআউট এবং এরর (error) রিপোর্ট করতে শুরু করল।
একটি স্থিতিস্থাপক (resilient) AI এজেন্ট তৈরি করতে কেবল ভালো কোডই যথেষ্ট নয়। প্রোডাকশনের জটিল বাস্তবতার জন্য আপনাকে প্রস্তুত থাকতে হবে।
নিচে AI এজেন্টগুলোকে অকেজো করে দেয় এমন ৭টি ভুল এবং সেগুলো সমাধানের উপায় দেওয়া হলো।
১. এক্সটার্নাল API ফেইলিউর উপেক্ষা করা ডেভেলপাররা প্রায়ই ধরে নেন যে API কল সবসময় কাজ করবে। কিন্তু বাস্তবে তা হয় না। টাইমআউট বা রেট লিমিটের (rate limits) কারণে নেটওয়ার্ক রিকোয়েস্ট ব্যর্থ হতে পারে।
- সব কলকে
try-catchব্লকের মধ্যে রাখুন। - প্রতিটি রিকোয়েস্টের জন্য নির্দিষ্ট টাইমআউট ভ্যালু সেট করুন।
- এক্সপোনেনশিয়াল ব্যাকঅফ (exponential backoff) সহ রিট্রাই লজিক যোগ করুন।
- ফেইলিং সার্ভিসগুলোর জন্য সার্কিট ব্রেকার (circuit breakers) ব্যবহার করুন।
২. ফেইলিউরকে বাইনারি হিসেবে দেখা অনেক ডেভেলপার মনে করেন একটি সিস্টেম হয় কাজ করবে অথবা পুরোপুরি ব্যর্থ হবে। বাস্তবে, সিস্টেমের কিছু অংশ ব্যর্থ হতে পারে যখন অন্য অংশগুলো সচল থাকে।
- মাল্টি-টিয়ার ফলব্যাক (fallback) কৌশল ডিজাইন করুন।
- সিস্টেমের কার্যকারিতা কমে গেলে সেটি দেখতে কেমন হবে তা নির্ধারণ করুন।
- উপলব্ধ কম্পোনেন্টগুলো ব্যবহার করে রিকোয়েস্ট সার্ভিস প্রদান অব্যাহত রাখুন।
৩. দুর্বল লগিং এবং ভিজিবিলিটি যদি আপনার লগিং খুব সামান্য হয়, তবে কোনো আউটটেজ (outage) চলাকালীন আপনি অন্ধের মতো থাকবেন। আপনি যা দেখতে পাচ্ছেন না, তা ঠিক করতে পারবেন না।
- INFO এবং ERROR-এর মতো বিভিন্ন লেভেলে লগ করুন।
- ইউজার পাথ ট্র্যাক করতে রিকোয়েস্ট আইডি (request IDs) ব্যবহার করুন।
- রেসপন্স টাইম পার্সেন্টাইল (p50, p95, p99) ট্র্যাক করুন।
- এরর রেট বেড়ে গেলে অ্যালার্ট সেটআপ করুন।
৪. শুধুমাত্র 'হ্যাপি পাথ' (Happy Paths) টেস্ট করা আপনি যদি কেবল সফল রানগুলো টেস্ট করেন, তবে আপনার এজেন্ট চাপের মুখে (stress) নিজেকে পুনরুদ্ধার করতে পারবে না।
- ডিপেন্ডেন্সিগুলো পরীক্ষা করতে ক্যাহস ইঞ্জিনিয়ারিং (chaos engineering) ব্যবহার করুন।
- নেটওয়ার্ক ল্যাটেন্সি এবং টাইমআউট সিমুলেট করুন।
- ভুল বা ত্রুটিপূর্ণ ডেটা ফরম্যাট দিয়ে টেস্ট করুন।
- আপনার প্রত্যাশিত ক্ষমতার চেয়ে বেশি লোড দিয়ে লোড টেস্ট চালান।
৫. এজেন্টের স্টেট (State) হারিয়ে ফেলা যদি কোনো এজেন্ট তার প্রগ্রেস সেভ না করেই ক্র্যাশ করে, তবে সে তার সমস্ত কনটেক্সট হারিয়ে ফেলে।
- গুরুত্বপূর্ণ মাইলস্টোনগুলোতে স্টেট চেকপয়েন্ট করুন।
- ডুপ্লিকেট অ্যাকশন রোধ করতে আইডেমপোটেন্ট (idempotent) অপারেশন ব্যবহার করুন।
- ওয়ার্কফ্লো পুনরায় শুরু করার জন্য পর্যাপ্ত কনটেক্সট সংরক্ষণ করুন।
৬. কনফিগারেশন হার্ডকোড করা কোডের ভেতরে সরাসরি টাইমআউট এবং API এন্ডপয়েন্ট লিখে রাখা আপডেট করার প্রক্রিয়াকে ধীর করে দেয়।
- কনফিগারেশনগুলোকে এনভায়রনমেন্ট ভেরিয়েবলে (environment variables) সরিয়ে নিন।
- নতুন ফিচারের জন্য ফিচার ফ্ল্যাগ (feature flags) ব্যবহার করুন।
- কোড পুনরায় ডেপ্লয় না করেই থ্রেশহোল্ডগুলো পরিবর্তনযোগ্য করুন।
৭. সাধারণ এরর হ্যান্ডলিং প্রতিটি এরর বা ভুলের জন্য একই সমাধান ব্যবহার করা একটি ভুল। একটি ভ্যালিডেশন এরর এবং একটি নেটওয়ার্ক টাইমআউটের জন্য ভিন্ন ভিন্ন রেসপন্স প্রয়োজন।
- রিট্রায়েবল (retriable) এরর এবং পার্মানেন্ট (permanent) এরর আলাদা করুন।
- রেট লিমিটের মতো সাময়িক সমস্যাগুলোর ক্ষেত্রে রিট্রাই করুন।
- অথেন্টিকেশন ফেইলিউরের মতো স্থায়ী সমস্যাগুলোর ক্ষেত্রে রিট্রাই করবেন না।
স্থিতিস্থাপকতা হলো এমন কোড লেখা যা বাস্তবতাকে পূর্বানুমান করতে পারে। এই সাতটি ত্রুটির বিপরীতে আপনার বর্তমান এজেন্টদের নিরীক্ষণ করার মাধ্যমে শুরু করুন।