ProjAgent: Procedural Similarity Retrieval for Repository-Level Code Generation
ProjAgent एक रिपॉजिटरी-स्तरीय कोड जनरेशन सिस्टम है जो एक एजेंटिक वर्कफ़्लो के माध्यम से प्रक्रियात्मक समानता (procedural similarity) के आधार पर फंक्शन्स को रिट्रीव करके प्रदर्शन को बढ़ाता है और स्टैटिक-एनालिसिस फीडबैक के माध्यम से आउटपुट को रिफाइन करता है, जिससे REPOCOD बेंचमार्क पर 41.14% Pass@1 प्राप्त होता है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आप एक विशाल, 10,000 पन्नों के रहस्यमयी उपन्यास के लिए एक नया अध्याय लिखने की कोशिश कर रहे हैं। आप जानते हैं कि आपको किस मोड़ पर कहानी पहुँचानी है, लेकिन आपको पात्रों के नाम, शहर के विशिष्ट नियम, या जासूस आमतौर पर अपराध कैसे सुलझाता है, यह नहीं पता है। यदि आप केवल अनुमान लगाते हैं, तो आप शायद एक ऐसा पात्र बना देंगे जो अस्तित्व में ही नहीं है, या शहर के कानूनों को तोड़ देंगे, जिससे आपकी कहानी खराब हो जाएगी। यह बिल्कुल वही होता है जब आर्टिफिशियल इंटेलिजेंस (AI) एक बड़े सॉफ्टवेयर प्रोजेक्ट के लिए कोड लिखने की कोशिश करता है।
लंबे समय तक, AI सहायकों ने "एक जैसे दिखने वाले" (look-alikes) को खोजने के लिए मदद लेने की कोशिश की। यदि आपने तापमान की गणना करने के लिए एक फंक्शन मांगा, तो AI अन्य कोड को खोजता जो "तापमान" शब्द का उपयोग करता था या सतही तौर पर समान दिखता था। यह तर्क देता है कि यह एक केक की रेसिपी खोजने जैसा है क्योंकि दूसरी रेसिपी में भी "चीनी" का उल्लेख है। यह असली जादू को छोड़ देता है: कैसे खाना वास्तव में पकाया जाता है।
लेखकों, किहोंग चेन, आरोन इमानी और इफ्तेखार अहमद ने ProjAgent नामक एक नई प्रणाली बनाई है। उन्होंने पाया कि सबसे सहायक कोड वह नहीं है जो दिखने में एक जैसा हो; बल्कि वह कोड है जो सोचता एक जैसा है।
"सोचना" बनाम "बोलना"
पेपर सुझाव देता है कि कोड के दो स्तर होते हैं: वे शब्द जिनका वह उपयोग करता है (जैसे वेरिएबल के नाम और टिप्पणियाँ/comments) और वे वास्तविक कदम जो समस्या को हल करने के लिए उठाए जाते हैं (तर्क/logic)।
कल्पना कीजिए कि दो शेफ हैं। शेफ A पिज्जा बना रहा है, और शेफ B सलाद बना रहा है।
- पुराना तरीका (लेक्सिकल/सिमेंटिक सर्च): यदि आप पिज्जा बनाने के लिए मदद मांगते हैं, तो पुराना AI शेफ B को अनदेखा कर देगा क्योंकि वह सलाद बना रहा है। वह केवल अन्य पिज्जा शेफों को ही खोजेगा।
- नया तरीका (ProjAgent): ProjAgent महसूस करता है कि दोनों शेफों को एक ही काम करना पड़ता है: सामग्री को काटना, यह जांचना कि वे ताजी हैं या नहीं, और उन्हें एक कटोरे में डालना। भले ही एक सलाद बना रहा हो और दूसरा पिज्जा, उनके प्रक्रियात्मक कदम (procedural steps) समान हैं। ProjAgent शेफ B को ढूंढता है और कहता है, "हे, देखो शेफ B सलाद की ताज़गी कैसे जांचता है! तुम उसी तर्क का उपयोग अपने टमाटर की ताज़गी जांचने के लिए कर सकते हो!"
पेपर स्पष्ट रूप से इस विचार को खारिज करता है कि सतही समानता (शब्दों को देखना) पर्याप्त है। वे तर्क देते हैं कि केवल शब्दों या सरल अर्थ पर निर्भर रहने से अक्सर महत्वपूर्ण "कैसे करें" वाले कदम छूट जाते हैं क्योंकि अलग-अलग प्रोजेक्ट्स एक ही क्रिया के लिए अलग-अलग नामों का उपयोग करते हैं।
ProjAgent कैसे काम करता है: डिटेक्टिव एजेंट
ProjAgent एक विशेष उपकरण के साथ एक सुपर-स्मार्ट जासूस की तरह काम करता है। यह रहस्य को कैसे सुलझाता है, यहाँ बताया गया है:
- इसे तोड़ना (Breaking it Down): यह आपके द्वारा लिखे जाने वाले नए कोड को छोटे तार्किक चरणों में तोड़ देता है, जैसे "जांचें कि संख्या ऋणात्मक है या नहीं" या "इकाइयों को बदलें।"
- "सोचने" वाली खोज (The "Thinking" Search): केवल शब्दों को पढ़ने के बजाय, ProjAgent AI मॉडल के "छिपे हुए विचारों" को देखने के लिए एक विशेष ट्रिक का उपयोग करता है। यह फैंसी शब्दावली को हटा देता है और केवल शुद्ध तर्क (pure logic) को देखता है। यह प्रोजेक्ट में अन्य कोड को ढूंढता है जो बिल्कुल वैसा ही मानसिक नृत्य करता है, भले ही वह कोडबेस के पूरी तरह से अलग हिस्से में लिखा गया हो।
- एजेंट की खोज (The Agent's Hunt): यदि पहली खोज पर्याप्त नहीं मिलती है, तो एक डिजिटल "एजेंट" (एक छोटा AI रोबोट) प्रोजेक्ट फाइलों में खोजबीन पर निकल जाता है। यह फाइलें पढ़ता है, फंक्शन खोजता है, और पूछता है, "क्या यहाँ कुछ ऐसा है जो इस तरह सोचता है?"
- दोबारा जांचना (Double-Checking): यह सुनिश्चित करने के लिए कि इसे धोखा न दिया गया हो, सिस्टम एक "स्टैटिक एनालिसिस" टूल का उपयोग करता है। इसे तर्क के लिए स्पेल-चेकर समझें। यह जांचता है कि क्या कोड वास्तव में बिना क्रैश हुए चलता है। यदि AI गलती करता है, तो सिस्टम कहता है, "ओह, यह काम नहीं करेगा," और AI को फिर से प्रयास करने के लिए कहता है। यह लूप 10 बार तक चलता है जब तक कि कोड ठोस न हो जाए।
परिणाम: क्या यह काम आया?
लेखकों ने ProjAgent का परीक्षण REPOCOD नामक एक बेंचमार्क पर किया, जिसमें 11 अलग-अलग सॉफ्टवेयर प्रोजेक्ट्स से 980 वास्तविक दुनिया की कोडिंग समस्याएं शामिल हैं।
- स्कोर: ProjAgent ने 41.14% का Pass@1 स्कोर प्राप्त किया। इसका मतलब है कि पहली कोशिश में, इसने हर 100 समस्याओं में से लगभग 41 के लिए काम करने वाला कोड लिखा।
- तुलना: इसने पिछले सर्वश्रेष्ठ तरीकों को पछाड़ दिया। पुराने "डेंस सर्च" तरीकों ने केवल 28.83% और "स्पार्स सर्च" (कीवर्ड्स खोजना) ने 26.58% प्राप्त किया। यहाँ तक कि SpecAgent जैसे शीर्ष स्तर के सिस्टम ने केवल 34.52% ही हासिल किया।
- प्रमाण: पेपर सुझाव देता है कि सबसे बड़ा उछाल उन "प्रक्रियात्मक रूप से समान" (procedurally similar) चरणों को खोजने से आया। जब उन्होंने प्रक्रियात्मक खोज को हटाया, तो स्कोर गिरकर 25.76% हो गया। जब उन्होंने सिमेंटिक सर्च (शब्दों का मिलान करने वाला हिस्सा) को हटाया, तो यह गिरकर 32.29% हो गया। यह साबित करता है कि सफल होने के लिए आपको "कैसे" और "क्या" दोनों की आवश्यकता होती है।
यह पेपर क्या दावा नहीं करता है
यह जानना महत्वपूर्ण है कि यह पेपर क्या नहीं कहता है।
- यह दावा नहीं करता कि इसने कोडिंग की सभी समस्याओं को हल कर लिया है। स्कोर 41.14% है, जिसका अर्थ है कि यह आधे से अधिक समय विफल रहता है।
- यह नहीं कहता कि यह हर प्रोग्रामिंग भाषा के लिए काम करता है। परीक्षण केवल Python प्रोजेक्ट्स पर किए गए थे।
- यह दावा नहीं करता कि "एजेंट" पूर्ण है। लेखक स्वीकार करते हैं कि कभी-कभी एजेंट समय या मेमोरी की कमी के कारण सबसे अच्छा कोड नहीं ढूंढ पाता है, जो यह बताता है कि बेहतर अन्वेषण उपकरणों (exploration tools) की अभी भी आवश्यकता है।
मुख्य बात (The Bottom Line)
पेपर सुझाव देता है कि बड़े प्रोजेक्ट्स के लिए अच्छा कोड लिखने के लिए, AI को केवल शब्दों के मिलान को खोजने के बजाय सोचने के पैटर्न को खोजना शुरू करना होगा। उन कोडों को खोजने के माध्यम से जो समस्याओं को एक ही तरीके से हल करते हैं, भले ही शब्द पूरी तरह से अलग हों, ProjAgent AI को बेहतर, अधिक विश्वसनीय सॉफ्टवेयर लिखने में मदद करता है। यह एक कदम आगे है, लेकिन पूर्ण कोड जनरेशन की यात्रा अभी भी जारी है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।