“Kode yang Dapat Menyembuhkan Diri adalah Masa Depan Pengembangan Perangkat Lunak”

Written By blog_cnt

December 30, 2023

[Ed. catatan: Sementara kami mengambil waktu untuk istirahat selama liburan dan bersiap untuk tahun depan, kami mengulang publikasi sepuluh posting teratas kami untuk tahun ini. Nikmati pekerjaan favorit kami tahun ini dan kami akan bertemu lagi pada tahun 2024.]

Salah satu aspek yang lebih menarik dari model bahasa besar adalah kemampuannya untuk meningkatkan outputnya melalui refleksi diri. Masukkan respons model ke dalam dirinya sendiri, lalu minta untuk meningkatkan respons atau mengidentifikasi kesalahan, dan model ini memiliki peluang lebih besar untuk menghasilkan sesuatu yang akurat secara faktual atau memuaskan penggunanya. Mintalah untuk memecahkan masalah dengan menunjukkan langkah-langkahnya, dan sistem ini lebih akurat daripada yang hanya dituning untuk menemukan jawaban akhir yang benar.

Meskipun bidang ini masih berkembang pesat dan kesalahan faktual, yang disebut sebagai halusinasi, tetap menjadi masalah bagi banyak chatbot yang didukung oleh LLM (Large Language Models), sejumlah penelitian menunjukkan bahwa pendekatan otoregresif yang lebih terpandu dapat menghasilkan hasil yang lebih baik.

Hal ini menjadi sangat menarik ketika diterapkan pada dunia pengembangan perangkat lunak dan CI/CD. Sebagian besar pengembang sudah familiar dengan proses yang membantu otomatisasi pembuatan kode, deteksi bug, pengujian solusi, dan dokumentasi ide. Beberapa sudah menulis sebelumnya tentang ide kode yang dapat menyembuhkan diri. Pergilah ke Stack Overflow’s CI/CD Collective dan Anda akan menemukan banyak contoh teknolog yang menerapkan ide ini ke dalam praktik.

Ketika kode gagal, itu sering memberikan pesan kesalahan. Jika perangkat lunak Anda bagus, pesan kesalahan itu akan mengatakan dengan tepat apa yang salah dan menunjukkan Anda ke arah perbaikan. Program-program kode penyembuh diri sebelumnya adalah otomasi cerdas yang mengurangi kesalahan, memungkinkan pengembalian yang halus, dan mengelola peringatan. Mungkin Anda ingin menambahkan sedikit ruang disk atau menghapus beberapa file ketika Anda mendapatkan peringatan bahwa penggunaan sudah mencapai 90%. Atau hei, sudahkah Anda mencoba mematikannya dan kemudian menyalakannya lagi?

Pengembang suka mengotomatiskan solusi untuk masalah mereka, dan dengan munculnya kecerdasan buatan generatif, konsep ini kemungkinan besar akan diterapkan baik pada pembuatan, pemeliharaan, maupun perbaikan kode pada tingkat yang sama sekali baru.

Lebih Banyak Kode Membutuhkan Kontrol Kualitas yang Lebih Tinggi

Kemampuan LLM untuk dengan cepat menghasilkan potongan kode besar mungkin berarti bahwa pengembang—bahkan non-pengembang—akan menambahkan lebih banyak lagi ke kode perusahaan daripada sebelumnya. Ini menimbulkan serangkaian tantangan tersendiri.

“Salah satu hal yang sering saya dengar dari insinyur perangkat lunak adalah mereka berkata, ‘Nah, maksud saya, siapa pun bisa menghasilkan beberapa kode sekarang dengan beberapa alat ini, tetapi kami khawatir tentang kualitas apa yang dihasilkan,'” kata Forrest Brazeal, kepala media pengembang di Google Cloud. Kecepatan dan volume di mana sistem ini dapat menghasilkan kode dapat terasa sangat mengejutkan. “Saya berarti, bayangkan meninjau permintaan tarik kode sepanjang 7.000 baris yang ditulis oleh seseorang di tim Anda. Sangat, sangat sulit melakukannya dan memberikan umpan balik yang bermakna. Ini tidak semakin mudah ketika AI menghasilkan sejumlah besar kode ini. Jadi kita cepat masuk ke dunia di mana kita harus menciptakan praktik pengembangan perangkat lunak terbaik untuk memastikan bahwa kita menggunakan GenAI secara efektif.”

“Orang telah berbicara tentang utang teknis untuk waktu yang lama, dan sekarang kita memiliki kartu kredit baru yang benar-benar akan memungkinkan kita mengumpulkan utang teknis dengan cara yang sebelumnya tidak mungkin kita lakukan,” kata Armando Solar-Lezama, seorang profesor di MIT’s Computer Science & Artificial Intelligence Laboratory, dalam wawancara dengan Wall Street Journal. “Saya pikir ada risiko mengumpulkan banyak kode yang sangat buruk yang ditulis oleh mesin,” katanya, menambahkan bahwa perusahaan harus memikirkan ulang metodologi tentang bagaimana mereka dapat bekerja bersama dengan kemampuan alat baru ini untuk menghindari hal itu.

Baru-baru ini kami berbicara dengan beberapa orang dari Google yang membantu membangun dan menguji model AI generatif terbaru yang menggerakkan saran kode di alat seperti Bard. Paige Bailey adalah PM yang bertanggung jawab atas model generatif di Google, bekerja di unit yang baru digabungkan yang membawa bersama DeepMind dan Google Brain. “Bayangkan kode yang dihasilkan oleh AI sebagai sesuatu yang dibuat oleh ‘L3 SWE helper yang ada di bawah perintah Anda,'” kata Bailey, “dan seharusnya Anda benar-benar meninjau dengan cermat.”

