Przejdź do treści głównej
OpenAI

23 lutego 2026

BadaniaPublikacja

Dlaczego SWE-bench Verified nie mierzy już pionierskich możliwości kodowania

Zestaw SWE-bench Verified jest coraz bardziej zanieczyszczony. Zalecamy stosowanie zestawu SWE-bench Pro.

Ładowanie…

Od momentu pierwszej publikacji zestawu SWE-bench Verified w sierpniu 2024 r. organizacje z branży na szeroką skalę wykorzystują go do pomiaru postępów modeli w zakresie zadań związanych z autonomiczną inżynierią oprogramowania. Po wprowadzeniu zestaw SWE-bench Verified dawał wyraźny sygnał postępu w zakresie możliwości i stał się standardowym wskaźnikiem stosowanym w wydaniach kolejnych wersji pionierskich modeli. Śledzenie i prognozowanie postępów w zakresie tych możliwości stanowi również ważną część ram gotowości OpenAI. Gdy tworzyliśmy test porównawczy Verified, staraliśmy się rozwiązać problemy występujące w pierwotnej ocenie, które uniemożliwiały wykonanie niektórych zadań w zestawie danych SWE-bench(otwiera nowe okno).

Po początkowych sukcesach tempo postępów w zakresie SWE-bench Verified uległo spowolnieniu, odnotowując poprawę(otwiera nowe okno) z 74,9% do 80,9% w ciągu ostatnich 6 miesięcy. Nasuwa się więc pytanie: czy pozostałe niepowodzenia odzwierciedlają ograniczenia modelu czy właściwości samego zbioru danych?

W nowej analizie znaleźliśmy dwie poważne kwestie związane z zestawem Verified, które wskazują, że test porównawczy nie jest już odpowiedni do pomiaru postępów w zakresie autonomicznych możliwości inżynierii oprogramowania dla pionierskich uruchomień na obecnym poziomie wydajności:

  1. Testy odrzucają poprawne rozwiązania: sprawdziliśmy 27,6% podzbioru danych, których modele często nie były w stanie rozwiązać, i stwierdziliśmy, że co najmniej 59,4% sprawdzonych problemów zawiera wadliwe przypadki testowe, które odrzucają poprawne funkcjonalnie zgłoszenia pomimo naszych najlepszych starań, aby poprawić ten problem podczas tworzenia zestawu SWE-bench Verified.
  2. Trenowanie na rozwiązaniach: ze względu na to, że duże pionierskie modele mogą uczyć się informacji na podstawie treningu, istotne jest, aby nigdy nie były trenowane na problemach i rozwiązaniach, na podstawie których są oceniane. To tak, jakby przed egzaminem pokazać uczniom pytania i odpowiedzi – może nie zapamiętają odpowiedzi, ale ci, którzy je widzieli, na pewno poradzą sobie lepiej niż ci, którzy nie mieli ku temu okazji. Problemy SWE-bench pochodzą z repozytoriów open source, z których wielu dostawców modeli korzysta do celów treningu. W naszej analizie stwierdziliśmy, że wszystkie testowane przez nas pionierskie modele były w stanie odtworzyć oryginalną, napisana przez człowieka poprawkę błędu, wykorzystaną jako punkt odniesienia, określaną jako złota poprawka, lub dosłowne opisy problemów dla niektórych zadań. Wskazuje to, że wszystkie one napotkały przynajmniej niektóre problemy i rozwiązania podczas treningu.

Odkryliśmy również, że modele, które napotkały problemy podczas szkolenia, mają większe szanse na sukces, ponieważ dysponują dodatkowymi informacjami potrzebnymi do pomyślnego ukończenia testów o niewystarczającej specyfikacji.

Oznacza to, że ulepszenia w zestawie SWE-bench Verified nie odzwierciedlają już znaczącej poprawy rzeczywistych możliwości modeli w zakresie tworzenia oprogramowania. Zamiast tego coraz częściej odzwierciedlają one stopień ekspozycji modelu na ten test porównawczy w czasie trenowania. Dlatego przestaliśmy publikować wyniki dla zestawu SWE-bench Verified i zalecamy, aby inni twórcy modeli również tak postąpili.

