Enota 6 / 12

Odpravljanje napak in analiza temeljnega vzroka

Dobički:

  • Sposobnost zmanjšanja hrošča na najmanjši primerek, ki ga je mogoče ponoviti, in ga premakniti v AI s popolnim dokazom
  • Sposobnost testiranja hipotez, ki temeljijo na dokazih, z najcenejšo kontrolo in iskanje vzroka
  • Sposobnost razrešiti temeljni vzrok in ga zaščititi z regresijskim testom, namesto da bi popravili simptom

Odpravljanje napak je postopek ugotavljanja, zakaj se programska oprema obnaša nepričakovano, in popravljanja tega. To je delo, kjer razvijalec preživi največ časa in se najbolj utrudi; Ker največkrat napaka ni tam, kjer se pojavi, ampak je skrita nekaj korakov zadaj. Umetna inteligenca je močan razmišljajoči partner, ki pospešuje te raziskave – a le, če ji podate prave dokaze. Odpravljanje napak brez dokazov je področje, kjer umetna inteligenca povzroča največ halucinacij.

V tej enoti vzpostavimo discipliniran tok od generiranja napake do tega, da pridemo do temeljnega vzroka: pojasnitev simptoma, zbiranje dokazov (sporočilo o napaki, sled sklada, dnevnik, vnos), generiranje hipoteze, testiranje hipoteze in potrditev popravka. AI pomaga na vsakem koraku; vendar je "popravljena" odločitev sprejeta, ko vidimo, da je napaka dejansko izginila.

Zakaj so dokazi vse?

LLM ne vidi napak tako, kot jih vi; Ve samo tisto, kar mu poveš. Stavek, kot je »Aplikacija se zruši«, ne daje modelu skoraj nobenih informacij, model pa zapolni vrzel z napovedjo - to je halucinacija. Po drugi strani pa celotno sporočilo o napaki, sled sklada – razčlenitev, skozi katere klice funkcije je prišlo do napake, vnos, ki je napako sprožil, in kaj je bilo pričakovano itd. Glede na opaženo vedenje lahko model razvrsti prave verjetnosti.

Pri odpravljanju napak razmišljajte o AI kot o pomočniku detektiva: več dokazov kot predložite, natančnejšo hipotezo ustvari. Če ni dokazov, bo pomočnik le ugibal in vas lahko zapelje na napačno sled.

Namig: Pred prenosom hrošča v AI, ga zmanjšajte na najmanjši primer, ki ga je mogoče ponoviti. Najmanjša koda in vnos, ki sproži napako, bistveno olajša stvari tako za vas kot za model; najpogosteje med tem zmanjšanjem sami poiščete vzrok.

Korak za korakom: Potek analize temeljnega vzroka

  1. Pojasnite simptom. "Kaj se dogaja, kaj si pričakoval, da se bo zgodilo?" Napiši oba v enem stavku.
  2. Zberite dokaze. Celotno sporočilo o napaki, sled sklada, ustrezne vrstice dnevnika, sprožilni vnos, informacije o različici.
  3. Ustvarite hipotezo. Iz AI "3 možni vzroki, ki pojasnjujejo ta simptom in kako testiram vsakega?" vprašaj.
  4. Najprej preizkusite najcenejšo hipotezo. Dodajte dnevnik, natisnite vrednost, zaženite preizkus. Ali dokazi potrjujejo hipotezo?
  5. Odpravite glavni vzrok, ne simptomov. Namesto da utišate simptom z obližem, odpravite glavni vzrok.
  6. Potrdite in dodajte regresijsko testiranje. Glej, da napaka izgine; Nato napišite test, ki bo ujel to napako, da se ne bo več ponovila.

Trije mini kovčki

1. primer – sled sklada je vodila do pravilne datoteke. Aplikacija je pri določenih zahtevah vračala napako 500. Razvijalec je AI dal celotno sled sklada in zahtevo za sprožitev; Model je domneval, da je napako povzročila vrednost None v sloju za razčlenjevanje datuma. Razvijalec je tej vrstici dodal dnevnik, ga preveril in rešil v 15 minutah; 2 uri sta prejšnji dan izgubili z nedokazanimi poskusi.

Primer 2 — Halucinacije so pripeljale na napačno sled. Drugi razvijalec je preprosto napisal "povezava z bazo podatkov je prekinjena". AI je obtožil nastavitev povezovalnega bazena brez kakršnih koli dokazov; Razvijalec se je s to nastavitvijo ukvarjal 40 minut. Pravi vzrok je bila časovna omejitev na omrežni strani in je bil odkrit šele s pregledovanjem dnevnikov. Nauk: hipoteza brez dokazov je le verjetna, ni pa zanesljiva.

3. primer – Ugotovljena negotova napaka. Obstajal je test, ki je občasno padel. AI je dobil testno kodo, sporočilo o napaki in informacijo "včasih uspe, včasih ne uspe"; model je pokazal skupno odvisnost od časa/vrstnega reda testov. Pregled je potrdil, da je test temeljil na lokalnem času sistema. Ko je bila ura popravljena (posmehovana), je test postal stabilen.

Štiri kopirane predloge

Ustvarjanje hipotez na podlagi dokazov:

Odpravljam napako. Spodaj so dokazi.- Pričakovano vedenje: {{expected}}- Opaženo vedenje: {{observed}}- Sporočilo o napaki/sled sklada: {{trace}}- Sprožilni vnos: {{input}}- Okolje/različica: {{version}}Navedite 3 NAJVERJETNEJŠE osnovne vzroke, ki pojasnjujejo ta simptom. Za vsako: kako testiram (najcenejši pregled) in kako popraviti, če je res. Če dokazi niso zadostni, mi povejte, katere dodatne informacije potrebujete.

