Yksikkö 1 / 12

Johdatus tekoälyyn ja verifiointialaan tietokonetekniikassa

Voitot:

  • Kyky erottaa missä tekoäly tarjoaa todellista nopeutta ohjelmistokehityksen elinkaaren aikana ja missä päätös ja vastuu jää insinöörille
  • Kyky soveltaa kolmikerroksista suunnittelua, joka varmistaa jokaisen koodin ja suunnittelun, joka on tuotettu kokoamalla, testaamalla ja tarkistamalla.
  • Ota tapa tyhjentää konteksti hyödyntääksesi tekoälyä jakamatta luottamuksellista lähdekoodia, tunnistetietoja ja asiakastietoja

Kun katsoo tietokoneinsinöörin päivää, kuva on samanlainen useimmissa tiimeissä: yrityspyynnön ymmärtäminen, suunnittelu, koodin kirjoittaminen, jonkun muun koodin lukeminen, virheenkorjaus (prosessi, jossa selvitetään, miksi ohjelma toimii väärin ja korjataan se), testien kirjoittaminen, dokumentaation valmistelu, koodin tarkistaminen ja kokouksiin osallistuminen. Toisin sanoen aika, joka on varattu todelliselle "tekniikan arvioinnille", eli onko ratkaisu oikea, turvallinen ja kestävä, murskautuu toistuvan työn alla. Tässä tulee esille tekoäly (lyhennettynä AI; ohjelmisto, joka toimii tekstillä ja koodilla suurella kielimallilla). Tekoäly ei tee päätöstä puolestasi; Se valmistaa sinut päätökseen, tuottaa koodirungon, rajaa vian ja asettaa eteesi työstetyn luonnoksen. Tämän moduulin aikana emme aseta tekoälyä "automaattiseksi ohjelmoijaksi" vaan kurinalaiseksi ohjelmointikumppaniksi, jonka tuotos kootaan, testataan ja tarkistetaan joka kerta.

Tässä ensimmäisessä jaksossa selvennämme kolmea asiaa: Missä ohjelmistokehityksen elinkaaren vaiheissa (vaiheet, jotka ohjelmisto kulkee ideasta tuotantoon: analyysi, suunnittelu, koodaus, testaus, käyttöönotto, ylläpito) tekee tekoälystä todellista lisäarvoa; mitkä päätökset tulee ehdottomasti jäädä insinöörille; ja mitä varmennus- ja luottamuksellisuutta koskevaa kurinalaisuutta sinun on noudatettava tehdessäsi tätä. Ilman tätä kattoa oikein asennettuna, seuraavien yksiköiden tekniikat voivat olla vaarallisia; Koska ohjelmiston virhe tavoittaa miljoonia käyttäjiä samanaikaisesti ja voi muuttua tietoturva-aukoksi.

Käsitteet: Hallusinaatiot: Tekoälyn vakuuttava keksiminen menetelmästä, kirjastosta, API:sta tai käyttäytymisestä, jota ei todellisuudessa ole olemassa. Konteksti: AI:lle antamasi syöte (koodi, virheilmoitus, vaatimus, rajoitukset). Varmentaminen: Tuotoksen tarkistaminen itsenäisesti (kokoaminen, testaus, dokumentointi). Nämä kolme konseptia ovat koko moduulin selkäranka.

Missä yrityksissä AI Accelerator on, missä yrityksissä se on riskialtista?

Ohjelmistotyöt ovat tulosten suhteen kaksijakoisia. Toisessa päässä on palautuvat, vähäriskiset valmistelutyöt; Toisessa päässä on vaikeasti palautettavia tehtäviä, jotka tulevat tuotantoympäristöön ja voivat aiheuttaa tietojen menetystä, tietoturva-aukkoja tai keskeytyksiä. AI:n arvo vaihtelee sen mukaan, missä tällä spektrillä seisot.

yritystyyppi

AI panos

Insinöörin rooli

Koodirunko / kattilalevy

Toistuvan rakenteen nopea luominen

