რატომ აღარ ზომავს SWE-bench Verified მოწინავე კოდირების შესაძლებლობებს
SWE-bench Verified სულ უფრო მეტად კონტამინირებულია. ჩვენ ვურჩევთ SWE-bench Pro-ს.
მას შემდეგ, რაც პირველად გამოვაქვეყნეთ SWE-bench Verified 2024 წლის აგვისტოში, ინდუსტრია მას ფართოდ იყენებდა ავტონომიური პროგრამული ინჟინერიის ამოცანებზე მოდელების პროგრესის გასაზომად. გამოქვეყნების შემდეგ SWE-bench Verified შესაძლებლობების პროგრესის ძლიერი სიგნალი იყო და მოწინავე მოდელების გამოშვებისას მოხსენებულ სტანდარტულ მეტრიკად იქცა. ამ შესაძლებლობების პროგრესის თვალყურის დევნება და პროგნოზირებაც OpenAI-ის მზაობის ჩარჩო-ს მნიშვნელოვანი ნაწილია. როდესაც თავდაპირველად შევქმენით Verified ბენჩმარკი, ვცდილობდით მოგვეგვარებინა საწყის შეფასებაში არსებული პრობლემები, რომლებიც ზოგიერთ ამოცანას შეუძლებელს ხდიდა SWE-bench dataset(იხსნება ახალ ფანჯარაში)-ში.
საწყისი ნახტომების შემდეგ SWE-bench Verified-ზე საუკეთესო შედეგების მქონე პროგრესი შენელდა და ბოლო 6 თვეში გაუმჯობესდა(იხსნება ახალ ფანჯარაში) 74.9%-დან 80.9%-მდე. ეს აჩენს კითხვას: დარჩენილი ჩავარდნები მოდელის შეზღუდვებს ასახავს თუ თვითონ მონაცემთა ნაკრების თვისებებს?
ახალ ანალიზში Verified ნაკრებში ორი ძირითადი პრობლემა აღმოვაჩინეთ, რაც მიუთითებს, რომ ბენჩმარკი აღარ არის შესაფერისი დღევანდელი შედეგების დონეზე მოწინავე გამოშვებებისთვის ავტონომიური პროგრამული ინჟინერიის შესაძლებლობების პროგრესის გასაზომად:
- ტესტები სწორ ამოხსნებს უარყოფს: ჩვენ შევამოწმეთ მონაცემთა ნაკრების 27.6%-იანი ქვეჯგუფი, რომლის ამოხსნაც მოდელებს ხშირად უჭირდათ, და აღმოვაჩინეთ, რომ შემოწმებული პრობლემების სულ მცირე 59.4%-ს ჰქონდა ხარვეზიანი ტესტური შემთხვევები, რომლებიც ფუნქციურად სწორ წარდგენებს უარყოფდა, მიუხედავად ჩვენი დიდი ძალისხმევისა, რომ ეს საკითხი SWE-bench Verified-ის საწყისი შექმნისას გაგვეუმჯობესებინა.
- ამოხსნებზე გაწვრთნა: რადგან დიდ მოწინავე მოდელებს სწავლებისას შეუძლიათ ინფორმაციის ათვისება, მნიშვნელოვანია, რომ ისინი არასოდეს იყვნენ გაწვრთნილი იმ პრობლემებსა და ამოხსნებზე, რომლებზეც შემდგომ ფასდებიან. ეს ჰგავს მოსწავლეებისთვის მოახლოებული გამოცდის ამოცანებისა და პასუხების გაზიარებას გამოცდამდე — მათ შეიძლება ზუსტად არ დაიმახსოვრონ პასუხი, მაგრამ ვინც პასუხები ადრე ნახა, უდავოდ უკეთეს შედეგს აჩვენებს მათზე, ვისაც არ უნახავს. SWE-bench-ის ამოცანები აღებულია ღია კოდის რეპოზიტორიუმებიდან, რომლებსაც ბევრი მოდელის მომწოდებელი სასწავლო მიზნებისთვის იყენებს. ჩვენმა ანალიზმა აჩვენა, რომ ყველა მოწინავე მოდელს, რომელიც გამოვცადეთ, შეეძლო ადამიანის მიერ დაწერილი თავდაპირველი ხარვეზის გამოსწორების — ე.წ. gold patch-ის — ან გარკვეული ამოცანებისთვის პრობლემის აღწერის სიტყვასიტყვითი დეტალების გამეორება, რაც მიუთითებს, რომ ყველა მათგანს ტრენინგის დროს ნანახი ჰქონდა სულ მცირე ზოგიერთი პრობლემა და ამოხსნა.
ასევე აღმოვაჩინეთ მტკიცებულება, რომ მოდელები, რომლებმაც ტრენინგისას პრობლემები ნახეს, წარმატებას უფრო ხშირად აღწევენ, რადგან მათ აქვთ დამატებითი ინფორმაცია, რომელიც არასაკმარისად განსაზღვრული ტესტების გასავლელადაა საჭირო.
ეს ნიშნავს, რომ SWE-bench Verified-ზე გაუმჯობესებები აღარ ასახავს მოდელების რეალურ პროგრამული უზრუნველყოფის განვითარების უნარებში არსებით გაუმჯობესებას. ამის ნაცვლად, ისინი სულ უფრო მეტად ასახავს, რამდენად ჰქონდა მოდელს ბენჩმარკთან შეხება ტრენინგის დროს. სწორედ ამიტომ შევწყვიტეთ SWE-bench Verified-ის ქულების გამოქვეყნება და ვურჩევთ სხვა მოდელების დეველოპერებსაც, იგივე გააკეთონ.
ჩვენ ვქმნით ახალ, არაკონტამინირებულ შეფასებებს, რათა უკეთ ვადევნოთ თვალი კოდირების შესაძლებლობებს, და ვფიქრობთ, რომ ეს ფართო კვლევითი საზოგადოებისთვის მნიშვნელოვანი ფოკუსის სფეროა. მანამდე კი OpenAI რეკომენდაციას უწევს SWE-bench Pro-ის შედეგების გამოქვეყნებას.
საწყისი SWE-bench(იხსნება ახალ ფანჯარაში) შეფასება 2023 წელს გამოვიდა. თითოეული პრობლემა აღებულია 12 ღია კოდის Python რეპოზიტორიუმიდან ერთ-ერთში გადაჭრილი GitHub issue-იდან და შეწყვილებულია შესაბამის შერწყმის მოთხოვნასთან (PR). იმის დასადგენად, სწორია თუ არა მოდელის მიერ გენერირებული კოდის ცვლილება, თითოეულ პრობლემას ახლავს ტესტების ორი ნაკრები:
- ტესტები, რომლებიც უცვლელ კოდურ ბაზაზე ვერ გადის, მაგრამ გადის, თუ issue სწორად გამოსწორდა
- რეგრესიის ტესტები, რომლებიც ცვლილებამდე და ცვლილების შემდეგაც გადის, რათა დარწმუნდნენ, რომ დაუკავშირებელი ფუნქციონალი ხელუხლებელია.
მოდელი ტესტებს ვერ ხედავს. მან უნდა შექმნას კოდის ცვლილება მხოლოდ საწყისი issue-ის ტექსტისა და გამოსწორებამდე არსებული რეპოზიტორიუმის მდგომარეობის საფუძველზე. პრობლემა ჩათვლილია გავლილად მხოლოდ მაშინ, თუ კოდის ცვლილების გამოყენების შემდეგ ყველა ტესტი წარმატებით გადის.
ამ შეფასებაში მრავალი პრობლემა ვიპოვეთ, რამაც შეიძლება მოდელების შესაძლებლობების არასათანადო, შემცირებულად წარმოჩენა გამოიწვიოს.
- ზოგი ერთეულის ტესტი ზედმეტად სპეციფიკური იყო ან ამოცანას არ ემთხვეოდა, რის გამოც სწორი გამოსწორებებიც შეიძლებოდა უარყოფილიყო.
- ბევრი ამოცანის აღწერა არასაკმარისად იყო განსაზღვრული, რაც რამდენიმე სწორ ინტერპრეტაციას ტოვებდა — მაშინ, როცა ტესტები მხოლოდ ერთ კონკრეტულს ფარავდა.
- გარემოს კონფიგურაციის მიხედვით (მაგალითად Linux თუ Windows, ან Python-ის ვერსია), ზოგი ტესტი შეიძლებოდა მცდარად ჩავარდნილიყო
ამ პრობლემების გადასაჭრელად 2024 წელს შევქმენით SWE-bench Verified. ვიმუშავეთ გამოცდილ პროგრამულ ინჟინრებთან ერთად, რათა 1,699 SWE-bench პრობლემისთვის გადაგვეხედა და გამოგვეფილტრა პრობლემები, რომლებსაც ეს ხარვეზები ჰქონდათ. თითოეული პრობლემა სამმა ექსპერტმა დამოუკიდებლად შეაფასა. ამ გადახედვის პროცესის შედეგად მივიღეთ SWE-bench Verified — 500 პრობლემის კურირებული ნაკრები.
მიუხედავად იმისა, რომ SWE-bench Verified საწყის ვერსიასთან შედარებით დიდი გაუმჯობესებაა, ნარჩენი პრობლემები მაინც რჩება. ჩავატარეთ 138 SWE-bench Verified პრობლემის აუდიტი, რომლებიც OpenAI o3‑მა 64 დამოუკიდებელ გაშვებაში სტაბილურად ვერ გადაჭრა. თითოეული შემთხვევა დამოუკიდებლად შეაფასა სულ მცირე ექვსმა გამოცდილმა პროგრამულმა ინჟინერმა. თუ ექსპერტი პრობლემას მონიშნავდა, მას დამატებითი გუნდი ხელახლა ამოწმებდა.
აღმოვაჩინეთ, რომ 138 პრობლემიდან 59.4% შეიცავდა არსებით ხარვეზებს ტესტების დიზაინში და/ან პრობლემის აღწერაში, რაც მათ უკიდურესად რთულს ან შეუძლებელს ხდიდა გადასაჭრელად ყველაზე ძლიერი მოდელისთვის ან ადამიანისთვისაც კი.
- შემოწმებული ამოცანების 35.5%-ს აქვს მკაცრი ტესტური შემთხვევები, რომლებიც კონკრეტულ იმპლემენტაციის დეტალებს ავალდებულებს, რის გამოც ბევრი ფუნქციურად სწორი წარდგენა ბათილდება; ჩვენ ამას ვიწრო ტესტურ შემთხვევებს ვუწოდებთ.
- შემოწმებული ამოცანების 18.8%-ს აქვს ტესტები, რომლებიც ამოწმებს დამატებით ფუნქციონალს, რომელიც პრობლემის აღწერაში მითითებული არ იყო; ამას ფართო ტესტურ შემთხვევებს ვუწოდებთ.
- დარჩენილ 5.1% ამოცანებს ჰქონდა სხვადასხვა სხვა პრობლემა, რომლებიც ამ ტაქსონომიაში კარგად არ ჯგუფდებოდა.
პირველი ტიპის ჩავარდნის თვალსაჩინო მაგალითია pylint-dev__pylint-4551(იხსნება ახალ ფანჯარაში), სადაც PR ამოხსნის ფარგლებში შემოაქვს ახალი ფუნქცია `get_annotation`. ფუნქციის ეს სახელი პრობლემის აღწერაში ნახსენები არ არის, მაგრამ ტესტები მას პირდაპირ ახდენს import-ს. მიუხედავად იმისა, რომ ზოგიერთმა მოდელმა შეიძლება ინტუიციით შექმნას ასეთი ფუნქცია, პრობლემის სწორად გადასაჭრელად სწორედ ამ სახელის მქონე ფუნქციის განხორციელება მკაცრად აუცილებელი არ არის. მრავალი სწორი ამოხსნა import-ის შეცდომების გამო ტესტებს ვერ გადის.
პრობლემის აღწერა
PR ტესტის ფრაგმენტი
PR ტესტების ჩავარდნები (შემოკლებული)
ზედმეტად ფართო ტესტური შემთხვევების მაგალითია sympy__sympy-18199(იხსნება ახალ ფანჯარაში). ეს ამოცანა აღებულია PR-იდან, რომელიც `nthroot_mod` ფუნქციასთან დაკავშირებულ სამ განსხვავებულ პრობლემას ასწორებდა, კერძოდ #17373(იხსნება ახალ ფანჯარაში), #17377(იხსნება ახალ ფანჯარაში) და #18212(იხსნება ახალ ფანჯარაში). თუმცა SWE-bench Verified ამოცანის აღწერა მოიცავს მხოლოდ საბოლოო პრობლემას #18212(იხსნება ახალ ფანჯარაში). ეს შეუსაბამობას ქმნის: PR-ის ტესტები სამივე პრობლემას ფარავს, ხოლო აღწერაში მხოლოდ ერთია დეტალურად მოცემული. ჩვენს გაშვებებში მოდელები ხშირად სწორად ახორციელებდნენ აღწერილ გამოსწორებას და შემდეგ ტესტებზე იჭრებოდნენ, რომლებიც დანარჩენი ორი პრობლემის იმპლემენტაციას ამოწმებდა.
PR-ის ორიგინალი აღწერა (GitHub PR-დან)
#18212-ის პრობლემის აღწერა
SWE-bench Verified ამოცანის პრობლემის აღწერა (მხოლოდ #18212-დან):
SWE-bench Verified და რეპოზიტორიუმები (კოდის ბაზები და რელიზის შენიშვნები) ორივე ღია კოდია და ფართოდ გამოიყენება და განიხილება, რაც მოდელების დეველოპერებისთვის კონტამინაციის თავიდან აცილებას ართულებს.
კონტამინაციის ნიშნებს პირველად საკუთარ მოდელებში წავაწყდით. მაგალითად, როცა GPT‑5.2‑მა ამოხსნა 31 ამოცანა, რომლებიც თითქმის შეუძლებლად მიგვაჩნდა. django__django-14725(იხსნება ახალ ფანჯარაში)-ში ტესტები მოითხოვს კონკრეტულ ახალ პარამეტრს `edit_only`, რომელიც პრობლემის აღწერაში აშკარად მოთხოვნილი არ არის. პრობლემის ამოხსნისას GPT‑5.2 თავის მსჯელობის ჯაჭვში აჩვენებს, რომ ფლობს ინფორმაციას რელიზის შენიშვნებიდან, სადაც კოდურ ბაზაში ცვლილებებია აღწერილი, და სწორად ასახელებს, რომ `edit_only` პარამეტრი Django 4.1-ში შემოიღეს.
GPT‑5.2 CoT
იმის შესაფასებლად, რამდენად მნიშვნელოვანია კონტამინაცია უფრო ფართო ჭრილში, შევქმენით ავტომატიზებული red-teaming-ის გარემო. SWE-bench Verified-ის თითოეული კითხვისთვის GPT‑5‑ს დავავალეთ, GPT‑5.2‑Chat, Claude Opus 4.5 და Gemini 3 Flash Preview-ში კონტამინაცია გამოეკვლია. ეს მოდელები შევარჩიეთ ისე, რომ მსჯელობის მოდელები გამოგვერიცხა, თუმცა ვაღიარებთ, რომ მათ შორის, სავარაუდოდ, არატრივიალური შესაძლებლობის სხვაობაა.
კონტამინაციის შესამოწმებლად GPT‑5‑მ მიიღო: SWE-bench Verified ამოცანის ID, აღწერა, gold patch და PR ტესტები. 15 სვლის განმავლობაში GPT‑5‑ს ვაძლევდით საშუალებას, შეეცვალა system/developer მოთხოვნა, მომხმარებლის მოთხოვნა, ასისტენტის წინასწარ შევსებული ტექსტი და გამოეყენებინა ინფორმაციის გამოწვევის განსხვავებული სტრატეგიები. ყოველი სვლის შემდეგ მსაჯმა მოდელმა მონიშნა, რამდენი ახალი, ამოცანისთვის სპეციფიკური ინფორმაცია გამოჩნდა, ხოლო თითოეული პასუხი შეფასდა კონტამინაციის სიმძიმით „არავითრიდან“ „ძლიერამდე“. GPT‑5‑ს შეეძლო წინა სვლებზე დაყრდნობით სტრატეგიის ადაპტირება, რათა ეტაპობრივად აღედგინა ამოცანისთვის სპეციფიკური დეტალები. ძლიერი კონტამინაციის თითოეული მაგალითისთვის სხვა მსაჯთან ერთად გადავამოწმეთ, რომ GPT‑5‑ს სამიზნე მოდელისთვის ზედმეტი ინფორმაცია არ გაეჟონა. ბოლოს კი ამ პოსტში მოცემული ტრანსკრიპტების შემადგენელი „ძლიერი“ მაგალითები ხელით გადავხედეთ.
ქვემოთ მოცემულია ძლიერი კონტამინაციის მაგალითები სხვადასხვა მოდელის მომწოდებლებს შორის.
ამოცანის აღწერიდან მოკლე მონაკვეთის მიცემისას GPT‑5.2 ზუსტ gold patch-ს აბრუნებს. კერძოდ, მან იცის ზუსტი კლასისა და მეთოდის სახელი, ასევე ახალი ადრეული დაბრუნების პირობა `if username is None or password is None`, რომელიც ემატება.
ამოცანის ID: django__django-11451(იხსნება ახალ ფანჯარაში)
კონტამინაციის გამოვლენა
სწორი პატჩი
Opus-ს შეუძლია არა მხოლოდ ზუსტად გაიხსენოს PR-ის მიერ შეტანილი ზუსტი 4-სტრიქონიანი ფუნქციური ცვლილება, ასევე კონკრეტული ფაილის სახელი და მეთოდი, რომელსაც ის შეეხო, არამედ სიტყვასიტყვით მოჰყავს კიდეც inline კომენტარი, რომელიც diff-ის ნაწილი იყო.
ამოცანის ID: astropy__astropy-13236(იხსნება ახალ ფანჯარაში)
კონტამინაციის გამოვლენა
სწორი პატჩი
Gemini 3 Flash-ს, როცა ამოცანის შესახებ ID-ის გარდა სხვა დამატებითი ინფორმაცია არ ეძლევა, შეუძლია სიტყვასიტყვით დააბრუნოს დეტალები ამოცანის აღწერიდან და gold patch-იდან. ეს მოიცავს მომხმარებლის სახელის ვალიდაციისთვის ახალ regex ფორმულას და ცვლილების ზუსტ ხაზების ნომრებს.
ამოცანის ID: django__django-11099(იხსნება ახალ ფანჯარაში)
კონტამინაციის გამოვლენა
სწორი პატჩი
SWE-bench Verified-ის ამ აუდიტიდან შეფასების დიზაინისთვის ორ უფრო ფართო გაკვეთილს ვხედავთ. პირველი, საჯაროდ ხელმისაწვდომ მასალაზე დაფუძნებული ბენჩმარკები შეიცავს კონტამინაციის რისკს, როცა სასწავლო მონაცემებზე ზემოქმედებამ შეიძლება ჩუმად გაზარდოს ქულები. თუ ბენჩმარკის შესაქმნელად საჯაროდ შეგროვილი მონაცემები გამოიყენება, მოდელების დეველოპერებმა კონტამინაციაზე დამატებითი ტესტები უნდა ჩაატარონ. საჯაროდ გამოქვეყნებული ბენჩმარკები და მათი ამოხსნებიც კი შესაძლოა სასწავლო მონაცემებში მოხვდეს. დამატებითი სიფრთხილეა საჭირო როგორც მონაცემთა ნაკრების გამოქვეყნების ფორმაში (მაგ., პაროლით დაცვა), ისე სასწავლო მონაცემების გაფილტვრაში (მაგ., canary string-ების მკაცრი დაცვა).
მეორე, ავტომატური ქულების დათვლა რთულია სწორად გასაკეთებლად; იდეალურმა ტესტურმა შემთხვევებმა სრულად უნდა გადაამოწმოს სწორი ფუნქციონალი, იყოს როგორც უმნიშვნელო კონკრეტული იმპლემენტაციის დეტალებისგან დამოუკიდებელი, ასევე მდგრადი შემოვლითი ამოხსნების მიმართ. ეს პრობლემები ბუნებით რთული და მოსაგვარებლად ძნელია. ამ პრობლემების აღმოჩენას დასჭირდა ადამიანების მიერ მონიშვნის არაერთი მასშტაბური კამპანია.
ეს მიგნებები უკვე გავითვალისწინეთ ჩვენს ბოლო შეფასებით ძალისხმევაში. ბოლო თვეებში გადავწყვიტეთ, რომ შედეგები SWE-Bench Pro-ის საჯარო გაყოფიდან წარმოგვედგინა. სხვა მოდელების დეველოპერებსაც იმავეს ვურჩევთ. SWE-bench Pro იდეალური არ არის, მაგრამ ემპირიულად ჩანს, რომ კონტამინაციის პრობლემები მას ნაკლებად აწუხებს. ჩვენმა კონტამინაციის პაიპლაინმა რამდენიმე კონტამინაციის შემთხვევა იპოვა, მაგრამ ეს შემთხვევები მნიშვნელოვნად უფრო იშვიათი და ნაკლებად მძიმე იყო, ვიდრე SWE-bench Verified-ში, და ვერანაირმა მოდელმა ვერ შეძლო სრული სიტყვასიტყვითი gold patch-ის წარმოება.
ჩვენ გავაგრძელებთ ინვესტირებას ორიგინალურ, კერძოდ ავტორებულ ბენჩმარკებში და ვთხოვთ ინდუსტრიასა და აკადემიას, იგივე გააკეთონ. GDPVal-ში ამოცანები კერძოდ არის შექმნილი დომენის ექსპერტების მიერ, რაც ამცირებს ექსპოზიციის რისკს, ხოლო ამოხსნები მთლიანობაში ფასდება გაწვრთნილი შემფასებლების მიერ. ეს მიდგომა რესურსმოხმარებით მძიმეა, მაგრამ სულ უფრო აუცილებელი ხდება რეალური შესაძლებლობების გაუმჯობესების გასაზომად.


