RefactorAssist: Agentic Refinement for Reliable Code Refactoring
यह शोधपत्र RefactorAssist को प्रस्तुत करता है, जो एक एजेंटिक फ्रेमवर्क है जो LLM-जनित कोड रिफैक्टरिंग की कार्यात्मक शुद्धता और विश्वसनीयता में उल्लेखनीय सुधार करने के लिए एरर लॉग्स और कॉन्टेक्स्ट रिट्रीवल का उपयोग करते हुए स्टैटिक रिपेयर को इटरेटिव, टेस्ट-गाइडेड रिफाइनमेंट के साथ जोड़ता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक मास्टर आर्किटेक्ट हैं जिसने वर्षों तक एक भव्य, जटिल महल डिजाइन करने में बिताया है। अब, कल्पना कीजिए कि आपने अपने महल का नवीनीकरण (renovation) करने में मदद करने के लिए एक सुपर-स्मार्ट, अविश्वसनीय रूप से तेज़ रोबोट सहायक को काम पर रखा है। आपका लक्ष्य यह नहीं है कि महल के काम करने के तरीके को बदला जाए—लोगों को अभी भी रसोई से बेडरूम तक जाने के लिए फर्श के नीचे से नहीं गिरना चाहिए—बल्कि इसे बेहतर बनाना है, जैसे गलियारों को चौड़ा करना, कमरों को उज्ज्वल बनाना और संरचना को बनाए रखने में आसान बनाना। यह कंप्यूटर कोड के रिफैक्टरिंग (refactoring) की दुनिया है: कोड को साफ करने और पुनर्गठित करने की प्रक्रिया ताकि वह बेहतर हो सके, बिना उस सॉफ़्टवेयर के काम करने के तरीके को बदले जिसे वह चलाता है।
लंबे समय से, हमारे पास कोड के लिए बुनियादी स्पेल-चेकर जैसे उपकरण रहे हैं जो खराब फॉर्मेटिंग या स्पष्ट गलतियों की ओर इशारा करते हैं। लेकिन हाल ही में, एक नए प्रकार का "रोबोट" आया है: लार्ज लैंग्वेज मॉडल्स (LLMs)। इन्हें AI सहायकों के रूप में सोचें जिन्होंने लगभग हर किताब, मैनुअल और निर्देश पुस्तिका पढ़ी है। वे नई कहानियाँ लिखने या टूटे हुए वाक्यों को ठीक करने में अद्भुत हैं। हालाँकि, जब आप उनसे एक जटिल महल का नवीनीकरण करने के लिए कहते हैं, तो वे कभी-कभी बहुत अधिक रचनात्मक हो जाते हैं। वे शायद एक ऐसी दीवार हटा देते हैं जो छत को सहारा देती है, या किसी दरवाजे का नाम इस तरह बदल देते हैं जिससे रसोई खोजने की कोशिश कर रहे सभी लोग भ्रमित हो जाते हैं। बड़ा सवाल यह है कि क्या हम इन AI रोबोटों पर सुरक्षित रूप से नवीनीकरण करने के लिए भरोसा कर सकते हैं, या उन्हें अपने काम की दोबारा जांच करने के लिए एक मानव पर्यवेक्षक की आवश्यकता है?
यह बिल्कुल वही है जिसकी जांच शोध पत्र "RefactorAssist: Agentic Refinement for Reliable Code Refactoring" करता है। शोधकर्ताओं, जोनाथन कॉर्डेरो, शयान नोई और यिंग ज़ौ ने यह देखना चाहा कि क्या ये AI रोबोट कोड को तोड़े बिना उसे ठीक कर सकते हैं, और यदि वे इसे तोड़ देते हैं, तो क्या एक स्मार्ट "रिपेयर एजेंट" उनकी गलतियों को ठीक कर सकता है?
रोबोट का पहला प्रयास: एक मिला-जुला परिणाम
टीम ने कई अलग-अलग AI मॉडलों (StarCoder2 जैसे कुछ ओपन-सोर्स और GPT-4o जैसे शक्तिशाली कमर्शियल मॉडलों सहित) को वास्तविक दुनिया के जावा (Java) सॉफ़्टवेयर प्रोजेक्ट्स पर नवीनीकरण करने के लिए कहा। उन्होंने सॉफ़्टवेयर को एक जीवित चीज़ की तरह माना जिसमें एक अंतर्निहित "हेल्थ चेक" सिस्टम है जिसे यूनिट टेस्ट (unit tests) कहा जाता है। ये टेस्ट चेकपॉइंट्स की एक श्रृंखला की तरह हैं: यदि कोड सही ढंग से बदला जाता है, तो रोबोट टेस्ट पास कर लेता है; यदि रोबट गलती से किसी फंक्शन को तोड़ देता है, तो टेस्ट फेल हो जाता है।
परिणाम थोड़े चौंकाने वाले थे। यहाँ तक कि सबसे अच्छे AI मॉडल, जैसे GPT-4o, भी केवल 80.8% बार ही नवीनीकरण को सही ढंग से करने में सफल रहे। इसका मतलब है कि लगभग 5 में से 1 बार, AI ने कोड को सुधारने की कोशिश की लेकिन गलती से कुछ तोड़ दिया, जिससे सॉफ़्टवेयर के हेल्थ चेक फेल हो गए। शोधकर्ताओं ने पाया कि केवल AI को नवीनीकरण कैसे करना है इसके अधिक उदाहरण देने (जिसे "फ्यू-शॉट प्रॉम्प्टिंग" कहा जाता है) से बहुत अधिक मदद नहीं मिली। समस्या यह नहीं थी कि AI को नवीनीकरण कैसे करना है यह नहीं पता था; समस्या यह थी कि वह सूक्ष्म, खतरनाक गलतियाँ करने से बचने के लिए संदर्भ (context) को पर्याप्त रूप से नहीं समझ पा रहा था।
रोबट क्यों विफल हुए?
यह पता लगाने के लिए कि क्या गलत हुआ, शोधकर्ताओं ने जासूसों की तरह "क्राइम सीन" की जांच की, यानी विफल कोड की जांच की। उन्होंने पाया कि AI की गलतियाँ आठ मुख्य श्रेणियों में आती हैं, जिनमें सबसे आम हैं:
- हैलुसिनेशन और कॉन्टेक्स्ट कन्फ्यूजन (24.3%): AI ने नई सुविधाएँ बना दीं या उन चीजों को बदल दिया जिन्हें बदलने की जरूरत नहीं थी क्योंकि उसने कोड की कहानी को गलत समझा।
- असंगत रीनेमिंग (15.3%): AI ने एक जगह तो वेरिएबल का नाम बदल दिया (जैसे "दरवाजे" को "गेट" कहना) लेकिन हर जगह उस नाम को अपडेट करना भूल गया, जिससे कोड भ्रमित हो गया।
- नई चीजें जोड़ना (13.7%): AI ने गलती से नए वेरिएबल्स या फंक्शन्स जोड़ दिए जो वहां नहीं होने चाहिए थे।
- अधूरा कोड (11.3%): AI ने कोड लिखना बीच में ही छोड़ दिया, जिससे कुछ हिस्से गायब रह गए।
- सिंटैक्स और स्ट्रक्चरल एरर्स (9.7%): बुनियादी गलतियाँ जैसे क्लोजिंग ब्रैकेट या सेमीकोलन भूल जाना।
- एज केसेस (9%): AI दुर्लभ स्थितियों को संभालने के बारे में भूल गया, जैसे कि क्या होता है यदि कोई नंबर के बजाय शून्य दर्ज करता है।
- टाइप हैंडलिंग (8.7%): अलग-अलग प्रकार के डेटा को मिला देना, जैसे टेक्स्ट मैसेज को नंबर बॉक्स में डालने की कोशिश करना।
- स्कोप इश्यूज (8%): किसी वेरिएबल का उपयोग ऐसी जगह करना जहाँ वह मौजूद ही नहीं है।
RefactorAssist से मिलिए: द सुपर-इंस्पेक्टर
शोधकर्ताओं को एहसास हुआ कि केवल AI को फिर से कोशिश करने के लिए कहना ही काफी नहीं था। उन्हें एक ऐसा सिस्टम चाहिए था जो इन गलतियों को पकड़ सके और उन्हें स्वचालित रूप से ठीक कर सके। इसलिए, उन्होंने RefactorAssist बनाया, जो एक स्मार्ट "रिपेयर एजेंट" है जो दो चरणों वाले गुणवत्ता नियंत्रण निरीक्षक (quality control inspector) के रूप में कार्य करता है।
चरण 1: त्वरित सुधार (Static Repair)
AI को फिर से सोचने के लिए कहने से पहले ही, RefactorAssist एक तेज़, नियम-आधारित जांच चलाता है। यह एक स्पेल-चेकर की तरह है जिसे कहानी समझने की ज़रूरत नहीं है, बस व्याकरण की ज़रूरत है। यह स्पष्ट चीजों को ठीक करता है जैसे कि छूटे हुए इम्पोट्स, असंतुलित ब्रैकेट और सरल टाइप एरर। यह चरण सस्ता और तेज़ है क्योंकि यह भारी AI दिमाग का उपयोग नहीं करता है। आश्चर्यजनक रूप से, इस सरल चरण ने गलतियों के एक बड़े हिस्से को ठीक कर दिया, जिससे सफलता दर 66.1% से बढ़कर 74.4% (और उनके सबसे अच्छे कॉन्फ़िगरेशन में 80.3% तक) हो गई, सिर्फ सिंटैक्स को साफ करके।
चरण 2: जासूसी कार्य (Agentic Repair)
बाकी बचे हुए टूटे हुए कोड के लिए (वे जो स्टैटिक फिक्स के बाद भी फेल हो गए), RefactorAssist "एजेंट मोड" में चला जाता है। यह सभी सबूत इकट्ठा करता है: विफल परीक्षणों से त्रुटि संदेश (error messages), AI द्वारा किए गए विशिष्ट परिवर्तन ("diff"), और आसपास के कोड का संदर्भ। फिर यह एक शक्तिशाली AI (जैसे GPT-4o) को एक जासूस के रूप में कार्य करने के लिए कहता है, जो यह समझा सके कि कोड क्यों विफल हुआ और एक समाधान सुझा सके। यह जासूस केवल अनुमान नहीं लगाता; यह सबूतों का उपयोग करके मरम्मत का मार्गदर्शन करता है।
इस दो-चरणीय प्रक्रिया के परिणाम प्रभावशाली थे। प्रारंभिक AI प्रयास, स्टैटिक फिक्स और फिर इटरेटिव डिटेक्टिव वर्क के बाद, सफलता दर बढ़कर 94.2% हो गई। महत्वपूर्ण रूप से, सिस्टम उन विफलताओं में से 70.8% को ठीक करने में सक्षम था जो प्रारंभिक स्टैटिक रिपेयर स्टेप के बाद शेष रह गए थे। इसका मतलब है कि उन नवीनीकरणों के सेट के लिए जिन्हें AI ने बिगाड़ दिया था और जिसे व्याकरण जांच ठीक नहीं कर सकी, डिटेक्टिव एजेंट ने अधिकांश को सफलतापूर्वक ठीक कर दिया, जिससे कुल सफलता दर लगभग पूर्णता तक पहुँच गई।
क्या काम नहीं आया?
शोधकर्ताओं ने कुछ ऐसे विचारों का भी परीक्षण किया जो उन्हें लगा कि मदद कर सकते हैं लेकिन वे कम उपयोगी साबित हुए। उदाहरण के लिए, उन्होंने एक "रिट्रीवल" सिस्टम का परीक्षण किया जो AI को अधिक बैकग्राउंड जानकारी देने के लिए पूरे प्रोजेक्ट को खोजता है। हालांकि इसने सुधार के पहले कुछ सेकंड में थोड़ी मदद की, लेकिन इसने वास्तव में कठिन समस्याओं को हल करने में AI की लंबे समय तक मदद नहीं की। पेपर सुझाव देता है कि कुछ गलत हुआ है इसका स्पष्ट और सटीक विवरण (डायग्नोसिस) होना, अतिरिक्त संदर्भ की विशाल मात्रा होने से कहीं अधिक महत्वपूर्ण है।
निष्कर्ष
यह पेपर यह दावा नहीं करता कि AI अभी अकेले पूरी तरह से कोड रिफैक्टर कर सकता है। वास्तव में, यह साबित करता है कि बिना मदद के, AI लगभग 20% समय गलतियाँ करता है। हालाँकि, यह दिखाता है कि एक सरल, तेज़ "व्याकरण जांच" को एक स्मार्ट, साक्ष्य-आधारित "डिटेक्टिव एजेंट" के साथ जोड़कर, हम उन गलतियों में से अधिकांश को ठीक कर सकते हैं।
मुख्य निष्कर्ष यह है कि RefactorAssist एक बिखरे हुए, टूटे हुए AI-जनरेटेड नवीनीकरण को एक सुरक्षित, काम करने वाले कोड अपडेट में बदल सकता है जिसकी सफलता दर 94.2% है। यह सुझाव देता है कि सॉफ़्टवेयर इंजीनियरिंग का भविष्य केवल एक स्मार्ट AI होने के बारे में नहीं है, बल्कि एक ऐसी टीम बनाने के बारे में है जहाँ AI भारी काम करता है, और एक विशेष मरम्मत एजेंट उपयोगकर्ता तक पहुँचने से पहले त्रुटियों को पकड़ लेता है। यह एक याद दिलाता है कि सुपर-स्मार्ट रोबोटों को भी अपना सर्वश्रेष्ठ काम करने के लिए एक अच्छे गुणवत्ता नियंत्रण दल की आवश्यकता होती है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।