Kunstig intelligens til at læse og skrive kode

Kan man via kunstig intelligens skrive og læse kode? Og hvordan kan AI drevet tekstgenerering understøtte vores daglige arbejde? Det er nogle af de spørgsmål vi undersøgte på vores seneste hackathon, hvor vi testede hvad GPT-3 fra OpenAI kan.

Anders Flarup Tofthøj
Head of Delivery

Hvad er GPT-3?

GPT-3 er et neuralt netværk fra OpenAI, som er trænet på store mængder tekst fra internettet. GPT-3 kan skrive og forudsige tekst. Det gør den ved at kombinere input man giver den, med den viden som den allerede er trænet med i forvejen.

Følgende er et eksempel på hvordan den virker og bredden i hvad den kan bruges til. Hvor den grå kasse er det input man giver GPT-3. I den grønne kasse vises hvad GPT-3 anser som det næste naturlige i input teksten. Dvs. 💥🌟 som beskrivelse af Star Wars.

Flere eksempler kan ses her: OpenAI eksempler

Motivation - læs og skriv kode

Vi synes det er særligt interessant at GPT-3 kan oversætte almindeligt tekst til kode og kode til almindeligt tekst. Denne blog beskriver de forsøg vi har fortaget i løbet af et hackaton og hvad vi kom frem til. Vores mål var at se hvordan GPT-3 kunne hjælpe os i vores daglige kode-arbejde.

Forsøg #1 - Tekst til PowerShell

Vi startede med at teste om GPT-3'en kunne foreslå PowerShell kommandoer på baggrund af det vi bad den gøre med almindelig tekst. Herunder ses resultatet og som det fremgår, rammer den faktisk meget godt.

Forsøg #2 - Forklar koden i et pull request

GPT-3 kan oversætte kode til normal tekst. Det har vi bygget ind i en pipeline, så man som reviewer får hjælp til at forstå, hvad koden gør.

Vi har forsøgt med et powershell script og et meget simpel C# program, som det kan ses herunder.

Når koden comittes trigger en build validation pipeline, som med powershell undersøger, hvad der er ændret i koden og sender koden til OpenAI API'et. Svaret fra OpenAI API'et gemmes som en kommentar på pull requested, som det ses herunder.

Resultaterne:

  • This script calculates the size of files and directories in a given folder and its subfolders.

  • This script creates a thread and starts it. The thread then sleeps for 1000 milliseconds. If an error occurs, the console will print Error occurred.

Det er faktisk rammene for hvad den gør. Vi oplever dog også at GPT-3 kan komme med forskellige resultater på præcis samme kode. F.eks. kan den for C# programmet finde på at skrive at programmet skriver "Hello, world!" til konsollen. Hvilket jo er åbenlyst forkert.

Forsøg #3 - Autogenerer test data

Sidste forsøg gik ud på at få genereret test-data. En klassisk problemstilling til et system i testfasen er, at man har brug for realistisk test-data. Her er GPT-3 i stand til, dels at afkode hvad man beder om og trække på fakta, som den har indsamlet som del af træningen. Det kan ses i eksemplet herunder.

Konklusion

Vi er ret imponerede over hvor godt GPT-3 kan ramme ift. at forklare kode og det er et interessant område at udforske. Den vil måske komme til kort i mere komplekse problemstillinger, men det er et forsøg værd, at gå videre med og se om den faktisk vil være nyttig i praksis.

Genereringen af test-data overrasker også meget positivt, da den er i stand til hurtigt at danne store mængder realistisk test-data, hvilken der oplagt er brug for i de fleste IT projekter.