Peluncuran smartfunc, sebuah pustaka Python yang mengubah docstring menjadi fungsi yang didukung LLM, telah memicu diskusi hidup di antara pengembang tentang pendekatan optimal untuk mengintegrasikan model bahasa besar ke dalam alur kerja pemrograman. Debat ini menyoroti pertanyaan mendasar: haruskah LLM diperlakukan sebagai kompilator untuk spesifikasi tingkat tinggi atau sebagai asisten kolaboratif dalam proses pengembangan?
Paradigma Kompilator vs. Asisten
Diskusi komunitas mengungkapkan preferensi kuat di antara banyak pengembang untuk memperlakukan LLM sebagai kompilator daripada sebagai pengembang junior. Pendekatan ini memposisikan LLM sebagai alat yang mengubah spesifikasi tingkat tinggi (seperti docstring) menjadi kode fungsional, bukan sebagai kolaborator yang menghasilkan kode melalui percakapan. Seorang komentator mengartikulasikan sentimen ini dengan jelas, menyarankan bahwa memperlakukan LLM seperti kompilator merepresentasikan model mental yang lebih skalabel, dapat diperluas dan dapat disusun daripada memandangnya sebagai asisten pengembangan.
Namun, seperti yang ditunjukkan oleh Simon Willison (pencipta pustaka dasar llm yang mendukung smartfunc), smartfunc sebenarnya tidak berfungsi sebagai kompilator. Sebaliknya, ia mengubah fungsi menjadi fungsi yang memanggil LLM setiap kali dijalankan, meneruskan docstring sebagai prompt. Klarifikasi ini memicu diskusi lebih lanjut tentang seperti apa implementasi yang benar-benar mirip kompilator—mungkin menghasilkan dan menyimpan kode Python pada panggilan pertama daripada membuat panggilan API berulang kali.
Fleksibilitas Runtime dan Pendekatan Alternatif
Keterbatasan signifikan yang disorot oleh beberapa pengembang adalah kesulitan dalam menggunakan fungsi yang sama dengan LLM yang berbeda pada saat runtime. Pola dekorator yang digunakan oleh smartfunc mengunci pilihan model pada waktu impor, yang dianggap membatasi untuk lingkungan produksi. Pustaka alternatif seperti think disebutkan sebagai penawaran yang lebih fleksibel dengan secara eksplisit meneruskan objek LLM.
Diskusi juga menyentuh implementasi serupa di berbagai bahasa, dengan pengembang menyebutkan alat yang sebanding untuk JavaScript dan minat pada versi Java. Minat lintas bahasa ini menunjukkan permintaan yang berkembang untuk pola standar untuk mengintegrasikan LLM ke berbagai lingkungan pengembangan.
Pustaka Serupa yang Disebutkan dalam Diskusi
- smartfunc: Pustaka Python yang mengubah docstring menjadi fungsi LLM
- Tanuki: Fungsionalitas serupa dengan smartfunc
- promptic: Membungkus litellm dengan dukungan untuk banyak penyedia model
- think: Pendekatan alternatif yang meneruskan objek LLM untuk fleksibilitas runtime
- llm-docsmith: Plugin untuk menghasilkan docstring untuk kode yang sudah ada
- neuro-lingo: Disebutkan memiliki hasil fungsi yang "dipaku"
- instructor: Alternatif dengan lebih banyak fitur dengan dukungan validasi
- marvin: Pustaka fungsi LLM alternatif
Masa Depan Pemrograman Bahasa Alami
Beberapa komentator menarik paralel antara upaya integrasi LLM saat ini dan upaya historis untuk membuat pemrograman lebih mudah diakses melalui bahasa alami, seperti COBOL pada tahun 1960-an. Sementara COBOL mewakili upaya awal sintaks mirip bahasa Inggris, LLM modern berpotensi membawa kita lebih dekat ke visi Jensen Huang tentang bahasa alami yang menjadi bahasa pemrograman.
Diskusi juga menyoroti kontras menarik dalam alur kerja. Sementara smartfunc menggunakan docstring untuk menghasilkan fungsionalitas, beberapa pengembang melaporkan menggunakan LLM dalam arah sebaliknya—meminta LLM menghasilkan dokumentasi komprehensif untuk kode yang tidak memiliki komentar yang baik. Hubungan dua arah antara kode dan bahasa alami ini menunjukkan praktik pengembangan yang berkembang di mana batas antara spesifikasi, implementasi, dan dokumentasi menjadi semakin cair.
Caching dan Eksekusi Lokal
Melihat ke arah perbaikan di masa depan, pengembang menyatakan minat pada pendekatan yang akan menyaring fungsionalitas LLM menjadi model yang lebih kecil dan khusus untuk fungsi tertentu daripada membuat panggilan API berulang ke model dasar. Ini berpotensi mengurangi latensi dan biaya sambil meningkatkan keandalan.
Konsep menyimpan output yang diketahui baik juga dibahas sebagai cara untuk mengurangi sifat non-deterministik dari LLM. Beberapa menyarankan implementasi yang akan menghasilkan kode selama langkah-langkah build, memverifikasinya terhadap tes atau persyaratan kompilasi, dan kemudian menyimpan hasil yang berhasil—secara efektif membatasi apa yang dapat diubah LLM sambil mempertahankan kontrol pengembang.
Seiring pola integrasi LLM terus berkembang, komunitas tampaknya mengarah pada pendekatan yang mempertahankan agensi programmer sambil memanfaatkan kekuatan AI untuk menangani tugas pengkodean yang berulang atau bertele-tele. Baik melalui fungsi yang didukung docstring seperti smartfunc atau sistem generasi dan penyimpanan kode yang lebih canggih, alat-alat ini mewakili langkah awal menuju paradigma pemrograman baru di mana bahasa alami dan kode ada dalam hubungan yang lebih simbiosis.
Referensi: smartfunc