Nyereség:
- Képes hatékonyan leírni a hibákat az AI-ban hibaüzenettel, veremkövetéssel és a legkisebb reprodukciós példánysal
- Szisztematikus hibakeresési folyamat futtatásának képessége mesterséges intelligencia segítségével, hogy megtalálja a kiváltó okot hipotézisek megfogalmazásával és lépésről lépésre szűkítésével
- Lehetőség annak ellenőrzésére, hogy az AI által javasolt javítás valóban megoldotta a problémát reprodukálással és regressziós teszteléssel
A hibakeresés feladata annak kiderítése, hogy egy program miért viselkedik a várttól eltérően, és kijavítsa azt, és ez a legtöbb mérnök idejét emészti fel. A jó hibakeresés nem találgatáson alapul, hanem szisztematikus szűkítésen: tünet tisztázása, hipotézis, hipotézis tesztelése, kiváltó ok elérése. Az AI nagyon erős partner ebben a ciklusban; De csak akkor, ha megadja a megfelelő információkat. A „kód nem működik, javítsd ki” kimondása arra kényszeríti az AI-t, hogy találgasson és általános javaslatokat tegyen. Adja meg neki a teljes hibaüzenetet, a verem nyomkövetését és a legkisebb reprodukciós mintát, és együtt megtalálja a kiváltó okot.
Ebben az egységben látni fogjuk, hogyan írhatunk le hatékonyan egy hibát az AI-ban, hogyan szűkíthetjük le a hipotéziseket lépésről lépésre, és regressziós teszteléssel ellenőrizzük, hogy a javasolt javítás valóban megoldja a problémát. Ne feledje: egy hiba "javítása" és "a hiba tünetének elnyomása" két különböző dolog; A kiváltó ok megtalálása nélkül végrehajtott javítás a hibát egy másik helyre helyezi át.
Fogalmak: Stack trace: Kiírat, amely megmutatja, hogy mely függvények milyen sorrendben kerültek meghívásra a hiba idején. Minimális repro: A hibát kiváltó legegyszerűbb, legrövidebb kód/bemenet. Kiváltó ok: A probléma valódi forrása, nem a tünet. Regressziós tesztelés: Olyan tesztelés, amely biztosítja, hogy ugyanaz a hiba ne ismétlődjön meg.
Az AI hibájának leírása
Annak valószínűsége, hogy a mesterséges intelligencia megtalálja a kiváltó okot, egyenesen arányos az Ön által megadott információ minőségével. A jó hibaleírás a következőket tartalmazza: mit próbált megtenni, mire számított, mi történt, a pontos hibaszöveg és veremkövetés, az érintett kód, a környezet (nyelv/verzió/OS) és a hibát okozó legkisebb minta.
- Tisztázza a tünetet. "Várható X, aktualizált Y" formátumban.
- Illessze be a teljes hibaszöveget, és verem a nyomkövetést. Ne rövidítsd, cenzúrázd, de ne törd meg a szerkezetet.
- Adja meg a legkisebb reprodukciót. Minimális bemenet és kód, amely kiváltja a hibát.
- Adja meg a környezetet. Nyelvi verzió, könyvtári verzió, futási környezet.
Hatékony hibaleíró prompt: "Hibakeresést végezek. Információ: - Mit próbálok tenni: [X] - Várt viselkedés: [Y] - Valós viselkedés: [Z] - Teljes hibaüzenet és veremnyom: [beillesztés] - Környezet: [nyelv/verzió, könyvtár/verzió]- Minimális érintett kód: [kód] A legvalószínűbb gyökérlistát adj meg először. és mondja meg, hogy melyik csekket kell ellenőrizni."
Az áramlás szűkítése hipotézis alapján
A szisztematikus hibakeresés a lehetőségek egyenkénti kiküszöbölésének művészete. Használjon mesterséges intelligenciát hipotézisek generálásához, és tervezze meg a kísérletet az egyes hipotézisek tesztelésére; Ezután futtassa a kísérletet, és adja vissza az eredményt. Ez a ciklus sokkal gyorsabb, mint a véletlenszerű változtatások és leállások szokása, amit "shotgun hibakeresésnek" neveznek.
Bináris keresés (felező) segítő prompt: "Ez a hiba tegnap nem volt, ma megvan. Azt szeretném megtudni, hogy az utolsó 20 változtatás közül melyik okozta a felezővel járó hibát. Adjon lépésről lépésre tervet: melyik ponton teszteljem, melyik feléig menjek az eredménytől függően. Mondja el azt is, hogy pontosan mit kell ellenőrizni minden lépésnél."
Naplóbeillesztési stratégia prompt: "Nem találom a hibát, mert nem látom a köztes értékeket ebben a függvényben. Mondja meg, hogy mely pontokon kell hozzáadnom azokat a naplósorokat, amelyek melyik változót nyomtatják ki. Adjon hozzá egy "mit fogok tanulni ebből a naplóból" magyarázatot minden naplóhoz. Adja meg azokat a figyelmeztetéseket is, amelyek megakadályozzák, hogy bizalmas adatokat naplózzak."
Tipp: Ha nem tud megoldani egy hibát, a probléma legtöbbször olyan helyen van, ahol hibásan feltételezte. Kérdezd meg a mesterséges intelligencia „milyen feltevésem lehet rossz?” A kérdezés megtöri a vakságodat. A legsúlyosabb hibák ott bújnak meg, ahol azt mondod: "Biztos vagyok benne, hogy ez jól működik".
Gyenge felszólítás / Erős felszólítás
GYENGE:"A kódom hibát ad, javítsd ki: [200 sornyi kód]"(Eredmény: az AI nem tudja, mi a hiba, mi várható; találgatások alapján általános javaslatokat ad, a legtöbb haszontalan.)STRONG:"NullPointerException kivételt kapok. Várható: a felhasználói listát vissza kell adni. Aktuális: Javaslatok felrobbanása [Stack. 17. Minimális ismétlés: Ez akkor fordul elő, ha a felhasználók listája üres, de nem, amikor tele van. Kapcsolódó 15 sor: [kód] Magyarázza el az üres lista indításának okát, majd javasoljon egy javítást.
Az erőteljes prompt kontextusba helyezi a hibát: mely esetben megtörténik (üres lista), mely esetben nem történik meg (teljes lista). Ez az egyetlen nyom ("amikor üres") szinte közvetlenül a kiváltó okra mutat. Mivel ez az információ nem érhető el a gyenge promptban, az AI vak találgatásokat végez.
A javítás ellenőrzése
Egy javítás csak akkor valódi javítás, ha három dolgot tesz:
irányítani
kérdés
Hogyan ellenőrizhető
Megszűnt a hiba?
Most is működik ugyanaz a bejegyzés?
Futtassa újra a minimális reprot
Nincsenek új hibák?
Elromlott még valami?
Futtassa a teljes tesztcsomagot
Nem fog megismétlődni?
Megismétlődik ugyanaz a hiba?
Adjon hozzá regressziós tesztet ehhez a forgatókönyvhöz
A kiváltó ok megtalálása nélkül végzett korrekciók gyakran elnyomják a tünetet. Például, ha egy nulla hibát a "skip if null" szóval glossíroz, akkor a valódi ok: "miért nullázódik az adat?" láthatatlan, és a hiba máshol is megismétlődik.
Mini tokok
1. eset – A tünetelnyomó csapda. A csapat egy alkalmi null hibát elhallgat egy try-catch-el; A hiba eltűnik, de 2 hét múlva az adatok hiányoznak. A valódi ok az, hogy egy szolgáltatás nullát ad vissza időtúllépéskor. Amikor megkérdezed az AI-t, hogy "miért lesz nulla?", kiderül a kiváltó ok; A valódi javítás 1 órát vesz igénybe, de végleges.
2. eset – Minimális repro teljesítmény. A fejlesztő nem tudja kijavítani azt a hibát, amely azt mondja, hogy "időnként összeomlik". Az AI javaslatával a legkisebb bemenetre csökkenti a hibát: a probléma csak a török karaktereket tartalmazó fájlneveknél jelentkezik (kódolási hiba). Ha a 300 sornyi bizonytalanságot 5 sornyi definitív reprora csökkentjük, a megoldás nyilvánvalóvá válik.
3. eset – Anti-regressziós teszt. Az AI kijavítja a dátumszámítási hibát. A mérnök ezzel nem elégedett; regressziós tesztet ad hozzá a hibás forgatókönyvhöz (hónap vége, január 31. + 1 hónap). Amikor 4 hónappal később egy másik változás érinti ugyanazt a területet, a teszt pirosra vált, és a hibát még azelőtt észlelik, hogy elérné a gyártást.
Gyakori hibák
- Ez azt jelenti, hogy "nem működik, javítsd ki". Hibaszöveg, elvárás és repro nélkül, az AI találgat.
- Nem ad nyomot a veremnek. A veremnyom gyakran közvetlenül jelzi a kiváltó okot.
- Folytassa a véletlenszerű változtatásokat. A hipotézis felállítása nélküli kísérletek időt veszítenek.
- A tünet elfojtása és a kiváltó ok hiánya. A hiba máshol születik újra.
- Nem biztosítják a javítást regressziós teszteléssel. Ugyanez a hiba csendben visszatér a jövőben.
Összefoglalva
A hatékony hibakeresés szisztematikus szűkítés, nem találgatás. A teljes hibaszöveg, a veremkövetés, a minimális reprodukciós és környezeti információk megadása az AI-nak exponenciálisan növeli a kiváltó ok megtalálásának esélyét. Használjon mesterséges intelligenciát hipotézisek generálásához, és tervezze meg a kísérletet az egyes hipotézisek tesztelésére; Ön futtatja a kísérletet. A javítást csak akkor tekintse "késznek", ha azt látja, hogy a hiba eltűnt, nem vezettek be új hibákat, és regressziós teszt védi.
Pályázati feladat
Vegyünk egy valódi vagy mesterséges hibát. Először csökkentse a hibát a legkisebb reprodukcióra (melyik bemenetben fordul elő, melyikben nem). A hatékony hibarecept-prompt használatával kérjen meg az AI-tól 3 kiváltó ok-hipotézist, és mindegyikhez egy ellenőrzési lépést. Keresse meg a kiváltó okot a hipotézisek egyenkénti tesztelésével, javítsa ki, majd írjon és futtasson egy regressziós tesztet ehhez a forgatókönyvhöz, hogy megmutassa, a hiba eltűnt, és a teszt védelmet nyújt.
ellenőrző lista
- [ ] Tisztáztam a tünetet "várt vs megvalósult".
- [ ] Megadtam a teljes hibaszöveget és a veremnyomot az AI-nak.
- [ ] A hibát a legkisebb reprodukcióra csökkentettem.
- [ ] A hipotézisek egyenkénti tesztelésével megtaláltam a kiváltó okot.
- [ ] A tünet elfojtása helyett a kiváltó okot javítottam.
- [ ] Hozzáadtam, és lefuttattam egy regressziós tesztet ugyanarra a hibára.