Jednotka 1 / 12

Úvod do umelej inteligencie a verifikačnej disciplíny v počítačovom inžinierstve

zisky:

  • Schopnosť rozlíšiť, kde AI poskytuje skutočnú rýchlosť v životnom cykle vývoja softvéru a kde rozhodnutie a zodpovednosť zostáva na inžinierovi
  • Schopnosť aplikovať trojvrstvovú inžiniersku disciplínu, ktorá overuje každý vytvorený kód a dizajn prostredníctvom kompilácie, testovania a kontroly.
  • Zvyknite si vyčistiť kontext a využiť AI bez zdieľania dôverného zdrojového kódu, poverení a údajov o zákazníkoch

Keď sa pozriete na deň počítačového inžiniera, obraz je vo väčšine tímov podobný: pochopenie obchodnej požiadavky, návrh, písanie kódu, čítanie cudzieho kódu, ladenie (proces zisťovania, prečo program funguje nesprávne a oprava), písanie testov, príprava dokumentácie, kontrola kódu a účasť na stretnutiach. Inými slovami, čas venovaný skutočnému „inžinierskemu úsudku“, teda tomu, či je riešenie správne, bezpečné a udržateľné, je drvený opakovanou prácou. Tu vstupuje do hry umelá inteligencia (skrátene AI; softvér, ktorý pracuje na texte a kóde s veľkým jazykovým modelom). AI nerobí rozhodnutie za vás; Pripraví vás na rozhodnutie, vytvorí kostru kódu, zúži chybu a postaví pred vás vypracovaný návrh. V rámci tohto modulu postavíme AI nie ako „automatického programátora“, ale ako disciplinovaného párového programovacieho partnera, ktorého výstup je zakaždým kompilovaný, testovaný a kontrolovaný.

V tejto prvej časti objasňujeme tri veci: V ktorých fázach životného cyklu vývoja softvéru (štádiá, ktorými softvér prechádza od nápadu po výrobu: analýza, návrh, kódovanie, testovanie, nasadenie, údržba) pridáva AI skutočnú hodnotu; ktoré rozhodnutia by mali striktne zostať na inžinierovi; a aká je disciplína overovania a dôvernosti, ktorú musíte pri tom dodržiavať. Bez tejto správne nainštalovanej strechy môžu byť techniky na nasledujúcich jednotkách nebezpečné; Pretože chyba v softvéri sa dostane k miliónom používateľov súčasne a môže sa zmeniť na bezpečnostnú chybu.

Koncepty: Halucinácie: presvedčivé vymyslenie metódy, knižnice, API alebo správania AI, ktoré v skutočnosti neexistuje. Kontext: Vstup, ktorý zadáte AI (kód, chybová správa, požiadavka, obmedzenia). Overovanie: Kontrola výstupu nezávislým spôsobom (kompilácia, testovanie, dokumentácia). Tieto tri koncepty sú chrbticou celého modulu.

V ktorých podnikoch je AI akcelerátor, v ktorých podnikoch je to riskantné?

Softvérové ​​​​pracovné miesta patria z hľadiska výsledkov do dvojakého spektra. Na jednom konci sú reverzibilné prípravné práce s nízkym rizikom; Na druhom konci sú úlohy, ktoré sa ťažko vracajú do produkčného prostredia a môžu spôsobiť stratu dát, bezpečnostné slabiny alebo prerušenia. Hodnota AI sa líši v závislosti od toho, kde v tomto spektre stojíte.

obchodný typ

Príspevok AI

Úloha inžiniera

Kostra kódu / štítok

Rýchla tvorba opakujúcej sa štruktúry

Logika a kontrola stavu hrany

ladenie

Hypotéza a zoznam možných príčin

Rozmnožovanie a potvrdenie hlavnej príčiny

písanie testov

Testovací návrh a vytvorenie scenára

Zmysluplné tvrdenie a kontrola rozsahu

refaktoring

Návrh na refaktorizáciu

Udržiavanie správania prostredníctvom testovania

Dokumentácia

Prvý návrh a štruktúra

Kontrola správnosti podľa kódu

Architektonické/bezpečnostné rozhodnutie

Zoznam možností a výhod a nevýhod

Konečné rozhodnutie a zodpovednosť

Pravidlo je jednoduché: riziko výstupu AI sa rovná škode, ktorú spôsobí, ak výstup urobí chybu. Nesprávne navrhnutie názvu premennej je neškodné; Nesprávna autentifikácia (kontrola, či je používateľ skutočne tým, za koho sa vydáva) robí celý systém zraniteľným. Prvá otázka, ktorú si treba položiť pred použitím výstupu, je teda: "Čo sa stane, ak je to nesprávne a kto a kedy si to všimne?"