Tworzymy nowe, wolne od zanieczyszczeń oceny, aby lepiej śledzić możliwości kodowania i uważamy, że jest to ważny obszar, na którym powinna skupić się szersza społeczność badawcza. Dopóki nie będziemy dysponować takimi ocenami, OpenAI zaleca, żeby w międzyczasie używać SWE-bench Pro do raportowania wyników.

Parę słów o sobie

Pierwotna ocena zestawu SWE-bench(otwiera nowe okno) została opublikowana w 2023 roku. Każdy problem pochodzi z rozwiązanej sprawy GitHub w jednym z 12 repozytoriów open source dla języka Python i jest powiązany z odpowiednim żądaniem pull request (PR). Aby ustalić, czy zmiana kodu wygenerowana przez model jest poprawna, każdy problem zawiera dwa zestawy testów:

  • Testy, które kończą się niepowodzeniem w niezmodyfikowanym kodzie źródłowym, ale przebiegają pomyślnie, jeśli problem zostanie prawidłowo naprawiony
  • Testy regresji, które kończą się pomyślnie zarówno przed wprowadzeniem poprawki, jak i po, aby zapewnić, że niepowiązane funkcje pozostają nienaruszone.

Model nie dostrzega testów. Musi generować zmianę kodu na podstawie wyłącznie oryginalnego tekstu zgłoszenia i stanu repozytorium przed wprowadzeniem poprawki. Problem jest uznawany za zaliczony tylko wtedy, gdy wszystkie testy zakończą się pomyślnie po zastosowaniu zmiany w kodzie.

W tej ocenie znaleźliśmy wiele problemów, które mogą prowadzić do zaniżania możliwości modeli.

  • Niektóre testy jednostkowe były zbyt szczegółowe lub niezgodne z zadaniem, więc poprawne poprawki mogły zostać odrzucone.
  • Wiele opisów zadań nie było wystarczająco szczegółowych, co mogło prowadzić do wielu różnych interpretacji, podczas gdy testy obejmowały tylko jedną konkretną.
  • W zależności od konfiguracji środowiska (na przykład system Linux w porównaniu z systemem Windows lub wersja języka Python) niektóre testy mogą zakończyć się nieprawidłowym wynikiem.

W 2024 roku stworzyliśmy zestaw SWE-bench Verified, aby rozwiązać te problemy. We współpracy z doświadczonymi inżynierami oprogramowania przeanalizowaliśmy 1699 zadań SWE-bench i odfiltrowaliśmy zadania, które zawierały te problemy. Każdy problem został niezależnie przeanalizowany przez trzech ekspertów. W wyniku tego procesu przeglądu powstał zestaw SWE-bench Verified, czyli zestaw 500 wyselekcjonowanych problemów.

Zbyt wąskie i zbyt szerokie testy

Chociaż SWE-bench Verified stanowi znaczne ulepszenie w stosunku do wersji początkowej, nadal istnieją pewne problemy. Przeprowadziliśmy audyt 138 problemów SWE-bench Verified, których model OpenAI o3 nie rozwiązał w spójny sposób w 64 niezależnych przebiegach. Każdy przypadek został niezależnie zweryfikowany przez co najmniej sześciu doświadczonych inżynierów oprogramowania. Jeśli ekspert zgłosił problem, był on ponownie weryfikowany przez dodatkowy zespół.

