Benchmark · coding
RepoCoder
RepoCoder रिपॉज़िटरी-स्तरीय कोड कम्प्लीशन का मूल्यांकन करता है: किसी सोर्स फ़ाइल में एक स्थिति दी जाने पर मॉडल को पूरी रिपॉज़िटरी से लिए गए संदर्भ का उपयोग करके अनुपस्थित कोड की भविष्यवाणी करनी होती है। इसका RepoEval बेंचमार्क लाइन और API-invocation कम्प्लीशन के लिए Exact Match और Edit Similarity, तथा पूरे फ़ंक्शन बॉडी के लिए यूनिट-टेस्ट पास दर रिपोर्ट करता है।
और पढ़ें
- उदाहरण
- रिपॉज़िटरी की किसी फ़ाइल में आधी लिखी हुई एक लाइन को पूरा करना जो उसी प्रोजेक्ट की किसी दूसरी फ़ाइल में परिभाषित फ़ंक्शन या क्लास को कॉल करती है — सही कम्प्लीशन देने के लिए मॉडल को क्रॉस-फ़ाइल रिपॉज़िटरी संदर्भ का उपयोग करना पड़ता है।
- स्कोरिंग
- लाइन और API-invocation कम्प्लीशन को Exact Match (यदि भविष्यवाणी छिपाए गए मूल कोड से हूबहू मिले तो 1, अन्यथा 0) और Edit Similarity (1 − सामान्यीकृत Levenshtein दूरी) से स्कोर किया जाता है, सभी नमूनों पर औसत निकालकर प्रतिशत में। फ़ंक्शन-बॉडी कम्प्लीशन को निष्पादन से स्कोर किया जाता है: उत्पन्न बॉडी मूल की जगह रखी जाती है और उसे रिपॉज़िटरी के मौजूदा यूनिट टेस्ट पास करने होते हैं।
- सत्यापन
- लाइन/API आइटम के लिए, प्रत्येक नमूने की भविष्यवाणी को सोर्स रिपॉज़िटरी से छिपाए गए संदर्भ कोड से तुलना करके स्वीकार किया जाता है — हूबहू (EM) या एडिट-दूरी समानता (ES) से। किसी फ़ंक्शन कम्प्लीशन को केवल तभी स्वीकार किया जाता है जब उत्पन्न बॉडी पर रिपॉज़िटरी के अपने यूनिट टेस्ट पास हों। प्रशिक्षण-डेटा लीक कम करने के लिए हाल के और उच्च-गुणवत्ता वाले रिपॉज़िटरी चुने गए।
- यह क्यों मायने रखता है
- असली कोडिंग बड़े मौजूदा कोडबेस के भीतर होती है, अलग-थलग टुकड़ों में नहीं। RepoCoder/RepoEval जाँचता है कि क्या मॉडल कई फ़ाइलों में बिखरे प्रोजेक्ट-विशिष्ट API, सिंबल और परंपराओं का उपयोग कर सकता है — यह अकेले फ़ंक्शन बनाने की तुलना में कोडिंग सहायकों का अधिक वास्तविक माप है।
हल किया गया उदाहरण
कार्य
लाइन-स्तरीय कम्प्लीशन (RepoEval)। रिपॉज़िटरी में utils/config.py एक सहायक
load_config(path) परिभाषित करती है, और trainer.py from .utils.config import load_config से शुरू होती है। नीचे दिए कोड और रिपॉज़िटरी से प्राप्त क्रॉस-फ़ाइल संदर्भ के आधार पर, __init__ के भीतर छिपाई गई एकमात्र अगली लाइन की भविष्यवाणी करें:
```python
class Trainer:
def __init__(self, path):
```समाधान
self.config = load_config(path)
व्याख्या
सही, क्योंकि
load_config रिपॉज़िटरी का अपना सहायक है, जो trainer.py के शीर्ष पर इम्पोर्ट किया गया है; इसे केवल क्रॉस-फ़ाइल रिपॉज़िटरी संदर्भ से ही जाना जा सकता है, इसलिए कोई सामान्य अनुमान (जैसे इनलाइन JSON पढ़ना) गलत होगा। लाइन को छिपाए गए मूल उत्तर के विरुद्ध Exact Match से आँका जाता है, और Edit Similarity आंशिक अंक देता है।इस benchmark के लिए अभी तक कोई सत्यापित स्कोर रिपोर्ट नहीं किया गया है।