NESA: Relational Neuro-Symbolic Static Program Analysis
यह शोध पत्र NESA को प्रस्तुत करता है, जो एक कंपोजिशनल न्यूरो-सिम्बोलिक फ्रेमवर्क है जो एक प्रतिबंधित डैटलॉग (Datalog) पॉलिसी द्वारा निर्देशित लार्ज लैंग्वेज मॉडल्स का लाभ उठाकर कम्पिलेशन-मुक्त, अनुकूलन योग्य स्टैटिक प्रोग्राम विश्लेषण को सक्षम बनाता है, जिससे भ्रम (hallucinations) में काफी कमी आती है और बग डिटेक्शन और प्रोग्राम स्लाइसिंग जैसे कार्यों में मौजूदा तकनीकों के बराबर या बेहतर प्रदर्शन प्राप्त होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, अधूरी उपन्यास में एक विशिष्ट टाइपो (लिखने की गलती) खोजने की कोशिश कर रहे हैं। आपके पास दो विकल्प हैं:
पुराना तरीका (पारंपरिक स्टैटिक एनालिसिस): आप सख्त, नियम मानने वाली संपादकों की एक टीम को काम पर रखते हैं। वे अविश्वसनीय रूप से सटीक हैं, लेकिन उनकी एक समस्या है: वे किताब को तभी पढ़ सकते हैं जब उसे पूरी तरह से प्रिंट, बाइंड और एक विशिष्ट पब्लिशिंग मशीन द्वारा फॉर्मेट किया गया हो। यदि लेखक अभी भी आखिरी अध्याय टाइप कर रहा है, या यदि किताब किसी अलग फॉन्ट में लिखी गई थी, तो संपादक काम करने से मना कर देते हैं। इसके अलावा, यदि आप चाहते हैं कि वे किसी विशेष प्रकार की गलती खोजें (जैसे "उन सभी वाक्यों को खोजें जहाँ नायक अपना छाता भूल जाता है"), तो आपको एक विशेषज्ञ संपादक को काम पर रखना होगा जो मुख्य संपादक के मस्तिष्क को फिर से प्रोग्राम करना जानता हो। यह कठोर, महंगा और सेटअप करने में धीमा है।
नया तरीका (केवल LLMs): आप एक प्रतिभाशाली, कल्पनाशील कहानीकार (एक AI) को काम पर रखते हैं जो अधूरे ड्राफ्ट को तुरंत पढ़ सकता है। वह कथानक, पात्रों और मूड को पूरी तरह से समझता है। हालाँकि, उसकी एक बुरी आदत है—वह भ्रमित (hallucinate) होने लगता है। वह आत्मविश्वास के साथ आपसे कह सकता है, "नायक अपना छाता भूल गया," भले ही टेक्स्ट में वास्तव में लिखा हो कि उसने उसे साथ रखा था। वह खाली जगहों को भरने के लिए तथ्य गढ़ देता है, जिससे गलत अलार्म बज सकते हैं।
NESA में प्रवेश: "स्मार्ट प्रोजेक्ट मैनेजर"
यह पेपर NESA को पेश करता है, जो एक नए टूल के रूप में काम करता है जो एक प्रतिभाशाली प्रोजेक्ट मैनेजर की तरह है जो दोनों दुनियाओं के सर्वश्रेष्ठ गुणों को जोड़ता है। यह एक कल्पनाशील AI कहानीकार का उपयोग करता है लेकिन उसे गलतियाँ करने से रोकने के लिए एक सख्त, चरण-दर-चरण वर्कफ़्लो पर रखता है।
NESA कैसे काम करता है, यहाँ सरल रूपकों (metapks) में दिया गया है:
1. बड़ी समस्या को छोटे पहेलियों में तोड़ना (Decomposition)
AI से, "इस 10,000 लाइन के कोड में सभी बग्स ढूंढो" पूछने के बजाय, NESA कार्य को विभाजित करता है। यह कहता है, "पहले, चलो सिर्फ यह देखते हैं कि वेरिएबल userCity कहाँ परिभाषित (defined) है। फिर, चलो सिर्फ यह देखते हैं कि इसका उपयोग कहाँ किया गया है।"
- उपमा: कल्पना कीजिए कि एक बिखरे हुए कमरे में खोई हुई चाबी खोजने की कोशिश कर रहे हैं। AI को "चाबी ढूंढो" कहने के बजाय, NESA कहता है, "पहले लैंप के नीचे देखो। फिर, दराज में देखो।" दायरे को सीमित करके, AI के भ्रमित होने या चाबी के लिए कोई फर्जी स्थान बनाने की संभावना कम हो जाती है।
2. "फैक्ट-चेकर" बनाम "कहानीकार" (Neuro-Symbolic)
NESA काम को दो प्रकार के कार्यों में विभाजित करता है:
- फैक्ट-चेकर (Symbolic): उन चीजों के लिए जो गिनने या देखने में आसान हैं (जैसे "क्या यह लाइन लाइन 26 पर है?" या "क्या यह फंक्शन उस फंक्शन को कॉल करता है?"), NESA एक सख्त, गणित-आधारित पार्सर का उपयोग करता है। यह हिस्सा कभी भ्रमित (hallucinate) नहीं होता। यह एक कैलकुलेटर की तरह है; यह बस सही उत्तर देता है।
- कहानीकार (Neural/LLM): उन चीजों के लिए जिनमें अर्थ को समझने की आवश्यकता होती है (जैसे "क्या यह यूजर इनपुट उस डेटाबेस को प्रभावित करता है?"), NESA AI से पूछता है। लेकिन वह AI से केवल उस छोटे, विशिष्ट पहेली के टुकड़े के बारे में पूछता है जिसे उसने अभी बनाया है।
3. "लेजी" (Lazy) और "इन्क्रीमेंटल" (Incremental) रणनीतियाँ
NESA पैसा और समय बचाने के लिए AI से सवाल पूछने के मामले में बहुत स्मार्ट है:
- लेजी प्रॉम्प्टिंग (Lazy Prompting): NESA कहानीकार से सवाल पूछने से पहले तक इंतजार करता है जब तक कि उसके पास फैक्ट-चेकर से सभी "कठोर तथ्य" न आ जाएं।
- उपमा: AI से "मौसम क्या है?" (जो कि अस्पष्ट है) पूछने के बजाय, NESA तब तक इंतजार करता है जब तक उसे पता न चल जाए कि यह "लंदन में मंगलवार" है और फिर वह पूछता है, "मंगलवार को लंदन में मौसम कैसा है?" यह AI के सही होने की संभावना को बहुत बढ़ा देता है।
- इन्क्रीमेंटल प्रॉम्प्टिंग (Incremental Prompting): NESA याद रखता है कि उसने पहले क्या पूछा है।
- उपमा: यदि AI ने आपको पहले ही बता दिया है कि "एलिस, बॉब की दोस्त है," तो NESA AI से दोबारा यह नहीं पूछेगा, "क्या एलिस बॉब की दोस्त है?" वह बस इसे लिख लेता है और आगे बढ़ जाता है। इससे बहुत सारा समय और पैसा बचता है।
4. "पॉलिसी लैंग्वेज" (नियम पुस्तिका)
NESA एक विशेष, सरल भाषा का उपयोग करता है (जो Datalog नामक चीज़ पर आधारित है) जो उपयोगकर्ताओं को कंप्यूटर जीनियस बने बिना अपने स्वयं के नियम लिखने की अनुमति देती है।
- उपमा: बग्स खोजने के लिए एक जटिल कंप्यूटर प्रोग्राम लिखने के बजाय, एक डेवलपर बस एक सरल रेसिपी लिख सकता है: "यदि आप एक 'सोर्स' (जैसे यूजर इनपुट) देखते हैं और एक 'सिंक' (जैसे डेटाबेस), और वे आपस में जुड़े हुए हैं, तो उसे फ्लैग करें।" NESA इस सरल रेसिपी को लेता है और सारा भारी काम खुद करता है।
यह क्यों महत्वपूर्ण है?
शोधकर्ताओं ने वास्तविक दुनिया के सॉफ्टवेयर पर NESA का परीक्षण किया और पाया:
- यह अधूरे कोड पर काम करता है: आपको सॉफ्टवेयर को पहले कंपाइल करने की आवश्यकता नहीं है।
- यह अधिक बग्स पकड़ता है: परीक्षणों में, इसने वर्तमान औद्योगिक टूल्स की तुलना में अधिक वास्तविक बग्स खोजे और कम गलतियाँ कीं।
- इसने वास्तविक दुनिया के रहस्य खोज निकाले: इसने वास्तव में उबर जैसी कंपनियों द्वारा उपयोग किए जाने वाले वास्तविक सॉफ्टवेयर में 13 मेमोरी लीक बग्स खोजे, जिन्हें डेवलपर्स ने बाद में ठीक किया।
- यह कस्टमाइज़ेबल है: आप इसे कुछ उदाहरण देकर किसी भी विशिष्ट प्रकार के बग को खोजने के लिए सिखा सकते हैं, बिना टूल के मूल कोड को फिर से लिखे।
संक्षेप में: NESA एक सुपर-स्मार्ट लेकिन थोड़े बिखराव वाले AI को एक सख्त चेकलिस्ट और फैक्ट-चेकर्स की एक टीम देने जैसा है। यह AI को केंद्रित रखता है, इसे मनगढ़ंत बातें करने से रोकता है, और किसी को भी अधूरे, अस्त-व्यस्त कोड में भी ठीक उन्हीं बग्स को खोजने के लिए अनुकूलित करने की अनुमति देता जिनकी उन्हें परवाह है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।