SWE-Refactor: A Repository-Level Benchmark for Real-World LLM-Based Code Refactoring
यह शोध पत्र SWE-Refactor को प्रस्तुत करता है, जो 1,099 सत्यापित जावा रिफैक्टरिंग (refactorings) से युक्त एक व्यापक रिपॉजिटरी-स्तरीय बेंचमार्क है, जिसे मौजूदा डेटासेट की सीमाओं को दूर करने और नौ LLMs की क्षमताओं का मूल्यांकन करने के लिए डिज़ाइन किया गया है, जिससे यह पता चलता है कि वर्तमान मॉडल जटिल, संयुक्त रिफैक्टरिंग कार्यों के साथ काफी संघर्ष करते हैं।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक विशाल, पुरानी लाइब्रेरी है जो जावा (Java) भाषा में लिखी गई किताबों से भरी हुई है। ये किताबें पूरी तरह से काम करती हैं, लेकिन इनकी कहानियाँ बिखरी हुई और अव्यवस्थित हैं: अध्याय बहुत लंबे हैं, पात्रों के नाम भ्रमित करने वाले हैं, और कुछ दृश्य अलग-अलग कमरों में बिखरे हुए हैं। कोड रिफैक्टरिंग (Code refactoring) उन किताबों को साफ करने की प्रक्रिया है ताकि उन्हें पढ़ना और बनाए रखना आसान हो सके, बिना कहानी या उसके अंत को बदले।
लंबे समय से, हम कंप्यूटरों (विशेष रूप से, लार्ज लैंग्वेज मॉडल्स या LLMs) को शून्य से नई कहानियाँ लिखना सिखा रहे हैं। लेकिन उन्हें मौजूदा कहानियों को बिना प्लॉट बिगाड़े कैसे ठीक किया जाए, यह सिखाना बहुत कठिन है।
यह पेपर SWE-Refactor पेश करता है, जो एक नया "एग्जाम" है जिसे यह परखने के लिए बनाया गया है कि ये AI कंप्यूटर कोड को साफ करने में कितने अच्छे हैं। यहाँ इसका सरल विवरण दिया गया है:
1. समस्या: पुराने एग्जाम दोषपूर्ण थे
इससे पहले, शोधकर्ता कोड क्लीनिंग पर AI का परीक्षण करने की कोशिश करते थे, लेकिन उन परीक्षणों में तीन बड़ी समस्याएँ थीं:
- बहुत सरल: वे केवल AI को छोटे, एकल-चरण वाले सुधार (जैसे एक वेरिएबल का नाम बदलना) करने के लिए कहते थे, और उन जटिल कार्यों की अनदेखी करते थे जिनमें पूरे अध्यायों को इधर-उधर ले जाने की आवश्यकता होती है।
- शोर वाला डेटा (Noisy Data): कभी-कभी, टेस्ट में दी गई "सही उत्तर" केवल एक सफाई नहीं थी; इसमें बग्स को ठीक करना या नई सुविधाएँ जोड़ना भी शामिल था। इसने AI को भ्रमित कर दिया: "क्या मुझे कमरा साफ करना है, या दीवारों पर पेंट भी करना है?"
- संदर्भ (Context) की कमी: वास्तविक कोड एक जाल की तरह है; एक लाइन बदलने से अक्सर दस अन्य लाइनें प्रभावित होती हैं। पुराने टेस्ट्स ने AI को "बड़ी तस्वीर" (पूरा पुस्तकालय) दिखाने के लिए पर्याप्त संदर्भ नहीं दिया जिससे वह कनेक्शन समझ सके।
2. समाधान: AI के लिए एक असली "जिम"
लेखकों ने SWE-Refactor बनाया है, जो एक विशाल, उच्च-गुणवत्ता वाला प्रशिक्षण मैदान और परीक्षा है।
- वास्तविक मानवीय कार्य: नकली उदाहरण बनाने के बजाय, उन्होंने 18 वास्तविक, लोकप्रिय जावा सॉफ्टवेयर प्रोजेक्ट्स को देखा। उन्होंने पाया कि मानव डेवलपर्स ने 1,099 बार सफलतापूर्वक कोड को साफ किया था।
- शुद्ध सफाई (Pure Cleaning): उन्होंने विशेष टूल्स का उपयोग करके उन सभी बदलावों को फ़िल्टर कर दिया जो केवल सफाई नहीं थे। यदि किसी डेवलपर ने सफाई करते समय कोई बग ठीक किया था, तो उस उदाहरण को बाहर कर दिया गया। उन्होंने केवल "शुद्ध" क्लीनअप्स को ही रखा।
- पूरा पुस्तकालय: उन्होंने AI को केवल एक पन्ना नहीं दिया; उन्होंने उसे पूरा अध्याय, लाइब्रेरी का नक्शा और यह भी दिया कि कौन क्या पढ़ता है, ताकि AI संदर्भ को समझ सके।
- "गोल्ड स्टैंडर्ड" चेक: यह सुनिश्चित करने के लिए कि AI नकल न करे, वे तीन चीजों की जांच करते हैं:
- क्या कोड अभी भी कंपाइल होता है (क्या पन्ने आपस में जुड़े हुए हैं)?
- क्या सभी टेस्ट अभी भी पास हो रहे हैं (क्या कहानी अभी भी समझ में आ रही है)?
- क्या AI ने वास्तव में अनुरोधित विशिष्ट सफाई कार्य किया, या उसने बस कुछ ऐसा लिखा जो काम कर गया?
3. परीक्षा के परिणाम: AI छोटे कार्यों में अच्छा है, बड़े कार्यों में बुरा है
लेखकों ने 9 अलग-अलग AI मॉडल्स (GPT-4o और DeepSeek जैसे प्रसिद्ध मॉडल्स सहित) का इस नए एग्जाम पर परीक्षण किया।
- जनरलिस्ट (Generalists) जीतते हैं: बड़े, सामान्य उद्देश्य वाले AI मॉडल्स (जैसे GPT-4o) छोटे, विशिष्ट कोडिंग मॉडल्स की तुलना में बहुत बेहतर प्रदर्शन करते हैं। ऐसा लगता है कि सिंटैक्स जानने से ज्यादा महत्वपूर्ण "बड़ी तस्वीर" को समझना है।
- सरल बनाम जटिल: AI सरल, एकल-चरण वाले क्लीनअप (जैसे "Extract Method", जो एक लंबे अध्याय से एक पैराग्राफ निकालकर उसे एक नया, छोटा अध्याय बनाने जैसा है) में सक्षम था।
- कंपाउंड चैलेंज (Compound Challenge): AI कंपाउंड रिफैक्टरिंग (compound refactorings) में काफी संघर्ष करता है। ये वे कार्य हैं जिनमें एक साथ कई चरणों की आवश्यकता होती है, जैसे "इस पैराग्राफ को लें, इसे एक अलग अध्याय में ले जाएं, और पात्र का नाम बदलें।"
- उपमा: कल्पना कीजिए कि आप एक रोबोट को एक भारी सोफा हटाने के लिए कहते हैं। वह इसे कर सकता है। लेकिन अगर आप उससे कहें कि "सोफा हटाओ, उसके पीछे की दीवार पर पेंट करो, और कालीन को फिर से व्यवस्थित करो," तो वह अक्सर एक चरण भूल जाता है या क्रम बिगाड़ देता है।
- आंकड़ा: यहाँ तक कि एक बहुत ही उन्नत AI एजेंट (OpenAI Codex) भी इन जटिल, बहु-चरणीय कार्यों पर केवल 39% बार सफल हुआ।
4. AI को सफल होने में मदद कैसे करें
लेखकों ने यह भी परीक्षण किया कि क्या AI को अधिक मदद देने से काम बनेगा:
- रिट्रिवल (RAG): समान क्लीनअप के उदाहरण देने से थोड़ा फायदा हुआ।
- मल्टी-एजेंट वर्कफ़्लो (टीम दृष्टिकोण): यह विजेता रहा। केवल एक AI को काम करने देने के बजाय, उन्होंने एक "डेवलपर AI" सेट किया जो कोड लिखता है और एक "रिव्यूअर AI" जो उसकी समीक्षा करता है और बदलाव के लिए कहता है। इस "टीम" दृष्टिकोण ने सबसे अधिक समस्याओं को हल किया, जिससे पता चला कि जटिल कार्यों को संभालने के लिए AI को अपने काम की जांच करने की आवश्यकता होती है।
सारांश
SWE-Refactor AI कोड रिफैक्टरिंग के लिए एक नया, सख्त और वास्तविक परीक्षण है। यह साबित करता है कि हालांकि AI छोटे कोड फिक्स में अच्छा हो रहा है, फिर भी इसे जटिल, बहु-चरणीय नवीनीकरण करने में कठिनाई होती है जिसके लिए यह समझने की आवश्यकता होती है कि सॉफ्टवेयर प्रोजेक्ट के विभिन्न हिस्से एक-दूसरे से कैसे जुड़े हैं। लेखकों ने अपना सारा डेटा और परिणाम जारी कर दिए हैं ताकि अन्य शोधकर्ता भविष्य के बेहतर AI को प्रशिक्षित करने के लिए इस "जिम" का उपयोग कर सकें।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।