Benchmark · coding
Aider Polyglot
Aider Polyglot, Aider कोडिंग टूल का एक कोड-एडिटिंग बेंचमार्क है जो जाँचता है कि कोई LLM कई प्रोग्रामिंग भाषाओं में मौजूदा कोड को कितनी अच्छी तरह एडिट करता है। स्कोर उन कार्यों का प्रतिशत है जिनके एडिट सही कोड बनाते हैं और कार्य के टेस्ट पास कर लेते हैं।
और पढ़ें
- उदाहरण
- एक सामान्य आइटम कई भाषाओं में से किसी एक (Python, Rust, Go, Java, JavaScript या C++) में Exercism-शैली का कोडिंग अभ्यास होता है, जहाँ मॉडल को दी गई सोर्स फ़ाइलों को एडिट करके आवश्यक फ़ंक्शन लागू करना होता है ताकि उसके टेस्ट पास हों।
- स्कोरिंग
- मेट्रिक हल किए गए कार्यों का प्रतिशत है: कोई कार्य तभी गिना जाता है जब एडिट किया गया कोड उसके सभी स्वचालित टेस्ट पास कर ले। Aider यह भी ट्रैक करता है कि एडिट कितनी बार सही, लागू-होने-योग्य फ़ॉर्मैट में आते हैं।
- सत्यापन
- परिणाम स्वचालित रूप से जाँचे जाते हैं: एडिट की गई फ़ाइलों को अभ्यास के यूनिट-टेस्ट सूट पर चलाया जाता है, और कोई कार्य तभी पास होता है जब हर टेस्ट पास हो — कोई मानवीय वोट या सटीक-मिलान तुलना नहीं।
- यह क्यों मायने रखता है
- यह एक असली डेवलपर वर्कफ़्लो को दर्शाता है — शुरू से स्निपेट लिखने के बजाय कई भाषाओं में मौजूदा फ़ाइलों को एडिट करना — इसलिए यह इस बात का व्यावहारिक संकेत है कि कोई मॉडल कोडिंग असिस्टेंट के रूप में कितना उपयोगी है।
हल किया गया उदाहरण
Aider Polyglot, Exercism से 225 सबसे कठिन कोडिंग अभ्यास लेता है जो C++, Go, Java, JavaScript, Python और Rust में फैले हैं; मॉडल को निर्देश और एक stub फ़ाइल दी जाती है, और उसे एक संपादन लौटाना होता है (aider के SEARCH/REPLACE ब्लॉक प्रारूप में) जिससे छिपे हुए यूनिट टेस्ट पास हो जाएँ, और पहली कोशिश विफल होने पर एक स्वचालित पुनः प्रयास मिलता है। Python का एक प्रतिनिधि आइटम, «Acronym», कहता है: किसी वाक्यांश को उसके संक्षिप्त रूप में बदलो — हर शब्द का पहला अक्षर बड़े अक्षर में लेकर, रिक्त स्थान और हाइफ़न को विभाजक मानकर और बाकी विराम-चिह्नों को अनदेखा करके; `def abbreviate(text): pass` वाली `acronym.py` दी गई है, और `abbreviate("Portable Network Graphics") == "PNG"` तथा `abbreviate("Ruby on Rails") == "ROR"` जैसे टेस्ट पास कराने हैं। एक सही समाधान stub को एक SEARCH/REPLACE ब्लॉक से बदल देता है:
```
acronym.py
<<<<<<< SEARCH
def abbreviate(text):
pass
=======
import re
def abbreviate(text):
words = re.split(r"[^A-Za-z']+", text)
return "".join(word[0].upper() for word in words if word)
>>>>>>> REPLACE
```
तर्क: पाठ को किसी भी गैर-अक्षर वर्णों की श्रृंखला पर विभाजित करो ताकि रिक्त स्थान और हाइफ़न दोनों शब्दों की सीमा बनें, खाली टुकड़े हटा दो, फिर हर शेष शब्द के पहले अक्षर को बड़े अक्षर में जोड़ दो — जिससे «Ruby on Rails» के लिए «ROR» मिलता है। आइटम तभी हल माना जाता है जब सभी यूनिट टेस्ट पास हों, और बेंचमार्क इस तरह हल किए गए 225 अभ्यासों का प्रतिशत बताता है।
इस benchmark के लिए अभी तक कोई सत्यापित स्कोर रिपोर्ट नहीं किया गया है।