Единица 6 / 12

Дебагирање и анализа на корените причини

Добивки:

  • Способност да се намали грешката до најмалиот примерок што може да се репродуцира и да се премести на вештачка интелигенција со целосен доказ
  • Способност да се тестираат хипотезите засновани на докази со најевтина контрола и да се најде основната причина
  • Способност да се реши основната причина и да се обезбеди со тест за регресија наместо да се закрпи симптомот

Дебагирање е процес на откривање зошто софтверот се однесува неочекувано и негово поправање. Тоа е работа каде што развивачот троши најмногу време и најмногу се изморува; Затоа што најчесто грешката не е онаму каде што се појавува, туку се крие неколку чекори поназад. Вештачката интелигенција е моќен партнер за размислување кој го забрзува ова истражување - но само ако му ги дадете вистинските докази. Дебагирањето без докази е областа каде што вештачката интелигенција произведува најмногу халуцинации.

Во оваа единица, воспоставуваме дисциплиниран тек од генерирање на грешка до доаѓање до основната причина: разјаснување на симптомот, собирање докази (порака за грешка, трага на стек, дневник, влез), генерирање хипотеза, тестирање на хипотезата и потврдување на поправката. ВИ помага на секој чекор; но „поправената“ одлука се носи со тоа што ќе се види дека бубачката всушност исчезнала.

Зошто доказите се сè?

LLM не гледа грешка на начинот на кој вие гледате; Знае само што ќе му кажеш. Реченицата како „Апликацијата се урна“ не му дава на моделот речиси никакви информации, а моделот ја пополнува празнината со предвидување - односно халуцинација. За возврат, целосната порака за грешка, трага на стек - расчленување на која функција ја повикува грешката настанала, влезот што ја активирал грешката и што се очекувало, итн. Со оглед на набљудуваното однесување, моделот може да ги рангира вистинските веројатности.

При дебагирање, помислете на вештачката интелигенција како помошник на детективот: колку повеќе докази презентирате, толку попрецизна е хипотезата што ја генерира. Ако нема докази, асистентот само ќе погодува и може да ве одведе на погрешна патека.

Совет: пред да пренесете бубачка на вештачка интелигенција, сведете ја на најмалиот репродуктивен пример. Најмалиот код и влез што ја активира грешката ги прави работите радикално полесни и за вас и за моделот; најчесто при ова намалување самите ја наоѓате причината.

Чекор по чекор: Тек на анализа на основната причина

  1. Разјаснете го симптомот. „Што се случува, што очекувавте да се случи? Напиши ги двете во една реченица.
  2. Соберете докази. Целосна порака за грешка, трага на магацинот, релевантни линии за дневник, запис за активирање, информации за верзијата.
  3. Дали е генерирана хипотезата. Од ВИ „3 можни причини кои го објаснуваат овој симптом и како да тестирам за секоја од нив?“ прашај.
  4. Прво тестирајте ја најевтината хипотеза. Додајте дневник, испечатете вредност, извршете тест. Дали доказите ја потврдуваат хипотезата?
  5. Поправете ја основната причина, а не симптомот. Наместо да го замолчите симптомот со фластер, решете ја основната причина.
  6. Потврдете и додајте регресивно тестирање. Видете како грешката исчезнува; Потоа напишете тест кој ќе ја фати таа грешка за да не се врати.

Три мини футроли

Случај 1 - Трагата на магацинот доведе до правилната датотека. Апликација враќаше грешка од 500 на одредени барања. Програмерот го даде целосниот оџак и барањето за активирање на вештачката интелигенција; Моделот претпостави дека грешката е предизвикана од вредност None во слојот за парсирање на датуми. Програмерот додаде дневник на таа линија, го потврди и го реши за 15 минути; Беа потрошени 2 часа претходниот ден со недокажани експерименти.

Случај 2 - Халуцинацијата доведе до погрешна патека. Друг програмер едноставно напиша „врската со базата на податоци паѓа“. Вештачката интелигенција обвини поставување на базен за поврзување без никакви докази; Програмерот потроши 40 минути чепкајќи со оваа поставка. Вистинската причина беше тајмаут на страната на мрежата и беше откриена само со гледање на дневниците. Поука: хипотеза земена без докази е само веројатна, не и веродостојна.

Случај 3 - Утврдена ронлива грешка. Имаше тест кој повремено не успеваше. На вештачката интелигенција и беше даден кодот за тестирање, пораката за неуспех и информацијата „понекогаш поминува, понекогаш не успева“; моделот означува заедничко време/нарачка зависност на тестовите. Прегледот потврди дека тестот се заснова на локалното време на системот. Откако часовникот беше фиксиран (исмејуван), тестот стана стабилен.

Четири шаблони за копирање

Генерирање хипотези засновани на докази:

Дебагирам грешка. Доказ подолу.- Очекувано однесување: {{очекувано}}- Набљудувано однесување: {{забележано}}- Порака за грешка / трага на стек: {{trace}}- Влез за активирање: {{влез}}- Животна средина/верзија: {{верзија}}Наведете ги 3-те НАЈВЕРОЈАТНО основни причини кои го објаснуваат овој симптом. За секое: како да тестирам (најевтина проверка) и како да го поправам ако е вистина. Ако доказите се недоволни, кажете ми кои дополнителни информации ви се потребни.

Толкување на трагата на стек:

Прочитајте ја оваа трага на стек. Разликувајте помеѓу која линија ВЕРОЈАТНО започнува грешката (коренот) и кои линии се само продолжение на синџирот. Предложете 1-2 места за да погледнете прво. Поврзан код:{{code}}Trace:{{trace}}

Минимално репро одземање:

Кодот подолу создава грешка. Намалете го на НАЈМАЛИОТ пример кој сè уште ја активира грешката, но отфрла сè што е непотребно. Не претпоставувајте дека секое парче што ќе го отстраните не влијае на грешката, туку додајте белешка велејќи „ако грешката исчезне кога ќе го отстраните ова, затоа“.{{code}}

Пост-корективна валидација и регресивно тестирање:

Да претпоставиме дека основната причина е {{причина}} и јас го правам следниов поправен: {{поправи}}.1) Дали оваа поправка навистина го поправа симптомот, дали има некакви несакани ефекти?2) Напишете тест за регресија што ќе ја фати оваа грешка во иднина.

Слаб промпт / Силен промпт

Слаб: "Кодот не работи, зошто?"
Силно: "Јазол 20 / Експрес. POST / нарачките враќа 500 кога ставките се празна низа во телото; требаше да врати 400. Трага на стек: Тип Грешка: Не можам да ги читам својствата на недефинирано (читање '0') — во прилог е целосната трага и поврзаниот управувач. Дајте ми ги 3-те најверојатни symp-код што го предизвикува тој тест и објаснете го овој тест.

Моќна верзија; Ја дава околината, крајната точка, влезот на активирањето, точниот тип на грешка и очекуваното однесување. Моделот повеќе не може да прави предвидувања, туку анализи.

чекор

Придонесот на АИ

вашата контрола

собирање докази

Какви докази се потребни, потсетува

Навистина собира докази

генерирање хипотеза

Наведете ги можните причини

Приоритети со контекст

тестирање на хипотези

Препорачува метод на тестирање

Работи и набљудува лично

корекција

печ препорачува

Дали ја решава основната причина? Вистина е.

регресија

пишува тест

Потврдува дека тестот е скршен

Решавање на основната причина, а не на симптомот

Најчесто вештачката интелигенција ќе предложи лепенка што брзо го премолчува симптомот: додајте обид/фаќање, ставете нула проверка, проголтајте ја грешката. Ова понекогаш е точно, често опасно; бидејќи првобитната причина останува на своето место и повторно избива од некаде на друго место. Со секое поправање, запрашајте се: „Дали ова ја поправа причината за грешката или ја прави невидлива? Откако ќе ја пронајдете основната причина, поправката е обично помала, поцврста и трајна.

Внимание: тивко голтање исклучок (празен фаќање) не ја решава грешката; тоа само прикрива и ја оневозможува идната дијагноза. Ако вештачката интелигенција предложи такво „решение“, не прифаќајте го без да ја преиспитувате основната причина.

Вообичаени грешки

  • Поставување прашања без докази. Двосмислените реченици го туркаат моделот во халуцинација; Наведете целосна грешка, трага и внесување.
  • Заклучување на првата хипотеза. Првиот предлог на вештачката интелигенција можеби не е најверојатен; Започнете со најевтината контролирана хипотеза.
  • Закрпење на симптомот и пропуштање на основната причина. Замолчената грешка се враќа.
  • Затворање на поправката без да се потврди. Видете во состојба слична на производството дека грешката всушност исчезнува.
  • Не пишување тестови за регресија. Ако не се додадат тестови, истата грешка тивко ќе се врати во подоцнежните верзии.

Сумирано

Во дебагирањето, моќта на вештачката интелигенција е директно пропорционална со доказите што ѝ ги давате: без целосната порака за грешка, трагата на оџакот, внесувањето на активирањето и очекуваното однесување, моделот само шпекулира. Дисциплинираниот тек - разјаснете го симптомот, собирајте докази, генерирате хипотеза, тестирајте со најевтина контрола, поправете ја основната причина, потврдете и додадете тестирање за регресија - ја затвора грешката и брзо и трајно. ВИ е генератор на хипотези; Вие сте тој што одлучува дека бубачката е всушност решена.

Задача за апликација

Изберете вистинска грешка што сте ја сретнале неодамна (или репродуцирајте тест грешка). Прво направете го чекорот „минимална репродукција“; Отстранете го најмалиот код и влез што ја активира грешката. Потоа добијте 3 можни причини и методи за тестирање од вештачката интелигенција со шаблонот „генерирање хипотеза заснована на докази“. Тестирајте ја најевтината хипотеза сами, пронајдете ја основната причина, поправете ја и на крајот напишете тест за регресија што ќе ја фати оваа грешка во иднина и ќе потврди дека тестот е навистина скршен.

листа за проверка

  • [ ] Ја намалувам грешката на најмалиот репродуктивен примерок пред да ја преместам на ВИ.
  • [ ] Ја додавам целосната порака за грешка, следењето на магацинот, внесувањето и очекуваното однесување на промптот.
  • [ ] Почнувам со најевтиниот контролиран, без да бидам заклучен во ниту една хипотеза.
  • [ ] Потврдувам дека ја решив основната причина наместо да го поправам симптомот.
  • [ ] Забележувам дека поправката всушност ја поправа грешката.
  • [ ] Додавам тест за регресија за секоја решена грешка.