Njësia 5 / 12

Korrigjimi dhe zgjidhja e problemeve

Fitimet:

  • Aftësia për të përshkruar në mënyrë efektive një gabim në AI me mesazh gabimi, gjurmë të stivës dhe shembullin më të vogël të riprodhimit
  • Aftësia për të drejtuar një rrjedhë sistematike korrigjimi me AI për të gjetur shkakun rrënjësor duke hipotezuar dhe ngushtuar atë hap pas hapi
  • Aftësia për të verifikuar se rregullimi që sugjeroi AI e zgjidhi në të vërtetë problemin duke riprodhuar dhe testuar regresion

Korrigjimi është detyra për të gjetur se pse një program po sillet ndryshe nga sa pritej dhe për ta rregulluar atë, dhe konsumon shumë nga koha e shumicës së inxhinierëve. Korrigjimi i mirë nuk bazohet në një lojë hamendjeje, por në ngushtimin sistematik: sqaroni simptomat, hipotezoni, testoni hipotezën, shkoni te shkaku kryesor. AI është një partner shumë i fuqishëm në këtë cikël; Por vetëm nëse i jepni atij informacionin e saktë. Thënia "kodi nuk funksionon, rregulloje" e detyron AI të hamendësojë dhe të bëjë sugjerime të përgjithshme. Jepni mesazhin e plotë të gabimit, gjurmën e stivës dhe mostrën më të vogël të riprodhimit dhe së bashku do të gjeni shkakun rrënjësor.

Në këtë njësi do të shohim se si të përshkruajmë në mënyrë efektive një gabim në AI, të ngushtojmë hipotezat hap pas hapi dhe të verifikojmë përmes testimit të regresionit që rregullimi i propozuar e zgjidh problemin në të vërtetë. Mos harroni: "ndreqja" e një defekti dhe "shtypja e simptomave të insektit" janë dy gjëra të ndryshme; Korrigjimi i bërë pa gjetur shkakun rrënjësor e zhvendos gabimin në një vend tjetër.

Konceptet: Gjurma e stivës: Një hale që tregon se cilat funksione janë thirrur në çfarë rendi në kohën e gabimit. Repro minimale: Kodi/hyrja më e thjeshtë, më e shkurtër që shkakton gabimin. Shkaku kryesor: Burimi i vërtetë i problemit, jo simptoma. Testimi i regresionit: Testimi që siguron që i njëjti gabim të mos përsëritet.

Duke përshkruar një gabim në AI

Mundësia që AI të gjejë shkakun rrënjësor është drejtpërdrejt proporcionale me cilësinë e informacionit që jepni. Një përshkrim i mirë i gabimit përfshin: atë që u përpoqët të bënit, çfarë prisnit, çfarë ndodhi, tekstin e saktë të gabimit dhe gjurmën e stivës, kodin e përfshirë, mjedisin (gjuhën/versionin/OS) dhe mostrën më të vogël që prodhoi gabimin.

  1. Sqaroni simptomat. Në formatin "X e pritshme, Y e aktualizuar".
  2. Ngjit tekstin e plotë të gabimit dhe gjurmën e rafte. Mos e shkurtoni, mos e censuroni, por mos e prishni strukturën.
  3. Jepni riprodhimin më të vogël. Hyrja minimale dhe kodi që shkakton gabimin.
  4. Specifikoni mjedisin. Versioni i gjuhës, versioni i bibliotekës, mjedisi i kohës së funksionimit.

Kërkesa për përshkrimin efektiv të gabimit: "Po korrigjoj një gabim. Informacioni:- Çfarë po përpiqem të bëj: [X]- Sjellja e pritshme: [Y]- Sjellja aktuale: [Z]- Mesazhi i plotë i gabimit dhe gjurmimi i stivës: [ngjit]- Mjedisi: [gjuha/versioni, biblioteka/versioni]- Më së pari më jep një rregullim të drejtpërdrejtë të kodit: [code minimale]. sipas probabilitetit dhe më tregoni se çfarë kontrolli të verifikoj për secilin."

