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 umjetne inteligencije unutar granica povjerljivosti izvornog koda, osobnih podataka i korporativne politike
  • Razumijevanje da konačna odgovornost za usklađenost s licencom, sigurnost i etiku ostaje na inženjeru.

Modul ispit

1. Kao računalni inženjer, kad radi s alatom za generiranje koda umjetne inteligencije, krajnja odgovornost za što od sljedećeg uvijek treba ostati na čovjeku?

  • A) Konačno odobrenje ispravnosti, sigurnosti te pregled i testiranje koda stavljenog u proizvodnju ✔
  • B) Stvaranje prvog kostura koda za funkciju
  • C) Izrada popisa prijedloga za imena varijabli
  • D) Priprema nacrta teksta za komentare koda

Opis: AI; Može ubrzati zadatke kao što su kostur koda, nacrt testa i dokumentacija. Međutim, odgovornost je inženjera da pregleda, testira i odobri generirani kod kako bi osigurao da je ispravan, siguran i u skladu sa zahtjevima, te da ga stavi u proizvodnju; to se ne može delegirati AI-ju bez neovisne provjere.

2. AI je proizveo funkciju za vas i čini se da radi u najboljem redu. Koji je najbolji korak prije stavljanja u proizvodnju?

  • A) Budući da se čini da funkcija radi, stavite je izravno u proizvodnju
  • B) Provjerite ponašanje pisanjem i pokretanjem malih jediničnih testova koji uključuju rubne slučajeve ✔
  • C) Samo gledajući broj redaka funkcije
  • D) Učiniti naziv funkcije opisnijim

Objašnjenje: Činiti se da radiš 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 neslaganje provjerava stvarno ponašanje funkcije bez premještanja u živo okruženje.

3. AI je predložio metodu pod nazivom 'array.sortStable()' koja ne postoji u vašem jeziku i objasnio ju je na jasan način. Koja je prva ispravna radnja koju treba poduzeti?

  • A) Korištenje metode izravno jer AI djeluje samouvjereno
  • B) Sami definirajte metodu i upotrijebite njezino točno ime
  • C) Provjera postojanja metode iz službene dokumentacije jezika/biblioteke ✔
  • D) Zatvorite upozorenje prevoditelja i nastavite

Objašnjenje: Jezični modeli mogu vjerojatno izmisliti nazive biblioteka, paketa ili metoda koji zapravo ne postoje (halucinirati). Svaki predloženi API treba doslovno verificirati prema službenoj i trenutnoj dokumentaciji jezika ili knjižnice; Ako nije uključen u dokument, ne bi se trebao koristiti.

4. Želite zalijepiti povjerljivi izvorni kod svoje tvrtke i ugrađeni API ključ u javni AI alat i zatražiti pomoć. Koji je najispravniji pristup?

  • A) Zalijepite kôd kakav jest s API ključem za brzinu
  • B) Dovoljno je samo izbrisati naziv tvrtke i podijeliti sve ostalo
  • C) Dijeljenje koda, a zatim traženje od umjetne inteligencije 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 tajnosti tvrtke i sigurnosti. Potrebno je ukloniti tajne i skrivenu poslovnu logiku i svesti problem na anonimni/reprezentativni primjer ili upotrijebiti alat za dijeljenje poduzeća/nepodataka.

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

  • A) Ručno analizirajte kod i sami izdvojite složenost i izmjerite je ako je potrebno ✔
  • B) Prihvatite O(n) i nastavite jer je AI rekao
  • C) Pretpostavka da broj ciklusa nema nikakve veze s izvedbom
  • 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). AI-jeva tvrdnja o složenosti trebala bi se potvrditi ručnom analizom koda i mjerenjem s povećanjem unosa ako je potrebno; Oslanjanje na tvrdnju proizvodi lažnu pretpostavku o izvedbi.

6. AI generirani kod koji izravno umeće korisnički unos u SQL upit ulančavanjem teksta. Što je tu glavni problem i pravo rješenje?

  • A) Nema problema; spajanje teksta je najbrži način
  • B) Postoji rizik od SQL injekcije; Treba koristiti parametrizirani upit (pripremljeni iskaz) koji odvaja unos ✔
  • C) Dovoljno je samo pretvoriti upit u velika slova
  • D) Pisanje kraćeg upita riješit će problem

Opis: Dodavanje korisničkog unosa izravno u tekst upita stvara ranjivost SQL injekcije; Napadač može modificirati upit unosom. Ispravno rješenje je korištenje parametriziranog upita (pripremljene izjave) koji odvaja unos od teksta upita. Ovo je jedna od najčešće propuštenih sigurnosnih pogrešaka u AI kodu.

7. Imate ograničeno vrijeme kada pregledavate dio koda koji proizvodi AI. Kojim problemima je najbolje dati prioritet?

  • A) Oblikujte samo detalje kao što su uvlake i razmaci
  • B) Samo duljina naziva varijabli
  • C) Logička ispravnost, ranjivosti i ponašanje u rubnim slučajevima ✔
  • D) Samo ukupan broj redaka datoteke

