SWE-bench (benchmark) (PL)

From Systems analysis Wiki
Jump to navigation Jump to search

SWE-bench — to rozbudowany benchmark (zestaw zadań testowych) służący do oceny możliwości dużych modeli językowych (LLM) w zakresie automatyzacji tworzenia i debugowania oprogramowania[1]. Został opracowany przez grupę badaczy z Uniwersytetu Princeton oraz innych organizacji i zaprezentowany na konferencji ICLR 2024[2]. SWE-bench wyróżnia się spośród tradycyjnych benchmarków kodu wykorzystaniem rzeczywistych zadań z praktyki programistycznej: zestaw testowy zawiera 2294 zadania oparte na zamkniętych zgłoszeniach (issues) i odpowiadających im poprawkach (pull request) z 12 popularnych otwartych repozytoriów Python na GitHubie[1][3]. Każde zadanie zawiera opis problemu (issue) i udostępnia modelowi kod źródłowy odpowiedniego projektu; celem modelu jest wygenerowanie minimalnych zmian w bazie kodu (patcha), które naprawią wskazany problem[1][3].

Metodyka i szczególne cechy oceny

SWE-bench odwzorowuje rzeczywisty proces tworzenia oprogramowania. Dla każdego zadania model otrzymuje treść oryginalnego zgłoszenia GitHub (opis problemu) oraz migawkę kodu repozytorium w wersji sprzed wprowadzenia poprawki[4]. Model (lub agent oparty na modelu) musi przeanalizować kod źródłowy, zrozumieć naturę błędu lub wymaganej zmiany i wprowadzić poprawki w odpowiednich plikach kodu, eliminując problem[4][5]. Walidacja rozwiązania jest zautomatyzowana: do każdego zadania przypisane są rzeczywiste testy jednostkowe z pull requestu, który zamknął dany problem. Wśród nich wyróżnia się zarówno testy „niezdany–zdany" (fail-to-pass, które nie przechodzą na oryginalnym kodzie, ale powinny przejść po zastosowaniu właściwej poprawki), jak i testy regresji (pass-to-pass, które początkowo przechodzą i powinny nadal przechodzić po wprowadzeniu zmian)[3]. Zaproponowany przez model patch jest stosowany do kodu, po czym uruchamiane są odpowiednie testy: jeśli wszystkie testy fail-to-pass zaczną przechodzić, a testy pass-to-pass nie zostaną naruszone, zadanie uznaje się za poprawnie rozwiązane[3]. Takie podejście do oceny pozwala sprawdzić nie tylko zdolność modelu do generowania syntaktycznie poprawnego kodu, ale także umiejętność rzeczywistego rozwiązania postawionego zadania bez naruszania istniejącej funkcjonalności. Przy tym model musi operować dużym kontekstem (całe repozytorium kodu), rozumieć zależności między komponentami i koordynować zmiany w wielu plikach jednocześnie[1] — wszystko to jest znacznie trudniejsze niż typowe zadania polegające na napisaniu funkcji na podstawie opisu.

W ocenach SWE-bench zwykle uczestniczą nie same LLM, lecz systemy agentowe, które obudowują model pomocniczymi narzędziami (np. do nawigacji po plikach, wykonywania kodu, korzystania z debuggera itp.)[4][6]. Taki system naśladuje rzeczywisty cykl wytwarzania oprogramowania: model może kolejno przeglądać pliki, uruchamiać testy lub skrypty i stopniowo ulepszać rozwiązanie, aż osiągnie pomyślny wynik[4]. Znamienne jest, że skuteczność rozwiązywania zadań SWE-bench w dużej mierze zależy od jakości tego „scaffoldingu" (infrastruktury agenta): te same bazowe modele mogą osiągać różne wyniki w zależności od tego, jak zorganizowana jest interakcja z repozytorium i narzędziami[4][7]. Tym samym SWE-bench służy jako miara możliwości całości złożonej z modelu i jego strategii rozwiązywania zadań, przybliżając ocenę do rzeczywistych warunków pracy autonomicznego programisty-AI[4][7].

Warianty zestawu zadań