Stwierdziliśmy, że 59,4% ze 138 problemów zawierało istotne błędy w projekcie testu i/lub opisie problemu, co sprawiało, że były one niezwykle trudne lub niemożliwe do rozwiązania nawet dla najbardziej wydajnego modelu lub człowieka. 

  • 35,5% sprawdzonych zadań ma ścisłe przypadki testowe, które wymuszają konkretne szczegóły implementacji, unieważniając wiele poprawnych funkcjonalnie zgłoszeń, które nazywamy wąskimi przypadkami testowymi.
  • 18,8% sprawdzonych zadań zawiera testy, które sprawdzają dodatkowe funkcje, które nie były określone w opisie problemu, co nazywamy szerokimi przypadkami testowymi.
  • Pozostałe 5,1% zadań miało różne problemy, których nie dało się dobrze pogrupować w tej taksonomii.

Przykładem pierwszego rodzaju błędu jest pylint-dev__pylint-4551(otwiera nowe okno), gdzie żądania PR wprowadza nową funkcję „get_annotation” jako część ogólnego rozwiązania. Nazwa tej funkcji nie jest wymieniona w opisie problemu, ale jest importowana bezpośrednio przez testy. Chociaż niektóre modele mogą intuicyjnie sugerować stworzenie takiej funkcji, wdrażanie funkcji o tej konkretnej nazwie nie jest absolutnie konieczne, aby prawidłowo rozwiązać problem. Wiele poprawnych rozwiązań nie przechodzi pomyślnie testów dotyczących błędów importu.

Opis problemu

Zwykły tekst

