Јединица 6 / 12

Отклањање грешака и анализа основних узрока

Добици:

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

Отклањање грешака је процес откривања зашто се софтвер понаша неочекивано и поправљања. То је посао у којем програмер проводи највише времена и највише се умара; Јер најчешће грешка није тамо где се појављује, већ је скривена неколико корака иза. АИ је моћан партнер у размишљању који убрзава ово истраживање - али само ако му дате праве доказе. Отклањање грешака без доказа је област у којој АИ производи највише халуцинација.

У овој јединици успостављамо дисциплинован ток од генерисања грешке до одласка до основног узрока: разјашњавање симптома, прикупљање доказа (порука о грешци, праћење стека, евиденција, унос), генерисање хипотезе, тестирање хипотезе и валидација исправке. АИ помаже на сваком кораку; али "поправљена" одлука се доноси тако што се види да је грешка заправо нестала.

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

ЛЛМ не види грешку као ви; Он зна само шта му кажеш. Реченица попут „Апликација се руши“ не даје моделу скоро никакве информације, а модел попуњава празнину предвиђањем — то јест, халуцинацијом. Заузврат, пуна порука о грешци, праћење стека — рашчлањивање преко које функције позива грешка се догодила, унос који је покренуо грешку и шта се очекивало, итд. С обзиром на уочено понашање, модел може рангирати праве вероватноће.

У отклањању грешака, замислите АИ као помоћника детектива: што више доказа представите, то је тачнија хипотеза коју генерише. Ако нема доказа, помоћник ће само нагађати и може вас одвести на погрешан траг.

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

Корак по корак: Ток анализе основних узрока

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

Три мини кућишта

Случај 1 — Праћење стека је довело до исправне датотеке. Апликација је враћала грешку 500 на одређене захтеве. Програмер је дао комплетно праћење стека и захтев за покретање АИ; Модел је претпоставио да је грешку изазвала вредност Ноне у слоју за рашчлањивање датума. Програмер је додао дневник у ту линију, верификовао га и решио за 15 минута; 2 сата су потрошена претходног дана са недоказаним експериментима.

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

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

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

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

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

Тумачење праћења стека:

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

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

Код испод даје грешку. Смањите га на НАЈМАЊУ инстанцу која и даље покреће грешку, али одбацује све непотребно. Немојте претпостављати да сваки комад који уклоните не утиче на грешку, већ додајте напомену „ако грешка нестане када уклоните ово, то је разлог зашто“.{{цоде}}

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

Претпоставимо да је основни узрок {{узрок}} и направим следећу исправку: {{поправка}}.1) Да ли ова исправка заиста поправља симптом, да ли ће имати нежељене ефекте?2) Напишите регресијски тест који ће ухватити ову грешку у будућности.

Слаби промпт / Јаки промпт

Слаб: "Шифра не ради, зашто?"
Снажно: „Чвор 20 / Екпресс. ПОСТ /ордерс враћа 500 када је итемс празан стринг у телу; требало је да врати 400. Праћење стека: ТипеЕррор: Не могу да прочитам својства недефинисаног (читање '0') — у прилогу је цео траг и придружени руковалац. Дајте ми 3 највероватније проузрокује сваки тест код +тра.

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

корак

Допринос АИ

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

прикупљање доказа

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

Заиста прикупља доказе

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

Наведите могуће разлоге

Одређује приоритете са контекстом

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

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

Лично оперише и посматра

исправка

патцх препоручује

Да ли решава основни узрок? Истина је.

регресија

пише тест

Проверава да ли је тест покварен

Решавање основног узрока, а не симптома

Већину времена АИ ће предложити закрпу која брзо утишава симптом: додајте покушај/ухвати, ставите нулту проверу, прогутајте грешку. Ово је понекад тачно, често опасно; јер првобитни узрок остаје на месту и поново избија са неког другог места. Уз сваку исправку, запитајте се: „Да ли ово отклања узрок грешке или га чини невидљивим?“ Једном када пронађете основни узрок, поправка је обично мања, робуснија и трајнија.

Опрез: Тихо прогутање изузетка (празни улов) не решава грешку; она само прикрива и онемогућава будућу дијагнозу. Ако АИ предлаже такво „решење“, немојте га прихватити без преиспитивања основног узрока.

Уобичајене грешке

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

Укратко

У отклањању грешака, моћ вештачке интелигенције је директно пропорционална доказу који јој дате: без пуне поруке о грешци, праћења стека, инпута за покретање и очекиваног понашања, модел само спекулише. Дисциплиновани ток — разјаснити симптоме, прикупити доказе, генерисати хипотезу, тестирати најјефтинијом контролом, поправити основни узрок, потврдити и додати регресијско тестирање — брзо и трајно затвара грешку. АИ је генератор хипотеза; Ви сте тај који одлучује да је грешка заиста решена.

Задатак апликације

Изаберите праву грешку на коју сте недавно наишли (или репродукујте пробну грешку). Прво урадите корак "минималне репродукције"; Уклоните најмањи код и унос који покреће грешку. Затим узмите 3 могућа узрока и методе тестирања од АИ помоћу шаблона „генерисање хипотеза заснованих на доказима“. Сами тестирајте најјефтинију хипотезу, пронађите основни узрок, поправите га и на крају напишите регресијски тест који ће ухватити ову грешку у будућности и потврдити да је тест заиста покварен.

контролна листа

  • [ ] Смањујем грешку на најмањи поновљиви узорак пре него што је преместим у АИ.
  • [ ] У промпт додајем целу поруку о грешци, праћење стека, унос и очекивано понашање.
  • [ ] Почињем са најјефтинијим контролисаним, а да не будем закључан у једну хипотезу.
  • [ ] Потврђујем да сам решио основни узрок уместо да закрпим симптом.
  • [ ] Примећујем да исправка заправо поправља грешку.
  • [ ] За сваку отклоњену грешку додајем тест регресије.