Jednotka 6 / 12

Ladění a analýza kořenových příčin

zisky:

  • Schopnost redukovat chybu na nejmenší reprodukovatelnou instanci a přesunout ji do AI s úplným důkazem
  • Schopnost testovat hypotézy založené na důkazech s nejlevnější kontrolou a najít hlavní příčinu
  • Schopnost vyřešit hlavní příčinu a zajistit ji regresním testem spíše než záplatováním příznaku

Ladění je proces zjištění, proč se software chová neočekávaně, a jeho oprava. Je to práce, kde vývojář tráví nejvíce času a je nejvíce unavený; Protože chyba většinou není tam, kde se objeví, ale je skryta pár kroků pozadu. Umělá inteligence je mocným myšlenkovým partnerem, který urychluje tento výzkum – ale pouze tehdy, pokud mu poskytnete správné důkazy. Ladění bez důkazů je oblastí, kde AI produkuje nejvíce halucinací.

V této jednotce zavádíme disciplinovaný tok od generování chyby k dosažení hlavní příčiny: objasnění příznaku, shromažďování důkazů (chybová zpráva, trasování zásobníku, protokol, záznam), generování hypotézy, testování hypotézy a ověřování opravy. AI pomáhá na každém kroku; ale "opravené" rozhodnutí je učiněno tím, že vidíme, že chyba skutečně zmizela.

Proč jsou důkazy vším?

LLM nevidí chybu tak, jak ji vidíte vy; Ví jen to, co mu řeknete. Věta jako „Aplikace se zhroutí“ neposkytuje modelu téměř žádné informace a model zaplní mezeru předpovědí – tedy halucinací. Na druhé straně úplná chybová zpráva, trasování zásobníku – rozpis toho, pomocí kterého volání funkce k chybě došlo, vstup, který chybu spustil, a co bylo očekáváno atd. Vzhledem k pozorovanému chování může model hodnotit skutečné pravděpodobnosti.

Při ladění přemýšlejte o AI jako o asistentovi detektiva: čím více důkazů předložíte, tím přesnější hypotézu vytvoří. Pokud neexistují žádné důkazy, asistent bude pouze hádat a může vás navést na špatnou stopu.

Tip: Než přenesete chybu do AI, zredukujte ji na nejmenší reprodukovatelný příklad. Nejmenší kód a vstup, který spouští chybu, radikálně usnadňuje práci vám i modelu; nejčastěji při této redukci najdete příčinu sami.

Krok za krokem: Tok analýzy hlavních příčin

  1. Objasněte symptom. "Co se děje, co jsi čekal, že se stane?" Napište dva do jedné věty.
  2. Sbírejte důkazy. Úplná chybová zpráva, trasování zásobníku, příslušné řádky protokolu, spouštěcí záznam, informace o verzi.
  3. Nechte vygenerovat hypotézu. Z AI „3 možné příčiny, které vysvětlují tento příznak, a jak je otestovat?“ požádat.
  4. Nejprve otestujte nejlevnější hypotézu. Přidejte protokol, vytiskněte hodnotu, spusťte test. Potvrzují důkazy hypotézu?
  5. Opravte hlavní příčinu, ne symptom. Místo umlčování příznaku pomocí náplasti řešte hlavní příčinu.
  6. Ověřte a přidejte regresní testování. Podívejte se, jak chyba zmizí; Pak napište test, který tuto chybu zachytí, aby se nevrátila.

Tři mini pouzdra

Případ 1 — Trasování zásobníku vedlo ke správnému souboru. Aplikace u určitých požadavků vracela chybu 500. Vývojář předal AI úplnou stopu zásobníku a požadavek na spuštění; Model předpokládal, že chyba byla způsobena hodnotou None ve vrstvě analýzy data. Vývojář do toho řádku přidal log, ověřil ho a vyřešil za 15 minut; 2 hodiny byly promarněny den předtím neprokázanými experimenty.

Případ 2 — Halucinace vedla na špatnou stopu. Jiný vývojář prostě napsal "připojení k databázi klesá". AI ​​obvinila nastavení fondu připojení bez jakýchkoli důkazů; Vývojář si s tímto nastavením pohrál 40 minut. Skutečnou příčinou byl vypršení časového limitu na straně sítě a byl odhalen pouze pohledem na protokoly. Poučení: hypotéza přijatá bez důkazů je pouze pravděpodobná, nikoli spolehlivá.

Případ 3 – Zachycena chybná chyba. Došlo k testu, který občas selhal. Umělá inteligence dostala testovací kód, zprávu o selhání a informaci „někdy to projde, někdy to selže“; model indikoval sdílenou závislost testů na čase/pořadí. Recenze potvrdila, že test byl založen na místním čase systému. Jakmile byly hodiny opraveny (zesměšněny), test se stal stabilním.

Čtyři kopírovatelné šablony

Generování hypotéz na základě důkazů:

Ladím chybu. Důkaz níže.- Očekávané chování: {{expected}}- Pozorované chování: {{observed}}- Chybová zpráva / trasování zásobníku: {{trace}}- Spouštěcí vstup: {{input}}- Prostředí/verze: {{version}}Uveďte 3 NEJPRAVděpodobnější hlavní příčiny, které vysvětlují tento příznak. U každého: jak testuji (nejlevnější kontrola) a jak to opravit, pokud je to pravda. Pokud jsou důkazy nedostatečné, řekněte mi, jaké další informace potřebujete.

Interpretace trasování zásobníku:

Přečtěte si tuto stopu zásobníku. Rozlišujte, na kterém řádku chyba PRAVDĚPODOBNĚ začíná (v kořeni) a které řádky jsou jen pokračováním řetězce. Navrhněte 1–2 místa, kam se podívat jako první. Související kód:{{code}}Trace:{{trace}}

Minimální repro odečítání:

Níže uvedený kód vytváří chybu. Snižte ji na NEJMENŠÍ instanci, která stále spouští chybu, ale zahodí vše nepotřebné. Nepředpokládejte, že každý kus, který odstraníte, neovlivní chybu, ale přidejte poznámku „pokud chyba zmizí, když toto odstraníte, právě proto“.{{code}}

Ověření po opravě a regresní testování:

Předpokládejme, že hlavní příčina je {{cause}} a provedl jsem následující opravu: {{fix}}.1) Opraví tato oprava skutečně příznak, bude mít nějaké vedlejší účinky?2) Napište regresní test, který tuto chybu v budoucnu zachytí.

Slabá výzva / Silná výzva

Slabý: "Kód nefunguje, proč?"
Strong: "Node 20 / Express. POST /orders vrátí 500, když položky jsou prázdným řetězcem v těle; měly vrátit 400. Trasování zásobníku: TypeError: Nelze přečíst vlastnosti undefined (čtení '0') – připojeno je úplné trasování a související obslužná rutina. Uveďte 3 nejpravděpodobnější příčiny, které vysvětlují tento příznak a jak otestovat každý z nich".

Výkonná verze; Poskytuje prostředí, koncový bod, spouštěcí vstup, přesný typ chyby a očekávané chování. Model již nemůže provádět předpovědi, ale analýzu.

krok

Příspěvek AI

vaše kontrola

shromažďování důkazů

Jaké důkazy jsou potřeba, připomíná

Opravdu sbírá důkazy

generování hypotéz

Uveďte možné důvody

Upřednostňuje se podle kontextu

testování hypotéz

Doporučuje testovací metodu

Osobně obsluhuje a pozoruje

korekce

patch doporučuje

Řeší hlavní příčinu? Je to pravda.

regrese

píše test

Ověřuje, že test je přerušený

Řešení hlavní příčiny, nikoli symptomu

Umělá inteligence většinou navrhne záplatu, která symptom rychle umlčí: přidejte pokus/úlovek, zaškrtněte nulu, spolkněte chybu. To je někdy pravda, často nebezpečné; protože původní příčina zůstává na svém místě a propuká znovu odjinud. Při každé opravě si položte otázku: „Opravuje to příčinu chyby, nebo ji zneviditelní?“ Jakmile najdete hlavní příčinu, oprava je obvykle menší, robustnější a trvalejší.

Upozornění: Tiché spolknutí výjimky (prázdný záchyt) chybu nevyřeší; pouze skrývá a znemožňuje budoucí diagnózu. Pokud AI navrhne takové „řešení“, nepřijímejte to, aniž byste se zeptali na hlavní příčinu.

Časté chyby

  • Kladení otázek bez důkazů. Nejednoznačné věty tlačí model do halucinace; Uveďte úplnou chybu, trasování a vstup.
  • Zaměřuji se na první hypotézu. První návrh AI nemusí být nejpravděpodobnější; Začněte s nejlevnější ovladatelnou hypotézou.
  • Záplatování příznaku a vynechání hlavní příčiny. Umlčená chyba se vrátí.
  • Zavření opravy bez ověření. Podívejte se ve stavu podobném výrobě, že chyba skutečně zmizí.
  • Nepsaní regresních testů. Pokud nejsou přidány žádné testy, stejná chyba se tiše vrátí v pozdějších verzích.

V souhrnu

Při ladění je síla AI přímo úměrná důkazům, které jí poskytnete: bez úplné chybové zprávy, trasování zásobníku, spouštěcího vstupu a očekávaného chování model pouze spekuluje. Disciplinovaný tok – objasnění symptomu, shromažďování důkazů, generování hypotéz, testování s nejlevnější kontrolou, oprava hlavní příčiny, ověření a přidání regresního testování – odstraňuje chybu rychle a trvale. AI je generátor hypotéz; Vy jste ten, kdo rozhodne, že chyba je skutečně vyřešena.

Aplikační úkol

Vyberte skutečnou chybu, se kterou jste se nedávno setkali (nebo zopakujte testovací chybu). Nejprve proveďte krok „minimální reprodukce“; Odstraňte nejmenší kód a vstup, který spouští chybu. Poté získejte 3 možné příčiny a testovací metody z AI pomocí šablony „generování hypotéz založené na důkazech“. Sami si otestujte nejlevnější hypotézu, najděte hlavní příčinu, opravte ji a nakonec napište regresní test, který tuto chybu v budoucnu zachytí a ověří, že je test skutečně porušen.

kontrolní seznam

  • [ ] Před přesunem do AI snížím chybu na nejmenší reprodukovatelný vzorek.
  • [ ] Do výzvy přidávám úplnou chybovou zprávu, trasování zásobníku, vstup a očekávané chování.
  • [ ] Začnu s tou nejlevnější ovladatelnou, aniž bych byl uzavřen do jediné hypotézy.
  • [ ] Ověřuji, že jsem vyřešil hlavní příčinu, spíše než opravuji symptom.
  • [ ] Pozoruji, že oprava ve skutečnosti opravuje chybu.
  • [ ] Ke každé vyřešené chybě přidávám regresní test.