Üksus 6 / 12

Silumine ja algpõhjuste analüüs

Kasu:

  • Võimalus vähendada viga väikseima reprodutseeritava eksemplarini ja teisaldada see täieliku tõendiga AI-sse
  • Võimalus testida tõenduspõhiseid hüpoteese odavaima kontrolliga ja leida algpõhjus
  • Võimalus lahendada algpõhjus ja kindlustada see regressioonitestiga, mitte sümptomi lappimisega

Silumine on tarkvara ootamatu käitumise põhjuste väljaselgitamine ja selle parandamine. See on töö, kus arendaja veedab kõige rohkem aega ja väsib kõige rohkem; Sest enamasti pole viga seal, kus ta välja paistab, vaid on peidus paar sammu tahapoole. AI on võimas mõtlemispartner, kes kiirendab seda uurimistööd – kuid ainult siis, kui esitate sellele õiged tõendid. Tõenditeta silumine on valdkond, kus tehisintellekt tekitab kõige rohkem hallutsinatsioone.

Selles üksuses loome distsiplineeritud voo vea genereerimisest algpõhjuse juurde jõudmiseni: sümptomi selgitamine, tõendite kogumine (veateade, virna jälg, logi, kirje), hüpoteesi genereerimine, hüpoteesi testimine ja paranduse kinnitamine. AI aitab igal sammul; kuid "parandatud" otsus tehakse nähes, et viga on tegelikult kadunud.

Miks tõendid on kõik?

LLM ei näe viga nii, nagu teie; Ta teab ainult seda, mida sa talle ütled. Lause nagu "rakendus jookseb kokku" ei anna mudelile peaaegu mingit teavet ja mudel täidab lünga ennustusega - see tähendab hallutsinatsiooniga. Omakorda täielik veateade, pinu jälg – jaotus selle kohta, millise funktsiooni kaudu tõrge välja kutsub, tõrke käivitanud sisendi ja ootuspärase jne. Vaadeldud käitumist arvestades saab mudel reastada tõenäolisi tõenäosusi.

Silumisel mõelge tehisintellektile kui detektiivi assistendile: mida rohkem tõendeid esitate, seda täpsema hüpoteesi see genereerib. Kui tõendeid pole, arvab assistent ainult ja võib teid valele rajale juhtida.

Näpunäide. Enne vea teisaldamist tehisintellektile vähendage see väikseima reprodutseeritava näiteni. Väikseim kood ja sisend, mis vea käivitab, muudab asja radikaalselt lihtsamaks nii teie kui ka mudeli jaoks; enamasti leiate selle vähendamise käigus põhjuse ise.

Samm-sammult: algpõhjuste analüüsi voog

  1. Selgitage sümptomit. "Mis toimub, mida sa ootasid juhtuvat?" Kirjutage need kaks ühte lausesse.
  2. Koguge tõendeid. Täielik veateade, virna jälg, asjakohased logiread, käivitav kirje, versiooniteave.
  3. Laske püstitada hüpotees. Tehisintellektist „Kolm võimalikku põhjust, mis seda sümptomit selgitavad, ja kuidas neid kõiki testida?” küsi.
  4. Kontrollige kõigepealt odavaimat hüpoteesi. Lisage logi, printige väärtus, käivitage test. Kas tõendid kinnitavad hüpoteesi?
  5. Parandage algpõhjus, mitte sümptom. Selle asemel, et vaigistada sümptomit plaastriga, tegelege algpõhjusega.
  6. Regressioonitesti kinnitamine ja lisamine. Vaadake, et viga kaob; Seejärel kirjutage test, mis tuvastab selle vea, nii et see ei korduks.

Kolm miniümbrist

Juhtum 1 – virna jälg viis õigesse faili. Rakendus tagastas teatud päringutele vea 500. Arendaja andis tehisintellektile täieliku virnajälje ja käivitamistaotluse; Mudel oletas, et vea põhjustas kuupäeva parsimise kihi väärtus None. Arendaja lisas sellele reale logi, kinnitas selle ja lahendas selle 15 minutiga; 2 tundi raisati eelmisel päeval tõestamata katsetega.

