BLAgent: Agentic RAG for File-Level Bug Localization
BLAgent एक नवीन एजेंटिक रिट्रीवल-ऑगमेंटेड जनरेशन फ्रेमवर्क है जो कोड स्ट्रक्चर-अवेयर एनकोडिंग, ड्यूल-परस्पेक्टिव क्वेरी ट्रांसफॉर्मेशन और टू-फेज एजेंटिक रीरैंकिंग के माध्यम से फ़ाइल-लेवल बग लोकलाइजेशन को बेहतर बनाता है, जिससे SWE-bench Lite पर स्टेट-ऑफ-द-आर्ट सटीकता प्राप्त होती है और साथ ही लागत में उल्लेखनीय कमी आती है और डाउनस्ट्रीम ऑटोमेटेड प्रोग्राम रिपेयर सफलता में सुधार होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
यहाँ BLAgent पेपर का सरल, रोज़मर्रा की भाषा में अनुवाद दिया गया है, जिसमें उपमाओं (analogies) का उपयोग किया गया है।
बड़ी समस्या: घास के ढेर में सुई ढूँढना
कल्पना कीजिए कि आप एक मैकेनिक (सॉफ्टवेयर डेवलपर) हैं जो एक खराब कार को ठीक करने की कोशिश कर रहे हैं। एक ग्राहक आपको शिकायत देता है: "जब मैं बाएँ मुड़ता हूँ तो कार अजीब आवाज़ करती है।"
सॉफ्टवेयर की दुनिया में, यह शिकायत एक बग रिपोर्ट (bug report) है। कार कोड का एक विशाल भंडार (repository) है जिसमें लाखों लाइनें हैं (घास का ढेर)। वह विशिष्ट लाइन जो आवाज़ पैदा कर रही है, वह सुई है।
लंबे समय से, इन बग्स को ठीक करने की कोशिश करने वाले AI टूल्स संघर्ष कर रहे हैं क्योंकि वे पहले सुई को नहीं ढूँढ पाते। यदि AI इंजन के गलत हिस्से (गलत फ़ाइल) का अनुमान लगाता है, तो वह गलत चीज़ को ठीक करने की कोशिश करेगा, और कार फिर भी खराब ही रहेगी। इसे बग लोकलाइजेशन (Bug Localization) कहा जाता है।
समाधान: BLAgent (सुपर-डिटेक्टिव)
लेखकों ने एक नया सिस्टम बनाया है जिसे BLAgent कहा जाता है। इसे एक सुपर-डिटेक्टिव की तरह समझें जो केवल अंदाज़ा नहीं लगाता; यह मरम्मत करने की कोशिश करने से पहले, ठीक उसी फ़ाइल को खोजने के लिए एक स्मार्ट, चरण-दर-चरण जांच प्रक्रिया का उपयोग करता है जिसकी आवश्यकता है।
BLAgent एक तकनीक का उपयोग करता है जिसे एजेंटिक RAG (Agentic RAG) कहा जाता है। सरल शब्दों में, इसका मतलब है कि AI केवल "भ्रमित" (hallucinate) होकर उत्तर नहीं देता; यह एक लाइब्रेरी (कोड रिपॉजिटरी) में जाता है, सही किताबें (कोड फ़ाइलें) ढूँढता है, उन्हें पढ़ता है, और फिर उत्तर के बारे में सोचता है।
यहाँ बताया गया है कि BLAgent कैसे काम करता है, जिसे तीन सरल चरणों में विभाजित किया गया है:
1. लाइब्रेरी को व्यवस्थित करना (स्मार्ट चंकिंग)
कल्पना कीजिए कि आपकी लाइब्रेरी बिखरी हुई है। किताबें बीच से फटी हुई हैं, और पन्ने बेतरतीब ढंग से चिपकाए गए हैं। यदि आप लाइब्रेरियन से "इंजन" के बारे में किताब मांगते हैं, तो वे आपको एक ऐसा पन्ना दे सकते हैं जिस पर "इंजन" लिखा हो लेकिन वह वास्तव में एक कुकबुक (खाना बनाने की किताब) का हिस्सा हो।
- पुराना तरीका: पारंपरिक AI कोड को टेक्स्ट के रैंडम टुकड़ों में बाँट देता है, जैसे किसी किताब के पन्ने-दर-पन्ने फाड़ना।
- BLAgent का तरीका: BLAgent एक स्ट्रक्चरल मैप (structural map) (जिसे AST कहा जाता है) का उपयोग करता है। यह जानता है कि एक "फंक्शन" या "क्लास" एक पूरे अध्याय की तरह है। यह कोड को केवल इन अध्यायों के अंत में ही काटता है।
- सीक्रेट सॉस (Secret Sauce): यह हर पन्ने पर फ़ाइल पाथ (file path) (किताब का पता) भी लगा देता है। यदि बग रिपोर्ट में किसी विशिष्ट फोल्डर का नाम उल्लेखित है, तो BLAgent तुरंत उस पते को सही किताब से मिला सकता है।
2. बेहतर प्रश्न पूछना (दोहरा दृष्टिकोण - Dual-Perspective Queries)
कल्पना कीजिए कि आप मदद के लिए लाइब्रेरियन से पूछ रहे हैं।
- खराब सवाल: "मेरी कार खराब है।" (बहुत अस्पष्ट)।
- BLAgent की रणनीति: यह सर्वोत्तम परिणाम प्राप्त करने के लिए दो अलग-अलग प्रश्न पूछता है:
- स्ट्रक्चरल सवाल: "
turn_signalफंक्शन किस फ़ाइल में है?" (विशिष्ट नाम और कोड संरचना की तलाश)। - बिहेवियरल सवाल: "कौन सी फ़ाइल उस स्थिति को संभालती है जब कार मुड़ते समय आवाज़ करती है?" (लक्षणों और व्यवहार की तलाश)।
- स्ट्रक्चरल सवाल: "
दोनों को पूछकर, BLAgent एक बड़ा जाल बुनता है, यह सुनिश्चित करता है कि वह सही फ़ाइल को केवल इसलिए न छोड़ दे क्योंकि बग रिपोर्ट में कोड के मुकाबले अलग शब्दों का उपयोग किया गया था।
3. डिटेक्टिव की जांच (एजेंटिक रीरैंकिंग - Agentic Reranking)
यह सबसे महत्वपूर्ण हिस्सा है। लाइब्रेरी BLAgent को शीर्ष 15 संभावित किताबों (फ़ाइलों) की एक सूची देती है। लेकिन वास्तव में अपराधी कौन है?
- पुराना AI: सूची में पहली किताब चुनता है और उसे ठीक करने की कोशिश करता है।
- BLAgent (द एजेंट): यह एक जासूस की तरह काम करता है। यह केवल कवर नहीं देखता; यह शीर्ष संदिग्धों की किताबें खोलता है और उनके कंकाल (skeleton) (विषय-सूची और अध्याय शीर्षक) को देखता है।
- यह खुद से पूछता है: "क्या इस फ़ाइल की संरचना अपराध से मेल खाती है?"
- यह प्रत्येक फ़ाइल को एक स्कोर (0 से 10) देता है।
- फिर, शीर्ष कुछ संदिग्धों के लिए, यह अंतिम, साक्ष्य-आधारित निर्णय लेने के लिए प्रासंगिक अनुभागों के वास्तविक टेक्स्ट को पढ़ता है।
यह "बाउंडेड रीजनिंग" (bounded reasoning) का अर्थ है कि जासूस केवल सबसे संभावित संदिग्धों की जांच करता है, जिससे समय और पैसा बचता है, बजाय इसके कि पूरी लाइब्रेरी को खोजा जाए।
यह क्यों मायने रखता है: रिपेयर शॉप
पेपर ने BLAgent का परीक्षण SWE-bench नामक एक प्रसिद्ध बेंचमार्क (वास्तविक दुनिया के सॉफ्टवेयर बग्स का संग्रह) पर किया।
- परिणाम: BLAgent ने ठीक करने के लिए सही फ़ाइल 78% से 86% बार ढूँढ ली (उपयोग किए गए AI मॉडल के आधार पर)।
- तुलना: पिछले तरीकों ने सही फ़ाइल कम बार ढूँढी।
- लागत: BLAgent पिछले सबसे अच्छे तरीके से 18 गुना सस्ता है। पुराने तरीके लाइब्रेरी खोजने के लिए 100 लोगों की टीम को काम पर रखने जैसे थे; BLAgent एक नक्शे के साथ एक बहुत ही स्मार्ट जासूस को काम पर रखने जैसा है।
बग ठीक करने पर प्रभाव:
जब BLAgent को एक स्वचालित मरम्मत प्रणाली (automated repair system) में जोड़ा गया, तो सिस्टम ने पहले की तुलना में 20% अधिक बग्स को सफलतापूर्वक ठीक किया।
- उपमा: यदि आप मैकेनिक को इंजन का गलत हिस्सा देते हैं, तो वह कार ठीक नहीं कर सकता। यदि आप उसे सही हिस्सा (सटीक लोकलाइजेशन) देते हैं, तो वह उसे ठीक कर सकता है। BLAgent यह सुनिश्चित करता है कि मैकेनिक को सही हिस्सा मिले।
पेपर क्या नहीं कहता
- यह दावा नहीं करता कि यह हर बग को ठीक कर देगा। लगभग 14% मामलों में, सही फ़ाइल इतनी छिपी हुई थी या बग रिपोर्ट इतनी अस्पष्ट थी कि BLAgent भी उसे शीर्ष सूची में नहीं ढूँढ सका।
- यह दावा नहीं करता कि यह सभी सॉफ्टवेयर के लिए एक जादू की छड़ी है। यह पायथन प्रोजेक्ट्स (जैसे परीक्षण में उपयोग किए गए) पर सबसे अच्छा काम करता है और बग रिपोर्ट की गुणवत्ता पर निर्भर करता है।
- यह नहीं कहता कि फ़ाइल ढूँढना ही एकमात्र चरण है। एक बार फ़ाइल मिल जाने के बाद, AI को अभी भी वास्तविक कोड सुधार लिखना होगा, जो विफल भी हो सकता है। लेकिन फ़ाइल ढूँढना सबसे बड़ी बाधा है।
सारांश
BLAgent टूटे हुए कोड को खोजने का एक स्मार्ट तरीका है। बेतरतीब ढंग से अनुमान लगाने के बजाय, यह कोड लाइब्रेरी को बेहतर ढंग से व्यवस्थित करता है, स्मार्ट प्रश्न पूछता है, और कोई भी कदम उठाने से पहले सबूतों को सत्यापित करने के लिए एक "डिटेक्टिव" चरण का उपयोग करता है। यह इसे सॉफ्टवेयर बग्स के मूल कारण को खोजने में बहुत तेज़, सस्ता और अधिक सटीक बनाता है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।