Blog

Vad är GitLab Duo?

SEP 3, 2024

I denna nya värld, där de flesta produkter har inbyggd AI (med varierande grad av intelligens), tillför GitLab Duo kraftfulla generativa AI-funktioner till GitLab-plattformen.

Matt Muschol

Matt is a software specialist with over 25 years of experience. He is the founder of Swiftix Software and has a history of working with Atlassian tools, for which he provides mentoring and software consultancy services.

Duo ger dig hjälp både i det webbaserade användargränssnittet och när du skriver kod i en IDE som IntelliJ IDEA eller Microsoft Visual Studio.

GitLab Duo kan hjälpa till med både kodrelaterade och andra uppgifter. Här är en lista över vad Duo kan göra för dig.

  • Duo ChatInteragera med Duo för att få svar på i stort sett vad som helst.

  • Code SuggestionsAnvänd naturligt språk för att beskriva dina krav och få kod genererad åt dig.

  • Code ExplanationsFå förklaringar av komplexa kodavsnitt på naturligt språk.

  • Test GenerationGenerera regressionstester för kodavsnitt.

  • Suggested ReviewersLägg till de mest lämpliga granskarna i merge requests.

  • Interagera med Duo för att få svar på i stort sett vad som helst.

  • Använd naturligt språk för att beskriva dina krav och få kod genererad åt dig.

  • Få förklaringar av komplexa kodavsnitt på naturligt språk.

  • Generera regressionstester för kodavsnitt.

  • Lägg till de mest lämpliga granskarna i merge requests.

Det finns även ytterligare funktioner som för närvarande är i beta, till exempel automatisk generering av beskrivningar för merge requests baserat på kodändringar och åtgärdande av säkerhetssårbarheter som identifierats genom SAST-skanning (Static Application Security Testing).

Listan över funktioner i Duo fortsätter att växa och du kan följa den här.

Få åtkomst till Duo

Innan du kan använda GitLab Duo måste en Duo Pro- eller Duo Enterprise-licens vara tilldelad till ditt konto*. Observera att GitLab Duo är ett tillägg som är separat från din GitLab-prenumeration och att du inte behöver köpa det för alla.

Du kan köpa färre licenser för GitLab Duo än det totala antalet GitLab-licenser och sedan välja vilka som ska ha åtkomst. Det innebär dock att du inte kan tilldela en Duo-licens till en användare som saknar åtkomst till GitLab i samma instans (för självhanterade instanser eller grupper på toppnivå, för GitLab.com).

*Observera att vissa Duo-funktioner vid tidpunkten då detta skrevs var tillgängliga utan prenumeration. För att få åtkomst till alla funktioner, inklusive Code Suggestions, behöver du dock en Duo-licens tilldelad till ditt GitLab-konto.

GitLab Duo i webbgränssnittet

När du har tilldelats en Duo-licens kommer du att börja se nya knappar i GitLabs webbgränssnitt som gör att du kan använda Duo för att generera information eller utföra åtgärder åt dig. Knapparna har GitLab Duo-logotypen.

När du till exempel skapar en ny merge request finns det en ny knapp (markerad med gult nedan) som gör att du automatiskt kan generera en beskrivning av din merge request baserat på kodändringarna:

New merge request

Ändringen i min branch var mycket liten, men den sammanfattas ganska väl i beskrivningen som Duo har genererat här.

Ett annat bra exempel på hur du kan använda Duo i webbgränssnittet är när du tittar på GitLab issues. Det är vanligt att en GitLab issue har många kommentarer, och ibland kan det vara svårt att få en helhetsbild.

Duo kan sammanfatta kommentarerna och ge dig en punktlista hämtad från kommentarsfältet:

Activity

Kom igång med Code Suggestions

Code Suggestions är särskilt en av de mest spännande funktionerna för utvecklare.

När du arbetar i en IDE behöver du installera ett tillägg för att kunna använda Code Suggestions medan du skriver. Tillägget finns för de populäraste IDE:erna, som VS Code, Visual Studio, IntelliJ IDEA och Neovim.

När du har installerat tillägget GitLab Workflow får du inte bara kodförslag, utan även följande funktioner direkt i IDE:n:

  • Interagera med Merge Requests

  • Interagera med GitLab Issues

  • Interagera med GitLab Duo Chat

Efter installationen behöver du logga in på GitLab från tillägget i din IDE. Du kan antingen använda OAuth-baserad inloggning eller lägga till en GitLab personal access token (med API-scope), beroende på vad som passar dig bäst.

Du kan sedan börja använda kodförslag genom att skriva en kommentar i koden på naturligt språk. I min NodeJS-baserade webbserver ville jag till exempel läsa HTML-text från en fil och returnera den som svar på en GET-begäran till servern.