Autorzy SWE-bench oraz społeczność zaprezentowali następnie kilka pochodnych zestawów przeznaczonych do różnych celów oceny:

  • SWE-bench Lite — uproszczona wersja benchmarku zawierająca ~300 zadań[8], wyselekcjonowanych tak, aby zmniejszyć złożoność i koszty obliczeniowe testowania modeli. Ten podzbiór został stworzony do szybkiego eksperymentowania z modelami i wyklucza najbardziej pracochłonne walidacje, zachowując przy tym reprezentatywność głównych problemów[7]. W istocie Lite zawiera prostsze i krótsze zadania dotyczące naprawiania błędów, a wyniki modeli na Lite są zazwyczaj wyższe niż na pełnym zestawie, gdyż wykluczone zostały najtrudniejsze przypadki[7].
  • SWE-bench Verified — podzbiór przefiltrowany ręczną weryfikacją, zaprezentowany w sierpniu 2024 r. we współpracy z OpenAI[7]. Badacze zaangażowali 93 profesjonalnych programistów do analizy każdego zadania oryginalnego benchmarku i wykluczyli przypadki, w których opis problemu był zbyt niejasny lub wymagane przez testy zachowanie nie wynikało wprost z treści zadania[7]. Usunięto również zadania, których w praktyce nie można rozwiązać z powodu problemów ze środowiskiem lub nieprawidłowych testów[7]. W rezultacie powstał zestaw 500 zadań, gwarantowanie rozwiązywalnych i poprawnie sformułowanych[7]. SWE-bench Verified ma zapewniać bardziej wiarygodną ocenę możliwości modeli, eliminując przypadki, gdy nawet poprawne rozwiązanie jest odrzucane z powodu nieadekwatności testów lub treści zadania[7]. Zestaw ten zastąpił oryginalne próbki testowe SWE-bench (pełną i Lite) jako główny punkt odniesienia do porównywania modeli[7]. Ponadto wraz z Verified opublikowano oceny trudności zadań (wyróżniono m.in. zadania „łatwe", rozwiązywalne przez człowieka w czasie <15 minut, i „trudne", wymagające >1 godziny)[7], a także wydano nowy szkielet narzędziowy oparty na Dockerze, zapewniający bardziej stabilne i odtwarzalne uruchamianie testów[7].
  • SWE-bench Multimodal — rozszerzenie benchmarku zaprezentowane w styczniu 2025 r., obejmujące zadania, w których opis problemu zawiera nie tylko tekst, ale i elementy wizualne (np. zrzuty ekranu interfejsu, screenshoty błędów itp.)[8]. Ten zestaw (517 zadań[8]) sprawdza zdolność modeli i agentów do rozumienia i wykorzystywania informacji wizualnych przy rozwiązywaniu zadań programistycznych. Ocena na zestawie multimodalnym jest zorganizowana analogicznie, lecz wymaga od modelu możliwości multimodalnych (np. rozpoznawania tekstu na obrazach). Część testowa SWE-bench Multimodal pozostaje zamknięta (ukryta), aby zapobiec dopasowywaniu rozwiązań do znanych odpowiedzi; programiści mogą przesyłać rozwiązania na zdalny leaderboard w celu oceny swoich modeli na tych zadaniach[2].

Pomijając te główne warianty, wokół SWE-bench powstał ekosystem narzędzi: SWE-agent — otwarty program-agent-solver osiągający czołowe wyniki na zadaniach benchmarku[2]; SWE-smith — framework do trenowania własnych modeli-programistów; SWE-REX — narzędzie do rozszerzonego wydobywania i przetwarzania informacji z repozytoriów i inne. Projekty te mają na celu uproszczenie odtwarzania wyników i promocję badań w obszarze autonomicznych systemów programistycznych.

Wyniki i postęp modeli

