← नवीनतम पेपर
🤖 AI

From Empirical Evaluation to Context-Aware Enhancement: Repairing Regression Errors with LLMs

यह शोध पत्र रिग्रेशन बग्स पर ऑटोमेटेड प्रोग्राम रिपेयर का अनुभवजन्य मूल्यांकन करने के लिए RegressionBug4APR बेंचमार्क प्रस्तुत करता है, जो यह प्रकट करता है कि जहाँ पारंपरिक उपकरण विफल रहते हैं, वहीं संदर्भ-जागरूक बग-प्रेरित परिवर्तन संबंधी जानकारी के साथ संवर्धित होने पर LLM-आधारित दृष्टिकोण मरम्मत सफलता दरों में महत्वपूर्ण सुधार करते हैं।

मूल लेखक: Anh Ho, Thanh Le-Cong, Bach Le, Christine Rizkallah

प्रकाशित 2026-08-26
📖 6 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Anh Ho, Thanh Le-Cong, Bach Le, Christine Rizkallah

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

सॉफ्टवेयर कभी वास्तव में समाप्त नहीं होता। यह एक जीवित चीज़ की तरह है जो नई ज़रूरतों को पूरा करने के लिए बढ़ती और बदलती रहती है, जिसमें डेवलपर्स लगातार नई सुविधाएँ जोड़ते हैं या पुरानी समस्याओं को ठीक करते हैं। लेकिन सुधार की जल्दबाजी में, एक सामान्य और निराशाजनक गलती होती है: एक बदलाव जो मदद करने के लिए बनाया गया था, वह अनजाने में किसी ऐसी चीज़ को तोड़ देता है जो पहले पूरी तरह से काम कर रही थी। इसे 'रिग्रेशन' (regression) कहा जाता है। कल्पना कीजिए कि आप छत में एक रिसाव (leak) को ठीक कर रहे हैं, लेकिन इस प्रक्रिया में, आप गलती से दीवार में एक छेद कर देते हैं। रिसाव तो चला गया, लेकिन अब आपके पास एक नई, बड़ी समस्या है। सॉफ्टवेयर की दुनिया में, ये रिग्रेशन ढूंढना और ठीक करना बेहद कठिन होता है क्योंकि वे कोड परिवर्तनों के इतिहास में छिपे होते हैं, और अक्सर वर्षों तक किसी के ध्यान में आए बिना छिपे रहते हैं। दशकों से, शोधकर्ताओं ने इन बग्स को स्वचालित रूप से ठीक करने के लिए कंप्यूटर प्रोग्राम बनाने की कोशिश की है, इस उम्मीद में कि वे मानव डेवलपर्स को डिबगिंग के अंतहीन घंटों से बचा सकें। हालाँकि, जो उपकरण उन्होंने बनाए थे वे मुख्य रूप से सामान्य त्रुटियों के लिए डिज़ाइन किए गए थे और रिग्रेशन की विशिष्ट, ऐतिहासिक प्रकृति का सामना करने में संघर्ष करते थे।

मेलबर्न विश्वविद्यालय और सिंगापुर यूनिवर्सिटी ऑफ टेक्नोलॉजी एंड डिज़ाइन के शोधकर्ताओं की एक टीम ने यह जांचने का निर्णय लिया कि क्या आधुनिक आर्टिफिशियल इंटेलिजेंस, विशेष रूप से लार्ज लैंग्वेज मॉडल्स (LLMs), इस कठिन कार्य को बेहतर तरीके से कर सकते हैं। ये मॉडल उन्नत कंप्यूटर सिस्टम हैं जिन्हें टेक्स्ट और कोड की विशाल मात्रा पर प्रशिक्षित किया गया है, जो निर्देशों को समझने और नई सामग्री उत्पन्न करने में सक्षम हैं। शोधकर्ता यह जानना चाहते थे कि क्या ये स्मार्ट सिस्टम न केवल टूटे हुए कोड को ढूंढ सकते हैं, बल्कि यह भी समझ सकते हैं कि वह क्यों टूटा, यह देखकर कि उस समस्या को पैदा करने वाला विशिष्ट परिवर्तन क्या था। इसका परीक्षण करने के लिए, उन्हें सबसे पहले वास्तविक दुनिया की सॉफ्टवेयर त्रुटियों का एक नया, उच्च-गुणवत्ता वाला संग्रह बनाना पड़ा, क्योंकि पुराने संग्रह या तो पुराने हो चुके थे या उनमें सही प्रकार की गलतियाँ नहीं थीं। उन्होंने 'रिग्रेशनबग4एपीआर' (RegressionBug4APR) नामक एक बेंचमार्क बनाया, जिसमें जावा (Java) और पायथन (Python) में लिखे गए लोकप्रिय सॉफ्टवेयर प्रोजेक्ट्स से 200 पुष्ट रिग्रेशन बग्स शामिल हैं। उन्होंने प्रत्येक बग को सावधानीपूर्वक सत्यापित किया ताकि यह सुनिश्चित हो सके कि यह एक वास्तविक रिग्रेशन है, जिसका अर्थ है कि सॉफ्टवेयर के एक पिछले संस्करण में काम करने वाली एक सुविधा एक विशिष्ट अपडेट के बाद काम करना बंद कर गई।

