Blog

Mikä GitLab Duo on?

SEP 3, 2024

Tässä uudessa maailmassa, jossa useimpiin tuotteisiin on rakennettu tekoälyä vaihtelevalla älykkyystasolla, GitLab Duo tuo tehokkaita generatiivisen tekoälyn ominaisuuksia GitLab-alustalle.

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 auttaa sekä verkkopohjaisessa käyttöliittymässä että kirjoitettaessa koodia IDE-ympäristössä, kuten IntelliJ IDEA:ssa tai Microsoft Visual Studiossa.

GitLab Duo auttaa sekä koodiin että muihin kuin koodiin liittyvissä tehtävissä. Tässä on lista asioista, joissa Duo voi auttaa sinua.

  • Duo ChatOle vuorovaikutuksessa Duon kanssa ja saat vastauksia lähes mihin tahansa.

  • Code SuggestionsKuvaile tarpeesi luonnollisella kielellä, niin saat koodia luotuna puolestasi.

  • Code ExplanationsSaat luonnollisella kielellä selityksiä monimutkaisille koodikokonaisuuksille.

  • Test GenerationLuo regressiotestejä koodikokonaisuuksille.

  • Suggested ReviewersLisää merge requesteihin sopivimmat katselmoijat.

  • Ole vuorovaikutuksessa Duon kanssa ja saat vastauksia lähes mihin tahansa.

  • Kuvaile tarpeesi luonnollisella kielellä, niin saat koodia luotuna puolestasi.

  • Saat luonnollisella kielellä selityksiä monimutkaisille koodikokonaisuuksille.

  • Luo regressiotestejä koodikokonaisuuksille.

  • Lisää merge requesteihin sopivimmat katselmoijat.

Parhaillaan betavaiheessa on myös lisäominaisuuksia, kuten merge requestien kuvausten automaattinen luonti koodimuutosten perusteella sekä SAST-skannauksessa (Static Application Security Testing) havaittujen tietoturva-aukkojen korjaaminen.

Duon ominaisuuslista kasvaa jatkuvasti. Voit seurata sitä täältä.

Duon käyttöönotto

Ennen kuin voit käyttää GitLab Duoa, tilillesi on määritettävä Duo Pro- tai Duo Enterprise -lisenssi*. Huomaa, että GitLab Duo on GitLab-tilauksestasi erillinen lisäosa, eikä sitä tarvitse ostaa kaikille.

Voit ostaa GitLab Duolle vähemmän käyttöoikeuksia kuin GitLabille ja valita sitten, kenellä on pääsy siihen. Tämä tarkoittaa kuitenkin sitä, että et voi määrittää Duo-lisenssiä käyttäjälle, jolla ei ole pääsyä GitLabiin samassa instanssissa (self-managed-ympäristöissä tai GitLab.comin ylimmän tason ryhmissä).

*Huomaa, että kirjoitushetkellä joitakin Duon ominaisuuksia oli käytettävissä ilman tilausta. Jotta pääset käyttämään kaikkia ominaisuuksia, mukaan lukien Code Suggestions, GitLab-tilillesi on kuitenkin määritettävä Duo-lisenssi.

GitLab Duo verkkokäyttöliittymässä

Kun sinulle on määritetty Duo-lisenssi, GitLabin verkkokäyttöliittymään ilmestyy uusia painikkeita, joiden avulla voit käyttää Duoa tietojen luomiseen tai toimintojen suorittamiseen puolestasi. Painikkeissa on GitLab Duo -logo.

Kun esimerkiksi luot uutta merge requestia, käytettävissä on uusi painike (korostettu alla keltaisella), jonka avulla voit luoda merge requesteillesi automaattisesti kuvauksen koodimuutosten perusteella:

New merge request

Haarani muutos oli hyvin pieni, mutta Duo on tiivistänyt sen varsin ytimekkäästi tässä luomaansa kuvaukseen.

Toinen hyvä esimerkki Duon käytöstä verkkokäyttöliittymässä on GitLab-issueiden tarkastelu. GitLab-issuessa on usein paljon kommentteja, jolloin kokonaiskuvaa voi olla vaikea hahmottaa.

Duo voi tiivistää kommentit ja muodostaa sinulle kommenttiosiosta poimitun luettelon:

Activity

Code Suggestionsin käytön aloittaminen

Code Suggestions on erityisen kiinnostava ominaisuus kehittäjille.

Kun työskentelet IDE:ssä, sinun on asennettava laajennus, jotta voit käyttää Code Suggestionsia kirjoittaessasi. Laajennus on saatavilla suosituimpiin IDE:ihin, kuten VS Codeen, Visual Studioon, IntelliJ IDEAan ja Neovimiin.

Kun olet asentanut GitLab Workflow -laajennuksen, saat koodiehdotusten lisäksi seuraavat ominaisuudet suoraan IDE:stä:

  • Työskentele Merge Requestien kanssa

  • Työskentele GitLab Issuesin kanssa

  • Työskentele GitLab Duo Chatissa

Asennuksen jälkeen sinun on kirjauduttava GitLabiin IDE:si laajennuksen kautta. Voit käyttää joko OAuth-pohjaista kirjautumista tai lisätä GitLabin henkilökohtaisen käyttöoikeustunnuksen (API-scope), sen mukaan, kumpi sopii sinulle paremmin.

Voit aloittaa koodiehdotusten käytön kirjoittamalla koodiisi luonnollisella kielellä kommentin. Esimerkiksi NodeJS-pohjaisessa web-palvelimessani halusin lukea HTML-tekstin tiedostosta ja palauttaa sen vastauksena palvelimelleni tehtyyn GET-pyyntöön.

Gitlab

