LLMProgramowanie

AutoCode: jak LLM-y zaczynają tworzyć i weryfikować zadania konkursowe z bliską zgodnością z oficjalnymi sędziami

Wprowadzenie

Zespół badaczy z kilkunastu ośrodków akademickich i przemysłowych — w tym UCSD, NYU, UW, Princeton, UC Berkeley, MIT, OpenAI i innych — przedstawił AutoCode: system, który uczy duże modele językowe nie tylko rozwiązywać zadania programistyczne, ale też je tworzyć i weryfikować w sposób naśladujący pracę ludzkich autorów konkursów.

Dlaczego problem setting ma znaczenie

Wiele publicznych benchmarków kodowania daje fałszywe poczucie postępu: słabo sformułowane lub zbyt mało wymagające testy przepuszczają rozwiązania o błędnej złożoności albo oparte na nadużyciach. To z kolei wypacza sygnały uczenia ze wzmocnieniem i nagradza kruche strategie. AutoCode odwraca perspektywę — celem staje się generowanie pełnego procesu ustawiania zadania, włącznie z walidacją wejść, testami, logiką werdyktu i interakcją dla zadań dialogowych.

Rdzeń systemu: Validator → Generator → Checker (+ Interactor)

Pętlę AutoCode można rozumieć jako zamknięty cykl, w którym każdy element jest wybierany z kilku kandydatów wygenerowanych przez LLM i oceniany na dedykowanym zestawie przypadków testowych.

Validator: najpierw model tworzy mieszankę przykładów wejściowych — poprawnych i „prawie poprawnych” (np. naruszenia granic). Z proponowanych programów walidujących wybierany jest ten, który najlepiej odróżnia poprawne od niepoprawnych danych. To ogranicza ryzyko, że poprawne rozwiązania zostaną odrzucone przez źle sformułowane ograniczenia.

Generator: trzy komplementarne strategie generują testy: wyczerpujące małe dane (coverage brzegów), losowe i ekstremalne przypadki (przepełnienia, problemy z precyzją, kolizje hashy) oraz konstrukcje zaprojektowane do wywołania TLE, które ujawniają błędną złożoność. Wygenerowane przypadki przechodzą przez walidator, są deduplikowane i zbalansowane przed finalnym próbkowaniem.

Checker: moduł porównuje wyjścia kandydatów z referencyjnym rozwiązaniem przy złożonej logice werdyktu. AutoCode generuje 40 scenariuszy sprawdzających i trzy kandydackie checkery, a do ostatecznej selekcji przyjmuje ten z najwyższą trafnością na przygotowanych scenariuszach — upraszcza to problemy wynikające z niedookreślonych porównań wyjść.

Interactor: dla zadań interaktywnych AutoCode wprowadza podejście oparte na mutantach — tworzy drobne, logiczne modyfikacje referencji i wybiera interactor, który akceptuje prawdziwe rozwiązanie, a odrzuca mutacje, maksymalizując dyskryminację. To zamyka istotną lukę w publicznych zbiorach, które często unikały interaktywnych zadań.

Dwuetapowa weryfikacja i generowanie nowych zadań

Kluczowym komponentem jest dual verification: LLM tworzy zarówno „szybkie” referencyjne rozwiązanie o optymalnej złożoności, jak i prostsze, brute-force’owe rozwiązanie. Testy muszą potwierdzić zgodność referencji z brute-force na odpowiednich przypadkach (małych lub wyczerpujących). Dzięki temu protokół filtruje błędne pozycje — autorzy raportują odrzucenie około 27% wadliwych propozycji i podniesienie poprawności referencji z 86% do 94% przed oceną ludzką.

Po automatycznej selekcji eksperci oceniają pozostałe propozycje pod kątem rozwiązywalności, prawidłowości, jakości, nowości i trudności. Z wygenerowanych wariantów 61,6% uznano za przydatne do szkolenia modeli, 76,3% za wartościowe do treningu ludzi, a 3,2% osiągnęło poziom ICPC/IOI.

Wyniki empiryczne

Na zbiorze 7 538 istniejących zadań (195 988 ludzkich zgłoszeń) AutoCode osiągnął 91,1% zgodności z oficjalnymi werdyktami sędziów (FPR 3,7%, FNR 14,1%). To istotna poprawa względem poprzednich generatorów (72,9–81,0%). Na trudniejszym, niedawno opublikowanym zestawie 720 problemów z Codeforces — zawierającym również zadania interaktywne — pełna ramka osiągnęła 98,7% zgodności, z FPR 1,3% i FNR 1,2%.

Ablacje potwierdzają, że wszystkie trzy strategie generowania testów oraz optymalizacja promptów mają znaczenie: usunięcie optymalizacji promptów obniża zgodność do 98,0% i ponad dwukrotnie zwiększa FNR do 2,9%.

Ocena i ograniczenia

AutoCode to praktyczne i dobrze przemyślane rozwiązanie problemów ewaluacyjnych: formalizuje walidację ograniczeń, adversarialne pokrycie testami i obsługę protokołów interaktywnych, co przekłada się na czyściejsze sygnały dla RL i bardziej wiarygodne benchmarki.

Jednakże system nie jest panaceum. W starszym, szerszym zbiorze FNR pozostaje istotne (14,1%), co wskazuje, że pewne klasy prawidłowych rozwiązań wciąż mogą być odrzucane. Dwuetapowa weryfikacja opiera się na brute-force, który pełni rolę „źródła prawdy” tylko na małych lub wyczerpujących przypadkach — na dużych przypadkach może się zatrzymać (TLE). Poziom automatyzacji nadal wymaga sprawdzenia eksperckiego: autorzy raportują manualną selekcję i ocenę jakości przed przyjęciem zadań do treningu lub konkursu.

Wreszcie, choć mutant-based interactor znacząco poprawia ocenę interaktywnych zadań, metoda ta zależy od jakości mutacji i od tego, czy zmiany rzeczywiście reprezentują realistyczne błędy rozwiązań uczestników.

Wnioski

AutoCode wyznacza nowy standard w tworzeniu i weryfikacji zadań programistycznych przez LLM-y, przesuwając punkt ciężkości z biernego testowania rozwiązań na aktywne projektowanie i walidację zadań. Wyniki — w szczególności zgodność bliska 99% na wybranych zestawach — pokazują, że automatyczne systemy mogą zbliżyć się do sędziów używanych w praktyce konkursowej. Niemniej, pełna automatyzacja wymaga dalszej pracy: redukcji FNR w szerszych zbiorach, lepszej symulacji realistycznych błędów oraz stałej oceny eksperckiej dla finalnej jakości i oryginalności zadań.

Repozytorium projektu i artykuł źródłowy udostępniają kody, tutoriale i dodatkowe materiały, co ułatwi replikację i przełożenie AutoCode na kolejne benchmarki oraz programy oceniania kodu.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *