Jedinica 12 / 12

Granice: sigurnost, privatnost, licenca i etika

Dobici:

  • Sposobnost prepoznavanja i provjere da AI može proizvesti lažne API-je, nesiguran kod i sadržaj zaštićen autorskim pravima
  • Sposobnost upravljanja upotrebom AI u granicama povjerljivosti izvornog koda, ličnih podataka i korporativne politike
  • Razumijevanje da krajnja odgovornost za usklađenost licence, sigurnost i etiku ostaje na inženjeru.

Modul Exam

1. Kao kompjuterski inženjer, kada radite sa alatom za generisanje AI koda, krajnja odgovornost za šta od sledećeg uvek treba da ostane na čoveku?

  • A) Konačno odobrenje ispravnosti, sigurnosti, te pregled i testiranje koda puštenog u proizvodnju ✔
  • B) Kreiranje prvog skeleta koda za funkciju
  • C) Izrada liste prijedloga za imena varijabli
  • D) Priprema nacrta teksta za komentare koda

Opis: AI; Može ubrzati zadatke kao što su skelet koda, nacrt testa i dokumentacija. Međutim, odgovornost je inženjera da pregleda, testira i odobri generisani kod kako bi se osiguralo da je ispravan, siguran i u skladu sa zahtjevima, te da ga pusti u proizvodnju; ovo ne može biti delegirano AI bez nezavisne verifikacije.

2. AI je proizvela funkciju za vas i čini se da radi na sretnom putu. Koji je najbolji korak prije puštanja u proizvodnju?

  • A) Pošto se čini da funkcija radi, stavite je direktno u proizvodnju
  • B) Provjerite ponašanje pisanjem i pokretanjem malih jediničnih testova koji uključuju rubne slučajeve ✔
  • C) Gledajući samo broj linija funkcije
  • D) Učiniti naziv funkcije opisnijim

Objašnjenje: Pojaviti se na poslu ne znači biti u pravu. Pisanje i izvođenje malih jediničnih testova koji pokrivaju rubne slučajeve kao što su prazan unos, nula, negativna, vrlo velika vrijednost i nepodudaranje provjerava stvarno ponašanje funkcije bez premještanja u okruženje uživo.

3. AI je predložio metod pod nazivom 'array.sortStable()' koji ne postoji na vašem jeziku i objasnio ga na jasan način. Koja je prva ispravna radnja koju treba preduzeti?

  • A) Korištenje metode direktno jer AI djeluje samopouzdano
  • B) Sami definišite metodu i tačno koristite njen naziv
  • C) Provjera postojanja metode iz službene dokumentacije jezika/biblioteke ✔
  • D) Zatvorite upozorenje kompajlera i nastavite

Objašnjenje: Jezički modeli mogu vjerodostojno činiti imena knjižnica, paketa ili metoda koja zapravo ne postoje (halucinirati). Svaki predloženi API treba doslovno verificirati u odnosu na zvaničnu i trenutnu dokumentaciju jezika ili biblioteke; Ako nije uključen u dokument, ne treba ga koristiti.

4. Želite da zalijepite povjerljivi izvorni kod vaše kompanije i ugrađeni API ključ u javni AI alat i zatražite pomoć. Koji je najispravniji pristup?

  • A) Zalijepite kod kakav je s API ključem za brzinu
  • B) Dovoljno je samo izbrisati naziv kompanije i podijeliti sve ostalo
  • C) Dijeljenje koda i zatim traženje od AI da ga izbriše
  • D) Uklanjanje tajni i skrivene logike i svođenje problema na reprezentativan primjer ili korištenje institucionalnog alata ✔

Opis: Tajni izvorni kod i vjerodajnice (API ključ, lozinka, niz veze); Rizično je u smislu kompanijske tajne i sigurnosti. Neophodno je ogoliti tajne i skrivenu poslovnu logiku i problem svesti na anonimni/reprezentativni primjer ili koristiti alat za razmjenu podataka/poduzeća.

5. AI je rekao da je složenost funkcije pretraživanja koju je napisao bila O(n); ali postoje dvije ugniježđene petlje u kodu. Koje je ispravno inženjersko ponašanje?

  • A) Analizirajte kôd ručno i sami izdvojite složenost i izmjerite je ako je potrebno ✔
  • B) Prihvatite O(n) i nastavite jer je AI rekao
  • C) Pod pretpostavkom da broj ciklusa nema nikakve veze sa performansama
  • D) Samo promijenite naziv funkcije

Objašnjenje: Vremenska složenost (Big-O) pokazuje kako se broj operacija povećava kako ulaz raste. Dvije ugniježđene petlje obično znače O(n^2). Tvrdnja o složenosti AI treba da se verifikuje ručnom analizom koda i merenjem sa povećanjem unosa ako je potrebno; Oslanjanje na tvrdnju proizvodi pogrešnu pretpostavku učinka.

6. AI generiran kod koji direktno umeće korisnički unos u SQL upit spajanjem teksta. Šta je ovdje glavni problem i pravo rješenje?

  • A) Nema problema; spajanje teksta je najbrži metod
  • B) Postoji rizik od SQL injekcije; Treba koristiti parametrizirani upit (pripremljeni izraz) koji odvaja ulaz ✔
  • C) Dovoljno je samo pretvaranje upita u velika slova
  • D) Kraće pisanje upita će riješiti problem

Opis: Dodavanje korisničkog unosa direktno u tekst upita stvara ranjivost SQL injekcije; Napadač može modificirati upit pomoću unosa. Ispravno rješenje je korištenje parametrizovanog upita (pripremljenog izraza) koji odvaja ulaz od teksta upita. Ovo je jedna od najčešće propuštenih sigurnosnih grešaka u AI kodu.

7. Imate ograničeno vrijeme kada pregledate dio koda koji je proizvela AI. Kojim pitanjima je najbolje dati prioritet?

  • A) Samo formatirajte detalje kao što su uvlačenje i razmak
  • B) Samo dužina imena varijabli
  • C) Logička ispravnost, ranjivosti i ponašanje rubnih slučajeva ✔
  • D) Samo ukupan broj redova datoteke

Opis: Najveći rizik u pregledu koda; To su problemi koji uzrokuju ozbiljnu štetu, kao što su logičke greške, sigurnosne ranjivosti i curenje povjerljivih informacija. Problemi sa formatom i stilom se rešavaju automatskim alatima; Glavna ljudska pažnja treba biti posvećena preciznosti, sigurnosti i ponašanju rubnih slučajeva.

8. Želite da AI riješi grešku. Koji bi input najbolje pomogao AI da pronađe osnovni uzrok?

  • A) Samo kažem 'kôd ne radi, popravi ga'
  • B) Samo dajte ime datoteke
  • C) Samo kažem očekivani rezultat, bez teksta greške
  • D) Navedite punu poruku o grešci, praćenje steka, relevantan kod i primjer minimalne reprodukcije ✔

Objašnjenje: Za učinkovito otklanjanje grešaka, potrebno je AI dati punu poruku o grešci, praćenje steka, relevantni isječak koda i najmanji ponovljivi uzorak koji proizvodi grešku. Nejasna izjava 'ne radi' prisiljava AI da nagađa i daje opšte preporuke.

9. Svi jedinični testovi proizvedeni od strane AI prolaze pri prvom pokretanju. Koji rizik ne treba zanemariti u ovoj situaciji?

  • A) Testovi mogu potvrditi trenutno stanje koda, ali ne i stvarno/očekivano ponašanje ✔
  • B) Kod je apsolutno bez grešaka jer su svi testovi prošli
  • C) Kvalitet je zagarantovan ako je broj testova veliki
  • D) Polaganje testa dokazuje da je pokrivenost potpuna

Objašnjenje: Testovi mogu provjeravati trenutno (možda buggy) ponašanje koda, a ne njegovo planirano ponašanje; ili možda ne sadrži nikakvu značajnu tvrdnju i uvijek se prosljeđuje. Da biste vidjeli da testovi provjeravaju realno očekivanje, potrebno je svjesno razbiti kod i potvrditi da test postaje crven.

10. AI vam je proizveo gotov blok koda za problem. Sumnjate da je kod možda doslovno kopiran iz projekta otvorenog koda. Koji je pravi pristup?

  • A) Korišćenje licence bez razmišljanja jer kod radi
  • B) Provjera izvora/licence koda, prepisivanje ako je potrebno i usklađenost s korporativnom politikom ✔
  • C) Samo promijenite imena varijabli i smatrajte da je problem riješen
  • D) Pod pretpostavkom da se licenciranje odnosi samo na velike kompanije

Opis: AI može doslovno reproducirati zaštićeni/licencirani kod u podacima o obuci. Kršenje licence u komercijalnom proizvodu stvara ozbiljne pravne rizike. Potrebno je provjeriti izvor i licencu koda, prepisati ga svojim riječima ako je potrebno i pridržavati se politike licenciranja institucije.

11. AI je predložio da se odmah prebacite na arhitekturu mikroservisa za svoj projekat. Koji je najprikladniji inženjerski pristup prilikom evaluacije ovog prijedloga?

  • A) Odmah podijelite cijeli sistem na mikroservise jer AI predlaže
  • B) Pod pretpostavkom da je mikroservis uvijek najbolji izbor
  • C) Procijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i plus-minus balansu ✔
  • D) Donošenje odluke isključivo na osnovu popularnosti arhitekture

Objašnjenje: Arhitektonske odluke zavise od konteksta; Mikrousluge dodaju vrijednost potrebama kao što su obim i odvajanje tima, ali dolaze sa troškovima kao što su operativna složenost, distribuirano otklanjanje grešaka i troškovi. Procijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i ravnoteži prednosti i nedostataka; Općenite savjete ne treba slijediti slijepo.

12. AI je proizveo pojednostavljenu README i API dokumentaciju za vaš kod; ali neke krajnje tačke i parametri se ne podudaraju u kodu. Koje je ispravno ponašanje?

  • A) Objavljivanje dokumenta kakav jeste jer je tekst tečan
  • B) Samo popravi naslov i ostavite ostalo kako jeste
  • C) Dodavanje dokumenta u skladište bez čitanja
  • D) Uporedite svaku krajnju tačku i parametar sa stvarnim kodom i popravite sve koji se ne podudaraju ✔

Opis: Dokumentacija treba da bude tačan odraz stvarnog koda; Pogrešan dokument tjera programere koji su ga pročitali da ga koriste pogrešno. Svaku krajnju tačku, parametar i povratnu vrijednost treba provjeriti u odnosu na stvarni kod, a sve nepodudarnosti treba ispraviti.

13. Koji pristup unosu je pravi za najkvalitetniji izlaz kada se traži kod od AI?

  • A) Jasno davanje jezika/verzije, ulazno-izlaznog ugovora, ograničenja i situacije greške ✔
  • B) Samo kažem 'napiši mi neki radni kod'
  • C) Napišite najkraći zahtjev bez davanja konteksta
  • D) Samo navedite koliko će linija koda biti

Opis: Snažan prompt; To uključuje jezik i verziju koja se koristi, ulazno-izlazni ugovor, ograničenja performansi i stila, uslove greške i instrukciju 'ostanite samo u traženom opsegu'. Zahtjev 'napišite mi funkciju' bez konteksta je generički i često proizvodi neprikladan kod.

14. AI je generirao konfiguraciju za vaš CI/CD (kontinuirana integracija/primjena) cjevovod i ugradio lozinku baze podataka u nju u običnom tekstu. Koje je ispravno rješenje?

  • A) Ostavite lozinku kao običan tekst jer radi
  • B) Premještanje tajni putem varijable okruženja ili alata za upravljanje tajnama, a ne stavljanje otvorenog teksta u spremište ✔
  • C) Premjestite lozinku samo u red za komentare
  • D) Promjena naziva datoteke rješava problem

Objašnjenje: Pisanje tajni kao što su lozinke i ključevi u običnom tekstu u konfiguracijski fajl predstavlja rizik od curenja kontrole verzija i neovlaštenog pristupa. Secrets; Trebalo bi da ga čuvaju varijable okruženja ili poseban menadžer tajni i nikada ne bi trebalo da ulazi u spremište u obliku običnog teksta.