Logiikka ja reunan tilan hallinta

virheenkorjaus

Hypoteesi ja mahdollisten syiden luettelo

Lisääntyminen ja perussyyn vahvistus

kokeiden kirjoittaminen

Testiluonnoksen ja skenaarion luominen

Merkittävä väitteen ja laajuuden tarkistus

refaktorointi

Refaktorointiehdotus

Käyttäytymisen ylläpitäminen testaamalla

Dokumentaatio

Ensimmäinen luonnos ja rakenne

Oikeuden tarkistus koodia vastaan

Arkkitehtoninen/turvallisuuspäätös

Luettelo vaihtoehdoista ja eduista ja haitoista

Lopullinen päätös ja vastuu

Sääntö on yksinkertainen: AI-ulostulon riski on yhtä suuri kuin vahinko, joka aiheutuu, jos tulos tekee virheen. Muuttujan nimen virheellinen ehdottaminen on vaaratonta; Virheellinen todennus (tarkistaa, että käyttäjä on todella se, joka hän väittää olevansa) tekee koko järjestelmästä haavoittuvan. Joten ensimmäinen kysymys ennen tulosteen käyttöä on: "Mitä tapahtuu, jos tämä on väärin ja kuka huomaa sen ja milloin?"

Varoitus: AI tuottaa sujuvaa ja varmaa koodia. Sujuvuus ei takaa tarkkuutta. Kielimalli voi uskottavasti tuottaa funktion nimen, jota ei todellisuudessa ole olemassa, väärän parametrisarjan tai jopa vaarallisen kuvion. Ohjelmistoissa tämä ei jää paperille; Se kokoaa, toimii ja räjähtää tuotannossa.

Päätökset, jotka tulisi jättää insinöörille

Joitakin päätöksiä ei pitäisi koskaan automatisoida täysin. sisältää teknisiä, oikeudellisia ja eettisiä riskejä:

  • Hyväksyminen tuotantoon: Koodin julkaisu tuotantoon ja vastuu siitä.
  • Suojaus ja arkkitehtuuri: kalliit päätökset, kuten todennus, valtuutus, salaus ja tietomalli.
  • Lisenssi ja tekijänoikeudet: Tuotetun koodin käytettävyys kaupallisessa tuotteessa ja lisenssien noudattaminen.
  • Työskentely luottamuksellisten tietojen kanssa: Liiketoimet asiakastietojen, lähdekoodisalaisuuksien ja identiteettitietojen kanssa.
Varoitus: Vaikka tekoäly sanoisi "tämä koodi on turvallinen ja valmis tuotantoon", tämän hyväksymistä ilman turvatestausta, koodin tarkistusta ja validointia todellisessa kuormituksessa ei voida hyväksyä. Turvallisuuskriittisissä töissä AI-tulostus ei koskaan korvaa pätevän insinöörin hyväksyntää; Kaikki päätökseen johtavat tulokset on tarkastettava itsenäisesti ja valtuutetun insinöörin hyväksymä ennen käyttöönottoa.

Varmistusala: Kolmikerroksinen valvonta

Käytä kolmea ohjaustasoa, jotta voit käyttää tekoälytulostusta vanhemman arvioijan tavoin eikä sokeasti. Tämä on perusrefleksi, jota toistamme koko moduulin ajan.

  1. Kääntäminen ja staattinen tarkistus: Kääntääkö/ajoiko koodi todella? Onko tyyppivirheitä, käyttämättömiä muuttujia tai olemattomia sovellusliittymiä? Mitä staattinen analyysityökalu (työkalu, joka tutkii koodia suorittamatta sitä) sanoo?
  2. Itsenäinen toisto (testaus): Suorita koodi pienillä tunnetuilla tuloilla ja katso, saatko odotetun tuloksen. Kokeile reunatapauksia (nolla, nolla, negatiivinen, valtava).
  3. Lähteen vahvistus: Jokainen tekoälyn käyttämä API, kirjastoversio ja kieliominaisuus tulee tarkistaa virallisesta dokumentaatiosta.

Vahvistuskehote (helpottaa tulosteen tarkistamista): "Luettelo KAIKKI ulkoiset kirjastot, menetelmät ja kieliominaisuudet, joita käytät koodissasi. Ilmoita jokaisen kohdalla, missä versiossa se on saatavilla, ja merkitse se "on varmistettu dokumentaatiosta". Älä keksi mitään API:ta, joista et ole varma; jos et ole varma, kirjoita selvästi "ei varma". Listaa myös erilliset osoitteet, joissa sinulla on ollut."

Kritisoi omaa koodikehotettasi: "Katso kriittisesti juuri kirjoittamaasi koodia, kuten vanhempi insinööri, joka on palkannut sinut. Anna konkreettisia asioita näiden kolmen otsikon alle: (1) logiikka-/reunakirjausvirheet, (2) tietoturvariskit, (3) suorituskyky- tai luettavuusongelmat. Kirjoita jokaiselle kohteelle "miksi on ongelma" ja "ehdotettu korjausehdotus". Sano, jos ei ole ongelmaa. kaunistamaan sitä."

Heikko kehote / Vahva kehote

HEIKKO:"Kirjoita minulle käyttäjän todennustoiminto."(Tulos: epäselvä mikä kieli, mikä sääntö, mikä virhekäyttäytyminen; yleinen koodi, usein turvaton tai irrallinen.)STRONG:"Kirjoita sähköpostin vahvistustoiminto Python 3.11:lle. Syöte: merkkijono. Tulostus: True, jos kelvollinen, false muuten. Säännöt: tyhjä merkkijono vaaditaan ulkoinen kirjasto Epätosi, DONOT RUSE. 5-näytteen testi funktion lisäyslohkon alla: kelvollinen, tyhjä, ei @-merkkiä, kaksinkertainen @-merkki, sisältää vain välilyöntejä."

Ero on kontekstissa. Tehokas kehote; Se sisältää kielen, version, syöttö-tulostussopimuksen, rajoitukset ja testiodotuksen. Tämä yksittäinen kurinalaisuus vähentää huomattavasti hallusinaatioiden ja vaarallisten koodien riskiä.

Mini Kotelot

Tapaus 1 – Keksitty menetelmä. Kehittäjä kuulee tekoälyltä, että päivämääräkirjastossa on menetelmä nimeltä date.addBusinessDays(5), ja se selitetään luotettavalla tavalla. Dokumentaatiota katsoessaan hän näkee, että sellaista menetelmää ei ole, oikea tapa on manuaalinen silmukka. Hallusinaatio vangitaan ennen kuin se menee tuotantoon 10 minuutin tarkastuksella.

Tapaus 2 – Reunatilan menetys. AI tuottaa "laske keskiarvon" -funktion; Se toimii, kun sitä testataan 1 000 tietorivillä. Kuitenkin, kun lista on tyhjä, se antaa nollalla jakovirheen. Koska insinööri lisäsi tyhjän syöttötestin, hän näkee ja korjaa virheen ennen kuin se tulee voimaan. Yhden reunan kuntotesti estää tuotantohälytyksen klo 3.00.

Tapaus 3 – Tietosuojariski. Asiantuntija on liittämässä julkiseen työkaluun tiedoston, jossa on todellinen tietokantayhteysmerkkijono ja API-avain. muistaa toimielimen politiikan; Se korvaa salaisuudet tekstillä <REDACTED>, pienentää koodin edustavaksi esimerkiksi ja pyytää sitä. Siten hän saa apua 5 minuutissa, mutta hänen henkilötietonsa eivät tule ulos.

Salaisen koodin ja henkilötietojen kanssa työskentelyn periaate

Ohjelmiston herkin osa; lähdekoodin salaisuudet, identiteettitiedot (API-avain, salasana, tunnus) ja asiakas-/henkilötiedot. Perusperiaate: siivoa ennen jakamista, kysy vain ongelman ydin edustavalla esimerkillä, jos mahdollista.

