Vahid 5 / 12

Hataların aradan qaldırılması və problemlərin aradan qaldırılması

Qazanclar:

  • Səhv mesajı, yığın izi və ən kiçik reproduksiya nümunəsi ilə bir səhvi AI-də effektiv şəkildə təsvir etmək bacarığı
  • Fərziyyə irəli sürməklə və addım-addım daraltmaqla kök səbəbi tapmaq üçün AI ilə sistematik sazlama axını idarə etmək bacarığı
  • AI-nin təklif etdiyi düzəlişin reproduksiya və reqressiya testi ilə problemi həqiqətən həll etdiyini yoxlamaq bacarığı

Sazlama, proqramın niyə gözlənildiyindən fərqli davrandığını öyrənmək və onu düzəltmək vəzifəsidir və bu, əksər mühəndislərin çox vaxtını sərf edir. Yaxşı ayıklama təxmin oyununa deyil, sistematik daralmaya əsaslanır: simptomu aydınlaşdırın, fərziyyə irəli sürün, fərziyyəni yoxlayın, kök səbəbə keçin. AI bu dövrədə çox güclü tərəfdaşdır; Ancaq ona düzgün məlumat versəniz. “Kod işləmir, düzəldin” demək süni intellektni təxmin etməyə və ümumi təkliflər verməyə məcbur edir. Ona tam səhv mesajını, yığın izini və ən kiçik reproduksiya nümunəsini verin və birlikdə kök səbəbini tapacaqsınız.

Bu bölmədə biz süni intellekt üçün bir səhvi necə effektiv şəkildə təsvir edəcəyimizi, fərziyyələri addım-addım daraltmağı və təklif olunan düzəlişin həqiqətən problemi həll etdiyini reqressiya testi ilə yoxlayacağıq. Yadda saxlayın: bir səhvin "düzəldilməsi" və "səhv simptomunun basdırılması" iki fərqli şeydir; Kök səbəbi tapılmadan edilən düzəliş xətanı başqa yerə köçürür.

Anlayışlar: Yığın izi: Səhv zamanı hansı funksiyaların hansı ardıcıllıqla çağırıldığını göstərən boşluq. Minimal repro: xətanı tetikleyen ən sadə, ən qısa kod/giriş. Kök səbəb: Simptom deyil, problemin əsl mənbəyi. Reqressiya testi: Eyni xətanın təkrarlanmamasını təmin edən test.

Süni intellektə bir səhvin təsviri

Süni intellektin əsas səbəbi tapmaq ehtimalı sizin təqdim etdiyiniz məlumatın keyfiyyəti ilə birbaşa mütənasibdir. Yaxşı bir səhv təsvirinə aşağıdakılar daxildir: nə etməyə çalışdınız, nə gözlədiniz, nə baş verdi, dəqiq xətanın mətni və yığın izi, daxil olan kod, mühit (dil/versiya/OS) və xətanı yaradan ən kiçik nümunə.

  1. Semptomu aydınlaşdırın. "Gözlənilən X, aktuallaşdırılan Y" formatında.
  2. Tam xəta mətnini və yığın izini yapışdırın. Onu qısaltmayın, senzuraya salmayın, amma quruluşu pozmayın.
  3. Ən kiçik reproduksiyanı verin. Xətanı tetikleyen minimum giriş və kod.
  4. Ətraf mühiti müəyyənləşdirin. Dil versiyası, kitabxana versiyası, iş vaxtı mühiti.

Effektiv xətanın təsviri sorğusu: "Mən xətanı aradan qaldırıram. Məlumat:- Etməyə çalışdığım şey: [X]- Gözlənilən davranış: [Y]- Faktiki davranış: [Z]- Tam xəta mesajı və yığın izi: [yapışdırın]- Mühit: [dil/versiya, kitabxana/versiya]- İştirak edən minimum kod: [kod] İlk olaraq ən çox ehtimal olunan kök səbəblərinin siyahısını verin3. ehtimalı və hər biri üçün hansı çeki yoxlamaq lazım olduğunu söyləyin."

Fərziyyə ilə axının daralması

Sistemli sazlama imkanları bir-bir aradan qaldırmaq sənətidir. Hipotezlər yaratmaq və hər bir fərziyyəni yoxlamaq üçün eksperiment hazırlamaq üçün AI-dən istifadə edin; Sonra təcrübə aparın və nəticəni qaytarın. Bu dövrə təsadüfi dəyişikliklər etmək və "ov tüfənginin aradan qaldırılması" adlanan dayanma vərdişindən çox daha sürətlidir.

Binar axtarış (biseksiya) köməkçisi xəbərdarlığı: "Bu xəta dünən yox idi, bu gün var. Son 20 dəyişiklikdən hansının bisect ilə səhv gətirdiyini öyrənmək istəyirəm. Mənə addım-addım plan verin: nəticədən asılı olaraq hansı nöqtəni sınamalı, hansı yarısına getməliyəm. Həmçinin hər addımda nəyi yoxlamaq lazım olduğunu deyin."

Jurnal daxiletmə strategiyası sorğusu: "Bu funksiyada aralıq dəyərləri görə bilmədiyim üçün xətanı tapa bilmirəm. Mənə deyin ki, hansı nöqtələrdə hansı dəyişənləri çap edən jurnal xətləri əlavə etməliyəm. Hər jurnal üçün "bu jurnaldan nə öyrənəcəyəm" izahını əlavə edin. Məxfi məlumatları daxil etməyimə mane olacaq xəbərdarlıqları da qeyd edin."

İpucu: Əgər xətanı həll edə bilmirsinizsə, çox vaxt problem səhv güman etdiyiniz yerdədir. Süni intellektdən “mənim hansı fərziyyəm yanlış ola bilər?” sualını verin. Soruşmaq korluğunuzu qırar. Ən çətin səhvlər "Əminəm ki, bu düzgün işləyir" dediyiniz yerdə gizlənir.

Zəif Tələb / Güclü Tələb

ZƏFS:"Mənim kodum xəta verir, onu düzəldin: [200 sətir kod]"(Nəticə: AI bunun hansı xəta olduğunu, nə gözlənildiyini bilmir; təxminlərə əsaslanan ümumi təkliflər verir, əksəriyyəti faydasızdır.)GÜÇLÜ:"NullPointerException əldə edirəm. Gözlənilir: istifadəçi siyahısı qaytarılmalıdır. Aktual: [Stavi:TrackUs] üçün zəng zamanı partlayır). 17. Minimum təkrarlama: Bu, istifadəçilər siyahısı boş olduqda baş verir, lakin o, dolu olduqda deyil.

Güclü əmr xətanı kontekstdə qoyur: hansı halda baş verir (boş siyahı), hansı halda baş vermir (tam siyahı). Bu tək ipucu (“boş olduqda baş verir”) demək olar ki, birbaşa əsas səbəbə işarə edir. Bu məlumat zəif sorğuda mövcud olmadığından, AI kor-koranə bir təxmin edir.

Düzəlişin yoxlanılması

Düzəliş yalnız üç şeyi edərsə, real düzəlişdir:

nəzarət

Sual

Necə yoxlamaq olar

Səhv getdi?

Eyni giriş indi işləyirmi?

Yenidən minimal repro icra edin

Yeni xəta yoxdur?

Başqa bir şey qırıldı?

Bütün test paketini işə salın

Təkrar etməyəcək?

Eyni xəta yenidən baş verəcəkmi?

Bu ssenari üçün reqressiya testi əlavə edin

Kök səbəbi tapılmadan edilən düzəlişlər çox vaxt simptomu boğur. Məsələn, null xətasını "boşdursa keç" ilə ört-basdır etmək əsl səbəbi "məlumat niyə sıfıra bərabər gəlir?" görünməzdir və səhv başqa yerdə təkrarlanır.

Mini Çantalar

1-ci hal – Semptomların yatırılması tələsi. Komanda təsadüfi sıfır xətasını cəhd tutmaqla susdurur; Səhv yox olur, lakin 2 həftədən sonra məlumatlar əskik görünür. Əsl səbəb odur ki, xidmət vaxt aşımı zamanı null qaytarır. AI-dən “niyə sıfır olur?” deyə soruşduqda, kök səbəb ortaya çıxır; Həqiqi düzəliş 1 saat çəkir, lakin qalıcıdır.

Case 2 - Minimum repro gücü. Tərtibatçı "hərdən bir dəfə çökür" deyən səhvi düzəldə bilməz. O, AI-nin təklifi ilə səhvi ən kiçik girişə qədər azaldır: problem yalnız türk simvolları olan fayl adlarında baş verir (kodlaşdırma xətası). 300 sətir qeyri-müəyyənlik 5 sətir qəti reproya endiriləndə həll yolu aydın olur.

3-cü vəziyyət — Antireqressiya testi. Süni intellekt tarix hesablama xətasını düzəldir. Mühəndis bununla kifayətlənmir; səhv ssenari üçün reqressiya testi əlavə edir (ayın sonu, 31 yanvar + 1 ay). 4 ay sonra başqa bir dəyişiklik eyni sahəyə toxunduqda, test qırmızıya çevrilir və səhv istehsala çatmazdan əvvəl tutulur.

Ümumi səhvlər

  • Bu, "işləmir, düzəldin" deməkdir. Səhv mətni, gözlənti və repro olmadan, AI təxmin edir.
  • Yığın izini vermir. Yığın izi çox vaxt birbaşa kök səbəbi göstərir.
  • Təsadüfi dəyişikliklər etməyə davam edin. Fərziyyə yaratmadan təcrübələr vaxt itirir.
  • Semptomun qarşısını almaq və kök səbəbini qaçırmaq. Səhv başqa yerdə yenidən doğulur.
  • Reqressiya testi ilə düzəlişin təmin edilməməsi. Eyni səhv gələcəkdə səssizcə geri gəlir.

Xülasə

Effektiv ayıklama sistematik daralmadır, təxmin etmək deyil. Süni intellektə tam səhv mətni, yığın izi, minimal reproduksiya və ətraf mühit haqqında məlumat vermək əsas səbəbi tapmaq şansını eksponent olaraq artırır. Hipotezlər yaratmaq və hər bir fərziyyəni yoxlamaq üçün eksperiment hazırlamaq üçün AI-dən istifadə edin; Siz təcrübə aparırsınız. Yalnız səhvin aradan qalxdığını, heç bir yeni səhvlərin təqdim edilmədiyini və reqressiya testi ilə qorunduğunu gördükdə düzəlişi "bitdi" hesab edin.

Tətbiq tapşırığı

Həqiqi və ya süni bir səhv düşünün. Əvvəlcə səhvi ən kiçik reproduksiyaya qədər azaldın (hansı girişdə olur, hansında yoxdur). Effektiv səhv resepti sorğusundan istifadə edərək, AI-dan 3 əsas səbəb fərziyyəsi və hər biri üçün bir yoxlama addımı soruşun. Fərziyyələri bir-bir sınaqdan keçirərək kök səbəbi tapın, düzəldin, sonra səhvin getdiyini və testin qorunma təmin etdiyini göstərmək üçün bu ssenari üçün reqressiya testi yazın və işləyin.

yoxlama siyahısı

  • [ ] Simptomu "gözlənilən və reallaşan" kimi aydınlaşdırdım.
  • [ ] Mən süni intellektə tam xəta mətnini və yığın izini verdim.
  • [ ] Mən səhvi ən kiçik reproduksiyaya endirdim.
  • [ ] Fərziyyələri bir-bir sınaqdan keçirərək, mən əsas səbəbi tapdım.
  • [ ] Simptomu yatırtmaq əvəzinə, mən əsas səbəbi müəyyən etdim.
  • [ ] Mən əlavə etdim və eyni səhv üçün reqressiya testi keçirdim.