Kuten näet, Duo tunnistaa kontekstista, että kirjoitan ExpressJS-web-palvelinta, ja sen ehdottama koodi (harmaalla näkyvä) sopii tähän kontekstiin. Voit kuitenkin myös nähdä, että jos hyväksyisin kyseisen koodin, päätyisin ratkaisuun, jossa ei ole järkeä.

Syy on yksinkertainen: kuten kaikkien teknologioiden kohdalla, siitä saa eniten irti, kun sitä osaa käyttää. En vain ollut tarpeeksi tarkka, ja Code Suggestions on vain niin hyvä kuin kysymyksesi.

Katsotaan siis toista esimerkkiä. Haluan palvelimeni vastaavan GET-pyyntöön, joka vastaanottaa sähköpostiosoitteen syötteenä ja palauttaa sitä vastaavan tiedoston sisällön.

Ensimmäinen vaihe on kirjoittaa kommentti ja katsoa, mitä se ehdottaa. Kuten näet, kuvaukseni on melko epämääräinen, mutta se tuotti silti haluamani lopputuloksen.

Gitlab_duo

Hyväksyn siis ehdotuksen painamalla TAB-näppäintä.

Koodinpätkä on nyt hyvä, mutta se ei oikeastaan varmista, että kyselyparametri ”email” näyttää sähköpostiosoitteelta. Pyydetään siis Duoa luomaan koodi, joka validoi sen säännöllisellä lausekkeella.

Gitlab.

Tämä on itse asiassa aika hienoa. Sisennys ei ole aivan kohdallaan, mutta koodi on muuten lähes valmis. Hyväksyn siis jälleen tämän koodinpätkän.

Kuten näet, voin pyytää GitLab Duoa luomaan koodin uudelleen käyttämällä kommenteissa luonnollista kieltä. On hyvä huomata, että oikean koodin saaminen voi vaatia hieman kokeilua, mutta jatka kommenttien kirjoittamista ja tarkentamista, kunnes saat haluamasi lopputuloksen.

Code Explanationsin käyttäminen

Seuraava kehittäjiä kiinnostava ominaisuus on Code Explanations. Oletko koskaan törmännyt koodiin, jota et aivan ymmärrä? Edellisessä osiossa loimme esimerkiksi koodia, joka varmistaa, että merkkijono näyttää sähköpostiosoitteelta.

Jos säännölliset lausekkeet eivät ole sinulle tuttuja, niiden ymmärtäminen voi olla hankalaa. Pyydetään siis Duoa selittämään se meille.

Saat selityksen käyttämällä Duo Chatia ”/explain”-komennolla. Esimerkiksi:

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

Voit käyttää Duo Chatia joko web-käyttöliittymässä tai suoraan IDE:stäsi. Tässä tapauksessa käytämme IDEä:

Code explanation

Siinä se: se selittää yksityiskohtaisesti, mitä säännöllinen lauseke tekee ja miten se toimii.

Tämä toimii sekä yksittäisillä riveillä että kokonaisilla funktioilla. Kokeillaan pientä esimerkkiä:

Gitlab code

Tässä se selittää, mitä koodi tekee ja miten se saavuttaa tavoitteensa. Code Explanations ei kuitenkaan yksinkertaista koodia puolestasi. Suosikkiesimerkkini ovat monimutkaiset Boolen lausekkeet, joita voi yksinkertaistaa pienellä määrällä Boolen algebraa.

Kun syötät GitLab Duo Chatille näin monimutkaisia lausekkeita, se selittää oikein lausekkeen sekä sen, millä ehdoin se olisi tosi tai epätosi. Se ei kuitenkaan ota seuraavaa askelta ja anna uutta, vastaavaa mutta huomattavasti yksinkertaisempaa lauseketta (mikä on melko harmillista).

Generatiivisen tekoälyn laatu

Kuten useimpien generatiivisen tekoälyn toimintojen kohdalla, vastauksen laatu riippuu kahdesta tekijästä:

  1. Kysymys tai ohje

  2. Tekoälymalli itse

Code Suggestionsin kohdalla kommenteissa annetut epämääräiset ohjeet eivät todennäköisesti johda tyydyttäviin tuloksiin. Siksi meidän on opittava kirjoittamaan luonnollisella kielellä kommentteja siten, että GitLab Duon kaltainen generatiivinen tekoälymalli voi tehdä hyviä ehdotuksia helposti. Ja toisinaan se, kuten kaikki generatiivinen tekoäly, yksinkertaisesti erehtyy. Tämä osoittaa, etteivät nämä mallit ole erehtymättömiä, vaikka niiden syötteet olisivat hyviä.

Kaiken kaikkiaan GitLab Duo tarjoaa varsin hyviä Code Suggestions -ehdotuksia moniin käyttötapauksiin, arkkitehtuureihin ja ohjelmointikieliin. Olemme käyttäneet sitä enimmäkseen Javan ja JavaScriptin kanssa, mukaan lukien ReactJS-front-end-koodi, ja tulokset ovat erittäin hyviä. Vaikka GitLab Duo on ajoittain vaikuttava, on tärkeää huomata, ettei se korvaa ohjelmoijaa eikä edes pyri siihen. Se on suunniteltu auttamaan ohjelmoijia tuottamaan parempaa koodia nopeammin, ja siinä se onnistuu hyvin.

Kaikesta tästä huolimatta GitLab Duosta puuttuu yksi ilmeinen ominaisuus, joka yllätti minut hieman: en ole saanut Duolta lainkaan apua .gitlab-ci.yml-tiedostojen kanssa. Koska Duo on suunniteltu GitLabia varten, voisi kuvitella, että se auttaisi minua myös CI-tiedoston kirjoittamisessa! Valitettavasti näin ei ole, mutta odotan päivää, jolloin se onnistuu. Seuraa tätä tilaa.

  • GitLab

Subscribe to our newsletter