Fetch API کے بارے میں 5 چیزیں جن میں AI غلطی کرتا ہے

AI کوڈنگ اسسٹنٹ ایسا کوڈ لکھتے ہیں جو دیکھنے میں درست لگتا ہے۔ لیکن وہ ایسا کوڈ نہیں لکھتے جو حقیقت میں درست ہو۔

زیادہ تر ماڈلز ایک سادہ fetch اسنیپٹ (snippet) تجویز کرتے ہیں۔ یہ ڈیمو میں تو چل جاتا ہے، لیکن پروڈکشن میں ناکام ہو جاتا ہے۔ Fetch API ایک لو-لیول (low-level) ٹول ہے، کوئی مکمل HTTP کلائنٹ نہیں۔ اس کے لیے آپ کو ایسے آرکیٹیکچرل فیصلے کرنے پڑتے ہیں جو AI نہیں کر سکتا۔

یہاں 5 طریقے ہیں جن میں AI fetch کے معاملے میں ناکام رہتا ہے:

  • ایرر ہینڈلنگ (Error Handling) AI یہ فرض کر لیتا ہے کہ ناکام ہونے والی درخواست (request) پرومس (promise) کو ریجیکٹ کر دے گی۔ یہ غلط ہے۔ 404 یا 500 ایرر catch بلاک کو ٹرگر نہیں کرتے۔ آپ کو دستی طور پر response.ok کو چیک کرنا ہوگا۔ اگر آپ ایسا نہیں کرتے، تو آپ کی ایپ ایرر پیجز کو کامیاب ڈیٹا سمجھ لے گی۔

  • درخواست کی منسوخی (Request Cancellation) AI اکثر AbortController کا استعمال کرنا بھول جاتا ہے۔ اس سے React جیسے فریم ورکس میں میموری لیکس (memory leaks) اور ریس کنڈیشنز (race conditions) پیدا ہوتی ہیں۔ اگر کوئی صارف تیزی سے فہرست میں کلک کرتا ہے، تو پرانی درخواستیں نئی درخواستوں کے بعد حل (resolve) ہو سکتی ہیں۔ اس سے آپ کا UI پرانا یا غلط ڈیٹا دکھانے لگتا ہے۔ آپ کو AbortError کے لیے فلٹر بھی کرنا چاہیے تاکہ ارادی طور پر کی گئی منسوخی کے دوران غلطی کے پیغامات ظاہر نہ ہوں۔

  • اسٹریمنگ ڈیٹا (Streaming Data) AI رسپانسز کو ایک ہی بلاک کے طور پر لیتا ہے۔ بڑی فائلوں یا LLM رسپانسز کو ہینڈل کرتے وقت یہ طریقہ کام نہیں کرتا۔ نیٹ ورک چنکس (chunks) ایک ہی کریکٹر یا JSON لائن کو دو حصوں میں تقسیم کر سکتے ہیں۔ چنکس کے درمیان بائٹس (bytes) کو درست طریقے سے ہینڈل کرنے کے لیے آپ کو TextDecoderStream اور ایک بفر (buffer) کا استعمال کرنا چاہیے۔

  • لچک اور ری ٹرائیز (Resilience and Retries) AI سادہ ری ٹرائی لوپس (retry loops) فراہم کرتا ہے۔ یہ لوپس خطرناک ہوتے ہیں۔ یہ اکثر POST درخواستوں کو دوبارہ کرنے کی کوشش کرتے ہیں، جس سے ڈبل چارجز یا ڈیٹا کا دوہراؤ ہو سکتا ہے۔ ان میں backoff اور jitter کی بھی کمی ہوتی ہے۔ یہ ایک معمولی سرور خرابی کو بڑے پیمانے پر ڈاؤن ٹائم میں بدل سکتا ہے۔ آپ کو صرف idempotent درخواستوں کو ہی ری ٹرائی کرنا چاہیے اور exponential backoff کا استعمال کرنا چاہیے۔

  • ماحول کے فرق (Environment Differences) AI براؤزر اور Node.js کے اصولوں میں فرق نہیں کر پاتا۔ Node.js میں CORS کا اطلاق نہیں ہوتا۔ Node.js کے ڈیفالٹ ٹائم آؤٹ (timeouts) مختلف ہوتے ہیں۔ Node میں، کنکشنز کے لیک ہونے سے بچنے کے لیے آپ کو باڈی (body) کو استعمال (consume) کرنا ضروری ہے۔ AI آپ کے ٹارگٹ رن ٹائم (runtime) کے بارے میں نہیں جان سکتا، اس لیے وہ اکثر ایسا کوڈ دیتا ہے جو ایک جگہ تو کام کرتا ہے لیکن دوسری جگہ ناکام ہو جاتا ہے۔

حکمت عملی (The Strategy):

اسکیفولڈنگ (scaffolding) کے لیے AI کا استعمال کریں۔ اسے بوائلر پلیٹ (boilerplate) اور بنیادی ڈھانچہ لکھنے دیں۔

آپ کو مفہوم (semantics) کا خود ذمہ دار ہونا چاہیے۔ آپ فیصلہ کرتے ہیں کہ آیا 404 ایک ایرر ہے یا نہیں۔ آپ اپنا ری ٹرائی بجٹ خود طے کرتے ہیں۔ آپ فیصلہ کرتے ہیں کہ اپنے auth ہیڈرز کو کیسے ہینڈل کرنا ہے۔

AI ایسے کوڈ کے لیے کام کرتا ہے جو معقول لگے، جبکہ آپ کو درستگی (correctness) کے لیے کام کرنا چاہیے۔

ماخذ: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e