Yksikkö 6 / 12

Virheenkorjaus ja syyanalyysi

Voitot:

  • Mahdollisuus vähentää virhe pienimpään toistettavissa olevaan esiintymään ja siirtää se tekoälyyn täydellä varmuudella
  • Kyky testata näyttöön perustuvia hypoteeseja halvimmalla kontrollilla ja löytää perimmäinen syy
  • Kyky ratkaista perimmäinen syy ja varmistaa se regressiotestillä oireen korjaamisen sijaan

Vianetsintä on prosessi, jossa selvitetään, miksi ohjelmisto käyttäytyy odottamatta, ja korjataan se. Se on työ, jossa kehittäjä viettää eniten aikaa ja väsyy eniten; Koska suurimman osan ajasta virhe ei ole siellä, missä se näkyy, vaan se on piilossa muutaman askeleen takana. Tekoäly on voimakas ajattelukumppani, joka nopeuttaa tätä tutkimusta – mutta vain jos annat sille oikeat todisteet. Virheenkorjaus ilman todisteita on alue, jolla tekoäly tuottaa eniten hallusinaatioita.

Tässä yksikössä luomme kurinalaisen kulun virheen luomisesta perimmäiseen syyn selvittämiseen: oireen selvittäminen, todisteiden kerääminen (virheilmoitus, pinojälki, loki, merkintä), hypoteesin luominen, hypoteesin testaus ja korjauksen vahvistaminen. AI auttaa jokaisessa vaiheessa; mutta "korjattu" päätös tehdään näkemällä, että vika on todellakin poistunut.

Miksi todisteet ovat kaikki?

LLM ei näe virhettä samalla tavalla kuin sinä; Hän tietää vain, mitä kerrot hänelle. Lause kuten "Sovellus kaatuu" ei anna mallille juuri mitään tietoa, ja malli täyttää aukon ennusteella - eli hallusinaatiolla. Puolestaan ​​koko virhesanoma, pinojäljitys — erittely siitä, mikä funktio kutsuu virhettä, virheen laukaiseva syöte ja mitä odotettiin jne. Havaitun käyttäytymisen perusteella malli voi luokitella todelliset todennäköisyydet.

Ajattele virheenkorjauksessa tekoälyä etsivän avustajana: mitä enemmän todisteita esität, sitä tarkemman hypoteesin se luo. Jos todisteita ei ole, avustaja vain arvaa ja saattaa johtaa sinut väärälle polulle.

Vinkki: Ennen kuin siirrät virheen tekoälyyn, vähennä se pienimpään toistettavissa olevaan esimerkkiin. Pienin virheen laukaiseva koodi ja syöte tekee asioista radikaalisti helpompaa sekä sinulle että mallille; useimmiten tämän vähennyksen aikana löydät syyn itse.

Askel askeleelta: perussyyanalyysin kulku

  1. Selvitä oire. "Mitä tapahtuu, mitä odotit tapahtuvan?" Kirjoita nämä kaksi yhteen lauseeseen.
  2. Kerää todisteita. Täysi virheilmoitus, pinon jäljitys, asiaankuuluvat lokirivit, laukaisumerkintä, versiotiedot.
  3. Luo hypoteesi. Tekoälystä "3 mahdollista syytä, jotka selittävät tämän oireen ja kuinka testaan ​​kukin?" kysyä.
  4. Testaa ensin halvin hypoteesi. Lisää loki, tulosta arvo, suorita testi. Vahvistaako todiste hypoteesin?
  5. Korjaa perimmäinen syy, ei oire. Sen sijaan, että hiljentäisit oireen laastarin avulla, käsittele perimmäinen syy.
  6. Vahvista ja lisää regressiotestaus. Katso, että virhe katoaa; Kirjoita sitten testi, joka havaitsee virheen, jotta se ei toistu.

Kolme minikoteloa

Tapaus 1 — Pinon jäljitys johti oikeaan tiedostoon. Sovellus palautti 500-virheen tietyissä pyynnöissä. Kehittäjä antoi täyden pinon jäljityksen ja laukaisupyynnön tekoälylle; Malli oletti, että virhe johtui None-arvosta päivämäärän jäsennyskerroksessa. Kehittäjä lisäsi lokin tälle riville, vahvisti sen ja ratkaisi sen 15 minuutissa; 2 tuntia hukattiin edellisenä päivänä todistamattomiin kokeisiin.

