Njësia 7 / 11

Korrigjimi dhe analiza e përplasjeve me inteligjencën artificiale

Fitimet:

  • Aftësia për të ngushtuar shpejt shkaqet e mundshme rrënjësore duke i dhënë inteligjencës artificiale të dhënat e përplasjeve (gjurmët e stivës) me kodin përkatës dhe kontekstin e skenarit
  • Aftësia për të zgjidhur përgjithmonë shkakun rrënjësor në vend që të vërtetojë diagnozën e AI si një hipotezë në kod dhe testim dhe heshtje të simptomave
  • Mbrojtja e privatësisë gjatë korrigjimit duke maskuar të dhënat personale në regjistrat dhe regjistrat e aksidenteve

Çdo aplikacion jep gabime; Ajo që e dallon një zhvillues të mirë është se sa shpejt i gjejnë dhe rregullojnë gabimet. Korrigjimi në celular - gjetja dhe rregullimi i burimit të një problemi - është veçanërisht i vështirë sepse gabimi ndodh në pajisjen e përdoruesit, në një mjedis që nuk mund ta shihni. Shumicën e kohës, gjithçka që keni është një regjistër i përplasjes (regjistri i përplasjes / gjurmimi i stivës - një ndarje teknike se ku shkoi aplikacioni kur u rrëzua). AI është jashtëzakonisht i fuqishëm në leximin e këtyre të dhënave të fshehta, renditjen e shkaqeve të mundshme dhe propozimin e zgjidhjeve. Në këtë njësi ne do të mësojmë se si të përdorim AI si një "detektiv të gabimeve", por ju lëmë me përgjegjësinë e verifikimit dhe rregullimit të diagnozës përfundimtare.

Leximi i regjistrit të përplasjeve: Aty ku AI shkëlqen më shumë

Një regjistër i përplasjeve është një tekst i gjatë dhe frikësues; zhvilluesi i papërvojë nuk do të dijë se ku të kërkojë. AI e analizon këtë tekst në sekonda: në cilën linjë u rrëzua, cili përjashtim u hodh, cila është arsyeja e mundshme. Gabimet e zakonshme celulare janë të dukshme dhe AI ​​i njeh ato shpejt: NullPointerException (përpjekja për të hyrë në një vlerë null), IndexOutOfBoundsException (qasja në një element të listës që nuk ekziston) në Android, EXC_BAD_ACCESS (qasja në kujtesën e çliruar) në iOS, që u gjet papritur një opsion).

Llojet më të zakonshme të përplasjeve celulare dhe shkaqet e tyre tipike janë si më poshtë:

Gabim (përjashtim)

Platforma

shkak tipik

NullPointerException

Android

Qasja në një vlerë null

IndexOutOfBoundsException

Android

Qasja në elementin e listës që nuk ekziston

u gjet papritur zero

iOS

Zbërthimi i detyrueshëm i një zero është opsional (!)

EXC_BAD_ACCESS

iOS

Qasja në kujtesën e çliruar

ANR/ngrirje

Android

Përpunim i gjatë/i rëndë në fillin kryesor

Rrjedha e korrigjimit hap pas hapi:

  1. Mblidhni rekordin. Vendosni së bashku regjistrin e aksidenteve, mesazhin e gabimit dhe hapat për ta riprodhuar atë nëse është e mundur.
  2. Jepni kontekstin e AI. Më tregoni jo vetëm gabimin, por pjesën përkatëse të kodit dhe çfarë u rrëzua duke bërë.
  3. Kërkoni shkaqet e mundshme. "Më tregoni 3 shkaqet më të mundshme dhe si ta verifikoj secilin."
  4. Verifiko. Konfirmoni arsyen e propozuar në kod dhe testim; Mos e rregulloni duke hamendësuar.
  5. Rregullojeni dhe provoni përsëri. Kontrolloni që gabimi të jetë zhdukur dhe të mos krijohen gabime të reja.
Këshillë: Kur jepni regjistrin e përplasjeve tek AI, përfshini edhe fragmentin përkatës të kodit. Vetëm me stack trace, AI bën parashikim të përgjithshëm; Kur shihni kodin, probabiliteti për të gjetur vijën e saktë dhe shkakun e vërtetë rritet shumë. Konteksti përcakton cilësinë e diagnozës.

