প্রোডাকশন AI API ব্যর্থতা
রাত ২টায় যখন আপনার AI ফিচারটি কাজ করা বন্ধ করে দেয়, তখন এরর মেসেজগুলো খুব কমই পুরো ঘটনাটি বলে। আমি এক বছর ধরে OpenAI এবং Anthropic ইন্টিগ্রেশন পরিচালনা করেছি। আমি শিখেছি কীভাবে ডিবাগিংয়ের সুবিধার্থে ব্যর্থতাগুলোকে তাদের গুরুত্ব অনুযায়ী গ্রুপ করতে হয়।
রেট লিমিট হ্যান্ডেল করা
OpenAI 429 এররগুলোর কারণ ভিন্ন ভিন্ন হতে পারে। কীভাবে প্রতিক্রিয়া জানাতে হবে তা জানতে আপনাকে অবশ্যই এরর কোডটি পরীক্ষা করতে হবে।
- Requests-per-minute (RPM) লিমিট কয়েক সেকেন্ডের মধ্যেই ঠিক হয়ে যায়।
- Tokens-per-minute (TPM) লিমিট ৬০ সেকেন্ডের মধ্যে ঠিক হয়ে যায়।
- মাসিক কোটা শেষ হয়ে গেলে ক্রেডিট যোগ না করা পর্যন্ত বা বিলিং সাইকেল রিসেট না হওয়া পর্যন্ত এটি কাজ করবে না।
কোটা সংক্রান্ত সমস্যার জন্য exponential backoff ব্যবহার করবেন না। এটি আপনার সময় নষ্ট করবে।
Anthropic 529 এরর মানে হলো প্রোভাইডার ওভারলোডেড। এটিকে একটি 503 এরর হিসেবে বিবেচনা করুন। সমস্যাটি তাদের দিকে। কিছুক্ষণ অপেক্ষা করুন এবং আপনার টিমকে সতর্ক করুন।
400 এরর হ্যান্ডেল করা
এই ব্যর্থতাগুলো সাধারণত আপনার ভুলের কারণে হয়। এই তিনটি প্যাটার্নের দিকে নজর দিন:
- মডেল ভার্সন মিসম্যাচ। আপনি হয়তো এক জায়গায় নাম আপডেট করেছেন কিন্তু আপনার retry handler-এ করেননি।
- কনটেক্সট উইন্ডো ওভারফ্লো। কথোপকথনের ইতিহাস অনেক বড় হয়ে গেছে। এটি প্রায়শই ভুল truncation লজিকের কারণে ঘটে।
- স্কিমা ভ্যালিডেশন ফেইলর। আপনার JSON স্ট্রাকচারে unsupported টাইপ বা recursive রেফারেন্স রয়েছে।
এগুলো ঠিক করতে, 400 এররগুলোর জন্য সম্পূর্ণ request payload লগ করুন। তবে প্রথমে ইউজার ডেটা রিমুভ (redact) করে নিন। রেসপন্স বডি আপনাকে ঠিক বলে দেবে কোন ফিল্ডটিতে সমস্যা হয়েছে।
টাইমআউট হ্যান্ডেল করা
টাইমআউট ট্র্যাক করা কঠিন কারণ প্রোভাইডারের কাছে কোনো সমস্যা দেখা যায় না।
- Connect timeout. হ্যান্ডশেক ব্যর্থ হয়েছে। এটি প্রোভাইডারের brownout বা DNS সমস্যার কারণে ঘটে। আপনার আউটবাউন্ড নেটওয়ার্ক পরীক্ষা করুন।
- Read timeout. মডেলটি শুরু হয়েছিল কিন্তু শেষ করেনি। আপনার অ্যাপকে অবশ্যই partial streaming আউটপুট হ্যান্ডেল করতে হবে।
- Gateway timeout (504)। আপনার প্রক্সি আগে টাইমআউট হয়েছে। অনুরোধটি প্রোভাইডারের কাছে এখনও চলতে পারে। পুনরায় চেষ্টা করার আগে deduplication ব্যবহার করুন।
ডিবাগ করার জন্য, আপনার connect timeout এবং read timeout আলাদা করুন। ল্যাটেন্সি কোথায় হচ্ছে তা খুঁজে পেতে time-to-first-token লগ করুন।
প্রোভাইডার ইস্যু হ্যান্ডেল করা
- একটি 500 এরর প্রায়শই দুই সেকেন্ড পর একবার পুনরায় চেষ্টা (retry) করলেই সমাধান হয়ে যায়।
- একটি 503 এরর মানে হলো সার্ভিসটি ডাউন বা স্লো। যদি প্রোভাইডারের স্ট্যাটাস পেজে কোনো ইনসিডেন্ট দেখায়, তবে circuit breaker ব্যবহার করুন।
- কোন মডেল ভার্সনটি ব্যর্থ হয়েছে তা সব সময় রেকর্ড করুন। বিভিন্ন মডেলের নির্ভরযোগ্যতা বা reliability লেভেল ভিন্ন ভিন্ন হয়।
লগ থেকে সরাসরি Slack-এ ঝাঁপিয়ে পড়া বন্ধ করুন। প্রথমে প্রোভাইডারের স্ট্যাটাস পেজ চেক করুন। এটি আপনাকে ২০ মিনিটের আতঙ্ক থেকে বাঁচাবে।
ঐচ্ছিক লার্নিং কমিউনিটি: https://t.me/GyaanSetuAi