Gitlab

Som du ser förstår Duo utifrån sammanhanget att jag skriver en ExpressJS-webbserver, och koden som föreslås (visas i grått) passar i det sammanhanget. Men du kan också se att om jag hade godkänt den koden, skulle jag ha fått något som inte är rimligt.

Anledningen är enkel – precis som med all teknik behöver du veta hur du använder den för att få ut så mycket som möjligt av den. Jag var helt enkelt inte tillräckligt specifik, och Code Suggestions är bara så bra som dina frågor.

Låt oss titta på ett annat exempel. Jag vill att servern ska svara på en GET-begäran som tar en e-postadress som indata och returnerar innehållet i en fil som matchar den.

Det första steget är att skriva kommentaren och sedan se vad som föreslås. Som du ser är min beskrivning ganska vag, men den genererade ändå det jag ville ha.

Gitlab_duo

Jag godkänner därför förslaget genom att trycka på TAB-tangenten.

Nu är kodstycket bra, men det validerar inte att frågeparametern ”email” faktiskt ser ut som en e-postadress. Låt oss därför be Duo att generera kod som validerar den med ett reguljärt uttryck.

Gitlab.

Det där är faktiskt riktigt coolt. Indraget är inte helt rätt, men koden är i stort sett klar. Jag godkänner därför det kodstycket också.

Som du ser kan jag, genom att använda naturligt språk i kommentarer, be GitLab Duo att generera om kod åt mig. Det kan krävas lite testande innan du får rätt kod, men håll ut och fortsätt skriva kommentarer och förfina dem tills du får det du vill ha.

Använda Code Explanations

Nästa intressanta funktion för utvecklare är Code Explanations. Har du någon gång stött på kod som du inte riktigt förstår? I föregående avsnitt genererade vi till exempel kod som validerar att en sträng ser ut som en e-postadress.

Om du inte är van vid reguljära uttryck kan de vara svåra att förstå. Låt oss därför be Duo att förklara det för oss.

För att få en förklaring använder du Duo Chat med kommandot ”/explain”. Till exempel:

/explain const emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;

Du kan använda Duo Chat antingen i webbgränssnittet eller direkt från din IDE. I det här fallet väljer vi IDE:n:

Code explanation

Där ser du – den förklarar i detalj vad det reguljära uttrycket gör och hur det fungerar.

Detta fungerar både för enskilda rader och hela funktioner. Låt oss prova en liten funktion:

Gitlab code

Här förklarar den vad koden gör och hur den uppnår sitt mål. Däremot förenklar Code Explanations inte kod åt dig. Mitt favoritexempel är komplexa booleska uttryck som kan förenklas med lite boolesk algebra.

När du ger GitLab Duo Chat så komplexa uttryck förklarar den korrekt uttrycket och under vilka förutsättningar det är sant eller falskt, men den tar inte nästa steg och ger dig ett nytt uttryck som är ekvivalent och mycket enklare (vilket är ganska synd).

Kvaliteten på generativ AI

Precis som med de flesta funktioner inom generativ AI beror kvaliteten på svaret på två faktorer:

  1. Frågan/instruktionen

  2. AI-modellen i sig

När det gäller Code Suggestions är det osannolikt att vaga instruktioner i kommentarer leder till tillfredsställande resultat. Därför måste vi lära oss att skriva kommentarer på naturligt språk på ett sätt som gör det enkelt för en generativ AI-modell som GitLab Duo att ge bra förslag. Och ibland blir det helt enkelt fel, precis som med all generativ AI. Det visar att de här modellerna inte är ofelbara, även när de får bra indata.

Sammantaget ger GitLab Duo riktigt bra Code Suggestions för många scenarier, arkitekturer och språk. Vi har främst använt det med Java och JavaScript (inklusive ReactJS-kod för frontend), och resultaten är mycket bra. Även om GitLab Duo ibland är imponerande är det viktigt att notera att det inte ersätter programmeraren och inte heller är avsett att göra det. Det är utformat för att hjälpa programmerare att producera bättre kod snabbare, och det gör det bra.

Med allt detta sagt finns det, trots hur bra det är, en tydlig brist i GitLab Duo som förvånade mig lite – jag har inte kunnat få någon hjälp av Duo med .gitlab-ci.yml-filer. Eftersom Duo är utformat för GitLab skulle man kunna tro att det även kan hjälpa mig att skriva min CI-fil! Tyvärr gör det inte det, men jag ser fram emot dagen då det kan. Håll utkik här.

  • GitLab

Subscribe to our newsletter