AI से बना कोड क्यों टूटता है, और असली वजह कैसे ठीक करें
लिंटर एक ऐसी लाइन पर एरर देता है जो पूरी तरह सही दिखती है। JSON पेलोड वैलिडेशन में फेल होता है, जबकि फ़ील्ड स्कीमा से हूबहू मेल खाती है, वही लंबाई, वही कैरेक्टर। दिक्कत लगभग कभी आपके लॉजिक में नहीं होती। वह दो अक्षरों के बीच बैठी होती है, अदृश्य, और वहाँ इसलिए पहुँची क्योंकि कोड किसी चैट विंडो से कॉपी किया गया था।
AI चैट इंटरफ़ेस से कॉपी किया कोड अक्सर अदृश्य Unicode कैरेक्टर साथ लाता है, ज़ीरो-विड्थ स्पेस, जॉइनर, नो-ब्रेक स्पेस, जो इंटरफ़ेस के जवाब को टाइपसेट HTML के रूप में दिखाने से बच जाते हैं। यह कोई वॉटरमार्क नहीं, किसी ने जान-बूझकर नहीं डाला। सामान्य एडिटर में यह पूरी तरह अदृश्य रहते हैं, यही वजह है कि सिंटैक्स एरर, बिगड़ी स्ट्रिंग लंबाई और नाकाम API कॉल समझ से बाहर लगते हैं। कोड नीचे दिए चेकर में पेस्ट करें, हर कैरेक्टर सामने आ जाएगा।
और देखें: क्या मिला, एक्स-रे व्यू और विकल्प
एक्स-रे व्यू
आपका टेक्स्ट, जिसमें हर छिपा कैरेक्टर लेबल के रूप में दिखता है। Unicode नाम देखने के लिए होवर करें।
क्या मिला
| कोड पॉइंट | कैरेक्टर | संख्या | कार्रवाई |
|---|
ये कैरेक्टर असल में क्या हैं
असली, मानक Unicode कोड-पॉइंट, न मालवेयर, न जान-बूझकर लगाया गया निशान। हर एक का कोई-न-कोई वैध काम है, बस वह काम किसी वेरिएबल नाम या SQL स्ट्रिंग के अंदर का नहीं है।
| कैरेक्टर | कोड पॉइंट | काम किस लिए | कोड में क्या बिगाड़ता है |
|---|---|---|---|
| ज़ीरो-विड्थ स्पेस | U+200B | घने टेक्स्ट में सॉफ़्ट लाइन-ब्रेक बिंदु | आइडेंटिफ़ायर तोड़ता है, रेगेक्स मैच बिगाड़ता है |
| ज़ीरो-विड्थ जॉइनर | U+200D | इमोजी सीक्वेंस को जोड़ता है | स्ट्रिंग की लंबाई चुपचाप बदल देता है |
| वर्ड जॉइनर | U+2060 | अनचाहा लाइन-ब्रेक रोकता है | डिफ़ या हैश किए जाने वाले टोकन बिगाड़ता है |
| नो-ब्रेक स्पेस | U+00A0 | संख्या को उसकी इकाई से जोड़े रखता है | स्पेस जैसा दिखता है, है नहीं; फ़ॉर्म और स्कीमा वैलिडेटर इसे रिजेक्ट करते हैं |
इनमें से कोई भी सामान्य एडिटर में नहीं दिखता। यही असली दिक्कत है: कोड रिव्यू, डिफ़, आपकी अपनी आँखें, कुछ भी इसे पकड़ नहीं पाता, क्योंकि पकड़ने के लिए कुछ दिखता ही नहीं।
यह असल में कहाँ तकलीफ़ देता है
बिल्कुल सही लाइन पर लिंटर फेल
अक्सर एक ज़ीरो-विड्थ स्पेस किसी आइडेंटिफ़ायर के बीच घुसा होता है, पार्सर की नज़र में एक टोकन दो में बँट जाता है।
CSV या डेटाबेस इंपोर्ट में एक रो बिगड़ जाती है
एक अटका कैरेक्टर साफ़ न्यूमेरिक फ़ील्ड को टेक्स्ट बना देता है, या किसी वैल्यू को ऐसी लंबाई-सीमा पार करा देता है जो किसी ने जान-बूझकर तय नहीं की थी।
API कॉल बिना वजह 400 लौटाता है
सख़्त JSON वैलिडेटर स्ट्रिंग वैल्यू के अंदर अनपेक्षित कोड-पॉइंट को माफ़ नहीं करते, और रिक्वेस्ट बॉडी हर टूल में बिल्कुल सामान्य दिखती है।
यह कोई वॉटरमार्क नहीं है। Anthropic और Google जैसे प्रदाताओं का असली सांख्यिकीय वॉटरमार्क बिल्कुल अलग तंत्र है, वह संकेत इसमें रहता है कि मॉडल ने कौन-से शब्द चुने, किसी ऐसे कैरेक्टर में नहीं जिसे चुनकर मिटाया जा सके। यह टूल उस वॉटरमार्क को न छूता है, न छू सकता है, यह सिर्फ़ चैट-रेंडरिंग का टाइपोग्राफ़िक कचरा साफ़ करता है। पूरा फ़र्क़ सांख्यिकीय बनाम कैरेक्टर वॉटरमार्क में (अंग्रेज़ी में)।
अक्सर पूछे जाने वाले सवाल
क्या ये कैरेक्टर AI वॉटरमार्क हैं?
नहीं। कोई भी बड़ा प्रदाता अदृश्य कैरेक्टर को वॉटरमार्क के तौर पर इस्तेमाल नहीं करता, क्योंकि किसी भी टेक्स्ट-सफ़ाई कदम से यह आसानी से हट जाता। यह चैट इंटरफ़ेस के रेंडरिंग से बचा टाइपोग्राफ़िक कचरा है, कोई जान-बूझकर डाला संकेत नहीं।
क्या सफ़ाई से मेरे कोड की फ़ॉर्मेटिंग बिगड़ेगी?
नहीं। टैब, लाइन-फ़ीड और इंडेंटेशन बिल्कुल वैसे रहते हैं। सिर्फ़ वे अदृश्य कोड-पॉइंट हटते हैं जिनका कोई दिखने वाला मतलब नहीं, और असामान्य स्पेस मिटाने की जगह सामान्य स्पेस से बदल दिए जाते हैं।
और पढ़ें
- हिन्दी में मुख्य टूल।
- पूरा लेख (अंग्रेज़ी में), टेबल, रेगेक्स उदाहरण और अधिक मामलों के साथ।