Namun, Bailey percaya bahwa seiring waktu, sebagian pekerjaan memeriksa kode untuk akurasi, keamanan, dan kecepatan pada akhirnya akan jatuh pada AI juga. “Seiring waktu, saya memiliki harapan bahwa model bahasa besar akan mulai secara rekursif menerapkan diri pada keluaran kode. Jadi sudah ada penelitian dari Google Brain yang menunjukkan bahwa Anda dapat secara rekursif menerapkan LLM sedemikian rupa sehingga jika ada kode yang dihasilkan, Anda katakan, ‘Pastikan tidak ada bug. Pastikan itu berkinerja baik, pastikan itu cepat, dan berikan saya kode itu,’ dan kemudian itu yang akhirnya ditampilkan kepada pengguna. Jadi, semoga ini akan membaik seiring waktu.”

Apa yang Sedang Dibangun dan Diuji Orang Hari Ini?

Google sudah menggunakan teknologi ini untuk membantu mempercepat proses penyelesaian komentar tinjauan kode. Para penulis makalah terbaru tentang pendekatan ini menulis bahwa, “Saat ini, para penulis perubahan kode di Google menanggapi sejumlah besar komentar pengulas dengan menerapkan suntingan yang disarankan oleh ML. Kami mengharapkan hal ini dapat mengurangi waktu yang dihabiskan untuk meninjau kode oleh ratusan ribu jam setiap tahunnya pada skala Google. Tanggapan yang sangat positif secara tidak resmi menunjukkan bahwa dampak suntingan kode yang disarankan oleh ML meningkatkan produktivitas Googlers dan memungkinkan mereka fokus pada tugas-tugas yang lebih kreatif dan kompleks.”

“Dalam banyak kasus ketika Anda melewati proses peninjauan kode, pengulas Anda mungkin mengatakan, ‘tolong perbaiki ini,’ atau ‘tolong refactor ini agar mudah dibaca,'” kata Marcos Grappeggia, PM di asisten pengodean Duet Google. Dia memandang agen AI yang dapat merespons ini sebagai jenis linter canggih untuk menguji komentar. “Itu sesuatu yang kami lihat sebagai sangat menjanjikan dalam hal mengurangi waktu untuk perbaikan ini diselesaikan.” Perbaikan yang disarankan tidak menggantikan manusia, “tapi membantu, memberikan titik awal bagi Anda untuk berpikir.”

Baru-baru ini, kita melihat beberapa eksperimen yang menarik yang menerapkan kemampuan peninjauan ini ke kode yang sedang Anda coba terapkan. Katakanlah dorongan kode memicu peringatan pada kegagalan pembangunan dalam pipa CI Anda. Sebuah plugin memicu tindakan GitHub yang secara otomatis mengirimkan kode ke suatu tempat uji coba di mana AI dapat meninjau kode dan kesalahan, lalu melakukan perbaikan. Kode baru itu dijalankan melalui pipa lagi, dan jika lulus uji, dipindahkan untuk diimplementasikan.

“Kami membuat beberapa perbaikan dalam mekanisme lingkaran putar agar Anda tidak berakhir dalam situasi aneh, tetapi itu adalah mekanika pokoknya,” kata Calvin Hoenes, yang membuat plugin itu. Untuk membuat agen lebih akurat, ia menambahkan dokumentasi tentang kode ke dalam database vektor yang dia bangun dengan Pinecone. Ini memungkinkannya belajar hal-hal yang mungkin tidak dapat diakses oleh model dasar dan untuk diperbarui secara teratur sesuai kebutuhan.

Saat ini pekerjaannya terjadi di pipa CI/CD, tetapi ia bermimpi tentang dunia di mana agen semacam itu dapat membantu memperbaiki kesalahan yang muncul dari kode yang sudah ada di dunia. “Apa yang sangat menarik adalah ketika Anda benar-benar memiliki kode yang berjalan dan menghasilkan kesalahan, bisakah itu menyembuhkan dirinya sendiri secara langsung?” tanya Hoenes. “Jadi Anda memiliki kluster Kubernetes Anda. Jika satu bagian mendeteksi kegagalan, itu bergerak ke mode perbaikan.”

Satu pod dihapus untuk diperbaiki, yang lain menggantikannya, dan ketika pod asli sudah siap, itu kembali beraksi. Saat ini, kata Hoenes, kita membutuhkan manusia di dalamnya. Akan datang waktunya ketika program komputer diharapkan dapat menyembuhkan diri secara otonom saat dibuat dan tumbuh? “Maksud saya, jika Anda memiliki cakupan pengujian yang bagus, bukan, jika Anda memiliki cakupan pengujian seratus persen, Anda memiliki basis kode yang sangat bersih, saya bisa melihat itu terjadi. Untuk masa depan yang dapat dilihat, kita mungkin lebih baik dengan manusia di dalamnya.”

Bayar ke Depan: Linter, Pemelihara, dan Pertempuran Tanpa Akhir dengan Utang Teknis

Menemukan hal-hal selama CI/CD atau mengatasi bug saat muncul bagus, tetapi mari ambil satu langkah lebih jauh. Anda bekerja di perusahaan dengan basis kode besar dan terus berkembang. Wajar untuk mengasumsikan Anda memiliki sejumlah utang teknis. Bagaimana jika Anda memiliki agen AI yang meninjau kode lama dan menyarankan perubahan yang menurutnya akan membuat kode Anda berjalan lebih efisien. Ini mungkin memberi tahu Anda tentang pembaruan terbaru dalam pustaka yang akan menguntungkan arsitektur Anda. Atau mungkin telah membaca beberapa trik baru untuk meningkatkan fungsi tertentu dalam rilis blog atau dokumentasi terkini. Saran AI tiba setiap pagi sebagai permintaan tarik untuk direview oleh manusia.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *