Do Code LLMs Do Static Analysis?
यह शोध पत्र इस बात की जांच करता है कि क्या कोड LLMs कोड जनरेशन और समराइजेशन जैसे कार्यों के दौरान स्टैटिक एनालिसिस (static analysis) करते हैं, जिसमें यह पाया गया है कि ये मॉडल स्टैटिक एनालिसिस कार्यों पर खराब प्रदर्शन करते हैं और ऐसे कार्यों पर प्रीट्रेनिंग करने से बेहतर कोड इंटेलिजेंस क्षमताओं में सुधार के लिए सामान्यीकरण (generalize) नहीं होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
बड़ा सवाल: क्या AI प्रोग्रामर वास्तव में "सोच" रहे हैं?
कल्पना कीजिए कि आपने एक घर बनाने में मदद करने के लिए एक बहुत ही प्रतिभाशाली नए प्रशिक्षु (apprentice) को काम पर रखा है। यह प्रशिक्षु, मान लीजिए इसका नाम "AI" है, सुंदर ब्लूप्रिंट लिख सकता है, फ्रेंच से अंग्रेजी में निर्देशों का अनुवाद कर सकता है, और दीवारों को देखकर यह भी बता सकता है कि कमरा कैसा दिखता है। हर कोई प्रभावित है।
लेकिन यहाँ वह बड़ा सवाल है जो लेखकों ने पूछा: क्या यह प्रशिक्षु वास्तव में समझता है कि घर कैसे काम करता है?
प्रोग्रामिंग की दुनिया में, "घर कैसे काम करता है यह समझना" को स्टैटिक एनालिसिस (Static Analysis) कहा जाता है। यह वह मानसिक प्रक्रिया है जिसका उपयोग एक मानव प्रोग्रामर यह पता लगाने के लिए करता है कि:
- कॉल ग्राफ (The Call Graph): यदि मैं यह बटन दबाता हूँ, तो इससे कौन से अन्य बटन सक्रिय होंगे? (जैसे भूलभुलैया में रास्ता ढूँढना)।
- डेटा फ्लो (The Data Flow): यदि मैं इस पाइप में पानी डालता हूँ, तो वह कहाँ जाकर समाप्त होगा? (जानकारी कैसे चलती है, इसे ट्रैक करना)।
- AST (एब्स्ट्रैक्ट सिंटैक्स ट्री): ईंटें, बीम और खिड़कियाँ संरचनात्मक रूप से कैसे व्यवस्थित हैं? (कोड के कंकाल को समझना)।
इंसान यह काम स्वचालित रूप से करते हैं। हम कोड लिखने से पहले उसका एक मानसिक मानचित्र (mental map) बना लेते हैं। लेखकों ने जानना चाहा: क्या AI मॉडल भी ऐसा करते हैं, या वे केवल अनुमान लगा रहे हैं?
प्रयोग: "टेस्ट किचन"
यह पता लगाने के लिए, शोधकर्ताओं ने चार अलग-अलग शेफ (AI मॉडल) के साथ एक "टेस्ट किचन" बनाया:
- दो प्रसिद्ध क्लोज्ड-सोर्स शेफ: GPT-4o और Gemini (बड़े, महंगे वाले जिन्हें आप अंदर से नहीं देख सकते)।
- दो ओपन-सोर्स शेफ: CodeLlama और Jam (छोटे, पारदर्शी जिन्हें शोधकर्ता बदल सकते हैं)।
उन्होंने इन शेफ को तीन प्रकार के कार्य दिए:
- "कुकिंग" कार्य (कोड इंटेलिजेंस): एक रेसिपी लिखें (कोड जनरेशन), रेसिपी का सारांश लिखें (कोड समराइजेशन), या इटालियन से अंग्रेजी में रेसिपी का अनुवाद करें (कोड ट्रांसलेशन)।
- "ब्लूप्रिंट" कार्य (स्टैटिक एनालिसिस): वायरिंग डायग्राम बनाएँ (कॉल ग्राफ), पानी के पाइपों का पता लगाएँ (डेटा फ्लो), या संरचनात्मक कंकाल बनाएँ (AST)।
उन्होंने शेफ का परीक्षण तीन तरीकों से किया:
- रॉ टेस्ट (The Raw Test): क्या वे बिना किसी विशेष प्रशिक्षण के ब्लूप्रिंट कार्यों को सही ढंग से कर सकते हैं?
- ट्रेनिंग टेस्ट (The Training Test): यदि हम उन्हें केवल ब्लूप्रिंट बनाना सिखाते हैं, तो क्या इससे वे बेहतर कुक बन जाते हैं?
- बायप्रोडक्ट टेस्ट (The Byproduct Test): यदि हम उन्हें केवल खाना बनाना सिखाते हैं, तो क्या वे अनजाने में ब्लूप्रिंट बनाना सीख जाते हैं?
परिणाम: "एलियन" दिमाग
निष्कर्ष चौंकाने वाले और "AI इंसान की तरह सोच रहा है" वाली भीड़ के लिए थोड़े परेशान करने वाले थे।
1. रॉ टेस्ट: "मुझे प्लंबिंग का पता नहीं है।"
जब बिना किसी विशेष प्रशिक्षण के वायरिंग डायग्राम बनाने या पाइपों को ट्रेस करने के लिए कहा गया, तो AI शेफ इसमें बहुत खराब रहे।
- उपमा: यह एक शेफ से रसोई की इलेक्ट्रिकल वायरिंग बनाने के लिए कहने जैसा है। उन्हें पता हो सकता है कि चूल्हा कैसा दिखता है, लेकिन उन्हें यह नहीं पता कि तार ब्रेकर बॉक्स से कैसे जुड़ते हैं।
- परिणाम: AI मॉडल लगभग हर बार "कॉल ग्राफ" और "डेटा फ्लो" को गलत बताते थे। यहाँ तक कि "स्टेप बाय स्टेप सोचें" (AI को स्मार्ट बनाने का एक सामान्य तरीका) जोड़ने से भी ज्यादा मदद नहीं मिली। वे केवल तारों के आकार का अनुमान लगा रहे थे, वास्तविक कनेक्शनों का नहीं।
2. ट्रेनिंग टेस्ट: "मैं ड्राइंग कर सकता हूँ, लेकिन फिर भी मैं खाना नहीं बना सकता।"
शोधकर्ताओं ने ओपन-सोर्स शेफ को ब्लूप्रिंट (स्टैटिक एनालिसिस) बनाने पर कड़ी ट्रेनिंग दी। फिर, उन्होंने उनसे खाना पकाने (कोड लिखने) के लिए कहा।
- उपमा: हमने प्रशिक्षु को एक मास्टर आर्किटेक्ट बनने के लिए सिखाया। हमें उम्मीद थी कि ब्लूप्रंग जानना उन्हें एक बेहतर बिल्डर बनाएगा।
- परिणाम: नहीं। ब्लूप्रिंट बनाने में अच्छा होने का मतलब यह नहीं था कि वे बेहतर कुक बन गए। वास्तव में, उन्होंने अपने खाना पकाने में वही तार्किक गलतियाँ कीं जो वे पहले करते थे। उन्होंने ब्लूप्रिंट का आकार (सिंटैक्स) तो सीख लिया, लेकिन वे उस तर्क (लॉजिक) को नहीं सीख पाए कि घर कैसे काम करता है।
3. बायप्रोडक्ट टेस्ट: "मैं खाना बना सकता हूँ, लेकिन मैं ड्राइंग नहीं कर सकता।"
शोधकर्ताओं ने शेफ को मास्टर कुक बनने के लिए प्रशिक्षित किया। फिर, उन्होंने उनसे ब्लूप्रिंट बनाने को कहा।
- उपमा: हमने प्रशिक्षु को विश्व स्तरीय शेफ बनने के लिए सिखाया। हमें उम्मीद थी कि भोजन को इतनी अच्छी तरह समझने से उन्हें रसोई की संरचना समझने में मदद मिलेगी।
- परिणाम: नहीं। वे ब्लूप्रिंट बनाने में अभी भी बहुत खराब थे। वे एक बेहतरीन रेसिपी लिख सकते थे, लेकिन यदि आपने उनसे पूछा कि सामग्री चरणों के माध्यम से कैसे प्रवाहित होती है, तो वे भटक गए।
"फॉर्म बनाम मीनिंग" (रूप बनाम अर्थ) का रूपक
पेपर निष्कर्ष निकालता है कि AI मॉडल उन तोतों की तरह हैं जिन्होंने शब्दकोश रट लिया है लेकिन वे भाषा नहीं बोल पाते।
- इंसान सेमेंटिक्स (Semantics - अर्थ) सीखते हैं। जब हम
openDoor()जैसा फंक्शन कॉल देखते हैं, तो हम समझते हैं कि यह क्रिया भौतिक रूप से एक दरवाजा खोलती है, जो शायद एक लाइट को ट्रिगर कर सकती है, जिससे एक पंखा चालू हो सकता है। हम कारण और प्रभाव को समझते हैं। - LLMs फॉर्म (Form - रूप/पैटर्न) सीखते हैं। वे देखते हैं कि
openDoor()के बाद अक्सरturnOnLight()आता है। वे याद रखते हैं कि ये दोनों चीजें अक्सर साथ दिखाई देती हैं। उन्हें नहीं पता कि लाइट क्यों जलती है; वे बस उस पैटर्न को जानते हैं।
"स्टैटिक एनालिसिस" कार्यों के लिए 'क्यों' और 'कैसे' को समझने की आवश्यकता होती है। चूंकि AI केवल पैटर्न (Form) मिला रहा है और अर्थ (Semantics) को नहीं समझ रहा है, इसलिए वह स्टैटिक एनालिसिस में विफल रहता है।
यह क्यों मायने रखता है?
यदि आप AI को एक जटिल, सुरक्षा-महत्वपूर्ण प्रोग्राम (जैसे कि सेल्फ-ड्राइविंग कार या मेडिकल डिवाइस के लिए सॉफ्टवेयर) लिखने के लिए कहते हैं, और आप मान लेते हैं कि वह कोड को वैसे ही "समझता" है जैसे एक मानव इंजीनियर समझता है, तो आप मुसीबत में पड़ सकते हैं।
AI ऐसा कोड लिख सकता है जो दिखने में तो एकदम सही (अच्छा सिंटैक्स) हो, लेकिन उसमें एक छिपा हुआ तार्किक दोष हो सकता है क्योंकि उसने वास्तव में यह "चेक" नहीं किया कि सिस्टम क्रैश होगा या नहीं। यह एक ऐसे प्रशिक्षु की तरह है जो ऐसी दीवार बनाता है जो सीधी तो दिखती है, लेकिन उसका कोई आधार (फाउंडेशन) नहीं होता।
मुख्य निष्कर्ष
पेपर तर्क देता है कि कोड LLMs मानव प्रोग्रामरों की तरह "सोचते" नहीं हैं। वे कोड के दिखावे की नकल करने में अविश्वसनीय रूप से अच्छे हैं, लेकिन उनके पास वह आंतरिक "मानसिक मानचित्र" (स्टैटिक एनालिसिस) नहीं है जिसका उपयोग मानव सॉफ्टवेयर के काम करने के तरीके को वास्तव में समझने के लिए करते हैं।
AI को जटिल इंजीनियरिंग के लिए वास्तव में विश्वसनीय बनाने के लिए, हम उन्हें केवल अधिक डेटा देकर काम नहीं चला सकते। हमें एक नए प्रकार के AI को बनाने की आवश्यकता हो सकती है जो वास्तव में "तारों को ट्रेस करना" और तर्क को समझना सीख सके, न कि केवल पैटर्न को।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।