Topik trending
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Terjemahan: Mengapa model bahasa besar tidak dapat benar-benar membangun perangkat lunak
Oleh Conrad Irwin
Satu hal yang saya habiskan banyak waktu untuk dilakukan adalah mewawancarai insinyur perangkat lunak. Ini jelas merupakan tugas yang sulit, dan saya tidak berani mengatakan bahwa saya memiliki trik apa pun; Tapi itu memberi saya waktu untuk merenungkan apa yang dilakukan insinyur perangkat lunak yang efektif.
Siklus inti rekayasa perangkat lunak
Ketika Anda melihat penikmat sejati, Anda akan melihat bahwa mereka selalu melakukan langkah-langkah berikut dalam satu siklus:
* Bangun model mental kebutuhan.
* Tulis (semoga?!) ) yang mengimplementasikan persyaratan.
* Bangun model mental tentang bagaimana kode Anda benar-benar berperilaku.
* Temukan perbedaan antara keduanya, lalu perbarui kode (atau persyaratan).
Ada banyak cara untuk mencapai langkah-langkah ini, tetapi hal yang hebat tentang insinyur yang efektif adalah kemampuan mereka untuk membangun dan memelihara model mental yang jelas.
Bagaimana kinerja model bahasa besar?
Agar adil, model bahasa besar cukup pandai menulis kode. Mereka juga melakukan pekerjaan yang baik dalam memperbarui kode saat Anda menunjukkan masalahnya. Mereka juga dapat melakukan semua hal yang akan dilakukan oleh insinyur sungguhan: membaca kode, menulis dan menjalankan pengujian, menambahkan log, dan (mungkin) menggunakan debugger.
Tetapi apa yang tidak dapat mereka lakukan adalah mempertahankan model mental yang jelas.
Model bahasa besar akan jatuh ke dalam kebingungan tanpa akhir: mereka akan berasumsi bahwa kode yang mereka tulis benar-benar dapat digunakan; Ketika pengujian gagal, mereka hanya dapat menebak apakah itu kode perbaikan atau pengujian tetap; Ketika mereka frustrasi, mereka hanya memotong semuanya dan memulai dari awal.
Ini adalah kebalikan dari apa yang saya harapkan dari seorang insinyur.
Insinyur perangkat lunak menguji saat mereka bekerja. Ketika tes gagal, mereka dapat menggunakan model mental mereka untuk memutuskan apakah akan memperbaiki kode atau pengujian, atau mengumpulkan lebih banyak informasi sebelum membuat keputusan. Ketika mereka merasa frustrasi, mereka dapat meminta bantuan dengan berkomunikasi dengan orang-orang. Meskipun mereka terkadang menghapus semuanya dan memulai dari awal, itu adalah pilihan yang dibuat setelah pemahaman yang lebih jelas tentang masalah tersebut.
Tapi itu akan segera, bukan?
Akankah ini berubah seiring dengan model menjadi lebih mampu? Mungkin?? Tapi saya pikir ini membutuhkan perubahan mendasar dalam cara model dibangun dan dioptimalkan. Rekayasa perangkat lunak membutuhkan model yang lebih dari sekadar menghasilkan kode.
Ketika seseorang menghadapi masalah, mereka dapat mengesampingkan seluruh konteks untuk sementara dan fokus pada pemecahan masalah yang ada, dan kemudian kembali ke masalah besar yang ada. Mereka juga dapat beralih antara gambaran besar dan detail mikro, untuk sementara mengabaikan detail untuk fokus pada keseluruhan, dan menggali bagian-bagian bila perlu. Kita tidak menjadi lebih produktif hanya dengan menjejalkan lebih banyak kata ke dalam "jendela konteks" kita, itu hanya akan membuat kita gila.
Meskipun kita dapat menangani sejumlah besar konteks, kita tahu bahwa model generatif ini saat ini memiliki beberapa masalah serius yang secara langsung memengaruhi kemampuan mereka untuk mempertahankan model mental yang jelas:
* Penghilangan kontekstual: Model tidak pandai menemukan informasi kontekstual yang diabaikan.
* Bias kekinian: Mereka tunduk pada bias kekinian yang parah saat bekerja dengan jendela konteks.
* Halusinasi: Mereka sering "berfantasi" tentang detail yang seharusnya tidak ada.
Masalah-masalah ini mungkin tidak dapat diatasi, dan para peneliti bekerja untuk menambahkan memori ke model sehingga mereka dapat melatih keterampilan berpikir yang sama seperti yang kita lakukan. Tapi sayangnya, untuk saat ini, mereka (setelah melampaui tingkat kompleksitas tertentu) tidak dapat benar-benar memahami apa yang sebenarnya terjadi.
Mereka tidak dapat membangun perangkat lunak karena mereka tidak dapat mempertahankan dua "model mental" yang serupa pada saat yang sama, mencari tahu perbedaannya, dan memutuskan apakah akan memperbarui kode atau memperbarui persyaratan.
Jadi, bagaimana sekarang?
Jelas, model bahasa besar berguna untuk insinyur perangkat lunak. Mereka menghasilkan kode dengan cepat dan unggul dalam mengintegrasikan persyaratan dan dokumentasi. Untuk beberapa tugas, ini sudah cukup: persyaratannya cukup jelas, masalahnya cukup sederhana sehingga dapat dilakukan dalam semalam.
Karena itu, untuk tugas apa pun yang kompleks, mereka tidak dapat mempertahankan konteks yang cukup tepat untuk mengulangi untuk akhirnya menghasilkan solusi yang layak. Sebagai insinyur perangkat lunak, Anda masih bertanggung jawab untuk memastikan bahwa persyaratannya jelas dan bahwa kode benar-benar memberikan apa yang diklaimnya.
Di Zed, kami percaya pada masa depan di mana manusia dan agen AI dapat membangun perangkat lunak bersama. Namun, kami sangat percaya (setidaknya untuk saat ini) bahwa Anda adalah pengemudi di belakang kemudi, dan bahwa model bahasa besar hanyalah satu alat lagi di ujung jari Anda.
48,63K
Teratas
Peringkat
Favorit