Fetch API के साथ AI जो 5 गलतियाँ करता है
AI कोडिंग असिस्टेंट ऐसा कोड लिखते हैं जो सही दिखता है। वे ऐसा कोड नहीं लिखते जो वास्तव में सही हो।
अधिकांश मॉडल एक साधारण fetch स्निपेट का सुझाव देते हैं। यह डेमो में तो चल जाता है, लेकिन प्रोडक्शन में विफल हो जाता है। Fetch API एक लो-लेवल टूल है, कोई पूर्ण HTTP क्लाइंट नहीं। इसके लिए आपको ऐसे आर्किटेक्चरल निर्णय लेने की आवश्यकता होती है जो AI नहीं ले सकता।
यहाँ 5 तरीके दिए गए हैं जिनसे AI fetch के साथ विफल होता है:
Error Handling AI मान लेता है कि एक विफल अनुरोध (request) प्रॉमिस (promise) को रिजेक्ट कर देता है। यह गलत है। 404 या 500 एरर catch ब्लॉक को ट्रिगर नहीं करते हैं। आपको मैन्युअल रूप से
response.okकी जाँच करनी चाहिए। यदि आप ऐसा नहीं करते हैं, तो आपका ऐप एरर पेजों को सफल डेटा मान लेगा।Request Cancellation AI अक्सर
AbortControllerका उपयोग करना भूल जाता है। इससे React जैसे फ्रेमवर्क में मेमोरी लीक और रेस कंडीशंस (race conditions) पैदा होती हैं। यदि कोई उपयोगकर्ता जल्दी-जल्दी एक लिस्ट में क्लिक करता है, तो पुराने अनुरोध नए अनुरोधों के बाद रिज़ॉल्व हो सकते हैं। इससे आपका UI पुराने (stale) डेटा के साथ रह जाता है। आपकोAbortErrorके लिए भी फ़िल्टर करना चाहिए ताकि जानबूझकर किए गए कैंसलेशन के दौरान आप एरर मैसेज न दिखाएं।Streaming Data AI रिस्पॉन्स को सिंगल ब्लॉक्स के रूप में मानता है। बड़ी फ़ाइलों या LLM रिस्पॉन्स को हैंडल करते समय यह तरीका विफल हो जाता है। नेटवर्क चंक्स (chunks) एक सिंगल कैरेक्टर या JSON लाइन को आधा कर सकते हैं। चंक्स के बीच बाइट्स को सही ढंग से संभालने के लिए आपको
TextDecoderStreamऔर एक बफर का उपयोग करना चाहिए।Resilience and Retries AI साधारण (naive) रिट्राई लूप प्रदान करता है। ये लूप खतरनाक होते हैं। वे अक्सर POST अनुरोधों को फिर से करने (retry) की कोशिश करते हैं, जिससे डबल चार्ज या डुप्लिकेट डेटा हो सकता है। उनमें बैकऑफ़ (backoff) और जिटर (jitter) की भी कमी होती है। यह सर्वर की एक छोटी सी समस्या को एक बड़े आउटेज में बदल सकता है। आपको केवल idempotent अनुरोधों को ही रिट्राई करना चाहिए और exponential backoff का उपयोग करना चाहिए।
Environment Differences AI ब्राउज़र और Node.js के नियमों में भ्रमित हो जाता है। Node.js CORS को लागू नहीं करता है। Node.js में डिफॉल्ट टाइमआउट अलग होते हैं। Node में, कनेक्शन लीक होने से बचने के लिए आपको बॉडी (body) को कंज्यूम करना चाहिए। AI आपके टारगेट रनटाइम को नहीं जान सकता, इसलिए यह अक्सर आपको ऐसा कोड देता है जो एक में तो काम करता है लेकिन दूसरे में टूट जाता है।
रणनीति (The Strategy):
स्कैफोल्डिंग (scaffolding) के लिए AI का उपयोग करें। इसे बॉयलरप्लेट और बुनियादी संरचना लिखने दें।
आपको सिमेंटिक्स (semantics) की जिम्मेदारी लेनी होगी। आप तय करते हैं कि 404 एक एरर है या नहीं। आप अपना रिट्राई बजट तय करते हैं। आप तय करते हैं कि अपने auth headers को कैसे हैंडल करना है।
AI 'संभावित' (plausible) कोड के लिए ऑप्टिमाइज़ करता है। आपको 'सटीकता' (correctness) के लिए ऑप्टिमाइज़ करना चाहिए।
Source: https://dev.to/devunionx/new5-things-even-ai-cant-do-fetch-api-328e