Upozornenie: AI vytvára plynulý a spoľahlivý kód. Plynulosť nie je zárukou presnosti. Jazykový model môže vierohodne vytvoriť názov funkcie, ktorý v skutočnosti neexistuje, nesprávnu postupnosť parametrov alebo dokonca nebezpečný vzor. V softvéri to nezostane na papieri; Kompiluje sa, beží a exploduje vo výrobe.

Rozhodnutia, ktoré by mali byť ponechané na inžiniera

Niektoré rozhodnutia by nikdy nemali byť plne automatizované; nesie technické, právne a etické riziká:

  • Schválenie výroby: Uvoľnenie kódu do výroby a zodpovednosť za to.
  • Bezpečnosť a architektúra: Drahé rozhodnutia, ako je autentifikácia, autorizácia, šifrovanie a dátový model.
  • Licencia a autorské práva: Použiteľnosť vytvoreného kódu v komerčnom produkte a súlad s licenciou.
  • Práca s dôvernými údajmi: Transakcie s údajmi o zákazníkoch, tajomstvá zdrojového kódu a informácie o identite.
Upozornenie: Aj keď AI ​​hovorí „tento kód je bezpečný a pripravený na výrobu“, akceptovať to bez testovania bezpečnosti, kontroly kódu a overenia pri skutočnom zaťažení je neprijateľné. Pri práci kritickej z hľadiska bezpečnosti nie je výstup AI nikdy náhradou za schválenie od kompetentného inžiniera; Každý výstup, ktorý vedie k rozhodnutiu, musí byť pred realizáciou nezávisle overený a schválený autorizovaným inžinierom.

Verifikačná disciplína: Trojvrstvová kontrola

Použite tri vrstvy kontroly, aby ste mohli používať výstup AI ako starší recenzent, a nie slepo. Toto je základný reflex, ktorý budeme opakovať v celom module.

  1. Kompilácia a statická kontrola: Naozaj sa kód kompiluje/spúšťa? Existujú chyby typu, nepoužívané premenné, neexistujúce rozhrania API? Čo hovorí nástroj na statickú analýzu (nástroj, ktorý skúma kód bez jeho spustenia)?
  2. Nezávislá reprodukcia (testovanie): Spustite kód s malými, známymi vstupmi a uvidíte, či získate očakávaný výstup. Skúste okrajové prípady (nulové, nulové, záporné, obrovské).
  3. Overenie zdroja: Každé rozhranie API, verzia knižnice a jazykové funkcie, ktoré AI používa, by mali byť overené z oficiálnej dokumentácie.

Výzva na overenie (uľahčuje kontrolu výstupu): „Uveďte VŠETKY externé knižnice, metódy a jazykové funkcie, ktoré používate vo svojom kóde. Pre každú z nich uveďte, v ktorej verzii je dostupná a označte ju „musí byť overené z dokumentácie“. Nevymýšľajte si žiadne rozhrania API, o ktorých si nie ste istí; ak si nie ste istý, jasne napíšte „nie som si istý“. Uveďte aj všetky riešené ako samostatné prípady, ktoré nemáte.“

Kritizujte svoj vlastný kódový príkaz: „Kriticky sa pozrite na kód, ktorý ste práve napísali, ako starší inžinier, ktorý vás najal. Uveďte konkrétne položky pod tieto tri nadpisy: (1) logické chyby/chyby v malých písmenách, (2) bezpečnostné riziká, (3) problémy s výkonom alebo čitateľnosťou. Ku každej položke napíšte „prečo je problém“ a „navrhovaná oprava“. Ak nie je problém, povedzte, že problém nie je možné nájsť.

Slabá výzva / silná výzva

SLABÝ:"Napíšte mi funkciu overenia používateľa."(Výsledok: nie je jasné, ktorý jazyk, ktoré pravidlo, aké chybové správanie; generický kód, často nezabezpečený alebo vytrhnutý z kontextu.)SILNÝ:"Napíšte funkciu overenia e-mailu pre Python 3.11. Vstup: reťazec. Výstup: Pravda, ak je platná, inak nepravda. Pravidlá: NEPOUŽÍVAJTE prázdny reťazec, vyžaduje sa externý formát Nepravda; Nepostačuje RFC 5-vzorový test pod blokom pridania funkcie: platný, prázdny, bez '@', dvojité '@', obsahujúce iba medzery."

Rozdiel je v kontexte. Výkonná výzva; Zahŕňa jazyk, verziu, vstupno-výstupnú zmluvu, obmedzenia a testovacie očakávania. Táto jediná disciplína výrazne znižuje riziko halucinácií a nebezpečného kódu.

Mini kufríky

Prípad 1 – Vymyslená metóda. Vývojár sa od AI dozvie, že v knižnici dátumov existuje metóda s názvom date.addBusinessDays(5) a je vysvetlená sebavedomým spôsobom. Pri pohľade na dokumentáciu vidí, že takáto metóda neexistuje, správny spôsob je manuálna slučka. Halucinácia je zachytená pred uvedením do výroby s 10-minútovým overením.

