Pelnas:
- Galimybė sumažinti klaidą iki mažiausio atkuriamo egzemplioriaus ir perkelti ją į AI su visišku įrodymu
- Gebėjimas patikrinti įrodymais pagrįstas hipotezes pigiausia kontrole ir rasti pagrindinę priežastį
- Gebėjimas pašalinti pagrindinę priežastį ir užtikrinti ją regresijos testu, o ne pataisyti simptomą
Derinimas yra procesas, kurio metu išsiaiškinama, kodėl programinė įranga veikia netikėtai, ir tai ištaisoma. Tai darbas, kuriame kūrėjas praleidžia daugiausiai laiko ir labiausiai pavargsta; Nes dažniausiai klaida būna ne ten, kur ji pasirodo, o slepiama už kelių žingsnių. AI yra galingas mąstymo partneris, kuris pagreitina šį tyrimą, bet tik tuo atveju, jei pateikiate tinkamus įrodymus. Derinimas be įrodymų yra ta sritis, kurioje AI sukelia daugiausia haliucinacijų.
Šiame skyriuje nustatome disciplinuotą eigą nuo klaidos generavimo iki pagrindinės priežasties nustatymo: simptomo išaiškinimo, įrodymų (klaidos pranešimo, krūvos pėdsakų, žurnalo, įrašo) rinkimo, hipotezės generavimo, hipotezės patikrinimo ir pataisymo patvirtinimo. AI padeda kiekviename žingsnyje; bet „ištaisytas“ sprendimas priimamas pamačius, kad klaida iš tikrųjų išnyko.
Kodėl įrodymai yra viskas?
LLM nemato klaidų taip, kaip jūs matote; Jis žino tik tai, ką tu jam sakai. Toks sakinys, kaip „Programa sugenda“, modeliui beveik nepateikia informacijos, o modelis užpildo spragą numatymu – tai yra haliucinacija. Savo ruožtu visas klaidos pranešimas, kamino sekimas – suskirstymas, per kurią funkciją iškviečiama klaida, įvestis, sukėlusi klaidą, ko tikėtasi ir tt Atsižvelgiant į pastebėtą elgesį, modelis gali reitinguoti tikrąsias tikimybes.
Derindami pagalvokite apie AI kaip apie detektyvo padėjėją: kuo daugiau įrodymų pateiksite, tuo tikslesnė hipotezė. Jei nėra įrodymų, asistentas tik spėlios ir gali nuvesti jus klaidingu keliu.
Patarimas: prieš perkeldami klaidą į AI, sumažinkite ją iki mažiausio atkuriamo pavyzdžio. Mažiausias kodas ir įvestis, suaktyvinanti klaidą, iš esmės palengvina darbą tiek jums, tiek modeliui; dažniausiai per šį sumažinimą priežastį randate patys.
Žingsnis po žingsnio: pagrindinės priežasties analizės srautas
- Išsiaiškinkite simptomą. „Kas vyksta, ko tikėjaisi? Parašykite du vienu sakiniu.
- Surinkite įrodymus. Visas klaidos pranešimas, dėklo sekimas, atitinkamos žurnalo eilutės, suaktyvinimo įrašas, versijos informacija.
- Sukurkite hipotezę. Iš AI „3 galimos priežastys, paaiškinančios šį simptomą ir kaip patikrinti kiekvieną? paklausti.
- Pirmiausia patikrinkite pigiausią hipotezę. Pridėkite žurnalą, atspausdinkite vertę, atlikite testą. Ar įrodymai patvirtina hipotezę?
- Ištaisykite pagrindinę priežastį, o ne simptomą. Užuot nutildę simptomą pleistru, pašalinkite pagrindinę priežastį.
- Patvirtinkite ir pridėkite regresijos testą. Pamatykite, kad klaida išnyksta; Tada parašykite testą, kuris užfiksuos tą klaidą, kad ji nepasikartotų.
Trys mini dėklai
1 atvejis – dėklo sekimas nukreipė į tinkamą failą. Programa pateikė 500 klaidą dėl tam tikrų užklausų. Kūrėjas AI pateikė visą krūvos sekimą ir suaktyvinimo užklausą; Modelis iškėlė hipotezę, kad klaidą sukėlė reikšmė None datos analizės sluoksnyje. Kūrėjas prie šios eilutės pridėjo žurnalą, jį patikrino ir išsprendė per 15 minučių; Dieną prieš tai buvo sugaištos 2 valandos su neįrodytais eksperimentais.
2 atvejis – haliucinacijos nuvedė į klaidingą kelią. Kitas kūrėjas tiesiog parašė „duomenų bazės ryšys nutrūksta“. AI apkaltino ryšio baseino nustatymą be jokių įrodymų; Kūrėjas praleido 40 minučių tvarkydamas šį nustatymą. Tikroji priežastis buvo skirtasis laikas tinklo pusėje ir paaiškėjo tik peržiūrėjus žurnalus. Pamoka: hipotezė, iškelta be įrodymų, yra tik tikėtina, o ne patikima.
3 atvejis – užfiksuota neryški klaida. Buvo testas, kuris kartais nepavykdavo. AI buvo suteiktas bandymo kodas, pranešimas apie gedimą ir informacija „kartais praeina, kartais nepavyksta“; modelis nurodė bendrą testų laiko/užsakymo priklausomybę. Peržiūra patvirtino, kad bandymas buvo pagrįstas sistemos vietos laiku. Kai laikrodis buvo pataisytas (pasityčiotas), testas tapo stabilus.
Keturi kopijuojami šablonai
Įrodymais pagrįstų hipotezių generavimas:
Aš derinu klaidą. Toliau pateikiami įrodymai.- Numatytas elgesys: {{numatomas}}- Stebėtas elgesys: {{stebėtas}}- Klaidos pranešimas / dėklo pėdsakas: {{trace}}- Suaktyvinanti įvestis: {{input}}- Aplinka / versija: {{version}}Išvardykite 3 GERIAUSIAS pagrindines priežastis, paaiškinančias šį simptomą. Kiekvienam: kaip patikrinti (pigiausias patikrinimas) ir kaip tai ištaisyti, jei tai tiesa. Jei įrodymų nepakanka, pasakykite, kokios papildomos informacijos jums reikia.
Interpretuoti kamino pėdsaką:
Perskaitykite šį krūvos pėdsaką. Atskirkite, kurioje eilutėje TIKRAI prasideda klaida (šaknėje), o kurios yra tik grandinės tęsiniai. Pasiūlykite 1–2 vietas, kurias pirmiausia reikėtų pasižiūrėti. Susijęs kodas:{{code}}Sekimas:{{trace}}
Minimali repro atimtis:
Žemiau pateiktas kodas sukelia klaidą. Sumažinkite jį iki MAŽIAUSIO egzemplioriaus, kuris vis tiek sukelia klaidą, bet atmeta viską, kas nereikalinga. Nemanykite, kad kiekviena pašalinta dalis neturi įtakos klaidai, bet pridėkite pastabą „jei pašalinus klaida išnyksta, tai kodėl“.{{code}}
Patvirtinimas ir regresijos testas po korekcijos:
Tarkime, kad pagrindinė priežastis yra {{priežastis}}, ir aš atlieku šį pataisymą: {{fix}}.1) Ar šis pataisymas iš tikrųjų pašalina simptomą, ar jis turės kokių nors šalutinių poveikių?2) Parašykite regresijos testą, kuris aptiks šią klaidą ateityje.
Silpnas raginimas / Stiprus raginimas
Silpnas: "Kodas neveikia, kodėl?"
Stiprus: "Node 20 / Express. POST /orders grąžina 500, kai elementų eilutė yra tuščia; turėjo grąžinti 400. Stack trace: TypeError: Neįmanoma nuskaityti neapibrėžtų savybių (skaitoma "0") – pridedamas visas pėdsakas ir susijusi tvarkytoja. Pateikite 3 labiausiai tikėtinas priežastis, paaiškinančias kiekvieną šio kodo simptomą [irtrace].
Galinga versija; Jame pateikiama aplinka, galutinis taškas, trigerio įvestis, tikslus klaidos tipas ir numatoma elgsena. Modelis gali daryti nebe prognozes, o analizuoti.
žingsnis
AI indėlis
jūsų kontrolė
įrodymų rinkimas
Kokių įrodymų reikia, primena
Tikrai renka įrodymus
hipotezių generavimas
Išvardykite galimas priežastis
Pirmenybė teikiama atsižvelgiant į kontekstą
hipotezių tikrinimas
Rekomenduoja bandymo metodą
Veikia ir stebi asmeniškai
korekcija
pleistras rekomenduoja
Ar tai išsprendžia pagrindinę priežastį? Tai tiesa.
regresija
rašo testą
Patvirtina, kad testas sugadintas
Išspręskite pagrindinę priežastį, o ne simptomą
Didžiąją laiko dalį AI pasiūlys pataisą, kuri greitai nutildo simptomą: pridėkite bandymą / gaudymą, pažymėkite nulinį patikrinimą, nurykite klaidą. Tai kartais tiesa, dažnai pavojinga; nes pirminė priežastis lieka vietoje ir vėl išsiveržia iš kažkur kitur. Atlikdami kiekvieną taisymą, paklauskite savęs: „Ar tai pašalina klaidos priežastį, ar ji tampa nematoma? Suradus pagrindinę priežastį, pataisymas paprastai yra mažesnis, tvirtesnis ir ilgalaikis.
Įspėjimas: tyliai nurijus išimtis (tuščias gaudyklė) klaida neišsprendžiama; ji tik slepia ir padaro diagnozę ateityje neįmanoma. Jei dirbtinis intelektas siūlo tokį „sprendimą“, nepriimkite jo neabejodami pagrindine priežastimi.
Dažnos klaidos
- Klausimų uždavimas be įrodymų. Dviprasmiški sakiniai stumia modelį į haliucinacijas; Pateikite visą klaidą, sekimą ir įvestį.
- Užrakinta prie pirmosios hipotezės. Pirmasis AI pasiūlymas gali būti ne pats tikriausias; Pradėkite nuo pigiausios kontroliuojamos hipotezės.
- Ištaisyti simptomą ir nepastebėti pagrindinės priežasties. Nutildyta klaida grįžta.
- Taisymo uždarymas jo nepatvirtinus. Panašioje į gamybos būseną žiūrėkite, kad klaida iš tikrųjų išnyksta.
- Regresijos testų nerašymas. Jei testų nepridėsite, ta pati klaida tyliai grįš vėlesnėse versijose.
Apibendrinant
Derinant AI galia yra tiesiogiai proporcinga jūsų pateiktiems įrodymams: be viso klaidos pranešimo, krūvos pėdsakų, suaktyvinimo įvesties ir numatomo elgesio modelis tik spėlioja. Disciplinuotas srautas – išaiškinti simptomus, rinkti įrodymus, generuoti hipotezę, išbandyti pigiausią valdiklį, pašalinti pagrindinę priežastį, patikrinti ir pridėti regresijos testą – greitai ir visam laikui pašalina klaidą. AI yra hipotezių generatorius; Jūs esate tas, kuris nusprendžia, kad klaida iš tikrųjų išspręsta.
Taikymo užduotis
Pasirinkite tikrą klaidą, su kuria neseniai susidūrėte (arba atkurkite bandomąją klaidą). Pirmiausia atlikite „minimalaus atkūrimo“ veiksmą; Pašalinkite mažiausią kodą ir įvestį, kuris sukelia klaidą. Tada gaukite 3 galimas priežastis ir testavimo metodus iš AI naudodami „įrodymais pagrįstos hipotezės generavimo“ šabloną. Išbandykite pigiausią hipotezę patys, suraskite pagrindinę priežastį, ją ištaisykite ir galiausiai parašykite regresijos testą, kuris ateityje užfiksuos šią klaidą ir patikrins, ar testas iš tikrųjų sugedęs.
kontrolinis sąrašas
- [ ] Prieš perkeldamas jį į AI, sumažinu klaidą iki mažiausio atkuriamo pavyzdžio.
- [ ] Į raginimą pridedu visą klaidos pranešimą, dėklo sekimą, įvestį ir numatomą elgesį.
- [ ] Pradedu nuo pigiausio valdomo, neprisirišdamas prie vienos hipotezės.
- [ ] Patvirtinu, kad pašalinau pagrindinę priežastį, o ne pataisiau simptomą.
- [ ] Pastebiu, kad pataisymas iš tikrųjų ištaiso klaidą.
- [ ] Kiekvienai ištaisytai klaidai pridedu regresijos testą.