Po pierwszym pojawieniu się SWE-bench ujawnił znaczną przepaść między współczesnymi LLM a umiejętnościami doświadczonych programistów. Autorzy informowali, że nawet najpotężniejsze modele z początku 2023 roku radziły sobie zaledwie z kilkoma procentami zadań: na przykład model Claude 2 firmy Anthropic pomyślnie rozwiązywał mniej niż 2% zadań pełnego zestawu[1]. Specjalnie wytrenowany przez autorów benchmarku model (oparty na LLaMA, nazwany SWE-Llama) oraz modele własnościowe takie jak GPT-4 potrafiły rozwiązywać głównie tylko najprostsze błędy[1]. Te niskie pierwotne metryki podkreśliły trudność SWE-bench i stały się bodźcem do rozwoju nowych podejść.

W ciągu 2024 roku, wraz z pojawieniem się doskonalszych modeli i schematów agentowych, wyniki znacząco się poprawiły. Badacze z Princeton zaprezentowali system SWE-agent łączący GPT-4 z wyszukiwaniem po kodzie, planowaniem i innymi narzędziami; osiągnął on około 12,5% rozwiązanych zadań na pełnym zestawie, wyznaczając nowy punkt odniesienia dla modeli akademickich[5]. W połowie 2024 r. na oficjalnym leaderboardzie SWE-bench najlepsze rozwiązania (w tym własnościowe) osiągnęły około 20% pomyślnych rozwiązań na pełnym benchmarku i do 43% na uproszczonym zestawie Lite[7]. Taki wzrost jest związany z udoskonaleniem modeli (np. pojawienie się GPT-4, Claude 2 i 3) oraz szczególnie z rozwojem „scaffoldingu" — zewnętrznych strategii pozwalających modelowi efektywnie dzielić zadanie na kroki, czytać dokumentację, uruchamiać sesje debugowania itp.[7]

Po wprowadzeniu pod koniec 2024 r. zestawu Verified (oczyszczonego z nieprawidłowych zadań) mierzalna wydajność wzrosła jeszcze bardziej. Model GPT-4 (wariant GPT-4o) od razu osiągnął około 33% pomyślnych rozwiązań na Verified w porównaniu do ~16% wcześniej na oryginalnym zestawie[7]. Najlepsze otwarte frameworki-agenty (np. Agentless) podwoiły swój wynik z ~16% do 32% na Verified[7]. Potwierdziło to przypuszczenie, że oryginalny benchmark nieco zaniżał wskaźniki z powodu obecności nierozwiązywalnych przypadków[7]. Jednocześnie poprawa wyników na Verified w porównaniu z Lite nie jest tak dramatyczna (najlepsze modele osiągały już ~43% na Lite), co jest logiczne: Lite od początku wybierał łatwiejsze przykłady, a Verified usunął niewykonalne, lecz pozostawił trudne zadania[7]. Ważne jest, że wzrost wskaźników przy przejściu na Verified nastąpił we wszystkich kategoriach trudności zadań, a nie tylko dzięki wyeliminowaniu najtrudniejszych — czyli filtrowanie pozbyło się zestawu również ukrytych niewykonalnych przypadków wśród stosunkowo prostych zadań[7].

