Jednotka 1 / 12

Úvod do umělé inteligence a verifikační disciplíny v počítačovém inženýrství

zisky:

  • Schopnost rozlišit, kde AI poskytuje skutečnou rychlost v životním cyklu vývoje softwaru a kde rozhodnutí a odpovědnost zůstává na inženýrovi
  • Schopnost aplikovat třívrstvou inženýrskou disciplínu, která ověřuje každý vytvořený kód a návrh prostřednictvím kompilace, testování a kontroly.
  • Zvykněte si vyčistit kontext a využít AI bez sdílení důvěrného zdrojového kódu, přihlašovacích údajů a zákaznických dat

Když se podíváte na den počítačového inženýra, obraz je ve většině týmů podobný: porozumění obchodnímu požadavku, návrh, psaní kódu, čtení cizího kódu, ladění (proces zjišťování, proč program funguje nesprávně a oprava), psaní testů, příprava dokumentace, kontrola kódu a účast na schůzkách. Jinými slovy, čas věnovaný skutečnému „inženýrskému úsudku“, tedy zda je řešení správné, bezpečné a udržitelné, je drcen opakovanou prací. Zde vstupuje do hry umělá inteligence (zkráceně AI; software, který pracuje na textu a kódu s velkým jazykovým modelem). AI nedělá rozhodnutí za vás; Připraví vás na rozhodnutí, vytvoří kostru kódu, zúží chybu a postaví před vás vypracovaný návrh. V rámci tohoto modulu nepostavíme AI jako „automatického programátora“, ale jako disciplinovaného párového programovacího partnera, jehož výstup je pokaždé sestaven, testován a zkontrolován.

V této první části objasňujeme tři věci: V jakých fázích životního cyklu vývoje softwaru (fáze, kterými software prochází od nápadu po výrobu: analýza, návrh, kódování, testování, nasazení, údržba) přidává umělá inteligence skutečnou hodnotu; která rozhodnutí by měla striktně zůstat na inženýrovi; a jaká je kázeň ověřování a důvěrnosti, kterou musíte při tom dodržovat. Bez této správně nainstalované střechy mohou být techniky na následujících jednotkách nebezpečné; Protože chyba v softwaru se dostane k milionům uživatelů současně a může se změnit v bezpečnostní zranitelnost.

Koncepty: Halucinace: AI přesvědčivá výroba metody, knihovny, API nebo chování, které ve skutečnosti neexistuje. Kontext: Vstup, který zadáte AI (kód, chybová zpráva, požadavek, omezení). Verifikace: Kontrola výstupu nezávislým způsobem (kompilace, testování, dokumentace). Tyto tři koncepty jsou páteří celého modulu.

Ve kterých firmách je AI akcelerátor, ve kterých firmách je riskantní?

Softwarové práce spadají z hlediska výsledků do dvojího spektra. Na jednom konci jsou reverzibilní, nízkorizikové přípravné práce; Na druhém konci jsou úlohy, které se obtížně vracejí do produkčního prostředí a mohou způsobit ztrátu dat, zranitelnost zabezpečení nebo přerušení. Hodnota AI se liší v závislosti na tom, kde v tomto spektru stojíte.

obchodní typ

Příspěvek AI

Role inženýra

Kostra kódu / štítek

Rychlé generování opakující se struktury

Logika a kontrola stavu hran

ladění

Hypotéza a seznam možných příčin

Reprodukce a potvrzení hlavní příčiny

písemné testy

Testovací návrh a tvorba scénáře

Smysluplné tvrzení a kontrola rozsahu

refaktorování

Návrh refaktoringu

Udržování chování pomocí testování

Dokumentace

První návrh a struktura

Kontrola správnosti podle kódu

Architektonické/bezpečnostní rozhodnutí

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

Konečné rozhodnutí a zodpovědnost

Pravidlo je jednoduché: riziko výstupu AI se rovná poškození, které utrpí, pokud tento výstup udělá chybu. Nesprávné navržení názvu proměnné je neškodné; Nesprávná autentizace (kontrola, zda je uživatel skutečně tím, za koho se vydává) činí celý systém zranitelným. První otázka, kterou si musíte položit před použitím výstupu, je: "Co se stane, když je to špatně a kdo a kdy si toho všimne?"

Upozornění: AI vytváří plynulý a jistý kód. Plynulost není zárukou přesnosti. Jazykový model může věrohodně vytvořit název funkce, který ve skutečnosti neexistuje, nesprávnou sekvenci parametrů nebo dokonce nebezpečný vzor. V softwaru to nezůstává na papíře; Kompiluje se, spouští a exploduje ve výrobě.