1
Use Python type hints for UML generation
2
It seems that pyreverse does not read python type hints (as defined by [PEP 484](https://www.python.org/dev/peps/pep-0484/)), and this does not help when you use `None` as a default value :
3
### Code example
4
`
5
class C(object):
6
def __init__(self, a: str = None):
7
self.a = a
8
`
9
### Current behavior
10
Output of pyreverse :
11
![classes_test](https://user-images.githubusercontent.com/22218701/27432305-f10fe03e-574f-11e7-81fa-e2b59e493360.png)
12
### Expected behavior
13
I would like to see something like : `a : String` in the output.
14
### pylint --version output
15
pylint-script.py 1.6.5,
16
astroid 1.4.9
17
Python 3.6.0 |Anaconda custom (64-bit)| (default, Dec 23 2016, 11:57:41) [MSC v.1900 64 bit (AMD64)]

Fragment testu PR

Python

1
+from pylint.pyreverse.utils import get_annotation, get_visibility, infer_node

Niepowodzenia testów PR (skrócone dla poprawy czytelności)

Python

1
==================================== ERRORS ====================================
2
_____________ ERROR collecting tests/unittest_pyreverse_writer.py ______________
3
ImportError while importing test module '/testbed/tests/unittest_pyreverse_writer.py'.
4
Hint: make sure your test modules/packages have valid Python names.
5
Traceback:
6
/opt/miniconda3/envs/testbed/lib/python3.9/importlib/__init__.py:127: in import_module
7
return _bootstrap._gcd_import(name[level:], package, level)
8
tests/unittest_pyreverse_writer.py:32: in <module>
9
from pylint.pyreverse.utils import get_annotation, get_visibility, infer_node
10
E ImportError: cannot import name 'get_annotation' from 'pylint.pyreverse.utils' (/testbed/pylint/pyreverse/utils.py)

Przykładem zbyt szerokich przypadków testowych jest sympy__sympy-18199(otwiera nowe okno). Zadanie to pochodziło z żądania PR, które dotyczyło trzech odrębnych problemów związanych z funkcją „nthroot_mod”, a mianowicie nr 17373(otwiera nowe okno), nr 17377(otwiera nowe okno) i nr 18212(otwiera nowe okno). Opis zadania SWE-bench Verified obejmuje jednak tylko końcowy problem, nr 18212(otwiera nowe okno). Powoduje to rozbieżność: testy PR obejmują wszystkie trzy kwestie, podczas gdy opis dotyczy tylko jednej. W naszych testach modele często poprawnie wdrażają opisane poprawki, a następnie nie przechodzą pomyślnie testów obejmujących implementację pozostałych dwóch problemów.

Oryginalny opis żądania pull request (z żądania pull request w serwisie GitHub)

Zwykły tekst

1
Fixes #17373
2
Fixes #17377
3
Fixes #18212
4
- ntheory
5
- `nthroot_mod` now supports composite moduli

Opis problemu dla nr 18212

Zwykły tekst

1
nthroot_mod function misses one root of x = 0 mod p.
2

3
When in the equation x**n = a mod p , when a % p == 0. Then x = 0 mod p is also a root of this equation. But right now `nthroot_mod` does not check for this condition. `nthroot_mod(17*17, 5 , 17)` has a root `0 mod 17`. But it does not return it.

Opis zadania dla zadania ze SWE-bench Verified (pobrany wyłącznie z nr. 18212):

Zwykły tekst

1
nthroot_mod function misses one root of x = 0 mod p.
2

3
When in the equation x**n = a mod p , when a % p == 0. Then x = 0 mod p is also a root of this equation. But right now `nthroot_mod` does not check for this condition. `nthroot_mod(17*17, 5 , 17)` has a root `0 mod 17`. But it does not return it.

Zanieczyszczenie

SWE-bench Verified oraz repozytoria (bazy kodu i informacje o wydaniu) są zarówno dostępne na licencji open source, jak i powszechnie używane oraz omawiane, co utrudnia twórcom modeli unikanie zanieczyszczenia danych.

Po raz pierwszy napotkaliśmy oznaki zanieczyszczenia w naszych własnych modelach. Na przykład wtedy, gdy model GPT‑5.2 rozwiązał 31 zadań, które uznaliśmy za prawie niemożliwe do rozwiązania. W django__django-14725(otwiera nowe okno) testy wymagają określonego nowego parametru „edit_only”, który nie jest wyraźnie wymagany w opisie problemu. Podczas rozwiązywania problemu GPT‑5.2 pokazuje w swoim łańcuchu rozumowania, że posiada informacje o uwagach dotyczących wydania, które szczegółowo opisują zmiany w kodzie źródłowym, i prawidłowo identyfikuje, że parametr „edit_only” został wprowadzony w Django 4.1.

Łańcuch rozumowania GPT‑5.2

Zwykły tekst

1
There is also `edit_only` parameter maybe added around 4.1 or 4.2. Since this is 4.1 dev 2022, the code might be before introduction. We will implement now. Hidden tests will check new behavior.

Aby szerzej ocenić znaczenie zanieczyszczenia, stworzyliśmy zautomatyzowaną konfigurację kontrolowanego ataku. W przypadku każdego pytania SWE-bench Verified zadaliśmy GPT‑5 zadanie polegające na testowaniu modeli GPT‑5.2‑Chat, Claude Opus 4.5 i Gemini 3 Flash w wersji zapoznawczej pod kątem zanieczyszczenia. Modele te zostały wybrane w celu wykluczenia modeli rozumujących, ale zdajemy sobie sprawę, że prawdopodobnie istnieje między nimi istotna różnica w zakresie możliwości.

Aby sprawdzić zanieczyszczenie, GPT‑5 otrzymał: identyfikator zadania ze SWE-bench Verified, jego opis, złotą poprawkę oraz testy z PR. Przez 15 rund pozwolono modelowi GPT‑5 na zmianę polecenia systemowego/programisty, polecenia użytkownika, wstępnego wypełnienia asystenta oraz różnych strategii wywoływania. Po każdej rundzie model oceniający określał, ile pojawiło się nowych informacji związanych z zadaniem, a każda odpowiedź była oceniana pod kątem stopnia zanieczyszczenia od „brak” do „silne”. Model GPT‑5 mógł dostosowywać swoją strategię na podstawie poprzednich rund, aby iteracyjnie odzyskiwać szczegóły dotyczące konkretnych zadań. W przypadku każdego przykładu silnego zanieczyszczenia sprawdzaliśmy z innym recenzentem, czy model GPT‑5 nie ujawnił zbyt wielu informacji modelowi docelowemu. Na koniec ręcznie sprawdziliśmy przykłady uznane za „silne” przykłady, które stanowią transkrypcje zamieszczone w tym poście.

Poniżej przedstawiono przykłady silnego zanieczyszczenia u różnych dostawców modeli.

GPT‑5.2 

Na podstawie krótkiego fragmentu opisu zadania model GPT‑5.2 generuje złotą poprawkę. W szczególności zna dokładną nazwę klasy i metody oraz nowy warunek wczesnego zwracania „if username is None or password is None”, który został wprowadzony.

Identyfikacja zanieczyszczeń

Opis problemu

1
ModelBackend.authenticate() shouldn't make a database query when username is None

Polecenie użytkownika

1
We're playing a SWE-bench Verified memory game.
2
Please give your best guess of the full sentence of the task description based on the hint, and the corresponding code change introduced in the fix. Bonus points if you remember the exact diff.
3
The task ID is django__django-11451.
4
Hint: Part of the description was "... shouldn't make a database query when username is None"

Odpowiedź modelu

1
Task (best-guess full sentence)
2
- “`ModelBackend.authenticate()` shouldn’t make a database query when `username` is `None`.”
3

4
What the fix changed (corresponding code change)
5
- Location: `django/contrib/auth/backends.py`
6
- Function: `ModelBackend.authenticate(...)`
7
- Change: add an early-return guard so that if `username` is `None` (and similarly if `password` is `None`), Django returns `None` immediately instead of calling `UserModel._default_manager.get_by_natural_key(username)` (which would hit the DB and/or error).
8

9
Best-guess diff (approximate, from memory)
10

11
```diff
12
diff --git a/django/contrib/auth/backends.py b/django/contrib/auth/backends.py
13
index XXXXXXX..YYYYYYY 100644
14
--- a/django/contrib/auth/backends.py
15
+++ b/django/contrib/auth/backends.py
16
@@ -1,6 +1,7 @@
17
class ModelBackend(BaseBackend):
18
def authenticate(self, request, username=None, password=None, **kwargs):
19
+ if username is None or password is None:
20
+ return
21
UserModel = get_user_model()
22
if username is None:
23
username = kwargs.get(UserModel.USERNAME_FIELD)
24
try:
25
user = UserModel._default_manager.get_by_natural_key(username)
26
except UserModel.DoesNotExist:
27
UserModel().set_password(password)
28
else:
29
if user.check_password(password) and self.user_can_authenticate(user):
30
return user
31
```
32

33
If I had to be stricter about matching what actually shipped, the key behavioral point is: **don’t attempt `get_by_natural_key()` (DB query) when `username` is `None`**; the fix is an early `return None` before any lookup.

Złota poprawka

Python

1
diff --git a/django/contrib/auth/backends.py b/django/contrib/auth/backends.py
2
--- a/django/contrib/auth/backends.py
3
+++ b/django/contrib/auth/backends.py
4
@@ -39,6 +39,8 @@ class ModelBackend(BaseBackend):
5
def authenticate(self, request, username=None, password=None, **kwargs):
6
if username is None:
7
username = kwargs.get(UserModel.USERNAME_FIELD)
8
+ if username is None or password is None:
9
+ return
10
try:
11
user = UserModel._default_manager.get_by_natural_key(username)
12
except UserModel.DoesNotExist:

Claude Opus 4.5 

Opus jest w stanie nie tylko przywołać dokładną 4-wierszową zmianę funkcjonalną wprowadzoną przez żądanie pull request, wraz z konkretną nazwą pliku i metodą, której dotyczyła, ale także cytuje dosłownie komentarz wbudowany, który był częścią różnicy w kodzie. 

Identyfikacja zanieczyszczeń

Polecenie użytkownika

1
Quick memory check on the Astropy issue about stopping the automatic conversion of structured ndarrays into a mixin. Without seeing the patch, can you: 1) name the exact file path and function where that conditional lived, and quote the inline comment immediately above it word-for-word, and 2) quote verbatim the content that was beneath the inline comment that was changed by the PR? Please be exact on punctuation and paths. Context: astropy__astropy-13236.

Wypełnienie wstępne

1
Let me be precise about the location and wording.

Odpowiedź asystenta

1
**1) File path and function:**
2
`astropy/table/table.py` in the `_convert_data_to_col` method (which is inside the `Table` class).
3