Na początku 2025 roku wiodące systemy AI demonstrują efektywność zbliżoną do ludzkiej na zweryfikowanym zestawie zadań, choć pułap 100% jest wciąż odległy. W styczniu 2025 r. firma Anthropic poinformowała, że jej nowy model Claude 3.5 Sonnet w połączeniu z ulepszonym agentem rozwiązał 49% zadań SWE-bench Verified[4], tymczasowo wychodząc na pierwsze miejsce. Duże firmy technologiczne i niezależne zespoły również aktywnie uczestniczą w nieoficjalnych zawodach na tym benchmarku. I tak zespół CodeStory opracował wielomodelowe podejście z przeszukiwaniem wariantów („Midwit Agent"), które osiągnęło rekordowe 62,2% rozwiązanych zadań na Verified (dane z początku 2025 r.)[5][9]. Odnotowano, że w tym celu konieczne było znaczne zwiększenie zużycia zasobów obliczeniowych na etapie wnioskowania modelu (tzw. inference time scaling), uruchamiając wiele prób rozwiązania i wybierając najlepszy wynik[5]. Z kolei w materiałach OpenAI wspomniano o eksperymentalnym systemie GPT-03, któremu przy wystarczającym skalowaniu obliczeń udało się rzekomo przekroczyć próg 70% na Verified (dane nieoficjalne)[5]. Jednak niezależna weryfikacja tych wyników nie istnieje i tak wysoki wskaźnik pozostaje raczej punktem orientacyjnym dla przyszłych badań niż osiągniętą poprzeczką.

Zgodnie z badaniem Microsoft Research (2025), nawet najnowsze modele wyposażone w narzędzia do debugowania wciąż nie przekraczają progu 50% pomyślnych poprawek błędów z SWE-bench Lite[6]. W tym teście najlepsza okazała się Claude 3.7 Sonnet z ~48,4% rozwiązanych zadań, podczas gdy system oparty na GPT-4 (OpenAI 01) rozwiązał około 30%, a lżejszy model 03-mini — jedynie 22%[6]. Wyniki te podkreślają, że mimo szybkiego postępu współczesne AI nadal ustępują doświadczonym programistom: dla człowieka rozwiązanie podobnych zadań (przy posiadaniu zrozumienia kodu) nie stanowi trudności, podczas gdy model często nie potrafi efektywnie korzystać z narzędzi debugowania lub cierpi na niedostatek danych treningowych odzwierciedlających wieloetapowy proces naprawiania błędów[6].

Ograniczenia i perspektywy

SWE-bench stał się standaryzowaną platformą do oceny inteligentnych agentów kodu, jednak badania ujawniły również szereg jego ograniczeń. Główny problem to niekompletność testowania: zestaw testów weryfikacyjnych do każdego zadania pochodzi z konkretnego pull requestu i zazwyczaj zawiera tylko te testy jednostkowe, które zostały zmienione przy naprawianiu błędu[3]. Jak wykazała analiza grupy naukowców z Uniwersytetu Zhejiang i Uniwersytetu w Stuttgarcie (Wang et al. 2025), ignorowanie pozostałych testów projektu może ukrywać niepoprawność niektórych rozwiązań[3]. Ponowne sprawdzenie rozwiązań na pełnym zestawie testów repozytorium wykazało, że średnio 7,8% patchy oznaczonych jako pomyślne w SWE-bench w rzeczywistości nie przechodzi innych testów w projekcie[3]. Prowadzi to do zawyżenia metryki „zadań rozwiązanych" o około 4-6 punktów procentowych[3]. Jeszcze subtelniejszy przypadek — gdy wygenerowany patch przechodzi wszystkie oryginalne testy, ale jednocześnie jest nieekwiwalentny rozwiązaniu programisty i zmienia zachowanie programu niezgodnie z oczekiwaniami. Za pomocą generowania dodatkowych przypadków testowych (metodyka PatchDiff) badacze ustalili, że prawie 30% zaproponowanych przez AI poprawek zachowuje się inaczej niż referencyjne patche, a około 11% jest jednoznacznie błędnych, choć nie są wykrywane przez istniejące testy[3]. Tym samym rzeczywiste możliwości modeli mogą być przeszacowywane, jeśli polega się wyłącznie na przejściu ograniczonego zestawu testów. Twórcy SWE-bench przyznają tę lukę i podkreślają, że benchmark powinien z czasem ewoluować: poprawiać pokrycie testami, dodawać weryfikacje braku niepożądanych efektów ubocznych, rozszerzać zestaw typów zadań[7]. Rozwój takich środków oceny jest ważną częścią przygotowań na pojawienie się coraz bardziej autonomicznych i potężnych programistów-AI, a doświadczenia z SWE-bench pokazują konieczność uważnego podejścia do jakości benchmarków[7].

SWE-bench, będąc jedynie statycznym zestawem zadań, nie obejmuje absolutnie wszystkich aspektów programowania, ale stał się już de facto standardem dla analizy porównawczej modeli kodu[3]. Jest wykorzystywany w pracach naukowych do demonstracji nowych metod i algorytmów, a także przez przemysłowe grupy badawcze do oceny potencjału systemów przeznaczonych do automatyzacji programowania[3]. Stały wzrost wyników na SWE-bench w latach 2023–2025 wyraźnie demonstruje gwałtowną poprawę możliwości LLM w rozwiązywaniu praktycznych zadań programistycznych. Jednocześnie służy on jako barometr trudności: nawet zbliżając się do 50–60% rozwiązanych zadań, modele wciąż daleko im do pełnoprawnego zastąpienia człowieka, szczególnie w warunkach ograniczonej informacji i konieczności subtelnego rozumienia wymagań[4][7]. Niemniej postęp nie zatrzymuje się — dzięki takim inicjatywom jak SWE-bench społeczność wyraźnie widzi swoje cele i ograniczenia oraz kontynuuje dążenie do stworzenia pełnoprawnego programisty-AI, zdolnego do autonomicznego rozumienia i naprawiania kodu na poziomie ludzkiego eksperta[4][7].

Odnośniki

  • SWE-bench na GitHubie
  • Oficjalny leaderboard SWE-bench

Literatura

  • Liang, P. et al. (2022). Holistic Evaluation of Language Models (HELM). arXiv:2211.09110.
  • Chang, Y. et al. (2023). A Survey on Evaluation of Large Language Models. arXiv:2307.03109.
  • Ni, S. et al. (2025). A Survey on Large Language Model Benchmarks. arXiv:2508.15361.
  • Biderman, S. et al. (2024). The Language Model Evaluation Harness (lm-eval): Guidance and Lessons Learned. arXiv:2405.14782.
  • Kiela, D. et al. (2021). Dynabench: Rethinking Benchmarking in NLP. arXiv:2104.14337.
  • Ma, Z. et al. (2021). Dynaboard: An Evaluation‑As‑A‑Service Platform for Holistic Next‑Generation Benchmarking. arXiv:2106.06052.
  • Goel, K. et al. (2021). Robustness Gym: Unifying the NLP Evaluation Landscape. arXiv:2101.04840.
  • Xu, C. et al. (2024). Benchmark Data Contamination of Large Language Models: A Survey. arXiv:2406.04244.
  • Liu, S. et al. (2025). A Comprehensive Survey on Safety Evaluation of LLMs. arXiv:2506.11094.
  • Chiang, W.-L. et al. (2024). Chatbot Arena: An Open Platform for Evaluating LLMs by Human Preference. arXiv:2403.04132.
  • Boubdir, M. et al. (2023). Elo Uncovered: Robustness and Best Practices in Language Model Evaluation. arXiv:2311.17295.
  • Huang, L. et al. (2023). A Survey on Hallucination in Large Language Models. arXiv:2311.05232.

Przypisy

  1. 1.0 1.1 1.2 1.3 1.4 1.5 Jimenez, Carlos E. et al. «SWE-bench: Can Language Models Resolve Real-World GitHub Issues?». arXiv. [1]
  2. 2.0 2.1 2.2 «SWE-bench/SWE-bench». GitHub. [2]
  3. 3.00 3.01 3.02 3.03 3.04 3.05 3.06 3.07 3.08 3.09 3.10 Wang, Shuyang et al. «Are "Solved Issues" in SWE-bench Really Solved Correctly? An Empirical Study». arXiv. [3]
  4. 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 «Claude SWE-Bench Performance». Anthropic. [4]
  5. 5.0 5.1 5.2 5.3 5.4 Jain, Sulbha. «SWE Benchmark: LLM evaluation in Software Engineering Setting». Medium. [5]
  6. 6.0 6.1 6.2 6.3 Hatmaker, Taylor. «AI models still struggle to debug software, Microsoft study shows». TechCrunch. [6]
  7. 7.00 7.01 7.02 7.03 7.04 7.05 7.06 7.07 7.08 7.09 7.10 7.11 7.12 7.13 7.14 7.15 7.16 7.17 7.18 7.19 7.20 7.21 7.22 «Introducing SWE-bench Verified». OpenAI. [7]
  8. 8.0 8.1 8.2 «SWE-bench Leaderboard». [8]
  9. «SOTA on swebench-verified: relearning the bitter lesson». Hacker News (Y Combinator). [9]