Mencoba LLM Lokal

Mencoba LLM Lokal
Photo by Mohamed Nohassi / Unsplash

Saya pernah menulis mengenai bagaimana LLM cukup membantu dalam menulis kode. Namun, LLM yang saya maksud di sana adalah LLM yang tersedia di berbagai layanan seperti ChatGPT, Claude, dan OpenRouter. Biasanya, yang saya lakukan adalah:

  1. Masuk ke website terkait.
  2. Memasukkan prompt.
  3. Membaca dan menyalin jika sudah sesuai.
  4. Memodifikasi.

Tidak terlalu efisien memang.

LLM Lokal

Selain menggunakan cara tradisional seperti yang saya tulis di atas, umumnya orang-orang menggunakan layanan yang langsung tersambung dengan lingkungan editor yang digunakan. Terlebih, banyak editor sekarang sudah menyediakan fitur tersambung dengan berbagai layanan LLM. Di VSCode, dengan tambahan plugin, kita bisa menggunakan Copilot. JetBrains pun sudah memiliki AI Assistant, dan Zed—yang sedang naik daun—bahkan menjadikan fitur AI Assistant sebagai nilai jual utamanya sejak awal.

Karena saya menggunakan VSCodium (versi komunitas dari VSCode) dan tidak berlangganan Copilot, sejauh ini penggunaan LLM sebagai asisten dalam menulis kode masih dilakukan secara manual. Maklum, saya masih dalam kelompok "mendang-mending."

Setelah melihat diskusi di grup Pegelinux, banyak yang sedang mencoba LLM lokal dengan bantuan Ollama. Saya pun penasaran, mengapa tidak mencoba menggunakan LLM lokal sebagai pengganti Copilot dan sejenisnya?

Mencari LLM Lokal

Kita tahu tidak semua laptop level konsumen bisa menjalankan LLM secara optimal. Oleh karena itu, memilih LLM lokal yang tepat menjadi hal yang cukup krusial. Kebetulan, laptop yang saya gunakan adalah MacBook Air M1 dengan RAM 8GB, sehingga pilihan LLM lokal harus disesuaikan dengan keterbatasan perangkat.

deepseek-r1:1.5b

Pilihan pertama jatuh kepada deepseek-r1:1.5b. Alasannya sederhana, ini salah satu LLM yang sedang naik daun dan katanya cukup mumpuni. Setelah mencoba dan melakukan "pengetesan" sederhana dengan prompt "How many r's are in strawberry?" jawabannya cukup lucu, dan alasannya lebih lucu lagi.

Jawaban pertama dari model ini adalah "1 R." Ketika saya minta konfirmasi bagaimana cara model ini mendapatkan jawaban tersebut, ternyata prosesnya seperti berikut:

  1. Memecah kata seperti mengeja dengan pemisah berupa "-"
  2. Menghitung jumlah huruf "R" dari hasil ejaan tersebut.

Yang membuatnya lucu adalah cara model ini mengeja "Strawberry" menjadi "S-T-R-A-W-B-E-R-R." Selain salah pengejaan, jumlah huruf "R" dalam ejaan ini pun salah (harusnya ada tiga, bukan satu). Model ini baru menjawab dengan benar setelah dikoreksi lebih dari tiga kali.

deepseek-r1:7b

Karena versi 1.5b tidak memuaskan, saya meningkatkan ke versi deepseek-r1:7b. Dengan pertanyaan yang sama, model ini masih salah menjawab pada percobaan pertama. Jawabannya tetap "1 R," tetapi ketika diminta untuk menjelaskan, ia langsung mengoreksi jawabannya menjadi "3 R."

Setelah itu, saya mencoba pertanyaan terkait bahasa pemrograman Go dengan prompt "Build a Go REST API with Chi and return 'Hello, World!'"

Di sini ada tiga hal yang cukup menyebalkan:

  1. Model ini berhalusinasi dan menganggap Chi adalah alat untuk testing, bukan HTTP framework. Ia tetap ngotot membuat API dengan net/http.
  2. Proses menjawab memakan waktu lama—kurang lebih tiga menit sampai jawaban muncul.
  3. Laptop mengalami sedikit lag, RAM hampir 100% penuh, dan semua ini masih dijalankan di terminal, bukan di editor.

qwen2.5-coder:3b

Karena deepseek tidak terlalu berkesan akhirnya saya menggunakan rekomendasi dari continue (sebuah plugin vscode untuk menyambukan ke layanan LLM maupun lokal LLM) berdasarkan pengalaman sebelumnya, model 1.5b tidak terlalu oke dan 7b terlalu memakan banyak RAM. Maka, saya mencoba qwen2.5-coder:3b yang berada di tengah-tengah dengan versi 3b.

Untuk pengujian dengan huruf "R," model ini langsung menjawab dengan benar dalam satu kali percobaan. Saat diminta untuk membuat kode Go, awalnya model masih menggunakan net/http, tetapi setelah dikoreksi sekali, ia langsung mengikuti instruksi. Oleh karena itu, saya akhirnya memutuskan menggunakan model ini sebagai teman ngoding di lokal.

Menyambungkan dengan Editor

Saya menggunakan VSCodium, yang merupakan versi komunitas dari VSCode. Untuk menyambungkan dengan LLM lokal, saya menggunakan plugin Continue: https://docs.continue.dev/getting-started/overview.

Pengujian

Saya melakukan pengujian sebagai berikut:

  1. Memberikan source code sebagai konteks.
  2. Memerintahkan model untuk autocomplete dengan mengikuti pola di fungsi lain yang seragam.

Hasilnya?

  1. Kode yang dihasilkan tidak berjalan karena masih ada beberapa halusinasi.
  2. Model mengikuti pola dari fungsi yang diberikan sebagai konteks awal.

Kesimpulan

Untuk spesifikasi laptop yang tidak terlalu besar, qwen2.5-coder:3b sudah lumayan membantu. Memang, model ini masih beberapa kali mengarang bebas, tetapi menurut saya masih dalam batas normal. Bagaimanapun, saya tidak berekspektasi model ini menulis seluruh kode untuk saya.