Rozhodnutí, která by měla být ponechána na inženýrovi

Některá rozhodnutí by nikdy neměla být plně automatizovaná; nese technická, právní a etická rizika:

  • Schválení výroby: Uvolnění kódu do výroby a odpovědnost za to.
  • Zabezpečení a architektura: Nákladná rozhodnutí, jako je autentizace, autorizace, šifrování a datový model.
  • Licence a autorská práva: Použitelnost vytvořeného kódu v komerčním produktu a soulad s licencí.
  • Práce s důvěrnými daty: Transakce s daty zákazníků, tajnými zdroji kódu a informacemi o identitě.
Upozornění: I když umělá inteligence říká „tento kód je bezpečný a připravený k výrobě“, je nepřijatelné přijmout to bez testování zabezpečení, kontroly kódu a ověření při skutečné zátěži. Při práci kritické z hlediska bezpečnosti nenahrazuje výstup AI nikdy schválení od kompetentního inženýra; Jakýkoli výstup, který vede k rozhodnutí, musí být před implementací nezávisle ověřen a schválen autorizovaným inženýrem.

Ověřovací disciplína: Třívrstvá kontrola

Použijte tři vrstvy kontroly, abyste mohli používat výstup AI jako starší recenzent, nikoli slepě. Toto je základní reflex, který budeme opakovat v celém modulu.

  1. Kompilace a statická kontrola: Kompiluje/spouští se kód skutečně? Existují chyby typu, nepoužívané proměnné, neexistující API? Co říká nástroj pro statickou analýzu (nástroj, který zkoumá kód, aniž by jej spouštěl)?
  2. Nezávislá reprodukce (testování): Spusťte kód s malými, známými vstupy a zjistěte, zda získáte očekávaný výstup. Vyzkoušejte okrajové případy (nulový, nulový, záporný, obrovský).
  3. Ověření zdroje: Každé rozhraní API, verze knihovny a jazykové funkce, které AI používá, by měly být ověřeny z oficiální dokumentace.

Výzva k ověření (usnadňuje kontrolu výstupu): "Uveďte VŠECHNY externí knihovny, metody a jazykové funkce, které používáte ve svém kódu. U každé označte, ve které verzi je k dispozici, a označte ji 'musí být ověřeno z dokumentace'. Nevytvářejte žádná rozhraní API, kterými si nejste jisti; pokud si nejste jisti, jasně napište 'nejsem si jistý'. Uveďte také všechny adresované případy jako samostatné okrajové případy, které nemáte."

Kritizujte svůj vlastní kód: "Kriticky se podívejte na kód, který jste právě napsali, jako starší inženýr, který vás najal. Uveďte konkrétní položky pod těmito třemi nadpisy: (1) logické chyby/chyby na okraji, (2) bezpečnostní rizika, (3) problémy s výkonem nebo čitelností. Ke každé položce napište "proč je problém" a "navrhovaná oprava".

Slabá výzva / Silná výzva

SLABÝ:"Napište mi funkci ověřování uživatele."(Výsledek: není jasné, který jazyk, jaké pravidlo, jaké chybové chování; generický kód, často nezabezpečený nebo mimo kontext.)SILNÝ:"Napište funkci ověření e-mailu pro Python 3.11. Vstup: řetězec. Výstup: Pravda, pokud je platná, jinak nepravda. Pravidla: je vyžadována prázdná knihovna, externí formát není dostatečný. NEPOUŽÍVEJTE žádný externí formát. 5-vzorkový test pod blokem připojení funkce: platný, prázdný, bez '@', dvojitý '@', obsahující pouze mezery."

Rozdíl je v kontextu. Výkonná výzva; Zahrnuje jazyk, verzi, vstupně-výstupní smlouvu, omezení a očekávání testu. Tato jediná disciplína výrazně snižuje riziko halucinací a nebezpečného kódu.

Mini pouzdra

Případ 1 – Vymyšlená metoda. Vývojář se od AI dozví, že v knihovně dat existuje metoda nazvaná date.addBusinessDays(5) a je vysvětlena sebevědomým způsobem. Při pohledu do dokumentace vidí, že žádná taková metoda neexistuje, správný způsob je ruční smyčka. Halucinace je zachycena před uvedením do výroby s 10minutovým ověřením.

