Câștiguri:
- Abilitatea de a reduce o eroare la cea mai mică instanță reproductibilă și de a o muta la AI cu dovezi complete
- Abilitatea de a testa ipoteze bazate pe dovezi cu cel mai ieftin control și de a găsi cauza principală
- Capacitatea de a rezolva cauza principală și de a o asigura cu un test de regresie, mai degrabă decât să corecteze simptomul
Depanarea este procesul de a afla de ce un software se comportă neașteptat și de a-l remedia. Este meseria în care un dezvoltator petrece cel mai mult timp și obosește cel mai mult; Pentru că de cele mai multe ori greșeala nu este acolo unde apare, ci este ascunsă la câțiva pași în urmă. Inteligența artificială este un partener de gândire puternic care accelerează această cercetare, dar numai dacă îi oferi dovezile potrivite. Depanarea fără dovezi este zona în care AI produce cele mai multe halucinații.
În această unitate, stabilim un flux disciplinat de la generarea erorii până la ajungerea la cauza principală: clarificarea simptomului, strângerea dovezilor (mesaj de eroare, urmărirea stivei, jurnal, intrare), generarea unei ipoteze, testarea ipotezei și validarea remedierii. AI ajută la fiecare pas; dar decizia „remediată” se ia văzând că bug-ul a dispărut efectiv.
De ce dovezile sunt totul?
Un LLM nu vede erorile așa cum o vedeți dvs.; El știe doar ce-i spui. O propoziție precum „Aplicația se blochează” nu oferă modelului aproape nicio informație, iar modelul umple golul cu o predicție - adică o halucinație. La rândul său, mesajul de eroare complet, urmărirea stivei - o defalcare a funcției prin care a apărut eroarea, intrarea care a declanșat eroarea și ceea ce era de așteptat etc. Având în vedere comportamentul observat, modelul poate clasifica probabilitățile adevărate.
În depanare, gândiți-vă la AI ca la un asistent al unui detectiv: cu cât prezentați mai multe dovezi, cu atât este mai precisă ipoteza pe care o generează. Dacă nu există dovezi, asistentul va doar ghici și vă poate conduce pe un drum greșit.
Sfat: înainte de a porta o eroare la AI, reduceți-l la cel mai mic exemplu reproductibil. Cel mai mic cod și intrare care declanșează eroarea ușurează radical lucrurile atât pentru dvs., cât și pentru model; cel mai adesea în timpul acestei reduceri găsiți singur cauza.
Pas cu pas: Fluxul analizei cauzei principale
- Clarificați simptomul. „Ce se întâmplă, ce te așteptai să se întâmple?” Scrie-le pe cele două într-o singură propoziție.
- Aduna dovezi. Mesaj de eroare complet, urmărire a stivei, linii de jurnal relevante, intrare de declanșare, informații despre versiune.
- Să fie generată ipoteza. Din AI „3 cauze posibile care explică acest simptom și cum testez pentru fiecare?” intreaba.
- Testați mai întâi ipoteza cea mai ieftină. Adăugați un jurnal, imprimați o valoare, rulați un test. Dovezile confirmă ipoteza?
- Remediați cauza principală, nu simptomul. În loc să reduceți la tăcere simptomul cu un plasture, abordați cauza principală.
- Validați și adăugați testarea de regresie. Vezi ca eroarea dispare; Apoi scrieți un test care va detecta eroarea, astfel încât să nu se întoarcă.
Trei mini carcase
Cazul 1 — Urmărirea stivei a condus la fișierul corect. O aplicație returna o eroare 500 la anumite solicitări. Dezvoltatorul a dat AI-ului urmărirea stivei complete și cererea de declanșare; Modelul a emis ipoteza că eroarea a fost cauzată de o valoare None într-un strat de analiză a datei. Dezvoltatorul a adăugat un jurnal la acea linie, l-a verificat și l-a rezolvat în 15 minute; 2 ore au fost pierdute cu o zi înainte cu experimente nedovedite.
Cazul 2 – Halucinația a dus la o cale greșită. Un alt dezvoltator a scris pur și simplu „conexiunea la baza de date scade”. AI a acuzat o setare a grupului de conexiuni fără nicio dovadă; Dezvoltatorul a petrecut 40 de minute pentru a modifica această setare. Cauza reală a fost un timeout din partea rețelei și a fost dezvăluită doar privind jurnalele. Lecție: o ipoteză luată fără dovezi este doar probabilă, nu de încredere.
Cazul 3 – Eroare fulgeră prinsă. A existat un test care uneori a eșuat. AI a primit codul de testare, mesajul de eșec și informația „uneori trece, alteori eșuează”; modelul a indicat o dependență comună de timp/ordine a testelor. Analiza a confirmat că testul s-a bazat pe ora locală a sistemului. Odată ce ceasul a fost fixat (batjocorit), testul a devenit stabil.
Patru șabloane copiabile
Generarea de ipoteze bazate pe dovezi:
Depanez o eroare. Dovezi de mai jos.- Comportament așteptat: {{așteptat}}- Comportament observat: {{observat}}- Mesaj de eroare/urmă stivă: {{urmă}}- Intrare de declanșare: {{input}}- Mediu/versiune: {{versiune}}Enumerați cele 3 CELE MAI PROBABILE cauze rădăcină care explică acest simptom. Pentru fiecare: cum testez (cea mai ieftină verificare) și cum o repar dacă este adevărat. Dacă dovezile sunt insuficiente, spuneți-mi de ce informații suplimentare aveți nevoie.
Interpretarea urmei stivei:
Citiți această urmă de stivă. Distingeți între ce linie începe PROBABIL eroarea (rădăcină) și care linii sunt doar continuări ale lanțului. Sugerați 1-2 locuri în care să vă uitați mai întâi. Cod înrudit:{{code}}Trace:{{trace}}
Scădere minimă de reproducere:
Codul de mai jos produce o eroare. Reduceți-o la cea mai MICĂ instanță care încă declanșează eroarea, dar elimină orice nu este necesar. Nu presupuneți că fiecare piesă pe care o eliminați nu afectează eroarea, ci adăugați o notă care spune „dacă eroarea dispare când eliminați aceasta, de aceea”.{{code}}
Validarea post-corecție și testarea regresiei:
Să presupunem că cauza principală este {{cauza}} și fac următoarea remediere: {{remediere}}.1) Această remediere remediază efectiv simptomul, va avea efecte secundare? 2) Scrieți un test de regresie care va detecta această eroare în viitor.
Prompt slab / Prompt puternic
Slab: „Codul nu funcționează, de ce?”
Puternic: „Nodul 20 / Express. POST /comenzi returnează 500 când articolele sunt un șir gol în corp; ar fi trebuit să returneze 400. Urmărirea stivei: TypeError: Nu se pot citi proprietățile lui undefined (se citește „0”) — atașat este următorul complet și handler-ul asociat. Dați-mi cele 3 cele mai probabile coduri pentru a explica acest simptom.
Versiune puternică; Oferă mediul, punctul final, intrarea declanșatorului, tipul exact de eroare și comportamentul așteptat. Modelul nu mai poate face predicții, ci analiză.
pas
Contribuția AI
controlul tău
adunarea probelor
Ce dovezi sunt necesare, amintește
Adună cu adevărat dovezi
generarea de ipoteze
Enumerați motivele posibile
Prioritizează în funcție de context
testarea ipotezelor
Recomanda metoda de testare
Operează și observă personal
corectare
recomandă plasturele
Rezolvă cauza principală? E adevărat.
regresie
scrie un test
Verifică dacă testul este întrerupt
Rezolvarea cauzei fundamentale, nu a simptomului
De cele mai multe ori, AI-ul va sugera un patch care reduce rapid la tăcere simptomul: adăugați un try/catch, puneți o verificare nulă, înghițiți eroarea. Acest lucru este uneori adevărat, adesea periculos; deoarece cauza inițială rămâne pe loc și izbucnește din nou din altă parte. Cu fiecare remediere, întrebați-vă: „Acest lucru remediază cauza erorii sau o face invizibilă?” Odată ce găsiți cauza principală, soluția este de obicei mai mică, mai robustă și mai permanentă.
Atenție: Înghițirea în tăcere a unei excepții (captura goală) nu rezolvă eroarea; doar ascunde și face imposibilă diagnosticarea viitoare. Dacă AI sugerează o astfel de „soluție”, nu o accepta fără a pune la îndoială cauza principală.
Greșeli comune
- Pune întrebări fără dovezi. Propozițiile ambigue împing modelul în halucinație; Oferiți eroare completă, urmărire și introducere.
- Blocarea primei ipoteze. Prima sugestie a AI poate să nu fie cea mai probabilă; Începeți cu cea mai ieftină ipoteză controlabilă.
- Corectarea simptomului și lipsa cauzei principale. Eroarea tacută revine.
- Închiderea remedierii fără a o verifica. Vedeți în stare de producție că eroarea chiar dispare.
- Nu scriu teste de regresie. Dacă nu sunt adăugate teste, aceeași eroare va reveni în tăcere în versiunile ulterioare.
Pe scurt
În depanare, puterea AI este direct proporțională cu dovezile pe care le oferiți: fără mesajul de eroare complet, urmărirea stivei, intrarea de declanșare și comportamentul așteptat, modelul doar speculează. Flux disciplinat - clarificați simptomul, adunați dovezi, generați ipoteze, testați cu cel mai ieftin control, remediați cauza principală, verificați și adăugați teste de regresie - închide eroarea atât rapid, cât și permanent. AI este un generator de ipoteze; Tu ești cel care decide că bug-ul este de fapt rezolvat.
Sarcina de aplicare
Alegeți o eroare reală pe care ați întâlnit-o recent (sau reproduceți o eroare de testare). Faceți mai întâi pasul „reproducție minimă”; Eliminați cel mai mic cod și introducerea care declanșează eroarea. Apoi obțineți 3 cauze posibile și metode de testare din AI cu șablonul „generare de ipoteze bazate pe dovezi”. Testați singur ipoteza cea mai ieftină, găsiți cauza principală, remediați-o și, în sfârșit, scrieți un test de regresie care va prinde acest bug în viitor și va verifica dacă testul este de fapt întrerupt.
lista de verificare
- [ ] Reduc eroarea la cea mai mică probă reproductibilă înainte de a o muta la AI.
- [ ] Adaug mesajul de eroare complet, urmărirea stivei, intrarea și comportamentul așteptat la prompt.
- [ ] Încep cu cel mai ieftin controlabil, fără a fi blocat într-o singură ipoteză.
- [ ] Verific că am rezolvat cauza rădăcină în loc să corectez simptomul.
- [ ] Observ că remedierea remediază de fapt eroarea.
- [ ] Adaug un test de regresie pentru fiecare eroare rezolvată.