Tapaus 2 – Hallusinaatiot johtivat väärään suuntaan. Toinen kehittäjä kirjoitti vain "tietokantayhteys katkeaa". Tekoäly syytti yhteyspoolin asettamisesta ilman todisteita; Kehittäjä vietti 40 minuuttia puuhaillessaan tätä asetusta. Todellinen syy oli aikakatkaisu verkon puolella ja se paljastui vasta katsomalla lokeja. Oppitunti: ilman todisteita otettu hypoteesi on vain todennäköinen, ei luotettava.

Tapaus 3 – havaittu epäselvä virhe. Siellä oli testi, joka välillä epäonnistui. Tekoälylle annettiin testikoodi, virheviesti ja tiedot "joskus se menee läpi, joskus epäonnistuu"; malli osoitti testien jaetun aika/järjestysriippuvuuden. Katsaus vahvisti, että testi perustui järjestelmän paikalliseen aikaan. Kun kello oli korjattu (pilkattu), testi muuttui vakaaksi.

Neljä kopioitavaa mallia

Todisteisiin perustuvien hypoteesien luominen:

Korjaan virheen. Todisteet alla.- Odotettu toiminta: {{odotettu}}- Havaittu käyttäytyminen: {{havaittu}}- Virheilmoitus/pinon jäljitys: {{trace}}- Laukaiseva syöttö: {{input}}- Ympäristö/versio: {{version}}Luettelo 3 TODENNÄKÖISESTI tämän oireen selittävää syytä. Jokaiselle: miten testaan ​​(halvin tarkistus) ja kuinka korjaan sen, jos se on totta. Jos todisteet eivät riitä, kerro mitä lisätietoja tarvitset.

Pinon jäljen tulkitseminen:

Lue tämä pinojälki. Erota, millä rivillä virhe TODENNÄKÖISESTI alkaa (juuresta) ja mitkä rivit ovat vain ketjun jatkoja. Ehdota 1-2 paikkaa, jotka kannattaa katsoa ensin. Aiheeseen liittyvä koodi:{{code}}Trace:{{trace}}

Minimaalinen repro-vähennys:

Alla oleva koodi tuottaa virheen. Vähennä se PIENISIIN ilmentymään, joka silti laukaisee virheen, mutta hylkää kaiken tarpeettoman. Älä oleta, että jokainen poistamasi pala ei vaikuta virheeseen, vaan lisää huomautus "jos virhe katoaa, kun poistat tämän, siksi".{{code}}

Korjauksen jälkeinen validointi ja regressiotestaus:

Oletetaan, että perimmäinen syy on {{cause}} ja teen seuraavan korjauksen: {{fix}}.1) Korjaako tämä korjaus todellakin oireen, onko sillä sivuvaikutuksia?2) Kirjoita regressiotesti, joka havaitsee tämän virheen tulevaisuudessa.

Heikko kehote / Vahva kehote

Heikko: "Koodi ei toimi, miksi?"
Vahva: "Solmu 20 / Express. POST /orders palauttaa 500, kun tuotteet ovat tyhjä merkkijono rungossa; sen olisi pitänyt palauttaa 400. Pinojäljitys: TypeError: Ei voi lukea määrittämättömien ominaisuuksia (luku '0') - liitteenä on täydellinen jäljitys ja siihen liittyvä käsittelijä. Anna minulle 3 todennäköisintä syytä, jotka selittävät tämän koodin oireen +.

Tehokas versio; Se antaa ympäristön, päätepisteen, laukaisinsyötteen, tarkan virhetyypin ja odotetun toiminnan. Malli ei osaa enää ennustaa, vaan analysoida.

askel

AI:n panos

sinun hallintaasi

todisteiden kerääminen

Mitä todisteita tarvitaan, muistuttaa

Todellakin kerää todisteita

hypoteesin luominen

Listaa mahdolliset syyt

Priorisoi kontekstin mukaan

hypoteesien testaus

Suosittelee testimenetelmää

Toimii ja tarkkailee henkilökohtaisesti

korjaus

patch suosittelee

Ratkaiseeko se perimmäisen syyn? Se on totta.

regressio

kirjoittaa kokeen

Tarkistaa, että testi on rikki

Perussyyn, ei oireen ratkaiseminen

Useimmiten tekoäly ehdottaa korjaustiedostoa, joka vaimentaa nopeasti oireen: lisää try/catch, aseta nolla-tarkistus, niele virhe. Tämä on joskus totta, usein vaarallista; koska alkuperäinen syy pysyy paikallaan ja purkautuu uudelleen jostain muualta. Kysy itseltäsi jokaisen korjauksen yhteydessä: "Korjaako tämä virheen syyn vai tekeekö se näkymättömäksi?" Kun perimmäinen syy löytyy, korjaus on yleensä pienempi, kestävämpi ja pysyvämpi.

Varoitus: Poikkeuksen hiljainen nieleminen (tyhjä kiinnitys) ei ratkaise virhettä. se vain kätkee ja tekee tulevan diagnoosin mahdottomaksi. Jos tekoäly ehdottaa tällaista "ratkaisua", älä hyväksy sitä kyseenalaistamatta perimmäistä syytä.

Yleisiä virheitä

  • Kysymyksiä ilman todisteita. Epäselvät lauseet työntävät mallin hallusinaatioihin; Anna täydellinen virhe, jäljitys ja syöte.
  • Lukiutuminen ensimmäiseen hypoteesiin. Tekoälyn ensimmäinen ehdotus ei ehkä ole todennäköisin; Aloita halvimmalla hallittavalla hypoteesilla.
  • Oireen korjaaminen ja perimmäisen syyn puuttuminen. Vaimennettu virhe palaa.
  • Korjauksen sulkeminen vahvistamatta sitä. Katso tuotannon kaltaisessa kunnossa, että virhe todella katoaa.
  • Ei kirjoita regressiotestejä. Jos testejä ei lisätä, sama virhe toistuu hiljaa myöhemmissä versioissa.

Yhteenvetona

Virheenkorjauksessa tekoälyn teho on suoraan verrannollinen sille antamaan näyttöön: ilman täydellistä virheilmoitusta, pinojäljitystä, liipaisusyöttöä ja odotettua käyttäytymistä malli vain spekuloi. Kurillinen kulku – selvitä oireet, kerää todisteita, luo hypoteesi, testaa halvimmalla kontrollilla, korjaa perussyy, tarkista ja lisää regressiotestausta – sulkee vian nopeasti ja pysyvästi. AI on hypoteesigeneraattori; Sinä päätät, että vika todella on ratkaistu.

Sovellustehtävä

Valitse todellinen bugi, johon olet törmännyt äskettäin (tai toista testivirhe). Tee "minimitoisto" -vaihe ensin; Poista pienin koodi ja syöte, joka laukaisee virheen. Hanki sitten 3 mahdollista syytä ja testausmenetelmää tekoälyltä "todisteeseen perustuvan hypoteesin luominen" -mallin avulla. Testaa itse halvin hypoteesi, etsi perimmäinen syy, korjaa se ja kirjoita lopuksi regressiotesti, joka havaitsee tämän vian tulevaisuudessa ja varmistaa, että testi on todella rikki.

tarkistuslista

  • [ ] Vähennän virheen pienimpään toistettavissa olevaan näytteeseen ennen kuin siirrän sen tekoälyyn.
  • [ ] Lisään kehotteeseen täydellisen virheilmoituksen, pinon jäljityksen, syötteen ja odotetun toiminnan.
  • [ ] Aloitan halvimmasta ohjattavasta, ilman että olen lukittunut yhteen hypoteesiin.
  • [ ] Varmistan, että olen ratkaissut perimmäisen syyn oireen korjaamisen sijaan.
  • [ ] Huomaan, että korjaus todella korjaa vian.
  • [ ] Lisään regressiotestin jokaiselle ratkaistulle virheelle.