Fetch API নিয়ে AI যে ৫টি ভুল করে

AI কোডিং অ্যাসিস্ট্যান্টরা এমন কোড লেখে যা দেখতে সঠিক মনে হয়। কিন্তু সেগুলো আসলে সঠিক নয়।

বেশিরভাগ মডেল একটি সাধারণ fetch snippet সাজেস্ট করে। এটি ডেমোতে কাজ করে, কিন্তু প্রোডাকশনে ব্যর্থ হয়। Fetch API একটি low-level টুল, এটি কোনো পূর্ণাঙ্গ HTTP ক্লায়েন্ট নয়। এটি ব্যবহারের জন্য আপনাকে এমন কিছু আর্কিটেকচারাল সিদ্ধান্ত নিতে হবে যা AI নিতে পারে না।

Fetch ব্যবহারের ক্ষেত্রে AI যেভাবে ব্যর্থ হয় তার ৫টি উপায় নিচে দেওয়া হলো:

  • Error Handling AI ধরে নেয় যে একটি রিকোয়েস্ট ব্যর্থ হলে সেটি promise রিজেক্ট করবে। এটি ভুল। একটি 404 বা 500 এরর catch ব্লক ট্রিগার করে না। আপনাকে ম্যানুয়ালি response.ok চেক করতে হবে। যদি আপনি তা না করেন, তবে আপনার অ্যাপ এরর পেজগুলোকে সফল ডেটা হিসেবে গণ্য করবে।

  • Request Cancellation AI প্রায়ই AbortController ব্যবহার করতে ভুলে যায়। এর ফলে React-এর মতো ফ্রেমওয়ার্কগুলোতে memory leaks এবং race conditions তৈরি হয়। যদি একজন ব্যবহারকারী দ্রুত একটি লিস্টের মধ্য দিয়ে ক্লিক করেন, তবে পুরনো রিকোয়েস্টগুলো নতুন রিকোয়েস্টের পরে resolve হতে পারে। এতে আপনার UI-তে stale data থেকে যায়। আপনাকে AbortError ফিল্টার করতে হবে যাতে ইচ্ছাকৃতভাবে রিকোয়েস্ট বাতিল করার সময় ভুল করে এরর মেসেজ না দেখায়।

  • Streaming Data AI রেসপন্সগুলোকে একটি একক ব্লক হিসেবে বিবেচনা করে। বড় ফাইল বা LLM রেসপন্স হ্যান্ডেল করার সময় এটি সমস্যা তৈরি করে। নেটওয়ার্ক চাঙ্কগুলো (chunks) একটি একক ক্যারেক্টার বা একটি JSON লাইনকে মাঝখান থেকে ভেঙে ফেলতে পারে। চাঙ্কগুলোর মধ্যে বাইটগুলো সঠিকভাবে হ্যান্ডেল করার জন্য আপনাকে একটি TextDecoderStream এবং একটি buffer ব্যবহার করতে হবে।

  • Resilience and Retries AI খুব অপরিণত (naive) retry loop প্রদান করে। এই লুপগুলো বিপজ্জনক। এগুলো প্রায়ই POST রিকোয়েস্ট পুনরায় চেষ্টা (retry) করে, যা ডাবল চার্জ বা ডুপ্লিকেট ডেটার কারণ হতে পারে। এগুলোতে backoff এবং jitter-এর অভাব থাকে। এটি সার্ভারের একটি ছোট সমস্যাকেও বড় ধরনের আউটটেজে পরিণত করতে পারে। আপনাকে শুধুমাত্র idempotent রিকোয়েস্টগুলো রিট্রাই করতে হবে এবং exponential backoff ব্যবহার করতে হবে।

  • Environment Differences AI ব্রাউজার এবং Node.js-এর নিয়মগুলো গুলিয়ে ফেলে। Node.js-এ CORS বাধ্যতামূলক নয়। Node.js-এর ডিফল্ট টাইমআউট আলাদা। Node-এ কানেকশন লিক হওয়া এড়াতে আপনাকে অবশ্যই body কনজিউম করতে হবে। AI আপনার টার্গেট রানটাইম সম্পর্কে জানে না, তাই এটি প্রায়ই এমন কোড দেয় যা একটি পরিবেশে কাজ করলেও অন্যটিতে কাজ করে না।

The Strategy:

স্ক্যাফোল্ডিং (scaffolding)-এর জন্য AI ব্যবহার করুন। এটিকে boilerplate এবং প্রাথমিক কাঠামো লিখতে দিন।

আপনাকে এর সিম্যান্টিকস (semantics) নিয়ন্ত্রণ করতে হবে। একটি 404 এরর কি না, তা আপনি ঠিক করবেন। আপনার retry budget কত হবে, তাও আপনি ঠিক করবেন। কীভাবে আপনার auth headers হ্যান্ডেল করবেন, সেটিও আপনার সিদ্ধান্ত।

AI কোডকে বিশ্বাসযোগ্য (plausible) করার চেষ্টা করে। আপনাকে কোডকে সঠিক (correctness) করার জন্য কাজ করতে হবে।

Source: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e