Rrjedha e ngushtimit sipas hipotezës

Korrigjimi sistematik është arti i eliminimit të mundësive një nga një. Përdorni AI për të gjeneruar hipoteza dhe hartoni eksperimentin për të testuar secilën hipotezë; Pastaj ekzekutoni eksperimentin dhe ktheni rezultatin. Ky cikël është shumë më i shpejtë se zakoni për të bërë ndryshime të rastësishme dhe për të ndalur, i quajtur "debugging me armë gjahu".

Prompt ndihmës i kërkimit binar (biseksion): "Ky gabim nuk ishte dje, është atje sot. Dua të zbuloj se cili nga 20 ndryshimet e fundit solli gabimin me bisect. Më jep një plan hap pas hapi: në cilën pikë duhet të testoj, në cilën gjysmë duhet të shkoj në varësi të rezultatit. Gjithashtu më tregoni saktësisht se çfarë të kontrolloj në çdo hap."

Kërkesa e strategjisë së futjes së regjistrit: "Nuk mund ta gjej gabimin sepse nuk mund t'i shoh vlerat e ndërmjetme në këtë funksion. Më tregoni se në cilat pika duhet të shtoj linja regjistrash që printojnë cilat variabla. Shto një shpjegim "çfarë do të mësoj nga ky regjistër" për çdo regjistër. Specifikoni gjithashtu paralajmërimet që do të më pengojnë të regjistroj të dhëna konfidenciale."

Këshillë: Nëse nuk mund të zgjidhni një gabim, në shumicën e rasteve problemi është diku që keni supozuar gabimisht. Pyete AI-në "çfarë supozimi im mund të jetë i gabuar?" Të pyesësh do të të thyejë verbërinë. Gabimet më të rënda fshihen në vendin ku thoni "Jam i sigurt që po funksionon mirë".

Prompt i dobët / Prompt i fortë

I DOBËT:"Kodi im jep një gabim, rregulloje: [200 rreshta kodi]"(Rezultati: AI nuk e di se çfarë gabimi është, çfarë pritet; jep sugjerime të përgjithshme bazuar në supozime, shumica e tyre janë të padobishme.) FORTË:"Kam marrë NullPointerException. Pritet: Lista e përdoruesve duhet të kthehet në Statistikat: Thirrja aktuale: [ngjit]. Mjedisi: Java 17. Përsëritja minimale: Ndodh kur lista e përdoruesve është e zbrazët, por jo kur është e mbushur me 15 rreshta: [kodi].

Prompt-i i fuqishëm e vendos gabimin në kontekst: në cilin rast ndodh (lista e zbrazët), në të cilin rast nuk ndodh (lista e plotë). Kjo e dhënë e vetme ("ndodh kur bosh") pothuajse drejtpërdrejt tregon shkakun rrënjësor. Meqenëse ky informacion nuk është i disponueshëm në kërkesën e dobët, AI bën një supozim të verbër.

Verifikimi i rregullimit

Një rregullim është vetëm një rregullim i vërtetë nëse bën tre gjëra:

kontrollin

Pyetje

Si të verifikoni

A është zhdukur gabimi?

A funksionon e njëjta hyrje tani?

Ekzekutoni sërish repro minimale

Nuk ka gabime të reja?

A është prishur ndonjë gjë tjetër?

Ekzekutoni të gjithë grupin e testimit

Nuk do të përsëritet?

A do të ndodhë përsëri i njëjti gabim?

Shto testin e regresionit për këtë skenar

Korrigjimet e bëra pa gjetur shkakun rrënjësor shpesh e shtypin simptomat. Për shembull, fshirja e një gabimi të pavlefshëm me "kaloni nëse null" bën arsyen e vërtetë, "pse të dhënat bëhen nule?" i padukshëm dhe gabimi përsëritet diku tjetër.

Mini Rastet

