Keuntungan:
- Keupayaan untuk mengurangkan pepijat kepada contoh terkecil yang boleh dihasilkan semula dan mengalihkannya ke AI dengan bukti penuh
- Keupayaan untuk menguji hipotesis berasaskan bukti dengan kawalan termurah dan mencari punca
- Keupayaan untuk menyelesaikan punca dan menjaminnya dengan ujian regresi daripada menampal gejala
Penyahpepijatan ialah proses untuk mengetahui sebab perisian berkelakuan di luar jangkaan dan membetulkannya. Ia adalah tugas di mana pembangun menghabiskan paling banyak masa dan paling penat; Kerana kebanyakan masa kesilapan itu bukan di mana ia muncul, tetapi tersembunyi beberapa langkah di belakang. AI ialah rakan kongsi berfikir yang berkuasa yang mempercepatkan penyelidikan ini — tetapi hanya jika anda memberikan bukti yang betul. Penyahpepijatan tanpa bukti ialah kawasan di mana AI menghasilkan paling banyak halusinasi.
Dalam unit ini, kami mewujudkan aliran berdisiplin daripada menjana ralat kepada mendapatkan punca utama: menjelaskan gejala, mengumpul bukti (mesej ralat, surih tindanan, log, kemasukan), menjana hipotesis, menguji hipotesis dan mengesahkan pembetulan. AI membantu pada setiap langkah; tetapi keputusan "tetap" dibuat dengan melihat bahawa pepijat sebenarnya telah hilang.
Mengapa Bukti Adalah Segala-galanya?
LLM tidak melihat ralat seperti yang anda lakukan; Dia hanya tahu apa yang awak beritahu dia. Ayat seperti "Aplikasi ranap" memberikan model hampir tiada maklumat, dan model mengisi jurang dengan ramalan — iaitu halusinasi. Seterusnya, mesej ralat penuh, surih tindanan — pecahan fungsi mana yang memanggil ralat berlaku, input yang mencetuskan ralat, dan apa yang dijangkakan, dsb. Memandangkan tingkah laku yang diperhatikan, model boleh menentukan kebarangkalian sebenar.
Dalam penyahpepijatan, anggap AI sebagai pembantu kepada detektif: lebih banyak bukti yang anda kemukakan, lebih tepat hipotesis yang dihasilkannya. Jika tiada bukti, pembantu hanya akan meneka dan boleh membawa anda ke laluan yang salah.
Petua: Sebelum mengalihkan pepijat ke AI, kurangkan kepada contoh terkecil yang boleh dihasilkan semula. Kod dan input terkecil yang mencetuskan ralat menjadikan perkara lebih mudah untuk anda dan model; selalunya semasa pengurangan ini anda mencari sendiri puncanya.
Langkah demi Langkah: Aliran Analisis Punca Punca
- Jelaskan simptomnya. "Apa yang berlaku, apa yang anda jangkakan akan berlaku?" Tulis kedua-duanya dalam satu ayat.
- Kumpul bukti. Mesej ralat penuh, surih tindanan, baris log yang berkaitan, entri pencetus, maklumat versi.
- Buat hipotesis. Daripada AI "3 kemungkinan penyebab yang menerangkan gejala ini dan bagaimana saya menguji untuk setiap satu?" bertanya.
- Uji hipotesis yang paling murah dahulu. Tambah log, cetak nilai, jalankan ujian. Adakah bukti mengesahkan hipotesis?
- Betulkan punca, bukan simptomnya. Daripada menyenyapkan gejala dengan tampalan, atasi puncanya.
- Sahkan dan tambah ujian regresi. Lihat ralat hilang; Kemudian tulis ujian yang akan menangkap ralat itu supaya ia tidak kembali.
Tiga Kes Mini
Kes 1 — Jejak tindanan membawa kepada fail yang betul. Aplikasi telah mengembalikan ralat 500 pada permintaan tertentu. Pembangun memberikan jejak tindanan penuh dan permintaan pencetus kepada AI; Model tersebut membuat hipotesis bahawa ralat disebabkan oleh nilai Tiada dalam lapisan penghuraian tarikh. Pembangun menambah log pada baris itu, mengesahkannya dan menyelesaikannya dalam masa 15 minit; 2 jam telah dibazirkan sehari sebelumnya dengan eksperimen yang tidak terbukti.
Kes 2 — Halusinasi membawa kepada laluan yang salah. Pemaju lain hanya menulis "sambungan pangkalan data terputus". AI menuduh tetapan kumpulan sambungan tanpa sebarang bukti; Pembangun menghabiskan 40 minit bermain-main dengan tetapan ini. Punca sebenar adalah tamat masa di bahagian rangkaian dan hanya didedahkan dengan melihat log. Pengajaran: hipotesis yang diambil tanpa bukti hanya berkemungkinan, tidak boleh dipercayai.
Kes 3 — Ralat serpihan ditangkap. Ada ujian yang kadangkala gagal. AI telah diberi kod ujian, mesej kegagalan, dan maklumat "kadang-kadang ia lulus, kadang-kadang gagal"; model menunjukkan pergantungan masa/pesanan kongsi ujian. Semakan itu mengesahkan bahawa ujian itu berdasarkan waktu tempatan sistem. Sebaik sahaja jam itu ditetapkan (diejek), ujian menjadi stabil.
Empat Templat Boleh Disalin
Penjanaan hipotesis berasaskan bukti:
Saya sedang menyahpepijat pepijat. Bukti di bawah.- Tingkah laku yang dijangka: {{dijangka}}- Tingkah laku yang diperhatikan: {{diperhatikan}}- Mesej ralat / surih tindanan: {{trace}}- Input pencetus: {{input}}- Persekitaran/versi: {{versi}}Senaraikan 3 KEMUNGKINAN punca yang menerangkan gejala ini. Untuk setiap: bagaimana saya menguji (semakan termurah) dan cara membetulkannya jika ia benar. Jika bukti tidak mencukupi, beritahu saya maklumat tambahan yang anda perlukan.
Mentafsir surih tindanan:
Baca jejak tindanan ini. Bezakan antara baris mana ralat MUNGKIN bermula pada (akar) dan baris mana yang hanya kesinambungan rantai. Cadangkan 1-2 tempat untuk dilihat dahulu. Kod berkaitan:{{code}}Trace:{{trace}}
Penolakan repro minimum:
Kod di bawah menghasilkan ralat. Kurangkan kepada contoh PALING KECIL yang masih mencetuskan ralat tetapi membuang apa-apa yang tidak perlu. Jangan menganggap bahawa setiap bahagian yang anda alih keluar tidak menjejaskan ralat, tetapi tambahkan nota yang mengatakan "jika ralat hilang apabila anda mengalih keluar ini, itulah sebabnya".{{kod}}
Ujian pengesahan dan regresi selepas pembetulan:
Andaikan puncanya ialah {{cause}} dan saya membuat pembetulan berikut: {{fix}}.1) Adakah pembetulan ini benar-benar membetulkan gejala, adakah ia mempunyai sebarang kesan sampingan?2) Tulis ujian regresi yang akan menangkap pepijat ini pada masa hadapan.
Gesaan lemah / Gesaan kuat
Lemah: "Kod tidak berfungsi, kenapa?"
Kuat: "Nod 20 / Express. POST /orders mengembalikan 500 apabila item ialah rentetan kosong dalam badan; sepatutnya telah mengembalikan 400. Jejak tindanan: TypeError: Tidak dapat membaca sifat yang tidak ditentukan (membaca '0') — dilampirkan ialah jejak penuh dan pengendali yang berkaitan. Berikan saya 3 kemungkinan besar punca yang menjelaskan setiap kod ini]" [dan cara untuk menguji setiap kod ini]" [dan cara untuk menguji setiap gejala ini]"
Versi berkuasa; Ia memberikan persekitaran, titik akhir, input pencetus, jenis ralat tepat dan tingkah laku yang dijangkakan. Model tidak lagi boleh membuat ramalan, tetapi analisis.
langkah
Sumbangan AI
kawalan anda
mengumpul bukti
Apa bukti yang diperlukan, mengingatkan
Betul-betul kumpul bukti
penjanaan hipotesis
Senaraikan sebab yang mungkin
Mengutamakan dengan konteks
ujian hipotesis
Mengesyorkan kaedah ujian
Beroperasi dan memerhati secara peribadi
pembetulan
patch mengesyorkan
Adakah ia menyelesaikan punca utama? Memang betul.
regresi
menulis ujian
Mengesahkan bahawa ujian itu rosak
Menyelesaikan Punca Punca, Bukan Gejala
Selalunya AI akan mencadangkan tampalan yang menyenyapkan gejala dengan cepat: tambah cuba/tangkap, letakkan semakan nol, telan ralat. Ini kadangkala benar, selalunya berbahaya; kerana punca asal kekal di tempatnya dan meletus lagi dari tempat lain. Dengan setiap pembetulan, tanya diri anda: "Adakah ini membetulkan punca ralat, atau adakah ia menjadikannya tidak kelihatan?" Sebaik sahaja anda menemui punca utama, pembaikan biasanya lebih kecil, lebih teguh dan kekal.
Awas: Menelan pengecualian secara senyap (tangkapan kosong) tidak menyelesaikan ralat; ia hanya menyembunyikan dan membuat diagnosis masa depan mustahil. Jika AI mencadangkan "penyelesaian" sedemikian, jangan terima tanpa mempersoalkan puncanya.
Kesilapan biasa
- Bersoal jawab tanpa bukti. Ayat samar-samar mendorong model ke dalam halusinasi; Berikan ralat penuh, jejak dan input.
- Mengunci pada hipotesis pertama. Cadangan pertama AI mungkin bukan yang paling mungkin; Mulakan dengan hipotesis terkawal yang paling murah.
- Menampal simptom dan kehilangan punca. Ralat yang disenyapkan kembali.
- Menutup pembetulan tanpa mengesahkannya. Lihat dalam keadaan seperti pengeluaran bahawa ralat sebenarnya hilang.
- Tidak menulis ujian regresi. Jika tiada ujian ditambahkan, ralat yang sama akan kembali secara senyap dalam versi kemudian.
Secara ringkasnya
Dalam penyahpepijatan, kuasa AI adalah berkadar terus dengan bukti yang anda berikan: tanpa mesej ralat penuh, surih tindanan, input pencetus dan gelagat yang dijangkakan, model itu hanya membuat spekulasi. Aliran berdisiplin—menjelaskan gejala, mengumpul bukti, menjana hipotesis, menguji dengan kawalan termurah, membetulkan punca, mengesahkan dan menambah ujian regresi—menutup pepijat dengan cepat dan kekal. AI ialah penjana hipotesis; Anda adalah orang yang memutuskan bahawa pepijat sebenarnya telah diselesaikan.
Tugasan permohonan
Pilih pepijat sebenar yang anda temui baru-baru ini (atau hasilkan semula pepijat ujian). Lakukan langkah "pembiakan minimum" terlebih dahulu; Alih keluar kod dan input terkecil yang mencetuskan ralat. Kemudian dapatkan 3 kemungkinan sebab dan kaedah ujian daripada AI dengan templat "penjanaan hipotesis berasaskan bukti". Uji sendiri hipotesis termurah, cari punca, betulkan, dan akhir sekali tulis ujian regresi yang akan menangkap pepijat ini pada masa hadapan dan sahkan bahawa ujian itu benar-benar rosak.
senarai semak
- [ ] Saya mengurangkan ralat kepada sampel terkecil yang boleh dihasilkan semula sebelum mengalihkannya ke AI.
- [ ] Saya menambah mesej ralat penuh, surih tindanan, input dan tingkah laku yang dijangkakan pada gesaan.
- [ ] Saya mulakan dengan yang paling murah yang boleh dikawal, tanpa terkunci dalam satu hipotesis.
- [ ] Saya mengesahkan bahawa saya telah menyelesaikan punca utama dan bukannya menampal gejala.
- [ ] Saya perhatikan bahawa pembetulan itu sebenarnya membetulkan pepijat.
- [ ] Saya menambah ujian regresi untuk setiap pepijat yang diselesaikan.