Juhtum 2 – hallutsinatsioonid viisid valele teele. Teine arendaja kirjutas lihtsalt "andmebaasiühendus katkeb". AI süüdistas ühenduse basseini seadistust ilma tõenditeta; Arendaja veetis selle sätte kallal nokitsedes 40 minutit. Tegelik põhjus oli võrgupoolne ajalõpp ja see selgus alles logisid vaadates. Õppetund: ilma tõenditeta püstitatud hüpotees on ainult tõenäoline, mitte usaldusväärne.

Juhtum 3 – ilmnes ebaühtlane viga. Seal oli test, mis aeg-ajalt ebaõnnestus. AI-le anti testkood, tõrketeade ja teave "mõnikord läheb mööda, mõnikord ebaõnnestub"; mudel näitas testide jagatud aja/järjestuse sõltuvust. Ülevaatus kinnitas, et test põhines süsteemi kohalikul ajal. Kui kell oli fikseeritud (mõtletud), muutus test stabiilseks.

Neli kopeeritavat malli

Tõenduspõhise hüpoteesi loomine:

Otsin viga. Allpool toodud tõendid.- Eeldatav käitumine: {{observed}}- Täheldatud käitumine: {{observed}}- Veateade / virna jälg: {{trace}}- Käivitav sisend: {{input}}- Keskkond/versioon: {{version}}Loetlege 3 KÕIGE TÕenäolisemalt algpõhjust, mis seda sümptomit selgitavad. Igaühe jaoks: kuidas testida (odavaim kontroll) ja kuidas seda parandada, kui see on tõsi. Kui tõendid on ebapiisavad, öelge mulle, millist lisateavet vajate.

Virnajälje tõlgendamine:

Lugege seda virna jälge. Eristage, millisel real TÕenäoliselt algab viga (juurest) ja millised read on vaid ahela jätkud. Soovitage 1-2 kohta, mida kõigepealt vaadata. Seotud kood:{{code}}Jälgimine:{{trace}}

Minimaalne repro lahutamine:

Allolev kood tekitab vea. Vähendage seda VÄIKSEMAKS eksemplariks, mis ikkagi käivitab vea, kuid jätab kõik ebavajaliku kõrvale. Ärge eeldage, et iga eemaldatav tükk ei mõjuta viga, vaid lisage märge "Kui viga kaob selle eemaldamisel, siis see on põhjus".{{code}}

Korrigeerimisjärgne valideerimine ja regressioonitest:

Oletame, et algpõhjus on {{põhjus}} ja ma teen järgmise paranduse: {{fix}}.1) Kas see parandus parandab tegelikult sümptomi, kas sellel on mingeid kõrvalmõjusid?2) Kirjutage regressioonitest, mis tuvastab selle vea tulevikus.

Nõrk viip / Tugev viip

Nõrk: "Kood ei tööta, miks?"
Tugev: "Sõlm 20 / Express. POST /orders tagastab 500, kui üksused on kehas tühi string; oleks pidanud tagastama 400. Pinu jälg: TypeError: Ei saa lugeda määramata atribuute (loetakse '0') – lisatud on täielik jälg ja sellega seotud töötleja. Andke mulle kolm kõige tõenäolisemat põhjust, mis selgitavad seda koodi iga +sümptom [jatrace]."

Võimas versioon; See annab keskkonna, lõpp-punkti, päästiku sisendi, täpse veatüübi ja eeldatava käitumise. Mudel ei oska enam ennustada, vaid analüüsida.

samm

AI panus

teie kontroll

tõendite kogumine

Milliseid tõendeid on vaja, meenutab

Tõesti kogub tõendeid

hüpoteesi genereerimine

Loetlege võimalikud põhjused