Rasti 1 - Kurthi i shtypjes së simptomave. Një ekip hesht një gabim të rastësishëm zero me një provë; Gabimi zhduket, por pas 2 javësh të dhënat duket se mungojnë. Arsyeja e vërtetë është se një shërbim kthehet null në kohë. Kur pyet AI "pse po bëhet i pavlefshëm?", del në pah shkaku kryesor; Rregullimi i vërtetë zgjat 1 orë, por është i përhershëm.

Rasti 2 - Fuqia repro minimale. Një zhvillues nuk mund të rregullojë një gabim që thotë "ai rrëzohet herë pas here." Ai redukton gabimin në hyrjen më të vogël me sugjerimin e AI: problemi ndodh vetëm me emrat e skedarëve që përmbajnë karaktere turke (gabim kodimi). Kur 300 rreshta të pasigurisë reduktohen në 5 rreshta të riprodhimit përfundimtar, zgjidhja bëhet e qartë.

Rasti 3 - Testi kundër regresionit. AI rregullon një gabim në llogaritjen e datës. Inxhinieri nuk është i kënaqur me këtë; shton një test regresioni për skenarin e gabuar (fundi i muajit, 31 janar + 1 muaj). Kur një ndryshim tjetër prek të njëjtën zonë 4 muaj më vonë, testi bëhet i kuq dhe defekti kapet përpara se të arrijë në prodhim.

Gabimet e zakonshme

  • Do të thotë "nuk po funksionon, rregullojeni". Pa tekst gabimi, pritshmëri dhe repro, AI supozon.
  • Duke mos dhënë gjurmën e pirgut. Gjurma e pirgut shpesh tregon drejtpërdrejt shkakun rrënjësor.
  • Vazhdoni të bëni ndryshime të rastësishme. Eksperimentet pa krijuar një hipotezë humbasin kohë.
  • Shtypja e simptomave dhe mungesa e shkakut rrënjësor. Gabimi rilind diku tjetër.
  • Mos sigurimi i rregullimit me testimin e regresionit. I njëjti gabim kthehet në heshtje në të ardhmen.

Në përmbledhje

Korrigjimi efektiv është ngushtim sistematik, jo hamendje. Dhënia e AI-së të tekstit të plotë të gabimit, gjurmës së stivës, riprodhimit minimal dhe informacionit të mjedisit rrit në mënyrë eksponenciale shanset për të gjetur shkakun rrënjësor. Përdorni AI për të gjeneruar hipoteza dhe hartoni eksperimentin për të testuar secilën hipotezë; Ju drejtoni eksperimentin. Konsideroni një rregullim "të kryer" vetëm kur shihni se defekti është zhdukur, nuk janë paraqitur gabime të reja dhe mbrohet nga testimi i regresionit.

Detyra e aplikimit

Konsideroni një gabim real ose artificial. Së pari zvogëlojeni gabimin në riprodhimin më të vogël (në cilin hyrje ndodh, në të cilin jo). Duke përdorur kërkesën efektive të recetës së gabimeve, kërkoni nga AI për 3 hipoteza të shkakut rrënjësor dhe një hap verifikimi për secilën. Gjeni shkakun kryesor duke testuar hipotezat një nga një, rregulloni atë, më pas shkruani dhe ekzekutoni një test regresioni për këtë skenar për të treguar se gabimi është zhdukur dhe testi ofron mbrojtje.

listë kontrolli

  • [ ] Unë e sqarova simptomën si "e pritur vs e realizuar".
  • [ ] I dhashë tekstin e plotë të gabimit dhe gjurmën e stivës tek AI.
  • [ ] E reduktova gabimin në riprodhimin më të vogël.
  • [ ] Duke testuar hipotezat një nga një, gjeta shkakun rrënjësor.
  • [ ] Në vend që të shtypja simptomat, unë rregullova shkakun rrënjësor.
  • [ ] Shtova dhe bëra një test regresioni për të njëjtin gabim.