इस नए संग्रह के साथ, शोधकर्ताओं ने विभिन्न मरम्मत उपकरणों (repair tools) का परीक्षण किया। सबसे पहले, उन्होंने पारंपरिक स्वचालित उपकरणों को आज़माया जिनका उपयोग वर्षों से किया जा रहा है। ये उपकरण कोड में छोटे बदलावों का अनुमान लगाकर काम करते हैं, जैसे कि एक शब्द को बदलना या एक लाइन को हटाना, यह देखने के लिए कि क्या त्रुटि दूर हो जाती है। परिणाम स्पष्ट थे: इन पारंपरिक उपकरणों विफल रहे, वे 200 में से एक भी बग को ठीक नहीं कर सके। वे इन विशिष्ट त्रुटियों की जटिलता को संभालने में पूरी तरह असमर्थ थे। शोधकर्ताओं ने फिर नए, अधिक शक्तिशाली आर्टिफिशियल इंटेलिजेंस मॉडल्स की ओर रुख किया। इन मॉडल्स ने बहुत बेहतर प्रदर्शन किया, जिनमें सबसे उन्नत मॉडल्स ने महत्वपूर्ण संख्या में बग्स को सफलतापूर्वक ठीक किया। हालाँकि, शोधकर्ताओं ने देखा कि मॉडल्स अभी भी अंधेरे में अनुमान लगा रहे थे। उन्हें टूटा हुआ कोड और एरर मैसेज दिया गया था, लेकिन उन्हें यह नहीं बताया गया था कि सॉफ्टवेयर के इतिहास में किस विशिष्ट परिवर्तन ने खराबी पैदा की थी।

यह देखने के लिए कि क्या अधिक संदर्भ (context) देने से मदद मिलेगी, शोधकर्ताओं ने एक नया दृष्टिकोण अपनाया। उन्होंने आर्टिफिशियल इंटेलिजेंस को कोड के वे सटीक परिवर्तन दिए जिन्होंने बग पेश किया था, साथ ही वे नोट्स भी दिए जो मूल डेवलपर ने उस परिवर्तन को करते समय लिखे थे। यह एक मैकेनिक को केवल टूटी हुई कार देने के बजाय, उस विशिष्ट रिंच (wrench) के बारे में बताने जैसा है जिसका उपयोग उसने उस बोल्ट को कसने के लिए किया था जिसके कारण समस्या हुई थी। जब मॉडल्स को इस अतिरिक्त जानकारी ("बग-प्रेरित परिवर्तन" के बारे में) दी गई, तो उनका प्रदर्शन नाटकीय रूप से बढ़ गया। सबसे अच्छे सेटअप ने, जिसमें एक संवादात्मक शैली का उपयोग किया गया जहाँ मॉडल फीडबैक मांग सकता था और फिर से प्रयास कर सकता था, 200 में से 39 बग्स को ठीक करने में सफलता प्राप्त की। यह बिना अतिरिक्त इतिहास वाले उसी मॉडल की तुलना में 1.6 गुना सुधार था। शोधकर्ताओं ने पाया कि इस संदर्भ ने मॉडल्स को त्रुटि के मूल कारण को समझने में मदद की, जिससे उन्हें यह तय करने में मदद मिली कि क्या केवल खराब बदलाव को वापस लेना है या एक अधिक सूक्ष्म सुधार करना है जो खराब हिस्सों को ठीक करते हुए अच्छे हिस्सों को बरकरार रखता है।

अध्ययन ने यह भी खुलासा किया कि सभी बग्स एक समान नहीं होते हैं। कुछ त्रुटियाँ ठीक उसी स्थान पर होती हैं जहाँ कोड बदला गया था, जबकि अन्य प्रोग्राम के उन हिस्सों में होती हैं जो छू भी नहीं गए थे और काफी दूर होते हैं। मॉडल्स ने अतिरिक्त इतिहास के बावजूद भी दूर की त्रुटियों को ठीक करने में बहुत अधिक कठिनाई महसूस की। इसके अलावा, शोधकर्ताओं ने मॉडल्स द्वारा की गई गलतियों का विश्लेषण किया। कभी-कभी मॉडल्स त्रुटि के गलत कारण का अनुमान लगाते थे, या उन्होंने एक ऐसा समाधान बनाया जो परीक्षणों में तो पास हो गया लेकिन तार्किक रूप से गलत था, यानी उन्होंने वास्तविक समस्या को हल करने के बजाय टेस्ट सिस्टम को चकमा दिया। इन सीमाओं के बावजूद, निष्कर्ष स्पष्ट हैं: पारंपरिक स्वचालित मरम्मत उपकरण रिग्रेशन बग्स के लिए अप्रभावी हैं, लेकिन आधुनिक आर्टिफिशियल इंटेलिजेंस बहुत आशाजनक है, विशेष रूप से जब इसे कोड के इतिहास को देखने की अनुमति दी जाती है ताकि यह समझा जा सके कि गलती कैसे हुई। यह सुझाव देता है कि सॉफ्टवेयर को ठीक करने का भविष्य न केवल स्मार्ट एल्गोरिदम में है, बल्कि उन एल्गोरिदम को सॉफ्टवेयर के विकास की पूरी कहानी देने में है।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →