- JetBrains Full Line Code Completion (FLCC) adalah fitur autocompletion berbasis AI yang tersedia di PyCharm dan GoLand, dan sangat meningkatkan penulisan log yang efektif serta efisiensi pengembangan
- Fitur ini mengurangi kerepotan menulis berulang sintaks log
f-string atau mengakses variabel/dataframe, dan AI secara otomatis menghasilkan log yang ringkas dan jelas sesuai konteks
- Model tersebut adalah LLM kecil yang berjalan di PC lokal, mewujudkan kecepatan inferensi tinggi dan penggunaan memori rendah (sekitar 1GB) tanpa kekhawatiran kebocoran data pribadi
- Menurut makalah JetBrains, mereka melatih Transformer kecil yang dioptimalkan untuk Python (100M parameter) untuk mendukung autocompletion satu baris dalam konteks kode 384 karakter, dan juga secara aktif mencerminkan karakteristik kode Python dalam proses prapemrosesan data dan tokenisasi
- Keberhasilan FLCC menunjukkan dengan jelas betapa model kecil yang berorientasi tujuan, bukan LLM raksasa, dapat meningkatkan produktivitas di lapangan pengembangan nyata
Penulisan log otomatis dengan AI: perubahan nyata pada produktivitas pengembangan
- JetBrains Full Line Code Completion (FLCC) menyediakan fitur autocompletion seluruh baris log di PyCharm (terpasang secara default sejak akhir 2023), GoLand, dan lainnya
- Dalam pemrosesan data berurutan, pemanggilan API asinkron, operasi vektor, dan sejenisnya, print debugging dan log terperinci adalah hal yang esensial
- Namun, input berulang seperti
f-string, akses variabel/list/dataframe, dan pemilihan logger (loguru vs logging) sering menyebabkan alur debugging terputus
- Misalnya pada
loguru seperti logger.info(f'Adding a log for {your_variable} and {len(my_list)} and {df.head(0)}'), meskipun tampak sederhana, tetap ada beban kognitif bertahap seperti kurung, nama variabel, sintaks dataframe, dan jenis logger
Bagaimana FLCC mengubah alur pengembangan dan kebiasaan menulis log
- Full Line Code Completion menggabungkan semua informasi konteks seperti ekstensi file, path, dan kode di sekitar kursor ke dalam prompt input model untuk melengkapi sintaks log yang paling natural secara otomatis
- Log yang direkomendasikan dioptimalkan untuk konteks variabel, dataframe, dan operasi, sehingga sering kali lebih jelas daripada jika ditulis manusia
- Karena log yang dihasilkan ringkas, setelah debugging selesai pun log tidak perlu dihapus dari kode, dan kualitasnya cukup baik untuk tetap dipakai di lingkungan produksi
-
Contoh
- Saat mengecek URL Redis:
redis = aioredis.from_url(settings.redis_url, decode_responses=True) → AI otomatis menyarankan log koneksi Redis
- Saat profiling DataFrame: setelah mendefinisikan data/kolom, AI otomatis menyarankan sintaks log untuk profiling seperti
shape dari df
Karakteristik teknis dan implementasi model JetBrains FLCC
-
Berjalan sepenuhnya di lingkungan lokal
- Inferensi model dan rekomendasi kode diproses hanya di PC lokal, sehingga aman tanpa kekhawatiran kebocoran data pribadi/kode
- Di Mac, ukuran model sekitar 1GB, sehingga beban memori rendah dan kecepatannya sangat tinggi
- Tidak memerlukan infrastruktur LLM besar berbasis cloud seperti
vLLM, SGLM, Ray, PagedAttention
-
Arsitektur LLM kecil yang dioptimalkan untuk Python
- Implementasi awal menggunakan Decoder-only Transformer bergaya GPT-2 berbasis PyTorch (100M parameter), lalu ditingkatkan ke arsitektur
llama2
- Dari subset The Stack berukuran 6TB (30 bahasa), hanya 45GB yang digunakan, dengan komentar kode dan
import yang tidak perlu dihapus agar fokus pada generasi kode nyata
- Sesuai karakteristik bahasa Python, tokenizer berbasis BPE mengubah struktur seperti indentasi dan scope menjadi token
<SCOPE_IN>/<SCOPE_OUT> untuk mencegah pemborosan token yang tidak perlu akibat perbedaan spasi
- Ukuran vocab tokenizer dioptimalkan menjadi 16.384
- Karena kebiasaan Python sering menambahkan
import di akhir kode, hal ini juga tercermin dalam pelatihan model, sehingga import dihapus sepenuhnya dari data
-
Pelatihan dan optimisasi
- Dilatih selama beberapa hari menggunakan 8 GPU NVIDIA A100, dan dievaluasi dengan cross-entropy loss
- Dengan quantization, model FP32 dikonversi ke INT8 (400MB→100MB) agar dapat dimuat di memori PC tanpa beban
- Inferensi CPU menggunakan ONNX RT, lalu server diubah ke arsitektur
llama.cpp
- Beam Search (
k=20) digunakan untuk menghasilkan beragam urutan token, dengan karakter newline sebagai kriteria akhir hasil
- Dari context window 384 karakter, 50% diprefetch lebih dulu untuk caching, sehingga saat kursor kembali ke kode sebelumnya, respons dapat diberikan seketika tanpa inferensi ulang
-
Struktur plugin dan integrasi
- Plugin PyCharm ditulis dalam Kotlin dan menyediakan token inferensi melalui server C++ native lokal
- API yang bersih, respons cepat, dan strategi caching dioptimalkan untuk workflow pengembangan di lapangan
Perubahan produktivitas pengembangan yang benar-benar dibawa FLCC
-
Peningkatan kualitas log dan efisiensi secara bersamaan
- Berkat log autocompletion AI, kualitas print debugging/log operasional dan efisiensi penulisannya meningkat secara bersamaan
- Log yang pendek dan jelas disarankan otomatis, sehingga alur debugging tidak terputus
-
Nilai praktis LLM kecil yang terspesialisasi
- Bukan LLM besar, melainkan model AI kecil yang dioptimalkan untuk tujuan spesifik (penyelesaian kode satu baris) yang memberikan inovasi produktivitas besar di lingkungan pengembangan nyata
- Ini merupakan contoh representatif bahwa model kecil berorientasi tujuan di bidang lain juga dapat memperbaiki workflow nyata secara substansial
5 komentar
Semoga hal seperti ini juga ada di C++!
Menghabiskan $20 ~ $200 per bulan cuma untuk itu rasanya agak...
Sepertinya orang ini sedang membicarakan biaya langganan IDE. FLCC memang tidak disediakan di versi gratis.
Tapi juga bukan berarti orang membayar hanya demi itu saja.
Ah, jadi di versi gratis fitur ini tidak bisa digunakan. Saya salah paham 😅
Karena berjalan secara lokal, sepertinya tidak perlu biaya.