Fetch API मध्ये AI कडून होणाऱ्या ५ चुका

AI कोडिंग असिस्टंट्स असे कोड लिहितात जे दिसायला बरोबर वाटतात. पण ते प्रत्यक्षात बरोबर नसतात.

बहुतेक मॉडेल्स एक साधा fetch snippet सुचवतात. तो डेमोमध्ये चालतो, पण प्रोडक्शनमध्ये (production) तो फेल होतो. Fetch API हे एक लो-लेव्हल (low-level) टूल आहे, पूर्ण HTTP क्लायंट नाही. यामध्ये तुम्हाला अशा आर्किटेक्चरल निर्णयांची गरज असते जे AI घेऊ शकत नाही.

Fetch सोबत AI कडून होणाऱ्या ५ चुका खालीलप्रमाणे आहेत:

  • Error Handling AI असे गृहीत धरते की अयशस्वी विनंतीमुळे (failed request) promise reject होईल. हे चुकीचे आहे. 404 किंवा 500 एररमुळे catch block ट्रिगर होत नाही. तुम्हाला response.ok मॅन्युअली तपासावे लागेल. जर तुम्ही तसे केले नाही, तर तुमचे ॲप एरर पेजेसना यशस्वी डेटा समजून घेईल.

  • Request Cancellation AI अनेकदा AbortController वापरायला विसरते. यामुळे React सारख्या फ्रेमवर्क्समध्ये memory leaks आणि race conditions निर्माण होतात. जर वापरकर्त्याने लिस्टमध्ये वेगाने क्लिक केले, तर जुन्या विनंत्या (requests) नवीन विनंत्यांच्या नंतर रिझॉल्व्ह (resolve) होऊ शकतात. यामुळे तुमच्या UI मध्ये जुना/चुकीचा (stale) डेटा दिसू शकतो. तसेच, तुम्हाला AbortError साठी फिल्टर करणे आवश्यक आहे जेणेकरून जाणीवपूर्वक केलेल्या कॅन्सलेशन दरम्यान एरर मेसेज दिसणार नाहीत.

  • Streaming Data AI रिस्पॉन्सना (responses) एक सिंगल ब्लॉक मानते. मोठ्या फाईल्स किंवा LLM रिस्पॉन्स हाताळताना हे चुकते. नेटवर्क चंक्समुळे (chunks) एखादे अक्षर किंवा JSON लाईन मधूनच विभागली जाऊ शकते. चंक्समधील बाइट्स (bytes) योग्यरित्या हाताळण्यासाठी तुम्हाला TextDecoderStream आणि बफर (buffer) वापरावा लागेल.

  • Resilience and Retries AI साधे (naive) retry loops सुचवते. हे लूप्स धोकादायक असतात. ते अनेकदा POST विनंत्या पुन्हा करण्याचा प्रयत्न करतात, ज्यामुळे डबल चार्जेस किंवा डुप्लिकेट डेटा तयार होऊ शकतो. तसेच, त्यामध्ये backoff आणि jitter चा अभाव असतो. यामुळे सर्व्हरमधील छोटीशी अडचण मोठ्या आउटेजमध्ये (outage) रूपांतरित होऊ शकते. तुम्ही फक्त idempotent विनंत्यांचेच retry केले पाहिजे आणि exponential backoff वापरले पाहिजे.

  • Environment Differences AI ब्राउझर (Browser) आणि Node.js चे नियम एकमेकांत मिसळते. Node.js मध्ये CORS लागू केले जात नाही. Node.js मध्ये डिफॉल्ट टाइमआउट्स वेगळे असतात. कनेक्शन लीक होण्यापासून वाचवण्यासाठी Node मध्ये तुम्हाला बॉडी (body) कंज्युम (consume) करावी लागते. AI ला तुमच्या टार्गेट रनटाइमबद्दल (target runtime) माहिती नसते, त्यामुळे ते अनेकदा असा कोड देते जो एका ठिकाणी चालतो पण दुसऱ्या ठिकाणी फेल होतो.

The Strategy:

AI चा वापर स्कॅफोल्डिंगसाठी (scaffolding) करा. त्याला बॉयलरप्लेट (boilerplate) आणि मूलभूत रचना लिहिू द्या.

तुम्हाला अर्थाची (semantics) जबाबदारी घ्यावी लागेल. 404 ही एरर आहे की नाही, हे तुम्ही ठरवा. तुमचा retry बजेट तुम्ही ठरवा. तुमचे auth headers कसे हाताळायचे हे तुम्ही ठरवा.

AI हे 'असे वाटणारे' (plausible) कोड लिहिण्यासाठी ऑप्टिमाइझ करते. तुम्हाला ते 'अचूक' (correctness) असण्यासाठी ऑप्टिमाइझ करावे लागेल.

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