Unit 1 / 12

Kecerdasan Buatan untuk Pasukan Perisian: Model Kerja dan Had

Keuntungan:

  • Keupayaan untuk menerangkan cara pembantu pengekodan berfungsi sebagai model bahasa dan konsep token, tetingkap konteks, halusinasi
  • Keupayaan untuk membezakan tugas perisian di mana AI adalah kuat dan lemah dengan peta mental
  • Keupayaan untuk menggunakan kitaran kerja asas propose-produce-verify kepada tugasan mereka sendiri

Hari pembangun perisian jarang dibelanjakan untuk "menulis kod dari awal." Masa sebenar; Membaca kod yang ditulis oleh orang lain, cuba menghasilkan semula pepijat, mengimbas log (garisan log yang dihasilkan oleh aplikasi semasa berjalan), menulis ujian, menulis PR (permintaan tarik - permintaan gabungan di mana perubahan kod diserahkan untuk semakan pasukan) penjelasan dan mengemas kini dokumentasi. Kecerdasan buatan (AI) ialah pengganda kelajuan yang boleh menyentuh hampir semua pekerjaan yang tidak kelihatan ini. Tetapi syarat pertama untuk menggunakannya dengan selamat ialah memahami dengan betul apa itu dan apa yang tidak.

Dalam unit ini, kami mula-mula menerangkan teknologi asas pembantu pengekodan dalam bahasa biasa; kemudian kita mencipta peta mental tentang kekuatan dan kelemahan model; Akhir sekali, kami menetapkan disiplin kerja asas yang akan kami gunakan sepanjang keseluruhan modul: mencadangkan, menghasilkan, mengesahkan. Tiga langkah ini adalah tulang belakang kepada sebelas unit seterusnya.

Nota: Modul ini adalah latihan am. Dalam perisian kritikal keselamatan (pemprosesan pembayaran, penjagaan kesihatan, pengesahan, infrastruktur kritikal) output AI bukanlah pengganti untuk semakan dan kelulusan oleh jurutera yang berkelayakan. AI ialah pembantu; Penandatangan ialah jurutera.

Apakah Yang Sebenarnya Dilakukan oleh Pembantu Pengekodan?

Kebanyakan pembantu pengekodan dibina pada model bahasa yang besar (LLM—AI yang dilatih pada sejumlah besar teks dan kod yang meramalkan "ketulan" seterusnya yang berkemungkinan besar). Model tidak "memahami" kod seperti manusia; Ia menjana kemungkinan kesinambungan konteks yang anda berikan, berdasarkan corak yang dipelajari daripada sekumpulan besar contoh. Mekanisme yang kelihatan mudah ini menghasilkan keputusan yang sangat mengejutkan dalam amalan — kerana kebanyakan perisian terdiri daripada corak berulang: permintaan HTTP, gelung, semakan nol, corak ujian.

Tiga istilah adalah kritikal di sini. Token ialah unit terkecil yang diproses oleh model dengan membahagikan teks; Ia adalah kira-kira beberapa huruf atau sebahagian daripada perkataan. Tetingkap konteks ialah jumlah token yang model boleh "lihat" sekali gus; Kod, mesej ralat dan arahan anda mesti dimuatkan dalam tetingkap ini. Gesaan ialah semua arahan dan konteks yang anda berikan kepada model. Kualiti output yang anda peroleh bergantung secara langsung pada kedua-dua ini: konteks yang lebih baik dan arahan yang lebih jelas yang anda berikan kepada model, hasil yang lebih baik yang anda akan perolehi. Input yang tidak baik menghasilkan output yang tidak baik, walaupun ia adalah model pintar — peraturan perisian klasik "sampah masuk, sampah keluar" juga digunakan untuk AI.

Peta Kekuatan dan Kelemahan

Untuk mengarahkan AI ke pekerjaan yang betul, adalah perlu untuk mengetahui di mana ia bersinar dan di mana ia tersandung. Menghafal peta ini akan membuatkan anda tertanya-tanya dengan setiap misi seterusnya, "Adakah saya perlu menyumber luar kerja ini kepada AI atau melakukannya sendiri?" Ia membolehkan anda menjawab soalan dalam beberapa saat.

Kekuatannya ialah: Menjana kod boilerplate, menterjemah daripada satu bahasa ke bahasa lain, menulis ungkapan biasa (regex), menerangkan fungsi, mencipta rangka ujian, mentafsir mesej ralat, merangka dokumentasi, mencadangkan nama pembolehubah/fungsi dan pemfaktoran semula kecil (memperbaiki struktur kod tanpa mengubah tingkah lakunya).