Opis: Najveći rizik kod pregleda koda; To su problemi koji uzrokuju ozbiljnu štetu, kao što su logičke pogreške, sigurnosne ranjivosti i curenje povjerljivih informacija. Problemi s formatom i stilom rješavaju se automatskim alatima; Glavnu ljudsku pozornost treba posvetiti točnosti, sigurnosti i ponašanju u rubnom slučaju.

8. Želite da AI riješi grešku. Koji bi unos najbolje pomogao umjetnoj inteligenciji da pronađe glavni uzrok?

  • A) Samo kažem 'kôd ne radi, popravi ga'
  • B) Samo navedite naziv datoteke
  • C) Samo izgovaranje očekivanog rezultata, bez teksta pogreške
  • D) Navedite potpunu poruku o pogrešci, praćenje hrpe, relevantni kod i primjer minimalne reprodukcije ✔

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

9. Svi jedinični testovi koje proizvodi AI prolaze u prvom izvođenju. 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) Kvaliteta je zajamčena ako je broj testova velik
  • D) Polaganje testa dokazuje da je pokrivenost potpuna

Objašnjenje: Testovi mogu potvrđivati trenutno (možda bugovito) ponašanje koda, a ne njegovo namjeravano ponašanje; ili možda ne sadrži nikakvu smislenu tvrdnju i uvijek se prosljeđuje. Da biste vidjeli da testovi provjeravaju stvarno očekivanje, potrebno je svjesno razbiti kod i potvrditi da test svijetli crveno.

10. AI vam je proizvela gotov blok koda za problem. Sumnjate da je kôd doslovce kopiran iz projekta otvorenog koda. Koji je pravi pristup?

  • A) Korištenje licence bez razmišljanja jer kod radi
  • B) Provjera izvora/licence koda, ponovno pisanje ako je potrebno i usklađenost s korporativnom politikom ✔
  • C) Samo promijenite imena varijabli i smatrajte problem riješenim
  • D) Pod pretpostavkom da se licenciranje odnosi samo na velika poduzeća

Opis: AI može doslovce reproducirati kôd zaštićen autorskim pravima/licencu u podacima o obuci. Kršenje licence u komercijalnom proizvodu stvara ozbiljne pravne rizike. Potrebno je provjeriti izvor i licencu koda, po potrebi ga prepisati vlastitim riječima i pridržavati se politike licenciranja ustanove.

11. AI je predložio da odmah prijeđete na arhitekturu mikroservisa za svoj projekt. Koji je najprikladniji inženjerski pristup pri ocjenjivanju ovog prijedloga?

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

Objašnjenje: Arhitektonske odluke ovise o kontekstu; Mikroservisi dodaju vrijednost u potrebama kao što su skala i odvajanje tima, ali dolaze s troškovima kao što su operativna složenost, distribuirano otklanjanje pogrešaka i trošak. Ocijenite prijedlog prema stvarnim potrebama, opterećenju, strukturi tima i ravnoteži za i protiv; Općenite savjete ne treba slijediti slijepo.

12. AI je izradio pojednostavljeni README i API dokumentaciju za vaš kôd; ali neke krajnje točke i parametri ne odgovaraju u kodu. Što je ispravno ponašanje?

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

Opis: dokumentacija bi trebala biti točan odraz stvarnog koda; Pogrešan dokument tjera programere koji su ga pročitali da ga koriste na pogrešan način. Svaku krajnju točku, parametar i povratnu vrijednost treba provjeriti u odnosu na stvarni kod, a sva nepodudaranja treba ispraviti.

13. Koji je ulazni pristup ispravan za najkvalitetniji izlaz kada se kod zahtijeva od umjetne inteligencije?

  • A) Jasno navođenje jezika/verzije, ulazno-izlaznog ugovora, ograničenja i grešaka ✔
  • B) Samo kažem 'napiši mi radni kod'
  • C) Napišite najkraći zahtjev bez navođenja konteksta
  • D) Samo navođenje koliko će redaka koda biti

Opis: Snažan brz; Uključuje korišteni jezik i verziju, ulazno-izlazni ugovor, ograničenja performansi i stila, uvjete pogreške i uputu 'ostani samo unutar traženog opsega'. Zahtjev 'napiši mi funkciju' bez konteksta je generički i često proizvodi neprikladni kod.

14. AI je generirao konfiguraciju za vaš CI/CD (kontinuirana integracija/postavljanje) cjevovod i u njega ugradio lozinku baze podataka u obliku običnog teksta. Koje je ispravno rješenje?

  • A) Ostavljanje lozinke kao običnog teksta jer funkcionira
  • B) Premještanje tajni putem varijable okruženja ili alata za upravljanje tajnama, bez stavljanja otvorenog teksta u repozitorij ✔
  • C) Premjestite lozinku samo u redak komentara
  • D) Promjena naziva datoteke rješava problem

Objašnjenje: Zapisivanje tajni kao što su lozinke i ključevi u običnom tekstu u konfiguracijsku datoteku predstavlja rizik od curenja kontrole verzije i neovlaštenog pristupa. tajne; Varijable okoline ili poseban upravitelj tajni trebale bi ga držati podalje i nikada ne bi trebale ulaziti u spremište u obliku običnog teksta.