ලාභ:
- දෝෂ පණිවිඩය, ස්ටැක් ට්රේස් සහ කුඩාම ප්රතිනිෂ්පාදන අවස්ථාව සමඟින් AI වෙත දෝෂයක් ඵලදායී ලෙස විස්තර කිරීමේ හැකියාව
- උපකල්පනය කිරීම සහ පියවරෙන් පියවර එය පටු කිරීම මගින් මූල හේතුව සොයා ගැනීමට AI සමඟ ක්රමානුකූල නිදොස් කිරීමේ ප්රවාහයක් ක්රියාත්මක කිරීමේ හැකියාව
- AI යෝජනා කළ නිවැරදි කිරීම ප්රතිනිෂ්පාදනය සහ ප්රතිගාමී පරීක්ෂණ මගින් ගැටලුව නිරාකරණය කර ඇති බව සත්යාපනය කිරීමේ හැකියාව
දෝශ නිරාකරණය කිරීම යනු වැඩසටහනක් බලාපොරොත්තු වූවාට වඩා වෙනස් ලෙස හැසිරෙන්නේ මන්දැයි සොයා බලා එය නිවැරදි කිරීම වන අතර, එය බොහෝ ඉංජිනේරුවන්ගේ කාලය වැය කරයි. හොඳ නිදොස්කරණය අනුමාන ක්රීඩාවක් මත පදනම් නොවේ, නමුත් ක්රමානුකූලව පටු කිරීම මත ය: රෝග ලක්ෂණය පැහැදිලි කරන්න, උපකල්පනය කරන්න, උපකල්පනය පරීක්ෂා කරන්න, මූල හේතුව වෙත යන්න. AI මෙම චක්රයේ ඉතා බලවත් හවුල්කරුවෙකි; නමුත් ඔබ ඔහුට නිවැරදි තොරතුරු ලබා දෙන්නේ නම් පමණි. “කේතය ක්රියා නොකරයි, එය නිවැරදි කරන්න” යැයි පැවසීම AI හට අනුමාන කිරීමට සහ බ්ලැන්කට් යෝජනා කිරීමට බල කරයි. එයට සම්පූර්ණ දෝෂ පණිවිඩය, ස්ටැක් ට්රේස් සහ කුඩාම ප්රතිනිෂ්පාදන නියැදිය ලබා දෙන්න, එවිට ඔබට මූලික හේතුව සොයා ගත හැක.
මෙම ඒකකයෙන් අපි AI වෙත දෝෂයක් ඵලදායි ලෙස විස්තර කරන්නේ කෙසේද, උපකල්පන පියවරෙන් පියවර පටු කරන්නේ කෙසේද සහ යෝජිත නිවැරදි කිරීම ඇත්ත වශයෙන්ම ගැටළුව විසඳන බව ප්රතිගාමී පරීක්ෂණය හරහා තහවුරු කරන්නේ කෙසේදැයි බලමු. මතක තබා ගන්න: දෝෂයක් "නිවැරදි කිරීම" සහ "දෝෂයේ රෝග ලක්ෂණය යටපත් කිරීම" යනු වෙනස් කරුණු දෙකකි; මූල හේතුව සොයා නොගෙන කරන ලද නිවැරදි කිරීම දෝෂය වෙනත් ස්ථානයකට ගෙන යයි.
සංකල්ප: ස්ටැක් ට්රේස්: දෝෂය ඇති වූ අවස්ථාවේ කුමන අනුපිළිවෙලට කුමන ශ්රිතයන් හැඳින්වූයේ දැයි පෙන්වන ඩම්ප් එකක්. අවම ප්රතිනිර්මාණය: දෝෂය අවුලුවන සරලම, කෙටිම කේතය/ආදානය. මූල හේතුව: ගැටලුවේ සැබෑ මූලාශ්රය මිස රෝග ලක්ෂණය නොවේ. ප්රතිගාමී පරීක්ෂණය: එම දෝෂය නැවත සිදු නොවන බව සහතික කරන පරීක්ෂණය.
AI වෙත දෝෂයක් විස්තර කිරීම
AI විසින් මූල හේතුව සොයා ගැනීමේ සම්භාවිතාව ඔබ සපයන තොරතුරුවල ගුණාත්මක භාවයට සෘජුව සමානුපාතික වේ. හොඳ දෝෂ විස්තරයකට ඇතුළත් වන්නේ: ඔබ කිරීමට උත්සාහ කළ දේ, ඔබ අපේක්ෂා කළ දේ, සිදුවූයේ කුමක්ද, නිවැරදි දෝෂ පෙළ සහ ස්ටැක් ට්රේස්, ඇතුළත් කේතය, පරිසරය (භාෂාව/අනුවාදය/OS) සහ දෝෂය ඇති කළ කුඩාම නියැදිය.
- රෝග ලක්ෂණය පැහැදිලි කරන්න. "අපේක්ෂිත X, සත්යකරණය කළ Y" ආකෘතියෙන්.
- සම්පූර්ණ දෝෂ පෙළ සහ ස්ටැක් ට්රේස් එක අලවන්න. එය කෙටි නොකරන්න, වාරණය කරන්න, නමුත් ව්යුහය බිඳ දමන්න එපා.
- කුඩාම ප්රතිනිෂ්පාදනය දෙන්න. දෝෂය අවුලුවන අවම ආදානය සහ කේතය.
- පරිසරය සඳහන් කරන්න. භාෂා අනුවාදය, පුස්තකාල අනුවාදය, ධාවන කාල පරිසරය.
ඵලදායි දෝෂ විස්තර විමසුම: "මම දෝෂයක් නිදොස් කරමින් සිටිමි. තොරතුරු:- මා කිරීමට උත්සාහ කරන දේ: [X]- අපේක්ෂිත හැසිරීම: [Y]- සත්ය හැසිරීම: [Z]- සම්පූර්ණ දෝෂ පණිවිඩය සහ ස්ටැක් ලුහුබැඳීම: [පේස්ට්]- පරිසරය: [භාෂාව/අනුවාදය, පුස්තකාලය/අනුවාදය]- සම්බන්ධව ඇති අවම මුලික සෘජු කේතයක් ලබා දෙන්න' සම්භාවිතාව අනුපිළිවෙලට හේතු සහ එක් එක් සඳහා සත්යාපනය කළ යුතු චෙක්පත මට කියන්න."
කල්පිතය මගින් පටු ප්රවාහය
ක්රමානුකූල නිදොස්කරණය යනු හැකියාවන් එකින් එක ඉවත් කිරීමේ කලාවයි. උපකල්පන උත්පාදනය කිරීමට සහ එක් එක් කල්පිතය පරීක්ෂා කිරීමට අත්හදා බැලීම සැලසුම් කිරීමට AI භාවිතා කරන්න; ඉන්පසු අත්හදා බැලීම ක්රියාත්මක කර ප්රතිඵලය ලබා දෙන්න. මෙම චක්රය අහඹු වෙනස්කම් සිදු කර නැවැත්වීමේ පුරුද්දට වඩා ඉතා වේගවත් වන අතර එය "වෙඩි තුවක්කු නිදොස්කරණය" ලෙස හැඳින්වේ.
Binary search (bisection) helper prompt: "මෙම දෝෂය ඊයේ නොතිබුණි, එය අද තිබේ. මට bisect සමඟ දෝෂය ගෙනාවේ අවසාන වෙනස්කම් 20න් මොනවාදැයි සොයා ගැනීමට අවශ්යයි. මට පියවරෙන් පියවර සැලැස්මක් දෙන්න: මා පරීක්ෂා කළ යුත්තේ කුමන ලක්ෂ්යයටද, ප්රතිඵලය අනුව මා යා යුත්තේ කුමන භාගයටද යන්න. ඒවගේම සෑම පියවරකදීම පරීක්ෂා කළ යුතු දේ හරියටම කියන්න."
ලොග් ඇතුළු කිරීමේ උපාය මාර්ගය විමසුම: "මට මෙම ශ්රිතයේ අතරමැදි අගයන් නොපෙනෙන නිසා දෝෂය සොයාගත නොහැක. කුමන විචල්යයන් මුද්රණය කරන ලොග් රේඛා මා එක් කළ යුතුද යන්න මට කියන්න. එක් එක් ලොගය සඳහා 'මෙම ලොගයෙන් මා ඉගෙන ගන්නා දේ' පැහැදිලි කිරීමක් එක් කරන්න. රහස්ය දත්ත ලොග් කිරීමෙන් මා වළක්වන අනතුරු ඇඟවීම් සඳහන් කරන්න."
ඉඟිය: ඔබට දෝෂයක් විසඳා ගත නොහැකි නම්, බොහෝ විට ගැටලුව ඔබ වැරදි ලෙස උපකල්පනය කළ ස්ථානයක පවතී. "මගේ කුමන උපකල්පනය වැරදි විය හැකිද?" AI ගෙන් අසන්න. ඇසීම ඔබේ අන්ධභාවය බිඳ දමනු ඇත. "මෙය නිවැරදිව ක්රියාත්මක වන බව මට විශ්වාසයි" යැයි ඔබ පවසන ස්ථානයේ දරුණුතම වැරදි සැඟවී ඇත.
දුර්වල ක්ෂණික / ශක්තිමත් ක්ෂණික
දුර්වල:"මගේ කේතය දෝෂයක් ලබා දෙයි, එය නිවැරදි කරන්න: [කේත පේළි 200]"(ප්රතිඵලය: AI එය කුමන දෝෂයක්ද, අපේක්ෂා කරන්නේ කුමක්දැයි නොදනී; එය අනුමාන මත පදනම්ව සාමාන්ය යෝජනා ලබා දෙයි, ඒවායින් බොහොමයක් නිෂ්ඵල වේ.)STRONG:"මට NullPointerException ලැබේ. අපේක්ෂා කෙරේ: පරිශීලක ලැයිස්තුව ආපසු ලබා දිය යුතුය. (trackUploads on) [පේස්ට්].පරිසරය: ජාවා 17. අවම පුනරාවර්තනය: එය සිදු වන්නේ පරිශීලක ලැයිස්තුව හිස් වූ විටය, නමුත් අදාළ පේළි 15 පිරී ඇති විට නොවේ: [කේතය] මූල හේතුව සහ හිස් ලැයිස්තුව ක්රියාත්මක වන්නේ ඇයිද යන්න පැහැදිලි කරන්න.
ප්රබල විමසුම මඟින් දෝෂය සන්දර්භය තුළ තබයි: එය සිදුවන්නේ කුමන අවස්ථාවේදීද (හිස් ලැයිස්තුව), එය සිදු නොවන්නේ නම් (සම්පූර්ණ ලැයිස්තුව). මෙම තනි ඉඟිය ("හිස් විට සිදු වේ") සෘජුවම පාහේ මූලික හේතුව වෙත යොමු කරයි. මෙම තොරතුරු දුර්වල ප්රේරකයේ නොමැති බැවින්, AI අන්ධ අනුමාන කරයි.
නිවැරදි කිරීම තහවුරු කිරීම
නිවැරදි කිරීමක් සැබෑ නිවැරදි කිරීමක් වන්නේ එය කරුණු තුනක් කරන්නේ නම් පමණි:
පාලනය
ප්රශ්නය
සත්යාපනය කරන්නේ කෙසේද
දෝෂය පහව ගොස් තිබේද?
එකම ඇතුල්වීම දැන් ක්රියාත්මක වේද?
අවම repro නැවත ධාවනය කරන්න
අලුත් දෝෂ නැද්ද?
වෙන මොනවා හරි කැඩිලාද?
සම්පූර්ණ පරීක්ෂණ කට්ටලයම ධාවනය කරන්න
එය නැවත සිදු නොවේද?
එම දෝෂය නැවත සිදුවේද?
මෙම අවස්ථාව සඳහා ප්රතිගාමී පරීක්ෂණය එක් කරන්න
මූල හේතුව සොයා නොගෙන කරන ලද නිවැරදි කිරීම් බොහෝ විට රෝග ලක්ෂණය යටපත් කරයි. උදාහරණයක් ලෙස, "skip if null" සමඟ null දෝෂයක් ඔප දැමීමෙන් සැබෑ හේතුව, "දත්ත ශුන්ය වන්නේ ඇයි?" අදෘශ්යමාන වන අතර, දෝෂය වෙනත් තැනක නැවත සිදුවේ.
කුඩා නඩු
නඩුව 1 - රෝග ලක්ෂණ මර්දනය කිරීමේ උගුල. කණ්ඩායමක් උත්සාහ දැරීමක් සමඟින් වරින් වර ශුන්ය දෝෂයක් නිශ්ශබ්ද කරයි; දෝෂය අතුරුදහන් වන නමුත් සති 2 කට පසු දත්ත අතුරුදහන් වේ. සැබෑ හේතුව නම් සේවාවක් නියමිත කාලය අවසන් වූ විට ශුන්ය ලෙස ආපසු පැමිණීමයි. ඔබ AI ගෙන් "එය ශුන්ය වන්නේ ඇයි?" යැයි ඇසූ විට, මූල හේතුව මතු වේ; සැබෑ නිවැරදි කිරීම පැය 1 ක් ගත වන නමුත් ස්ථිර වේ.
නඩුව 2 - අවම ප්රතිනිර්මාණය බලය. සංවර්ධකයෙකුට "එය වරින් වර කඩා වැටේ" යැයි පවසන දෝෂයක් නිවැරදි කළ නොහැක. එය AI හි යෝජනාව සමඟ කුඩාම ආදානය දක්වා දෝෂය අඩු කරයි: ගැටළුව ඇති වන්නේ තුර්කි අක්ෂර අඩංගු ගොනු නාම සමඟ පමණි (කේතන දෝෂය). අවිනිශ්චිතතාවයේ පේළි 300ක් නිශ්චිත ප්රතිනිර්මාණ පේළි 5කට අඩු කළ විට විසඳුම පැහැදිලි වේ.
නඩුව 3 - ප්රති-ප්රතිගාමී පරීක්ෂණය. AI දින ගණනය කිරීමේ දෝෂයක් නිවැරදි කරයි. ඉංජිනේරුවරයා මෙයින් සෑහීමකට පත් නොවේ; වැරදි තත්ත්වය සඳහා ප්රතිගාමී පරීක්ෂණයක් එක් කරයි (මාස අවසානය, ජනවාරි 31 + 1 මාසය). මාස 4 කට පසු තවත් වෙනසක් එම ප්රදේශයටම ස්පර්ශ වූ විට, පරීක්ෂණය රතු පැහැයට හැරෙන අතර එය නිෂ්පාදනයට පැමිණීමට පෙර දෝෂය හසු වේ.
පොදු වැරදි
- එහි තේරුම "එය වැඩ කරන්නේ නැත, එය නිවැරදි කරන්න" යන්නයි. දෝෂ පෙළ, අපේක්ෂාව සහ ප්රතිනිර්මාණය නොමැතිව, AI අනුමාන කරයි.
- ස්ටැක් ට්රේස් එක දෙන්නේ නෑ. ස්ටැක් හෝඩුවාව බොහෝ විට සෘජුවම මූල හේතුව පෙන්නුම් කරයි.
- අහඹු වෙනස්කම් දිගටම කරගෙන යන්න. කල්පිතයක් ස්ථාපිත නොකර අත්හදා බැලීම් කාලය නාස්ති කරයි.
- රෝග ලක්ෂණය යටපත් කිරීම සහ මූලික හේතුව මග හැරීම. දෝෂය වෙනත් තැනක නැවත උපදී.
- ප්රතිගාමී පරීක්ෂාව සමඟ නිවැරදි කිරීම සුරක්ෂිත නොකිරීම. එම දෝෂය අනාගතයේදී නිහඬව නැවත පැමිණේ.
සාරාංශයකින්
ඵලදායී නිදොස්කරණය යනු අනුමාන කිරීම නොව, ක්රමානුකූලව පටු වීමකි. AI හට සම්පූර්ණ දෝෂ පෙළ, ස්ටැක් ට්රේස්, අවම ප්රතිනිෂ්පාදනය සහ පාරිසරික තොරතුරු ලබා දීමෙන් මූල හේතුව සොයා ගැනීමේ අවස්ථාව ඝාතීය ලෙස වැඩි කරයි. උපකල්පන උත්පාදනය කිරීමට සහ එක් එක් කල්පිතය පරීක්ෂා කිරීමට අත්හදා බැලීම සැලසුම් කිරීමට AI භාවිතා කරන්න; ඔබ අත්හදා බැලීම ක්රියාත්මක කරන්න. දෝෂය පහව ගොස් ඇති බවත්, නව දෝෂ හඳුන්වා නොදෙන බවත්, ප්රතිගාමී පරීක්ෂණ මගින් එය ආරක්ෂා කර ඇති බවත් ඔබ දුටු විට පමණක් "කළ" නිවැරදි කිරීමක් සලකා බලන්න.
යෙදුම් කාර්යය
සැබෑ හෝ කෘතිම දෝෂයක් සලකා බලන්න. මුලින්ම දෝෂය කුඩාම ප්රතිනිෂ්පාදනයට අඩු කරන්න (එය සිදු වන ආදානයේදී, එය සිදු නොවේ). ඵලදායි දෝෂ වට්ටෝරු විමසුම භාවිතා කරමින්, මූල හේතු උපකල්පන 3ක් සහ එක් එක් සත්යාපන පියවරක් සඳහා AI වෙතින් විමසන්න. උපකල්පන එකින් එක පරීක්ෂා කිරීමෙන් මූල හේතුව සොයා එය නිවැරදි කරන්න, පසුව දෝෂය නැති වී ඇති බව පෙන්වීමට ප්රතිගාමී පරීක්ෂණයක් ලියා ධාවනය කරන්න සහ පරීක්ෂණය ආරක්ෂාව සපයයි.
පිරික්සුම් ලැයිස්තුව
- [ ] මම රෝග ලක්ෂණය "අපේක්ෂිත vs අවබෝධ කරගත්" ලෙස පැහැදිලි කළෙමි.
- [ ] මම සම්පූර්ණ දෝෂ පෙළ සහ ස්ටැක් ට්රේස් එක AI වෙත ලබා දුන්නා.
- [ ] මම දෝෂය කුඩාම ප්රතිනිෂ්පාදනයට අඩු කළෙමි.
- [ ] උපකල්පන එකින් එක පරීක්ෂා කිරීමෙන් මම මූල හේතුව සොයා ගත්තෙමි.
- [ ] රෝග ලක්ෂණය යටපත් කරනවා වෙනුවට, මම මූලික හේතුව නිවැරදි කළා.
- [ ] මම එම දෝෂය සඳහා ප්රතිගාමී පරීක්ෂණයක් එකතු කර ධාවනය කළෙමි.