Benchmark · agentic
SWE-bench
SWE-bench यह जाँचता है कि कोई AI सिस्टम असली सॉफ़्टवेयर बग ठीक कर सकता है या नहीं: यह GitHub पर लोकप्रिय ओपन-सोर्स Python रिपॉज़िटरी से 2,294 असली issues लेता है और मॉडल से कोड ठीक करने वाला patch बनवाता है। मुख्य मीट्रिक हल किए गए issues का प्रतिशत है।
और पढ़ें
- उदाहरण
- एक सामान्य आइटम मॉडल को किसी Python प्रोजेक्ट पर दर्ज असली बग रिपोर्ट या फ़ीचर अनुरोध — जैसे Django या scikit-learn का कोई issue — उस रिपॉज़िटरी के कोड के साथ देता है, और उससे समस्या हल करने वाला patch बनाने को कहता है।
- स्कोरिंग
- स्कोर 2,294 issues में से हल किए गए का प्रतिशत है: कोई issue तभी गिना जाता है जब मॉडल का patch लागू करने पर रिपॉज़िटरी का अपना टेस्ट सूट पास हो जाए।
- सत्यापन
- सत्यापन पूरी तरह स्वचालित है: बनाया गया patch रिपॉज़िटरी पर लागू किया जाता है और प्रोजेक्ट के असली टेस्ट चलाए जाते हैं; टास्क तभी हल माना जाता है जब लक्षित फ़ेल होते टेस्ट पास होने लगें और पहले से पास टेस्ट पास बने रहें — कोई मानवीय निर्णय या सटीक-मिलान नहीं।
- यह क्यों मायने रखता है
- यह खिलौना अभ्यासों के बजाय असली कोड पर सिरे-से-सिरे तक की सॉफ़्टवेयर इंजीनियरिंग क्षमता मापता है, इसलिए इसे कोडिंग एजेंट्स की प्रगति के एक अहम संकेतक के रूप में बारीकी से देखा जाता है; सुर्खियों के आँकड़ों के लिए इसकी जगह काफ़ी हद तक मानव-सत्यापित उपसमूह SWE-bench Verified ने ले ली है।
हल किया गया उदाहरण
कार्य
रिपॉज़िटरी
psf/requests। एक उपयोगकर्ता की रिपोर्ट है कि किसी request हेडर को None पर सेट करने (session के डिफ़ॉल्ट हेडर को हटाने के लिए) का कोई असर नहीं होता: None मान वाली key हटने के बजाय merge किए गए हेडरों में बनी रहती है। बग वाले commit पर मौजूद रिपॉज़िटरी और यह issue दिए जाने पर, एक patch बनाइए ताकि requests.sessions.merge_setting उन keys को हटा दे जिनका मान None है।समाधान
--- a/requests/sessions.py
+++ b/requests/sessions.py
@@ -412,6 +412,11 @@ def merge_setting(request_setting, session_setting, dict_class=OrderedDict):
merged_setting = dict_class(to_key_val_list(session_setting))
merged_setting.update(to_key_val_list(request_setting))
+ # Remove keys that are set to None. Extract the keys first to avoid
+ # mutating the dictionary while iterating over it.
+ none_keys = [k for (k, v) in merged_setting.items() if v is None]
+ for key in none_keys:
+ del merged_setting[key]
+
return merged_setting
व्याख्या
session और request के dictionary को merge करने के बाद,
None की ओर इशारा करने वाली कोई भी key request-स्तर के एक स्पष्ट override से आई है जिसका उद्देश्य किसी डिफ़ॉल्ट मान को मिटाना है, इसलिए फ़िक्स ऐसी keys को इकट्ठा करके हटा देता है (iteration के दौरान dictionary बदलने से बचने के लिए पहले सूची बना लेता है)। SWE-bench, patch लगाकर और उस instance के FAIL_TO_PASS तथा PASS_TO_PASS tests चलाकर मूल्यांकन करता है — तभी हल माना जाता है जब सभी पास हों।