Kurthi i të dhënave personale

Regjistrat dhe regjistrat e përplasjeve shpesh përmbajnë të dhëna të përdoruesit: email, ID të përdoruesit, vendndodhjen, madje edhe përmbajtjen e formularit. Ngjitja e këtij regjistrimi në AI ashtu siç është është rrjedhje e të dhënave personale te palës së tretë dhe është shkelje e KVKK / GDPR. Pastro (maskë) zonat personale përpara se të dorëzosh regjistrimin. Gjithashtu, kini kujdes që nga fillimi të mos shkruani të dhëna personale në regjistrat e aplikacionit tuaj; Një regjistër i mirë përshkruan problemin, por nuk zbulon identitetin.

Kujdes: Rregullimi i sugjeruar nga AI mund të "heshtë defektin", por mund të mos zgjidhë shkakun rrënjësor. Për shembull, mbështjellja e një NullPointerException me një kontroll null do të ndalojë përplasjen, por nëse nuk e kuptoni pse vlera është nule, gabimi aktual logjik do të vazhdojë. Trajtoni sëmundjen, jo simptomat.

Analiza e shkakut rrënjësor

Qëllimi i korrigjimit profesional nuk është të heshtë gabimin, por të gjejë shkakun rrënjësor. E pyeta AI "pse kjo mund të jetë e pavlefshme, ku mund të ketë humbur në rrjedhën e të dhënave?" duke pyetur, "si ta hesht këtë?" Është shumë më e vlefshme sesa të kërkosh. Pasi të gjendet shkaku kryesor, dhjetëra variacione të të njëjtit gabim zgjidhen menjëherë. Inteligjenca artificiale është e mirë në këtë arsyetim zinxhir: ndiqni të dhënat nga hyrja në dalje dhe kërkojini asaj të mendojë se ku prishen.

tre mini kuti

Rasti 1 - 2 orë punë në 10 minuta. Një zhvillues shpenzoi 2 orë duke kërkuar për një gabim që u rrëzua vetëm në një model specifik Samsung. I dha regjistrin e përplasjeve (pastrimi i zonave personale) tek AI; YZ tha se gabimi tregon për një tejmbushje memorie që ndodh me një rezolucion të ndryshëm të kamerës së asaj pajisjeje. Me të dhëna, arsyeja u gjet në 10 minuta. AI përshpejtoi kërkimin, njeriu verifikoi zgjidhjen.

Rasti 2 - Defekti i heshtur është kthyer. Një ekip heshti një përplasje të përsëritur duke përdorur një sugjerim të AI për ta kapur atë. Përplasja ndaloi, por përdoruesit filluan të ankohen se "të dhënat nuk po kursehen"; sepse problemi i vërtetë (lidhja me bazën e të dhënave) ishte ende aty, sapo ishte bërë i padukshëm. Pasi u gjet shkaku kryesor, si përplasja ashtu edhe humbja e të dhënave u zgjidhën. Mësimi: heshtja nuk zgjidh.

Rasti 3 - Të dhënat kanë rrjedhur në regjistër. Një auditim zbuloi se emrat e plotë dhe numrat e telefonit të përdoruesve ishin shkruar në regjistrat e aksidenteve të aplikacionit. Zhvilluesit i ngjitnin në mënyrë rutinore këto regjistra në AI dhe rregulluan gabimet; Pra, të dhënat personale kanë dalë prej muajsh. Regjistrat u maskuan dhe procesi u korrigjua. Mësimi: konfidencialiteti zbatohet edhe kur korrigjohet.

Prompt i dobët / Prompt i fortë

Prompt i dobët: "Pse ndodh ky gabim? [stack trace]"

Njoftim i fortë: "Ky përplasje po ndodh në aplikacionin tim Android. Konteksti:- Ndërsa po bëj: përdoruesi shton në shportë nga detajet e produktit- Vetëm në disa pajisje, modele me RAM të ulët- Kodi i lidhur: [ViewModel and Repository part]- Regjistri i përplasjeve (të dhënat personale u fshinë): [stack trace]Rendisni 3 shkaqet më të mundshme për secilin: 1 rregulloj. (jo duke heshtur).

Modele të kopjueshme