Prípad 2 – Strata hraničného stavu. AI vytvára funkciu „vypočítať priemer“; Funguje pri testovaní s 1 000 riadkami údajov. Ak je však zoznam prázdny, zobrazuje delenie nulovou chybou. Keďže inžinier pridal prázdny vstupný test, vidí a opravuje chybu pred spustením. Test stavu jednej hrany zabráni produkčnému alarmu o 3:00.

Prípad 3 – Riziko ochrany osobných údajov. Expert sa chystá vložiť súbor so skutočným reťazcom pripojenia k databáze a kľúčom API do verejného nástroja. Pamätá si politiku inštitúcie; Nahradí tajomstvá textom <REDACTED>, zredukuje kód na reprezentatívny príklad a vyžiada si ho. Do 5 minút teda dostane pomoc, no informácie o jeho identite nevyjdú.

Princíp práce s tajným kódom a identifikačnými informáciami

Najcitlivejšia časť softvéru; tajomstvá zdrojového kódu, informácie o identite (API kľúč, heslo, token) a zákaznícke/osobné údaje. Základný princíp: pred zdieľaním upratať, pýtať sa iba na podstatu problému s reprezentatívnym príkladom, ak je to možné.

Anonymizovaný vzor výzvy: "V nasledujúcej funkcii je chyba. Nahradil som skutočnú obchodnú logiku a skryté konštanty reprezentatívnymi hodnotami (kľúč API, názvy tabuliek, všeobecné názvy polí). Problém: Vo vstupe X sa zobrazuje chyba Y. Stačí nájsť logickú chybu v tomto reprezentačnom kóde a vysvetliť opravenú verziu. [reprezentatívny kód]"

Tip: Ak máte pochybnosti, urobte si tento test: „Dostala by sa moja organizácia do problémov, keby som to napísal verejne na fórum?“ Aj keď je odpoveď nejasná, najprv ju vyjasnite. Resetovanie je vždy lacnejšie ako neskoršie prenasledovanie úniku.

Časté chyby

  • Použitie výstupu bez kompilácie/testovania. „AI napísal“ nie je odôvodnenie; Každý kus kódu je overený spustením.
  • Vytváranie požiadaviek bez kontextu. Ak jazyk, verzia, vstup-výstup a obmedzenia nie sú uvedené, kód sa stáva všeobecným a často nezabezpečeným.
  • Zdieľanie dôverných informácií bez premýšľania. Kľúč API, heslo a údaje o zákazníkoch by nemali byť uvoľnené bez toho, aby boli vymazané.
  • Zamieňanie presného jazyka s presnosťou. Čím sebavedomejšie AI hovorí, tým opatrnejší by ste mali byť; Sebavedomý tón nie je dôkazom.
  • Delegovanie rozhodnutia na AI. Rozhodnutie o uvedení do výroby, bezpečnosti a architektúry zostáva na inžinierovi; AI vyrába iba materiály.

V súhrne

Umelá inteligencia urýchľuje opakujúce sa a časovo náročné časti softvérovej práce: kostrový kód, návrh testu, zužovanie chýb, dokumentácia. Rozhodnutie a zodpovednosť však zostáva na inžinierovi. Každý výstup musí prejsť tromi vrstvami kontroly (kompilácia/statika, testovanie, zdroj). Písanie výziev s kontextom a vymazávanie skrytých informácií sú dva kľúčové návyky, ktoré si zopakujeme v každej časti tohto modulu. Keď používate AI s disciplínou, získate rýchlosť; keď ho používate nedisciplinovane, prenášate do výroby chyby a slabé miesta.

Aplikačná úloha

Vyberte si malú kódovaciu úlohu z vlastnej práce alebo z imaginárneho projektu (napr. funkcia overenia). Najprv napíšte slabú výzvu a získajte výstup. Potom použite výkonný vzor výzvy z tejto jednotky: pridajte jazyk/verziu, vstupno-výstupnú zmluvu, obmedzenia a testovacie očakávania. Položte dva výtlačky vedľa seba a napíšte rozdiel. Potom skompilujte robustný výstup a otestujte ho aspoň s tromi okrajovými prípadmi (nulový, nulový/záporný, neočakávaný formát) a všimnite si, čo nájdete v ktorom teste.

kontrolný zoznam

  • [ ] Do výzvy som pridal jazyk, verziu a vstupno-výstupnú zmluvu.
  • [ ] Napísal som "Nevymýšľaj si, povedz mi, ak si nie si istý" a obmedzenie rozsahu.
  • [ ] Kód som skompiloval/spustil, skontroloval som statické upozornenia.
  • [ ] Testoval som aspoň s tromi okrajovými prípadmi.
  • [ ] Overil som použité API z oficiálnej dokumentácie.
  • [ ] Vymazal som akýkoľvek tajný kód/poverenia alebo som použil podnikový nástroj.
  • [ ] Potvrdil som, že rozhodnutie o uvedení do výroby a bezpečnosti zostáva na človeku.