Voitot:
- Kyky selittää kuinka koodausassistentti toimii kielimallina ja käsitteet tunnuksesta, kontekstiikkunasta ja hallusinaatioista
- Kyky erottaa henkisen kartan avulla ohjelmistotehtävät, joissa tekoäly on vahva ja heikko
- Kyky soveltaa ehdota-tuota-tarkista perustyökiertoa omiin tehtäviinsä
Ohjelmistokehittäjän päivä kuluu harvoin "koodin kirjoittamiseen tyhjästä". Reaaliaikainen; Jonkun muun kirjoittaman koodin lukeminen, bugin toistaminen, lokin skannaus (sovelluksen ajon aikana tuottamat lokirivit), testien kirjoittaminen, PR:n (pull request – yhdistämispyyntö, jossa koodinmuutos lähetetään tiimin tarkastettavaksi) selityksen ja dokumentaation päivittäminen. Tekoäly (AI) on nopeuden kertoja, joka voi koskettaa lähes kaikkia näitä ennennäkemättömiä töitä. Mutta ensimmäinen edellytys sen turvalliselle käytölle on ymmärtää oikein, mikä se on ja mitä se ei ole.
Tässä osiossa selitämme ensin koodausavustajan taustalla olevan tekniikan selkeällä kielellä; sitten luomme henkisen kartan mallin vahvuuksista ja heikkouksista; Lopuksi luomme perustyöskentelyn, jota käytämme koko moduulin ajan: ehdota, valmista, tarkista. Nämä kolme vaihetta ovat seuraavan yhdentoista yksikön selkäranka.
Huomautus: Tämä moduuli on yleinen koulutus. Turvallisuuskriittisissä ohjelmistoissa (maksujen käsittely, terveydenhuolto, todennus, kriittinen infrastruktuuri) tekoälytulostus ei korvaa pätevän insinöörin suorittamaa tarkistusta ja hyväksyntää. AI on avustaja; Allekirjoittaja on insinööri.
Mitä koodausassistentti todella tekee?
Useimmat koodausavustajat perustuvat suureen kielimalliin (LLM – tekoäly, joka on koulutettu valtaviin määriin tekstiä ja koodia ja joka ennustaa seuraavan todennäköisimmän "palan"). Malli ei "ymmärrä" koodia kuin ihminen; Se luo todennäköisimmän jatkon sille antamallesi kontekstille, perustuen kuvioihin, jotka se oppii valtavasta esimerkkijoukosta. Tämä näennäisesti yksinkertainen mekanismi tuottaa yllättävän taitavia tuloksia käytännössä - koska useimmat ohjelmistot koostuvat toistuvista kuvioista: HTTP-pyyntö, silmukka, nollatarkistus, testikuvio.
Kolme termiä ovat tässä kriittisiä. Token on pienin yksikkö, jonka malli käsittelee jakamalla tekstin; Se on suunnilleen muutama kirjain tai sanan osa. Kontekstiikkuna on merkkien määrä, jonka malli voi "nähdä" kerralla; Koodisi, virheilmoituksesi ja ohjeesi tulee mahtua tähän ikkunaan. Kehote on kaikki mallille antamasi ohjeet ja konteksti. Saamasi tulosteen laatu riippuu suoraan näistä kahdesta: mitä paremman kontekstin ja selkeämmät ohjeet annat mallille, sitä paremman tuloksen saat. Huono syöttö tuottaa huonoja tuloksia, vaikka kyseessä olisikin älykäs malli – ohjelmistojen klassinen "roskat sisään, roskat ulos" -sääntö pätee myös tekoälyyn.
Vahvuudet ja heikkoudet Kartta
Tekoälyn ohjaamiseksi oikeisiin töihin on tiedettävä, missä se loistaa ja missä se kompastuu. Tämän kartan ulkoa oppiminen saa sinut miettimään jokaisen seuraavan tehtävän yhteydessä: "Pitäisikö minun ulkoistaa tämä työ tekoälylle vai tehdä se itse?" Sen avulla voit vastata kysymykseen sekunneissa.
Sen vahvuudet ovat: Kaaviokoodin luominen, kääntäminen kielestä toiselle, säännöllisen lausekkeen kirjoittaminen (regex), funktion kuvaaminen, testirungon luominen, virheilmoituksen tulkitseminen, dokumentaation laatiminen, muuttujien/funktioiden nimien ehdottaminen ja pienet uudelleenmuodostukset (koodin rakenteen parantaminen muuttamatta sen käyttäytymistä).
Heikkoudet: Yrityskohtaisten liiketoimintasääntöjen tunteminen, koko koodipohjan muistaminen, koodin todellinen suorittaminen ja tarkistaminen, uusimpien kirjastoversioiden varma tunteminen, tietoturva-aukkojen havaitseminen sataprosenttisella takuulla. Vaarallisin on hallusinaatiot: malli keksii olemattoman funktion, kirjaston tai API:n (sovellusten välisen tiedonvaihdon mahdollistava käyttöliittymä) erittäin vakuuttavalla kielellä. Tämä riski voidaan itse asiassa kääntää eduksesi, koska koodi, toisin kuin pelkkä teksti, voidaan testata, jotta voidaan nähdä, toimiiko se - älä vain ohita vahvistusvaihetta.
Tehtävän tyyppi
AI:n rooli
miehen rooli
Valmista kattilalevy/luuranko
tuottaa luonnosta
Mukautuu, arvioi
Koodin kuvaus
Antaa nopean yhteenvedon
Tarkistaa koodin kriittisen osan
kokeiden kirjoittaminen
Case ehdottaa
Vahvistaa kattavuuden ja tarkkuuden
Turvallisuuskriittinen logiikka
hyödyllinen idea
Päätös ja vastuu ovat täysin ihmisillä.
API/kirjaston käyttö
Luo näytteen
Vahvistaa olemassaolon ja version
arkkitehtoninen päätös
Erilaisia vaihtoehtoja
Valitsee ja puolustaa tietäen kontekstin
Askel askeleelta: perustyökierto
- Selvitä tehtävä. Jos et voi kirjoittaa haluamaasi yhteen lauseeseen, ei myöskään malli. Mitä aikaisemmin epävarmuus tunkeutuu syötteeseen, sitä enemmän se kasvaa tuotoksessa.
- Anna konteksti. Lisää kehotteeseen asianmukainen koodi, täydellinen virheilmoitus, kieli-/kehysversio ja rajoitukset. Älä sano "korjaa tämä", sano "Python 3.11, FastAPI 0.110; tämä toiminto antaa 500 virheen, se räjähtää, kun pyynnön runko on tyhjä".
- Asetuksen rooli ja muoto. Kehys, kuten "Olet vanhempi Go-kehittäjä; anna vain koodi ja kahden lauseen perustelu" keskittää tulosteen.
- Pyydä pientä. Jaa se vaiheisiin yhden jättimäisen pyynnön sijaan; Tarkista jokainen vaihe erikseen. Suuret muutokset ovat riskialttiita, koska niitä on vaikea todentaa ja ne voivat piilottaa virheitä.
- Vahvista. Suorita se, testaa ja lue visuaalisesti. Vahvistamaton AI-koodi on "luonnos", ei "ratkaisu". Tämä on syklin ei-neuvoteltavin vaihe.
Kolme minikoteloa
Tapaus 1 – Ajansäästöt ovat todellisia, mutta vaatimattomia. Kun tiimi rakensi uusia CRUD-päätepisteitä (Luo-Lue-Päivitä-Poista) tekoälyllä, ensimmäisen luonnoksen aika putosi noin 40 minuutista 8 minuuttiin. Tarkastuksen ja testauksen jälkeen kokonaisaika oli kuitenkin 25 minuuttia; niin todellinen voitto on 40-25, noin 38%. Tämä nopeus mitattuna sen sijaan, että odotettiin "olemme kiihtyneet 10 kertaa", on kestävä voitto.
Tapaus 2 – Hallusinaatiot ovat kalliita. Kehittäjä käytti tekoälyn ehdottamaa requests.get_json()-kutsua ilman vahvistusta; Tällaista menetelmää ei ollut (täsmälleen vastaus.json()). 20 minuuttia hävisi, kun koodia ei käännetty. Yksinkertainen "onko tämä menetelmä todella olemassa?" vahvistus nollaisi menetyksen.
Tapaus 3 – Hyvä konteksti kaksinkertaistaa tuloksen. Samalle bugille yksi kehittäjä kirjoitti yksinkertaisesti "Saan virheen" ja toinen lisäsi täyden pinon jäljen, version ja syöttönäytteen. Jälkimmäinen sai oikean ratkaisun ensimmäisellä yrityksellä; Ensimmäinen käytti kolme kierrosta. Ero ei ollut mallissa, vaan syötteessä.
Neljä kopioitavaa mallia
Yleiskäyttöinen, tehokas käynnistyskehote:
Rooli: Olet kokenut {{language}} kehittäjä. Tehtävä: {{what_want}}Konteksti:- Kehys/versio: {{framework_and_version}}- Rajoitukset: {{suorituskyky, tyyli, riippuvuussäännöt}}Säännöt:- Älä käytä olematonta kirjastoa/toimintoa; Jos et ole varma, merkitse se "vahvista". - Anna ensin lyhyt suunnitelma, sitten koodi, sitten 2 virkettä perusteluja. - Tuota testattava, toimiva koodi.
Suodattaaksesi epävarmuuden takaisin malliin:
Ennen kuin ratkaiset alla olevan tehtävän, luettele kysymykseksi VÄHINTÄÄN 3 kohtaa, jotka puuttuvat tai ovat epäselviä. ÄLÄ kirjoita koodia ennen kuin vastaan. Tehtävä: {{tehtävä}}
Tulostuksen itsetarkistus:
Olet tuottanut seuraavan koodin. Muuta nyt rooliasi ja arvostele tätä koodia: - Luettele 3 tapausta (reunatapauksia), jotka eivät ehkä toimi. - Onko olemassa sovellusliittymiä/toimintoja, jotka olisit voinut keksiä? Merkitse. - Anna korjattu versio. Koodi:{{koodi}}
Päätöksen jakaminen vaihtoehdoiksi:
Ehdota 2-3 ratkaisutapaa {{ongelmalle}}. Jokaiselle: lyhyt kuvaus, plus/miinus, milloin valita. Anna taulukkomuodossa. ÄLÄ valitse minulle; selventää vain vaihtoehto.
Heikko kehote / Vahva kehote
Heikko: "Korjaa tämän koodin virhe." (Mikä virhe? Mikä kieli? Mikä on odotettu käyttäytyminen?)
Vahva: "Python 3.11 / FastAPI 0.110. Seuraava päätepiste palauttaa 500 KeyErrorilla, kun pyynnön runko tulee tyhjäksi; Haluan sen palauttavan 400 ja merkityksellisen viestin tyhjään runkoon. Selitä ensin syy, anna sitten korjattu funktio ja kirjoita sitten testi tälle skenaariolle. [koodi]"
Tehokas versio; Se antaa kielen, version, todellisen virheen, odotetun toiminnan ja tulostusmuodon. Mallin ei tarvitse enää ennustaa.
Yleisiä virheitä
- Luottaminen ilman vahvistusta. Yleisin ja kallein virhe. Älä sano "ratkaistu", ennen kuin koodi on käännetty ja testattu.
- Kysymyksiä ilman kontekstia. Vastaus ilman versiota, virhetekstiä ja rajoituksia on yleinen ja usein väärä.
- Yksi suuri pyyntö. Se, että 300 rivin tuotantoa ei voi pyytää ja tarkistaa kerralla, tekee virheistä näkymättömiä.
- Mallin itseluottamuksen pitäminen todisteena. AI voi luottavaisesti sanoa jotain väärin; Ääni ei ole tarkkuuden osoitus.
- Yrityksen salaisuuden liittäminen satunnaisesti. Yksityisiä avaimia, asiakastietoja tai yksityistä lähdekoodia ei saa syöttää hyväksymättömiin työkaluihin (syvennetään tähän aiheeseen osiossa 10).
Vinkki: Käsittele jokaista tekoälytulostusta "tämä on luonnos". Tämä yksittäinen henkinen tapa sammuttaa suurimman osan riskeistä, joita näet koko moduulin aikana.
Yhteenvetona
Koodausavustaja on kielimalli, joka ennustaa seuraavan todennäköisimmän fragmentin; Se ei ymmärrä koodia, se tuottaa kuvioita. Siksi hän on vahva toistuvissa, kaavamaisissa töissä; Sitä tulee käyttää varoen töissä, jotka vaativat asiayhteyteen liittyvän vahvistuksen. Suurin riski on hallusinaatiot, ja ainoa vastalääke on verifiointi. Kuri, jota noudatamme koko moduulin ajan, on selkeä: selvennä tehtävä, anna konteksti, pyydä pientä, validoi jokainen tulos.
Sovellustehtävä
Kirjoita muistiin kolme viime viikolla tekemäsi ohjelmistotehtävää (esim. virheenkorjaus, testi, README-päivitys). Katso kunkin "vahvuuksien ja heikkouksien karttaa" ja kuvaile yhdellä lauseella, mikä sinun ja tekoälyn rooli olisi, jos AI tekisi tämän. Anna sitten yksi näistä tehtävistä tekoälylle yllä olevan "aloituskehote" -mallin avulla ja suorita ja tarkista tulos; Huomaa, kuinka monta minuuttia säästät ja kuinka monta virhettä jouduit korjaamaan.
tarkistuslista
- [ ] Tajusin, että LLM tuottaa kuvioita, ei "ymmärtää" koodia.
- [ ] Pystyn selittämään sanakkeen, kontekstiikkunan ja kehotteen käsitteet yhdellä lauseella.
- [ ] Pystyn erottamaan tehtävätyypit, joissa tekoäly on vahva ja heikko.
- [ ] Tiedän mitä hallusinaatio on ja ainoa vastalääke on verifiointi.
- [ ] Sovitin "ehdottaa, valmista, tarkista" -syklin omaan tehtävääni.
- [ ] Voin näyttää eron vahvan kehotteen ja heikon kehotteen välillä konkreettisessa esimerkissä.