Shablloni i analizës së ndërprerjeve aksidentale:"Analizo aksidentin e mëposhtëm. Konteksti: [çfarë po bën, cila pajisje/version]. Kodi përkatës: [kodi]. Regjistri i përplasjeve (të dhënat personale të pastruara): [gjurmë]. Jep 3 shkaqet më të mundshme rrënjësore dhe verifikimin + rregullim të përhershëm për secilin. Shënoni gjithashtu zgjidhjet që heshtin simptomën."

Shablloni i shkakut rrënjësor: "Kjo vlerë vjen [null/false] papritur. Ndiqni rrjedhën e të dhënave nga hyrja deri në këtë pikë: ku mund të humbasë ose të prishet? Më tregoni se ku duhet të kontrolloj në çdo fazë. [kodi]"

Shablloni i leximit të regjistrit: "Interpretoni këtë dalje të regjistrit: cilat ngjarje ndodhën me radhë, ku është anomalia, cili ishte hapi i fundit i shëndetshëm përpara gabimit? [log — të dhënat personale u fshinë]"

Modeli i riprodhimit: "Cilat hapa, gjendje të pajisjes dhe të dhëna duhet të përpiqem të riprodhoj me besueshmëri këtë gabim? Rendisni kushtet që mund të shkaktojnë gabimin sipas probabilitetit. [përshkrim]"

Gabimet e zakonshme

  • Dhënia e gjurmës së pirgut pa kontekst. Pa kodin dhe skenarin përkatës, AI bën parashikim të përgjithshëm.
  • Ngjitja e të dhënave personale në AI së bashku me regjistrat. Shkelja e konfidencialitetit; maskë së pari.
  • Heshtni simptomat. Fshehja e përplasjes me try-catch e lë problemin rrënjësor dhe krijon probleme të reja.
  • Zbatimi i sugjerimit të parë pa e verifikuar atë. Diagnoza e AI është një hipotezë; Konfirmo në kod.
  • Përpjekja për ta riprodhuar atë në emulator. Disa gabime shfaqen vetëm në pajisjen/gjendjen aktuale.
  • Nuk ritestohet pas korrigjimit. Rregullimi mund të ketë prishur diçka tjetër; Kontrolloni regresionin.

Në përmbledhje

Një nga fushat ku AI shkëlqen është leximi i regjistrave të aksidenteve dhe zgjidhja e shkaqeve të mundshme; Cilësia e diagnozës përmirësohet shumë kur jepet konteksti. Por diagnoza dhe korrigjimi përfundimtar i përket njeriut: sugjerimi i AI është një hipotezë, e verifikuar në kod dhe testim. Qëllimi nuk është të heshtni simptomat, por të zgjidhni shkakun rrënjësor; Gabimi i heshtur zakonisht kthehet në një formë tjetër. Regjistrat e aksidenteve mund të përmbajnë të dhëna personale; Maskojeni përpara se t'ia jepni AI dhe mos shkruani të dhëna personale në regjistrat tuaj që në fillim.

Detyra e aplikimit

Merrni një regjistër të aksidenteve që keni (ose mostrën që gjeneroni nga AI), maskoni çdo të dhënë personale/të dallueshme në të dhe ia jepni AI me "shabllonin e analizës së përplasjeve". Dalloni se cilat nga listat e shkaqeve kryesore të AI janë rregullime aktuale dhe cilat thjesht heshtin. Aplikoni rregullimin e përhershëm që keni zgjedhur dhe verifikoni që gabimi është zhdukur dhe nuk lindin probleme të reja.

listë kontrolli

  • [ ] Unë kam dhënë regjistrin e përplasjeve me kodin përkatës dhe kontekstin e skenarit
  • [ ] Kam maskuar të dhënat personale/të dallueshme në regjistra
  • [ ] I kërkova AI për shkakun rrënjësor dhe rregullimin e përhershëm, jo për të heshtur
  • [ ] Kam verifikuar diagnozën në kod dhe testim, nuk e kam zbatuar verbërisht
  • [ ] Pas rregullimit, testova se gabimi ishte zhdukur dhe nuk kishte regresion
  • [ ] Kontrollova që aplikacioni im nuk shkruan të dhëna personale në regjistrat e tij