Kelemahan: Mengetahui peraturan perniagaan khusus syarikat anda, mengingati keseluruhan asas kod anda, sebenarnya menjalankan dan mengesahkan kod, mengetahui versi perpustakaan terkini dengan pasti, mengesan kelemahan keselamatan dengan jaminan seratus peratus. Perkara yang paling berbahaya ialah halusinasi: model mencipta fungsi, perpustakaan atau API yang tidak wujud (antara muka yang membolehkan pertukaran data antara aplikasi) dalam bahasa yang sangat meyakinkan. Risiko ini sebenarnya boleh ditukar kepada kelebihan anda, kerana kod itu, tidak seperti teks biasa, boleh diuji untuk melihat sama ada ia "berfungsi" — cuma jangan langkau langkah pengesahan.

Jenis misi

Peranan AI

peranan lelaki

Menghasilkan boilerplate/rangka

menghasilkan draf

Menyesuaikan diri, ulasan

Penerangan kod

Memberi ringkasan cepat

Mengesahkan bahagian kritikal dalam kod

ujian menulis

Kes mencadangkan

Mengesahkan liputan dan ketepatan

Logik kritikal keselamatan

idea yang berguna

Keputusan dan tanggungjawab terletak sepenuhnya pada manusia.

Penggunaan API/perpustakaan

Menghasilkan sampel

Mengesahkan kewujudan dan versi

keputusan seni bina

Macam-macam pilihan

Memilih dan mempertahankan mengetahui konteks

Langkah demi Langkah: Kitaran Kerja Asas

  1. Jelaskan tugas. Jika anda tidak boleh menulis apa yang anda mahukan dalam satu ayat, model juga tidak boleh. Semakin awal ketidakpastian meresap ke dalam input, semakin besar ia berkembang dalam output.
  2. Berikan konteks. Tambahkan kod yang berkaitan, mesej ralat penuh, versi bahasa/rangka kerja dan kekangan pada gesaan. Jangan sebut "betulkan ini", sebut "Python 3.11, FastAPI 0.110; fungsi ini memberikan ralat 500, ia meletup apabila badan permintaan kosong".
  3. Peranan dan format pengenaan. Rangka kerja seperti "Anda seorang pembangun kanan Go; hanya berikan kod dan rasional dua ayat" memfokuskan output.
  4. Minta kecil. Pecahkan kepada langkah-langkah dan bukannya satu permintaan gergasi; Sahkan setiap langkah secara berasingan. Perubahan besar berisiko kerana ia sukar untuk disahkan dan terdedah kepada menyembunyikan ralat.
  5. Sahkan. Jalankan, uji, baca secara visual. Kod AI yang tidak disahkan ialah "lakaran", bukan "penyelesaian". Ini adalah langkah paling tidak boleh dirunding dalam kitaran.

Tiga Kes Mini

Kes 1 — Penjimatan masa adalah nyata tetapi sederhana. Apabila pasukan menyusun titik akhir CRUD (Create-Read-Update-Delete) baharu dengan AI, masa draf pertama menurun daripada kira-kira 40 minit kepada 8 minit. Walau bagaimanapun, dengan semakan dan ujian, jumlah masa adalah 25 minit; jadi keuntungan sebenar adalah dari 40 hingga 25, kira-kira 38%. Kadar ini, diukur dan bukannya jangkaan "kami telah mempercepatkan 10 kali ganda", adalah keuntungan yang mampan.

Kes 2 — Halusinasi adalah mahal. Pembangun menggunakan panggilan requests.get_json() yang dicadangkan AI tanpa pengesahan; Tiada kaedah sedemikian (tepatnya response.json()). 20 minit telah hilang apabila kod tidak disusun. A mudah "adakah kaedah ini benar-benar wujud?" pengesahan akan menetapkan semula kerugian.

Kes 3 — Konteks yang baik menggandakan output. Untuk pepijat yang sama, seorang pembangun hanya menulis "Saya mendapat ralat" dan yang lain menambah surih tindanan penuh, versi dan sampel input. Yang terakhir mendapat penyelesaian yang betul pada percubaan pertama; Yang pertama menghabiskan tiga pusingan. Perbezaannya bukan pada model, tetapi pada input.

Empat Templat Boleh Disalin

Gesaan permulaan yang bertujuan umum dan berkuasa:

Peranan: Anda seorang pembangun {{bahasa}} berpengalaman.Tugas: {{what_want}}Konteks:- Rangka kerja/versi: {{framework_and_version}}- Kekangan: {{performance, style, dependency rules}}Peraturan:- Jangan gunakan pustaka/fungsi yang tidak wujud; Jika anda tidak pasti, tandakannya sebagai "sahkan". - Pertama, berikan rancangan ringkas, kemudian kod, kemudian 2 ayat justifikasi. - Hasilkan kod yang boleh diuji dan berfungsi.

Untuk menapis ketidakpastian kembali ke dalam model:

Sebelum menyelesaikan tugasan di bawah, senaraikan SEKURANG-KURANGNYA 3 perkara yang anda dapati hilang atau tidak jelas sebagai soalan. JANGAN tulis kod sebelum saya membalas.Tugas: {{task}}

Untuk memastikan output disemak sendiri:

Anda telah menghasilkan kod berikut. Sekarang tukar peranan anda dan kritik kod ini:- Senaraikan 3 kes (kes tepi) yang mungkin tidak berfungsi.- Adakah terdapat sebarang API/fungsi yang boleh anda buat? Tandai.- Berikan versi yang diperbetulkan.Kod:{{code}}

Untuk memecahkan keputusan kepada pilihan:

Cadangkan 2-3 pendekatan penyelesaian untuk {{problem}}. Untuk setiap: huraian ringkas, tambah/tolak, masa untuk memilih. Beri dalam bentuk jadual. JANGAN pilih untuk saya; hanya menjelaskan pilihan.

Gesaan lemah / Gesaan kuat

Lemah: "Betulkan pepijat dalam kod ini." (Kesilapan yang mana? Bahasa mana? Apakah tingkah laku yang diharapkan?)
Kuat: "Python 3.11 / FastAPI 0.110. Titik akhir berikut mengembalikan 500 dengan KeyError apabila isi permintaan datang kosong; Saya mahu ia mengembalikan 400 dan mesej bermakna pada isi kosong. Mula-mula terangkan sebabnya, kemudian berikan fungsi yang diperbetulkan, kemudian tulis ujian untuk senario ini. [kod]"

Versi berkuasa; Ia memberikan bahasa, versi, ralat sebenar, tingkah laku yang dijangka dan format output. Model tidak lagi perlu meramal.

Kesilapan biasa

  • Mempercayai tanpa pengesahan. Kesilapan yang paling biasa dan paling mahal. Jangan sebut "diselesaikan" sehingga kod disusun dan diuji.
  • Bertanya soalan tanpa konteks. Jawapan tanpa versi, teks ralat dan sekatan adalah generik dan selalunya salah.
  • Satu permintaan besar. Tidak dapat meminta dan menyemak pengeluaran 300 baris sekaligus menjadikan kesilapan tidak dapat dilihat.
  • Menganggap keyakinan diri model sebagai bukti. AI dengan yakin boleh mengatakan sesuatu yang salah; Nada bukan penunjuk ketepatan.
  • Menampal rahsia syarikat secara rawak. Kunci peribadi, data pelanggan atau kod sumber peribadi tidak boleh dimasukkan ke dalam alat yang tidak diluluskan (kami akan menyelidiki topik ini dalam unit 10).
Petua: Anggap setiap output AI sebagai "ini adalah draf." Tabiat mental tunggal ini memadamkan kebanyakan risiko yang anda akan lihat sepanjang modul.

Secara ringkasnya

Pembantu pengekodan ialah model bahasa yang meramalkan serpihan yang paling berkemungkinan seterusnya; Ia tidak memahami kod, ia menghasilkan corak. Itulah sebabnya dia kuat dalam pekerjaan yang berulang-ulang, formulaik; Ia harus digunakan dengan berhati-hati untuk kerja yang memerlukan pengesahan yang khusus untuk konteks anda. Risiko terbesar adalah halusinasi, dan satu-satunya penawar adalah pengesahan. Disiplin yang akan kami ikuti sepanjang keseluruhan modul adalah jelas: jelaskan tugas, berikan konteks, minta yang kecil, sahkan setiap penghantaran.

Tugasan permohonan

Tulis tiga tugasan perisian yang anda lakukan pada minggu lepas (cth. pembetulan pepijat, ujian, kemas kini README). Lihat "peta kekuatan dan kelemahan" untuk setiap satu dan huraikan dalam satu ayat apakah peranan anda dan AI jika anda menyuruh AI melakukan ini. Kemudian berikan salah satu tugas ini kepada AI dengan templat "start prompt" di atas dan jalankan serta sahkan output; Perhatikan berapa minit yang anda simpan dan berapa banyak kesilapan yang perlu anda betulkan.

senarai semak

  • [ ] Saya menyedari bahawa LLM menghasilkan corak, bukan "memahami" kod.
  • [ ] Saya boleh menerangkan konsep token, tetingkap konteks dan gesaan dalam satu ayat.
  • [ ] Saya boleh membezakan antara jenis tugasan di mana AI kuat dan lemah.
  • [ ] Saya tahu apa itu halusinasi dan satu-satunya penawar ialah pengesahan.
  • [ ] Saya menyesuaikan kitaran "cadang, hasilkan, sahkan" kepada tugas saya sendiri.
  • [ ] Saya boleh menunjukkan perbezaan antara gesaan kuat dan gesaan lemah dalam contoh konkrit.