Tolmačenje sledi sklada:

Preberite to sled sklada. Ločite, v kateri vrstici se napaka VERJETNO začne (koren) in katere vrstice so le nadaljevanja verige. Predlagajte 1-2 mesti za ogled. Povezana koda:{{code}}Trace:{{trace}}

Najmanjše reproducirano odštevanje:

Spodnja koda povzroči napako. Zmanjšajte ga na NAJMANJŠI primerek, ki še vedno sproži napako, vendar zavrže vse nepotrebno. Ne domnevajte, da vsak kos, ki ga odstranite, ne vpliva na napako, ampak dodajte opombo z napisom "če napaka izgine, ko to odstranite, je to razlog".{{code}}

Validacija po popravkih in regresijsko testiranje:

Predpostavimo, da je osnovni vzrok {{cause}} in naredim naslednji popravek: {{fix}}.1) Ali ta popravek dejansko odpravi simptom, ali bo imel kakšne stranske učinke?2) Napišite regresijski test, ki bo v prihodnosti odkril to napako.

Šibek poziv/močan poziv

Slab: "Koda ne deluje, zakaj?"
Močno: "Vozlišče 20 / Express. POST /orders vrne 500, ko je element element prazen niz v telesu; moral bi vrniti 400. Sled sklada: TypeError: ni mogoče prebrati lastnosti nedefiniranega (branje '0') — priložena je popolna sled in z njo povezan upravljalnik. Navedite 3 najverjetnejše vzroke, ki pojasnjujejo ta simptom, in kako preizkusiti vsakega. [sled + koda]"

Zmogljiva različica; Poda okolje, končno točko, vnos sprožilca, točno vrsto napake in pričakovano vedenje. Model ne more več napovedovati, ampak analizo.

korak

prispevek AI

vaš nadzor

zbiranje dokazov

Kateri dokazi so potrebni, opominja

Resnično zbira dokaze

ustvarjanje hipotez

Navedite možne razloge

Daje prednost glede na kontekst

testiranje hipotez

Priporoča testno metodo

Upravlja in opazuje osebno

popravek

obliž priporoča

Ali rešuje temeljni vzrok? res je

regresija

piše test

Preveri, ali je test pokvarjen

Reševanje temeljnega vzroka, ne simptoma

Večino časa bo umetna inteligenca predlagala popravek, ki hitro utiša simptom: dodajte poskus/ulov, postavite ničelno preverjanje, pogoltnite napako. To je včasih res, pogosto nevarno; ker prvotni vzrok ostane na mestu in spet izbruhne od nekje drugje. Pri vsakem popravku se vprašajte: "Ali to odpravi vzrok napake ali jo naredi nevidno?" Ko najdete glavni vzrok, je popravek običajno manjši, močnejši in trajnejši.

Pozor: Tiho požiranje izjeme (prazen ulov) ne odpravi napake; le prikrije in onemogoči prihodnjo diagnozo. Če umetna inteligenca predlaga takšno "rešitev", je ne sprejmite, ne da bi se vprašali o temeljnem vzroku.

Pogoste napake

  • Postavljanje vprašanj brez dokazov. Dvoumni stavki potisnejo model v halucinacije; Podajte celotno napako, sledite in vnesite.
  • Zaklepanje na prvo hipotezo. Prvi predlog AI morda ni najbolj verjeten; Začnite z najcenejšo obvladljivo hipotezo.
  • Odpravite simptom in zamudite osnovni vzrok. Utišana napaka se vrne.
  • Zapiranje popravka brez preverjanja. V produkcijskem stanju boste videli, da napaka dejansko izgine.
  • Ne pisanje regresijskih testov. Če testi niso dodani, se bo ista napaka tiho vrnila v kasnejših različicah.

Če povzamem

Pri odpravljanju napak je moč umetne inteligence neposredno sorazmerna z dokazi, ki mu jih daste: brez celotnega sporočila o napaki, sledi sklada, sprožilnega vnosa in pričakovanega vedenja model samo špekulira. Discipliniran tok – razjasnite simptom, zberite dokaze, ustvarite hipotezo, testirajte z najcenejšim nadzorom, odpravite glavni vzrok, preverite in dodajte regresijsko testiranje – hitro in trajno zapre hrošč. AI je generator hipotez; Vi ste tisti, ki se odločite, da je napaka dejansko odpravljena.

Aplikacijska naloga

Izberite pravo napako, na katero ste nedavno naleteli (ali reproducirajte testno napako). Najprej naredite korak "minimalne reprodukcije"; Odstranite najmanjšo kodo in vnos, ki sproži napako. Nato pridobite 3 možne vzroke in metode testiranja iz umetne inteligence s predlogo »generiranje hipotez na podlagi dokazov«. Sami preizkusite najcenejšo hipotezo, poiščite vzrok, ga popravite in na koncu napišite regresijski test, ki bo v prihodnosti odkril to napako in preveril, ali je test dejansko pokvarjen.

kontrolni seznam

  • [ ] Napako zmanjšam na najmanjši ponovljivi vzorec, preden ga premaknem v AI.
  • [ ] Pozivu dodajam celotno sporočilo o napaki, sled sklada, vnos in pričakovano vedenje.
  • [ ] Začnem z najcenejšim, ki ga je mogoče nadzorovati, ne da bi bil zaklenjen v eno samo hipotezo.
  • [ ] Potrjujem, da sem odpravil glavni vzrok, namesto da bi popravil simptom.
  • [ ] Opažam, da popravek dejansko odpravlja napako.
  • [ ] Dodam regresijski test za vsako odpravljeno napako.