Gør AI bedre til at løse problemer i kodningskonkurrencer

Gør AI bedre til at løse problemer i kodningskonkurrencer

Interview Kommercielle store sprogmodellers evner til at løse konkurrencedygtige programmeringsproblemer kan øges markant ved omhyggeligt at styre deres processer gennem smart hurtig konstruktion.

For at demonstrere dette byggede Codium AI, baseret i Israel, AlphaCodium og frigivet softwaren på GitHub denne måned. AlphaCodium er ikke en stor sprogmodel i sig selv. I stedet er det en metode, der forbedrer problemløsningsevnerne i generative AI-værktøjer som GPT-4 ved at bruge det, CEO Itamar Friedman kalder "flow engineering."

Først føres et programmeringsspørgsmål til den underliggende store sprogmodel, og den bliver bedt om at beskrive og opsummere problemet. Disse oplysninger guider derefter, hvordan det skal begynde at løse problemet. AlphaCodium definerer ting, som hvad input og output skal være, når de kommer med en løsning. Alt dette er specificeret i naturligt sprog.

Modellen begynder derefter at generere kode, der stemmer overens med de specifikationer, den netop har beskrevet. Programmeringskonkurrencer, der beder deltagere om at kode til spec, giver typisk tests, der viser, hvad et script skal udskrive for et givet input. AlphaCodium genererer flere af disse testcases, og så kører den gennem mulige løsninger for at tjekke, om koden fungerer som forventet.

Hvis den ikke formår at matche nogen af ​​de output, der er defineret i nogen af ​​testene, genererer modellen forskellige løsninger, indtil de består alle testene, eller den fejler. Der kan opstå fejl, når dens kode ikke kompilerer eller bare er forkert.

Du kan se de forskellige trin i flow engineering-processen i diagrammet nedenfor. Det er stort set opdelt i en forbehandlingsfase, hvor systemet analyserer problemet i naturligt sprog, og et kode-iterationstrin, hvor det kører mulige løsninger mod offentlige og AI-genererede tests.

alphacodium

Alle de brede trin, der guider AlphaCodium til at generere kode for at løse problemer

"Vi tager ikke problemet og går til modellen og fortæller den, 'Hej, generer venligst den endelige løsning'," fortalte Friedman Registret. "Vi beder modellen om at omdefinere dette problem i punktopstillinger." At forenkle det og dele tingene op i bidder gør det lettere for modellen senere at generere kode til forskellige dele af en algoritme.

I bund og grund er flow engineering en procedure, der guider modellens problemløsningsproces ved at opdele den i veldefinerede trin. At bede den om at "opdele den genererede kode i små underfunktioner med meningsfulde navne og funktionalitet," får vi at vide, fører til færre fejl og gør koden nemmere at teste og rette.

"Vi brugte dybest set 95 procent af vores tid på flow engineering og kun 5 procent på prompt engineering, og vi ændrede ikke prompterne for hvert [trin]," tilføjede Friedman.

Ingeniører fra Codium testede deres models ydeevne på hundredvis af problemer, der blev brugt i verifikations- og testdelene af CodeForces-datasættet, som blev udarbejdet af Google DeepMind for to år siden. De hævder, at AlphaCodium var bedre til at løse kodningsproblemer end Google DeepMinds AlphaCode- og AlphaCode2-modeller.

I resultater rapporteret i en arXiv papir [PDF], AlphaCodium var i stand til at svare korrekt på 44 procent af spørgsmålene sammenlignet med AlphaCodes 24 procent, mens det kun genererede fem løsninger sammenlignet med AlphaCodes ti valgte løsninger til 107 valideringsproblemer. Interessant nok blev forskellen indsnævret, da det kom til 165 testproblemer, hvor AlphaCodium løser 29 procent sammenlignet med AlphaCodes 28 procent.

AlphaCode vælger de ti mest lovende løsninger ud af titusindvis eller hundredtusindvis af mulige scripts, det genererer - hvilket gør det beregningsintensivt at køre.

"Vi fokuserede meget mere på hele testforløbet," sagde Friedman. "For [Google] gjorde de så meget arbejde på generationen. De forsøger at generere hundredvis af andre muligheder, og vi genererer meget få løsninger, men tester dem rigtig godt for at guide forbedringen af ​​koden."

AlphaCodium er en lille smule bedre end Google DeepMinds seneste AlphaCode2-model, der er 10,000 gange mere effektiv end sin forgænger AlphaCode, tilføjede han.

alphacodium_2

Hvordan AlphaCodium sammenligner med andre state-of-the-art modeller med hensyn til nøjagtighed og effektivitet

Friedman sagde, at han var overbevist om, at AlphaCodiums ydeevne ikke skyldes datalækage, hvor den underliggende model er blevet trænet og testet på de samme problemer. GPT-4-versionen, der driver AlphaCodium, blev trænet i tekst skrabet fra internettet indtil september 2021, hvorimod de problemer, det testede sit system på, blev taget fra det førnævnte CodeForces-datasæt, der blev frigivet meget senere.

En bedre æble-til-æble sammenligning, der vurderer flow engineering-processen, er imidlertid at se på GPT-4's evne til at løse de samme spørgsmål med og uden at anvende AlphaCodium. Almindelig gammel GPT-4 kunne kun besvare 19 og 12 procent af problemerne i henholdsvis validerings- og testsættet korrekt sammenlignet med den AlphaCodium-drevne variants 44 og 29 procent.

Kort sagt ser det ud til, at implementering af en omhyggelig pipeline, der genererer yderligere data til at guide, hvordan kode genereres og forbedre testprocessen, kan være mere effektiv end at prøve at træne en stor sprogmodel fra bunden.

Codium udgav for nylig et nyt værktøj til at understøtte Python-udviklere, som nu kan ringe til AlphaCodium for direkte at løse et kodningsproblem i deres IDE. Du kan lege med det her. ®

Tidsstempel:

Mere fra Registret