Prioriteedid konteksti järgi

hüpoteesi testimine

Soovitab katsemeetodit

Tegutseb ja jälgib isiklikult

parandus

plaaster soovitab

Kas see lahendab algpõhjuse? See on tõsi.

regressioon

kirjutab testi

Kontrollib, kas test on katki

Algpõhjuse, mitte sümptomi lahendamine

Enamasti soovitab tehisintellekt plaastrit, mis vaigistab sümptomi kiiresti: lisage proovi / püüdke, tehke nullkontroll, neelake viga. See on mõnikord tõsi, sageli ohtlik; sest algpõhjus jääb paigale ja purskab uuesti välja kuskilt mujalt. Küsige endalt iga paranduse puhul: "Kas see parandab vea põhjuse või muudab selle nähtamatuks?" Kui leiate algpõhjuse, on parandus tavaliselt väiksem, tugevam ja püsivam.

Ettevaatust: erandi vaikne allaneelamine (tühi püüdmine) ei lahenda viga; see lihtsalt varjab ja muudab tulevase diagnoosimise võimatuks. Kui tehisintellekt soovitab sellist "lahendust", ärge võtke seda vastu ilma algpõhjuse kahtluse alla seadmata.

Levinud vead

  • Küsimuste esitamine ilma tõenditeta. Mitmetähenduslikud laused suruvad modelli hallutsinatsiooni; Esitage täielik viga, jälg ja sisend.
  • Lukustades esimese hüpoteesi. AI esimene soovitus ei pruugi olla kõige tõenäolisem; Alustage kõige odavamast kontrollitavast hüpoteesist.
  • Sümptomite parandamine ja algpõhjuse kaotamine. Vaigistatud viga naaseb.
  • Paranduse sulgemine seda kinnitamata. Vaadake tootmisetaolises seisundis, et viga kaob tegelikult.
  • Regressiooniteste ei kirjuta. Kui teste ei lisata, naaseb sama viga vaikselt hilisemates versioonides.

Kokkuvõttes

Silumisel on AI võimsus otseselt võrdeline tõenditega, mille te sellele esitate: ilma täieliku veateate, virnajälje, käivitava sisendi ja eeldatava käitumiseta mudel lihtsalt spekuleerib. Distsiplineeritud voog – sümptomite selgitamine, tõendite kogumine, hüpoteesi loomine, odavaima kontrolliga testimine, algpõhjuse parandamine, kontrollimine ja regressioonitesti lisamine – sulgeb vea nii kiiresti kui ka jäädavalt. AI on hüpoteesi generaator; Teie olete see, kes otsustab, et viga on tegelikult lahendatud.

Rakenduse ülesanne

Valige tõeline viga, millega olete hiljuti kokku puutunud (või reprodutseerige testviga). Tehke kõigepealt samm "minimaalne paljundamine"; Eemaldage väikseim kood ja sisend, mis tõrke käivitab. Seejärel hankige tehisintellektilt kolm võimalikku põhjust ja testimismeetodit malliga „tõenduspõhise hüpoteesi genereerimine”. Testige ise odavaimat hüpoteesi, leidke algpõhjus, parandage see ja lõpuks kirjutage regressioonitest, mis tuvastab selle vea tulevikus ja kontrollib, kas test on tõesti katki.

kontrollnimekiri

  • [ ] Vähendan vea väikseima reprodutseeritava valimini, enne kui liigutan selle AI-sse.
  • [ ] Lisan viipale täieliku veateate, virna jälje, sisendi ja eeldatava käitumise.
  • [ ] Alustan kõige odavamast juhitavast, ilma et oleksin üheski hüpoteesis kinni.
  • [ ] Kinnitan, et olen sümptomi lappimise asemel algpõhjuse lahendanud.
  • [ ] Ma märkan, et parandus parandab tegelikult vea.
  • [ ] Lisan iga lahendatud vea jaoks regressioonitesti.