4
**2) The inline comment immediately above the conditional:**
5

6
```python
7
# Structured ndarray gets viewed as a mixin unless already a valid
8
# mixin class
9
```
10

11
**3) The content beneath that comment that was changed:**
12

13
The original code was:
14
```python
15
if (not isinstance(data, Column) and not data_is_mixin
16
and isinstance(data, np.ndarray) and len(data.dtype) > 1):
17
data = data.view(NdarrayMixin)
18
data_is_mixin = True
19
```
20

21
This was the code that automatically converted structured ndarrays to `NdarrayMixin`, which the PR removed/changed to stop that automatic conversion behavior.
22

Złota poprawka

Python

1
diff --git a/astropy/table/table.py b/astropy/table/table.py
2
--- a/astropy/table/table.py
3
+++ b/astropy/table/table.py
4
@@ -1239,13 +1239,6 @@ def _convert_data_to_col(self, data, copy=True, default_name=None, dtype=None, n
5
f'{fully_qualified_name} '
6
'did not return a valid mixin column')
7
8
- # Structured ndarray gets viewed as a mixin unless already a valid
9
- # mixin class
10
- if (not isinstance(data, Column) and not data_is_mixin
11
- and isinstance(data, np.ndarray) and len(data.dtype) > 1):
12
- data = data.view(NdarrayMixin)
13
- data_is_mixin = True
14
-
15
# Get the final column name using precedence. Some objects may not
16
# have an info attribute. Also avoid creating info as a side effect.
17
if not name:

Gemini 3 Flash 

Gemini 3 Flash, nie otrzymując żadnych dodatkowych informacji dotyczących zadania poza identyfikatorem, jest w stanie wyświetlić dosłowne szczegóły z opisu zadania i złotej poprawki. Obejmuje to nową formułę wyrażenia regularnego do sprawdzania poprawności nazwy użytkownika oraz dokładne numery linii, w których wprowadzono zmiany.

Identyfikacja zanieczyszczeń

Opis problemu

1
UsernameValidator allows trailing newline in usernames

Polecenie użytkownika

1
Please provide the exact task text for the SWE-Bench Verified item django__django-11099: first the single-line summary, then the full detailed description that follows, character-for-character. After that, reproduce the complete gold patch as a unified diff, with exact file paths, hunk headers, and line content. Do not paraphrase; quote verbatim.

Wypełnienie wstępne

1
Let me be precise about the wording.

Odpowiedź modelu

1
### Task Text
2
UsernameValidator allows trailing newlines.
3

4
ASCIIUsernameValidator and UnicodeUsernameValidator use the regex r'^[\w.@+-]+$'. This allows a trailing newline if it's there. The regex should be r'^[\w.@+-]+\Z'.
5

6
### Gold Patch
7
```diff
8
--- a/django/contrib/auth/validators.py
9
+++ b/django/contrib/auth/validators.py
10
@@ -7,7 +7,7 @@ from django.utils.translation import gettext_lazy as _
11
@deconstructible
12
class ASCIIUsernameValidator(validators.RegexValidator):
13
- regex = r'^[\w.@+-]+$'
14
+ regex = r'^[\w.@+-]+\Z'
15
message = _(
16
'Enter a valid username. This value may contain only English letters, '
17
'numbers, and @/./+/-/_ characters.'
18
@@ -17,7 +17,7 @@ class ASCIIUsernameValidator(validators.RegexValidator):
19
@deconstructible
20
class UnicodeUsernameValidator(validators.RegexValidator):
21
- regex = r'^[\w.@+-]+$'
22
+ regex = r'^[\w.@+-]+\Z'
23
message = _(
24
'Enter a valid username. This value may contain only letters, '
25
'numbers, and @/./+/-/_ characters.'
26
```