Anonymisoitu kehotemalli: "Seuraavassa funktiossa on virhe. Vaihdoin varsinaisen liiketoimintalogiikan ja piilotetut vakiot edustavilla arvoilla (API-avain, taulukoiden nimet, kenttien nimet yleiset). Ongelma: saan virheen Y syötteessä X. Etsi vain logiikkavirhe tästä edustavasta koodista ja selitä korjattu versio. [edustava koodi]"

Vinkki: Jos olet epävarma, suorita tämä testi: "Jättyisikö organisaationi vaikeuksiin, jos kirjoittaisin tämän julkisesti keskusteluryhmään?" Vaikka vastaus olisi epäselvä, tyhjennä se ensin. Nollaus on aina halvempaa kuin vuodon jäljittäminen myöhemmin.

Yleisiä virheitä

  • Tulosteen käyttäminen ilman kääntämistä/testausta. "AI kirjoitti" ei ole perustelu; Jokainen koodinpätkä tarkistetaan suorittamalla se.
  • Pyyntöjen tekeminen ilman kontekstia. Jos kieltä, versiota, syöttö-tulostusta ja rajoituksia ei anneta, koodista tulee yleistä ja usein epävarmaa.
  • Luottamuksellisten tietojen jakaminen ajattelematta. API-avainta, salasanaa ja asiakastietoja ei saa luovuttaa tyhjentämättä.
  • Tarkka kielen ja tarkkuuden sekoittaminen. Mitä varmemmin tekoäly puhuu, sitä varovaisempi sinun tulee olla; Itsevarma sävy ei ole todiste.
  • Päätöksen delegointi tekoälylle. Päätös tuotantoon, turvallisuudesta ja arkkitehtuurista on insinöörillä; Tekoäly tuottaa vain materiaaleja.

Yhteenvetona

Tekoäly nopeuttaa ohjelmistotyön toistuvia ja aikaa vieviä osia: runkokoodia, testiluonnostusta, virheiden rajaamista, dokumentointia. Päätös ja vastuu jää kuitenkin insinöörille. Jokaisen lähdön on läpäistävä kolme ohjaustasoa (käännös/staattinen, testaus, lähde). Kehotteiden kirjoittaminen kontekstin kanssa ja piilotietojen poistaminen ovat kaksi avaintapaa, jotka toistetaan tämän moduulin jokaisessa osassa. Kun käytät tekoälyä kurinalaisesti, saat lisää nopeutta; Kun käytät sitä kurinalaisesti, tuot virheitä ja haavoittuvuuksia tuotantoon.

Sovellustehtävä

Valitse pieni koodaustehtävä omasta työstäsi tai kuvitteellisesta projektista (esim. validointitoiminto). Kirjoita ensin heikko kehote ja hanki tulos. Käytä sitten tämän yksikön tehokasta kehotemallia: lisää kieli/versio, syöttö-tulostussopimus, rajoitukset ja testausodotus. Aseta kaksi tulostetta vierekkäin ja kirjoita ero. Kokoa sitten vahva tulos ja testaa sitä vähintään kolmella reunatapauksella (nolla, nolla/negatiivinen, odottamaton muoto) ja pane merkille, mitä löydät mistä testistä.

tarkistuslista

  • [ ] Lisäsin kehotteeseen kielen, version ja syöttö-tulostussopimuksen.
  • [ ] Kirjoitin "Älä keksi, kerro minulle, jos et ole varma" ja laajuusrajoituksen.
  • [ ] Käänsin/ajoin koodin, tarkistin staattisten varoitusten varalta.
  • [ ] Testasin ainakin kolmella reunakotelolla.
  • [ ] Tarkistin käytetyt API:t virallisesta dokumentaatiosta.
  • [ ] Tyhjensin kaikki salaiset koodit/valtuudet tai käytin yritystyökalua.
  • [ ] Vahvistin, että tuotanto- ja turvallisuuspäätös jää ihmiselle.