Egység 1 / 12

Bevezetés a mesterséges intelligenciába és a hitelesítési tudományba a számítástechnikában

Nyereség:

  • Meg tudja különböztetni, hogy az AI hol biztosít valódi sebességet a szoftverfejlesztés életciklusában, és hol marad a döntés és a felelősség a mérnökön.
  • Képes egy háromrétegű mérnöki tudományág alkalmazására, amely minden kódot és tervet összeállítással, teszteléssel és felülvizsgálattal ellenőriz.
  • Szokjon megszokni a kontextus tisztázásával az AI kihasználásához anélkül, hogy bizalmas forráskódot, hitelesítő adatokat és ügyféladatokat megosztana

Ha egy számítástechnikai mérnök napját nézzük, a legtöbb csapatban hasonló a kép: üzleti kérés megértése, tervezés, kód írása, valaki más kódjának olvasása, hibakeresés (a program hibás működésének kiderítése és javítása), tesztek írása, dokumentáció készítése, kód áttekintése és megbeszéléseken való részvétel. Vagyis a valódi „mérnöki ítéletre”, vagyis arra, hogy a megoldás helyes, biztonságos és fenntartható-e, az ismétlődő munka során felmorzsolódik. Itt jön képbe a mesterséges intelligencia (röviden AI; nagy nyelvi modellel szövegen és kódon dolgozó szoftver). A mesterséges intelligencia nem hozza meg helyetted a döntést; Felkészít a döntésre, kódvázat készít, leszűkíti a hibát, és egy kidolgozott piszkozatot tesz eléd. Ebben a modulban az AI-t nem „automatikus programozóként”, hanem fegyelmezett páros programozóként fogjuk pozicionálni, akinek a kimenetét minden alkalommal összeállítjuk, teszteljük és felülvizsgáljuk.

Ebben az első részben három dolgot tisztázunk: A szoftverfejlesztés életciklusának mely szakaszaiban (azok a szakaszok, amelyeken a szoftver megy keresztül az ötlettől a gyártásig: elemzés, tervezés, kódolás, tesztelés, telepítés, karbantartás) jelent valódi értéket a mesterséges intelligencia; mely döntéseket szigorúan a mérnöknek kell meghoznia; és milyen ellenőrzési és titoktartási szabályokat kell betartania ennek során. Ennek a tetőnek a megfelelő felszerelése nélkül a következő egységek technikái veszélyessé válhatnak; Mert a szoftver hibája egyszerre több millió felhasználóhoz jut el, és biztonsági réssé válhat.

Fogalmak: Hallucináció: A mesterséges intelligencia meggyőző kitalálása egy olyan módszerről, könyvtárról, API-ról vagy viselkedésről, amely valójában nem létezik. Kontextus: Az AI-nak adott bemenet (kód, hibaüzenet, követelmény, megszorítások). Ellenőrzés: A kimenet önálló ellenőrzése (összeállítás, tesztelés, dokumentálás). Ez a három koncepció alkotja az egész modul gerincét.

Mely vállalkozásoknál az AI Accelerator, mely vállalkozásoknál kockázatos?

A szoftveres munkák az eredményeket tekintve kétirányú spektrummal rendelkeznek. Az egyik végén visszafordítható, alacsony kockázatú előkészítő munka található; A másik végén vannak olyan nehezen visszaküldhető feladatok, amelyek belépnek az éles környezetbe, és adatvesztést, biztonsági réseket vagy megszakításokat okozhatnak. Az AI értéke attól függően változik, hogy hol áll ezen a spektrumon.

üzleti típus

AI hozzájárulás

Mérnök szerepe

Kódváz / kazánlemez

Az ismétlődő szerkezetek gyors generálása

Logikai és él állapot vezérlés

hibakeresés

Hipotézisek és lehetséges okok listája

Szaporodás és kiváltó ok megerősítése

tesztek írása

Tesztvázlat és forgatókönyv-készítés

Értelmes állítás és terjedelem ellenőrzése

refaktorálás

Refaktorálási javaslat

A viselkedés fenntartása teszteléssel

Dokumentáció

Első vázlat és szerkezet

A kód helyességének ellenőrzése

Építészeti/biztonsági döntés

A lehetőségek listája, előnyei és hátrányai

Végső döntés és felelősség

A szabály egyszerű: az AI kimenet kockázata megegyezik azzal a kárral, amelyet akkor ér, ha a kimenet hibázik. A változónév helytelen javaslata ártalmatlan; A nem megfelelő hitelesítés (ellenőrizve, hogy a felhasználó valóban az-e, akinek állítják) az egész rendszert sebezhetővé teszi. Tehát az első kérdés, amelyet fel kell tenni a kimenet használata előtt: "Mi történik, ha ez hibás, és ki és mikor veszi észre?"

Figyelem: Az AI gördülékeny és magabiztos kódot állít elő. A folyékonyság nem garancia a pontosságra. Egy nyelvi modell hitelesen létrehozhat olyan függvénynevet, amely valójában nem létezik, hibás paramétersorozatot vagy akár nem biztonságos mintát is. Szoftverben ez nem marad papíron; Összeállítja, lefutja és gyártás közben felrobban.

A döntéseket a mérnökre kell bízni

Egyes döntéseket soha nem szabad teljesen automatizálni; műszaki, jogi és etikai kockázatokat hordoz:

  • Gyártás engedélyezése: Egy kód gyártásba bocsátása és ennek felelőssége.
  • Biztonság és architektúra: Drága döntések, például hitelesítés, engedélyezés, titkosítás és adatmodell.
  • Licenc és szerzői jog: Az előállított kód felhasználhatósága a kereskedelmi termékben és a licenc megfelelősége.
  • Bizalmas adatokkal való munkavégzés: Ügyféladatokkal, forráskód-titkokkal és személyazonossági információkkal végzett tranzakciók.
Figyelmeztetés: Még ha az AI azt mondja is, hogy "ez a kód biztonságos és készen áll a gyártásra", ennek elfogadása biztonsági tesztelés, kódellenőrzés és valós terhelés alatti érvényesítés nélkül elfogadhatatlan. A biztonság szempontjából kritikus munkák során az MI-kimenet soha nem helyettesíti a hozzáértő mérnök jóváhagyását; Minden olyan eredményt, amely döntéshez vezet, a végrehajtás előtt a felhatalmazott mérnöknek függetlenen ellenőriznie kell és jóvá kell hagynia.

Ellenőrzési fegyelem: Háromrétegű ellenőrzés

Alkalmazzon három szintű vezérlést, hogy az AI-kimenetet vezető értékelőként használhassa, ne pedig vakon. Ez az alapvető reflex, amelyet a modulban végig fogunk ismételni.

  1. Fordítás és statikus ellenőrzés: Valóban lefordítja/fut a kód? Vannak típushibák, nem használt változók, nem létező API-k? Mit mond a statikus elemző eszköz (az az eszköz, amely futás nélkül vizsgálja meg a kódot)?
  2. Független reprodukálás (tesztelés): Futtassa a kódot kis, ismert bemenetekkel, és nézze meg, hogy megkapja-e a várt kimenetet. Próbálja ki az éles eseteket (null, nulla, negatív, hatalmas).
  3. Forrás ellenőrzése: Minden API-t, könyvtárverziót és nyelvi funkciót, amelyet az AI használ, ellenőrizni kell a hivatalos dokumentációból.

Ellenőrzési prompt (könnyíti a kimenet ellenőrzését): "Sorozza fel az ÖSSZES külső könyvtárat, metódust és nyelvi funkciót, amelyet a kódjában használ. Mindegyiknél jelölje meg, hogy melyik verzióban érhető el, és jelölje meg, hogy "igazolni kell a dokumentációból". Ne alkosson olyan API-t, amelyben nem biztos; ha nem biztos benne, egyértelműen írja be, hogy "nem biztos". Sorolja fel az esetleges címes eseteket is különállóként."

Kritizálja saját kódját: "Nézze meg kritikusan az imént írt kódot, mint egy vezető mérnök, aki felvette. Adjon konkrét elemeket a következő három címszó alatt: (1) logikai/éles kis- és nagybetűhibák, (2) biztonsági kockázatok, (3) teljesítmény- vagy olvashatósági problémák. Minden elemhez írja be, hogy "miért van probléma" és "javasolt javítás", ne próbálja meg, mondd, ha nincs probléma. díszíteni."

Gyenge felszólítás / Erős felszólítás

GYENGE:"Írjon nekem egy felhasználói hitelesítési funkciót." (Eredmény: nem világos, melyik nyelv, melyik szabály, melyik hiba viselkedése; általános kód, gyakran nem biztonságos vagy nem kontextusban.)STRONG:"Írjon e-mail-ellenőrzési függvényt a Python 3.11-hez. Bemenet: string. Kimenet: igaz, ha érvényes, egyébként hamis. Szabályok: üres karakterlánc szükséges külső könyvtár Hamis, DONOT RUSE. 5 mintás teszt a függvény hozzáfűzése blokk alatt: érvényes, üres, nincs "@", dupla "@", csak szóközt tartalmaz."

A különbség a kontextusban van. Erőteljes felszólítás; Tartalmazza a nyelvet, a verziót, az input-output szerződést, a megszorításokat és a teszt elvárásait. Ez az egyetlen fegyelem nagymértékben csökkenti a hallucinációk és a nem biztonságos kódok kockázatát.

Mini tokok

1. eset – kitalált módszer. Egy fejlesztő azt hallja az AI-tól, hogy létezik egy date.addBusinessDays(5) nevű metódus a dátumkönyvtárban, és ezt magabiztosan magyarázzák el. A dokumentációt nézve látja, hogy nincs ilyen módszer, a helyes út a kézi hurok. A hallucinációt a gyártás megkezdése előtt rögzítik egy 10 perces ellenőrzéssel.

2. eset – Élállapotvesztés. Az AI egy „átlag kiszámítása” függvényt állít elő; 1000 adatsorral tesztelve működik. Ha azonban a lista üres, nullával való osztás hibát ad. Mivel a mérnök hozzáadta az üres bemeneti tesztet, látja és kijavítja a hibát, mielőtt az élesbe lépne. Egy éles állapotteszt megakadályozza a gyártási riasztást hajnali 3 órakor.

3. eset – Adatvédelmi kockázat. Egy szakértő egy tényleges adatbázis-kapcsolati karakterláncot és API-kulcsot tartalmazó fájlt akar beilleszteni egy nyilvános eszközbe. emlékszik az intézmény politikájára; A titkokat <REDACTED>-re cseréli, a kódot reprezentatív példává redukálja, és kéri. Így 5 percen belül segítséget kap, de nem jönnek ki a személyazonossági adatai.

A titkos kóddal és személyazonossági információval való munka elve

A szoftver legérzékenyebb része; forráskód titkai, azonosító információk (API kulcs, jelszó, token) és ügyfél/személyes adatok. Alapelv: megosztás előtt takaríts, lehetőleg reprezentatív példával kérdezd csak a probléma lényegét.

Anonimizált prompt minta: "Hiba van a következő függvényben. A tényleges üzleti logikát és a rejtett konstansokat reprezentatív értékekre cseréltem (API kulcs, táblanevek, mezőnevek általános). Probléma: Y hibát kapok az X bemenetben. Csak keresse meg a logikai hibát ebben a reprezentatív kódban, és magyarázza el a javított verziót. [reprezentatív kód]"

Tipp: Ha kétségei vannak, töltse ki ezt a tesztet: "Bajba kerülne a szervezetem, ha ezt nyilvánosan megírnám egy fórumban?" Még ha nem is egyértelmű a válasz, először tisztázza. A visszaállítás mindig olcsóbb, mint a szivárgás későbbi üldözése.

Gyakori hibák

  • A kimenet használata fordítás/tesztelés nélkül. Az „AI írt” nem indoklás; Minden kódrészletet a futtatással ellenőriz.
  • Kontextus nélküli kérések benyújtása. Ha a nyelv, a verzió, a bemenet-kimenet és a megszorítások nincsenek megadva, a kód általánossá és gyakran bizonytalanná válik.
  • Bizalmas információk megosztása gondolkodás nélkül. Az API-kulcsot, jelszót és ügyféladatokat nem szabad kiadni törlés nélkül.
  • A precíz nyelvezet összekeverése a pontossággal. Minél magabiztosabban beszél a mesterséges intelligencia, annál óvatosabbnak kell lennie; A magabiztos hangnem nem bizonyíték.
  • A döntés átruházása az AI-ra. A gyártás, a biztonság és az architektúra bevezetésének döntése a mérnöké marad; Az AI csak anyagokat termel.

Összefoglalva

Az AI felgyorsítja a szoftveres munka ismétlődő és időigényes részeit: vázkód, tesztvázlat, hibaszűkítés, dokumentáció. A döntés és a felelősség azonban a mérnöké marad. Minden kimenetnek át kell mennie három vezérlési rétegen (fordítás/statikus, tesztelés, forrás). A szövegkörnyezetet tartalmazó promptok írása és a rejtett információk törlése két kulcsfontosságú szokás, amelyet ennek a modulnak minden egyes részében megismételünk. Ha fegyelmezetten használja a mesterséges intelligenciát, akkor gyorsul; ha fegyelem nélkül használja, hibákat és sebezhetőségeket visz be a termelésbe.

Pályázati feladat

Válasszon egy kis kódolási feladatot a saját munkájából vagy egy képzeletbeli projektből (pl. érvényesítési funkció). Először írjon egy gyenge promptot, és kapja meg a kimenetet. Ezután alkalmazza az egység hatékony prompt mintáját: adja hozzá a nyelvet/verziót, a bemeneti-kimeneti szerződést, a megszorításokat és a teszt elvárásait. Tegye egymás mellé a két nyomatot, és írja le a különbséget. Ezután fordítsa le a robusztus kimenetet, és tesztelje legalább három élességgel (null, nulla/negatív, váratlan formátum), és jegyezze meg, hogy melyik tesztben mit talált.

ellenőrző lista

  • [ ] A prompthoz hozzáadtam a nyelvet, a verziót és az input-output szerződést.
  • [ ] Azt írtam, hogy "Ne találd ki, mondd meg, ha nem vagy biztos benne" és a hatókör-korlátozást.
  • [ ] Lefordítottam/lefuttattam a kódot, ellenőriztem a statikus figyelmeztetéseket.
  • [ ] Legalább három éles tokkal teszteltem.
  • [ ] A használt API-kat a hivatalos dokumentációból ellenőriztem.
  • [ ] Töröltem minden titkos kódot/hitelesítési adatot, vagy vállalati eszközt használtam.
  • [ ] Megerősítettem, hogy a termelésbe helyezés és a biztonság döntése továbbra is az emberé.