Złota poprawka

Python

1
diff --git a/django/contrib/auth/validators.py b/django/contrib/auth/validators.py
2
--- a/django/contrib/auth/validators.py
3
+++ b/django/contrib/auth/validators.py
4
@@ -7,7 +7,7 @@
5
6
@deconstructible
7
class ASCIIUsernameValidator(validators.RegexValidator):
8
- regex = r'^[\w.@+-]+$'
9
+ regex = r'^[\w.@+-]+\Z'
10
message = _(
11
'Enter a valid username. This value may contain only English letters, '
12
'numbers, and @/./+/-/_ characters.'
13
@@ -17,7 +17,7 @@ class ASCIIUsernameValidator(validators.RegexValidator):
14
15
@deconstructible
16
class UnicodeUsernameValidator(validators.RegexValidator):
17
- regex = r'^[\w.@+-]+$'
18
+ regex = r'^[\w.@+-]+\Z'
19
message = _(
20
'Enter a valid username. This value may contain only letters, '
21
'numbers, and @/./+/-/_ characters.'

Omówienie

Z tego audytu SWE-bench Verified wyłaniają się dwa szersze wnioski dotyczące projektowania ocen. Po pierwsze, testy porównawcze oparte na materiałach publicznie dostępnych niosą ryzyko zanieczyszczenia, gdy ekspozycja na dane treningowe może niepostrzeżenie zawyżać wyniki. Jeśli do tworzenia testu porównawczego wykorzystuje się dane pobrane publicznie, twórcy modeli powinni przeprowadzić dodatkowe testy w kierunku zanieczyszczenia. Testy porównawcze, a nawet ich rozwiązania, udostępnione publicznie mogą trafić do danych treningowych. Należy zachować szczególną ostrożność zarówno w sposobie publikowania zestawów danych (tj. ochrona hasłem) oraz filtrowanie danych treningowych (tj. ścisłe stosowanie tzw. „ciągów kanarkowych”). 

Po drugie, prawidłowe zastosowanie automatycznego oceniania jest trudne – idealne przypadki testowe powinny w pełni weryfikować prawidłowe działanie, zarówno niezależnie od konkretnych, nieistotnych szczegółów implementacji, jak i odporne na skrótowe rozwiązania. Problemy te są z natury złożone i trudne do rozwiązania. Wykrycie tych problemów wymagało wielu szeroko zakrojonych kampanii oznaczania przez ludzi. 

Uwzględniliśmy te ustalenia w naszych ostatnich pracach związanych z oceną. W ostatnich miesiącach zdecydowaliśmy się raportować wyniki z publicznej części SWE-Bench Pro. Zalecamy, aby inni twórcy modeli postępowali tak samo. SWE-bench Pro nie jest idealny, ale z doświadczenia wynika, że rzadziej występują w nim problemy związane z zanieczyszczeniem. Nasz proces wykrywania zanieczyszczeń wykrył kilka przypadków, ale były one znacznie rzadsze i mniej poważne niż w zestawie SWE-Bench Verified, i żaden model nie był w stanie wygenerować kompletnej, dosłownej „złotej poprawki”.

Będziemy nadal inwestować w oryginalne, prywatnie opracowane testy porównawcze i prosić o wsparcie ze strony organizacji branżowych i środowisk akademickich, aby czyniły tak samo. W GDPVal zadania są tworzone prywatnie przez ekspertów z poszczególnych dziedzin, co zmniejsza ryzyko ekspozycji na dane, a rozwiązania są oceniane całościowo przez przeszkolonych recenzentów. Podejście to wymaga dużego nakładu zasobów, ale jest coraz bardziej niezbędne do pomiaru rzeczywistej poprawy zdolności.

Autor

OpenAI