Případ 2 – Ztráta hraničního stavu. AI vytváří funkci „vypočítat průměr“; Funguje při testování s 1 000 řádky dat. Pokud je však seznam prázdný, dává dělení nulovou chybou. Vzhledem k tomu, že technik přidal prázdný vstupní test, vidí a opravuje chybu, než bude spuštěna. Test stavu jedné hrany zabrání produkčnímu poplachu ve 3 hodiny ráno.

Případ 3 – Riziko ochrany soukromí. Expert se chystá vložit soubor se skutečným připojovacím řetězcem databáze a klíčem API do veřejného nástroje. Pamatuje si politiku instituce; Nahradí tajemství pomocí <REDACTED>, zredukuje kód na reprezentativní příklad a požádá o něj. Pomoci se mu tedy dostane do 5 minut, ale informace o jeho totožnosti nevyjdou.

Princip práce s tajným kódem a identifikačními informacemi

Nejcitlivější část softwaru; tajemství zdrojového kódu, informace o identitě (klíč API, heslo, token) a zákaznická/osobní data. Základní princip: před sdílením ukliďte, ptejte se pokud možno pouze na podstatu problému s reprezentativním příkladem.

Vzor anonymizované výzvy: "V následující funkci je chyba. Nahradil jsem skutečnou obchodní logiku a skryté konstanty reprezentativními hodnotami (klíč API, názvy tabulek, obecné názvy polí). Problém: Na vstupu X se zobrazuje chyba Y. Stačí najít logickou chybu v tomto reprezentativním kódu a vysvětlit opravenou verzi. [reprezentativní kód]"

Tip: Máte-li pochybnosti, udělejte si tento test: „Dostala by se moje organizace do problémů, kdybych to napsal veřejně na fórum?“ I když je odpověď nejasná, nejprve ji vyjasněte. Resetování je vždy levnější než pozdější hledání úniku.

Časté chyby

  • Použití výstupu bez kompilace/testování. „AI napsal“ není ospravedlnění; Každý kus kódu je ověřen jeho spuštěním.
  • Vytváření požadavků bez kontextu. Pokud jazyk, verze, vstup-výstup a omezení nejsou uvedeny, kód se stává obecným a často nezabezpečeným.
  • Sdílení důvěrných informací bez přemýšlení. Klíč API, heslo a zákaznická data by neměly být uvolněny, aniž by byly vymazány.
  • Zaměňování přesného jazyka s přesností. Čím sebevědoměji AI mluví, tím opatrnější byste měli být; Sebevědomý tón není důkaz.
  • Delegování rozhodnutí na AI. Rozhodnutí o uvedení do výroby, zabezpečení a architektury zůstává na inženýrovi; AI vyrábí pouze materiály.

V souhrnu

Umělá inteligence urychluje opakující se a časově náročné části softwarové práce: kostru kódu, navrhování testů, omezování chyb, dokumentaci. Rozhodnutí a odpovědnost však zůstává na inženýrovi. Každý výstup musí projít třemi vrstvami řízení (kompilace/statika, testování, zdroj). Psaní výzev s kontextem a mazání skrytých informací jsou dva klíčové návyky, které budeme opakovat v každé jednotce tohoto modulu. Když používáte AI s disciplínou, získáte rychlost; když jej používáte bez disciplíny, nesete do výroby chyby a zranitelnosti.

Aplikační úkol

Vyberte si malý kódovací úkol ze své vlastní práce nebo z imaginárního projektu (např. funkce ověřování). Nejprve napište slabou výzvu a získejte výstup. Poté použijte výkonný vzor výzvy z této jednotky: přidejte jazyk/verzi, vstupně-výstupní smlouvu, omezení a otestujte očekávání. Položte dva výtisky vedle sebe a napište rozdíl. Poté zkompilujte robustní výstup a otestujte jej alespoň se třemi okrajovými případy (null, nula/záporný, neočekávaný formát) a poznamenejte si, co najdete v kterém testu.

kontrolní seznam

  • [ ] Do výzvy jsem přidal jazyk, verzi a smlouvu vstup-výstup.
  • [ ] Napsal jsem "Nevymýšlejte si, řekněte mi, pokud si nejste jistý" a omezení rozsahu.
  • [ ] Zkompiloval jsem/spustil jsem kód, zkontroloval jsem statická varování.
  • [ ] Testoval jsem alespoň se třemi okrajovými případy.
  • [ ] Použitá API jsem ověřil z oficiální dokumentace.
  • [ ] Vymazal jsem veškerý tajný kód/přihlašovací údaje nebo jsem použil podnikový nástroj.
  • [ ] Potvrdil jsem, že rozhodnutí o uvedení do výroby a zabezpečení zůstává na člověku.