5 أشياء يخطئ فيها الذكاء الاصطناعي مع Fetch API

مساعدو البرمجة بالذكاء الاصطناعي يكتبون كوداً يبدو صحيحاً، لكنهم لا يكتبون كوداً صحيحاً بالفعل.

تقترح معظم النماذج مقتطفات بسيطة لـ fetch. تعمل هذه المقتطفات في العروض التجريبية (demo)، لكنها تفشل في بيئة الإنتاج (production). إن Fetch API هي أداة منخفضة المستوى (low-level tool)، وليست عميلاً كاملاً لبروتوكول HTTP. فهي تتطلب منك اتخاذ قرارات معمارية لا يستطيع الذكاء الاصطناعي اتخاذها.

إليك 5 طرق يفشل فيها الذكاء الاصطناعي مع fetch:

  • معالجة الأخطاء (Error Handling) يفترض الذكاء الاصطناعي أن الطلب الفاشل يؤدي إلى رفض الـ promise. هذا خطأ. فخطأ 404 أو 500 لا يؤدي إلى تفعيل كتلة catch. يجب عليك التحقق من response.ok يدوياً. إذا لم تفعل ذلك، سيعامل تطبيقك صفحات الخطأ على أنها بيانات ناجحة.

  • إلغاء الطلب (Request Cancellation) غالباً ما ينسى الذكاء الاصطناعي استخدام AbortController. يتسبب هذا في تسريبات للذاكرة (memory leaks) وحالات سباق (race conditions) في أطر العمل مثل React. إذا نقر المستخدم عبر قائمة بسرعة، فقد تكتمل الطلبات القديمة بعد الطلبات الجديدة، مما يترك واجهة المستخدم (UI) ببيانات قديمة (stale data). يجب عليك أيضاً تصفية AbortError حتى لا تظهر رسائل خطأ أثناء عمليات الإلغاء المتعمدة.

  • تدفق البيانات (Streaming Data) يعامل الذكاء الاصطناعي الاستجابات ككتل واحدة. هذا الأمر يتعطل عند التعامل مع الملفات الكبيرة أو استجابات نماذج اللغة الكبيرة (LLM). يمكن لقطع الشبكة (network chunks) أن تقسم حرفاً واحداً أو سطراً من JSON إلى نصفين. يجب عليك استخدام TextDecoderStream و buffer للتعامل مع البايتات بشكل صحيح عبر القطع المختلفة.

  • المرونة وإعادة المحاولة (Resilience and Retries) يقدم الذكاء الاصطناعي حلقات إعادة محاولة ساذجة. هذه الحلقات خطيرة؛ فهي غالباً ما تعيد محاولة طلبات POST مما قد يتسبب في عمليات دفع مزدوجة أو بيانات مكررة. كما أنها تفتقر إلى تقنيات الـ backoff والـ jitter، مما يحول خللاً بسيطاً في الخادم إلى انقطاع هائل في الخدمة. يجب عليك فقط إعادة محاولة الطلبات المتماثلة (idempotent requests) واستخدام الـ exponential backoff.

  • الاختلافات البيئية (Environment Differences) يخلط الذكاء الاصطناعي بين قواعد المتصفح (Browser) وقواعد Node.js. لا يفرض Node.js سياسة CORS، كما أن له مهلات زمنية (timeouts) افتراضية مختلفة. في Node، يجب عليك استهلاك الـ body لتجنب تسريب الاتصالات. لا يمكن للذكاء الاصطناعي معرفة بيئة التشغيل (runtime) المستهدفة، لذا غالباً ما يعطيك كوداً يعمل في بيئة واحدة ولكنه يتعطل في الأخرى.

الاستراتيجية:

استخدم الذكاء الاصطناعي لبناء الهيكل الأساسي (scaffolding). دعه يكتب الكود النمطي (boilerplate) والبنية الأساسية.

يجب أن تملك أنت التحكم في الدلالات (semantics). أنت من يقرر ما إذا كان خطأ 404 يعتبر خطأً أم لا. أنت من يحدد ميزانية إعادة المحاولة. وأنت من يقرر كيفية التعامل مع ترويسات المصادقة (auth headers).

الذكاء الاصطناعي يحسن الكود ليكون "منطقياً"، أما أنت فيجب أن تحسن الكود ليكون "صحيحاً".

المصدر: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e