7 poin oleh GN⁺ 2024-01-01 | 1 komentar | Bagikan ke WhatsApp
  • Emacs Copilot menghasilkan Code Completion di dalam buffer Emacs menggunakan LLM (Large Language Model) yang berjalan secara lokal
  • LLM dijalankan sebagai subcommand yang mengingat riwayat penyuntingan lokal per file, dan LLM dapat dihentikan kapan saja dengan C-g
  • Saat kode dihapus, riwayat terkait juga dapat dihapus dari konteks LLM, dan bahasa pemrograman ditentukan oleh ekstensi file tanpa bergantung pada bahasanya

Model WizardCoder 34b

  • WizardCoder 34b adalah LLM unggulan yang memperoleh skor HumanEval setara dengan GPT-4.
  • Untuk menggunakan model ini, dibutuhkan komputer yang kuat seperti Mac Studio M2 Ultra; pengguna Macbook Pro dapat mempertimbangkan versi Q3, dan pengguna PC biasa dapat mempertimbangkan model WizardCoder-Python-13b.
  • Pengguna dengan daya komputasi yang lebih rendah seperti Raspberry Pi dapat menggunakan model Phi-2.

Cara memulai

  • Setelah menulis baris pertama sebuah fungsi, tekan C-c C-k untuk menyerahkan kontrol kepada LLM, lalu LLM akan menghasilkan implementasi sisa fungsi tersebut.
  • LLM diatur agar berhenti saat fungsi selesai, serta menghindari penjelasan atau komentar ELI5 (penjelasan sederhana).

Implementasi referensi

  • Setelah mengunduh LLM, salin kode di bawah ini ke buffer Emacs dan jalankan M-x eval-buffer.
  • Kode dapat disesuaikan dengan preferensi pribadi.

Tautan unduhan Emacs

  • Jika Emacs belum terpasang atau Anda menggunakan platform yang sulit mendapatkannya seperti Windows, tersedia tautan Emacs build satu berkas yang dapat dijalankan tanpa perlu instalasi.

Tautan unduhan LLM

  • Tersedia tautan untuk mengunduh gratis beberapa LLM yang diketahui bekerja baik dengan Emacs Copilot.
  • Ukuran model dapat dipilih agar sesuai dengan perangkat keras yang dimiliki.

Berkas cache

  • Jika Anda memutuskan untuk mengganti model, semua berkas FILE.cache yang dibuat di sistem berkas lokal harus dihapus.

Hal yang perlu diperhatikan

  • Jika menggunakan Apple Silicon di macOS, Xcode harus terpasang.
  • Saat menggunakan zsh, mungkin perlu menjalankannya dengan sh -c ./llamafile.
  • Pada beberapa sistem Linux, dapat terjadi kesalahan terkait pendaftaran binfmt_misc.

OS dan CPU yang didukung

  • llamafile mendukung berbagai sistem operasi dengan persyaratan instalasi minimal.
  • llamafile mendukung CPU tertentu, dan membutuhkan mikroprosesor AMD64 dengan set instruksi SSSE3 atau lebih tinggi, atau mikroprosesor ARM64 dengan ARMv8a+.

Catatan tentang model

  • Contoh llamafile yang diberikan di atas tidak boleh ditafsirkan sebagai dukungan atau rekomendasi dari Mozilla terhadap model, lisensi, atau set data tertentu.

Opini GN⁺

  • Pengalaman penyuntingan yang inovatif: Emacs Copilot memberi pengembang tingkat baru bantuan coding, dengan potensi besar untuk meningkatkan efisiensi dan produktivitas.
  • Aksesibilitas dan kustomisasi: Pengguna dapat memilih LLM dan menyesuaikan lingkungan Emacs sesuai kebutuhan serta preferensi mereka, sehingga memungkinkan pembangunan lingkungan pengembangan yang dipersonalisasi.
  • Kompatibilitas teknis: Dengan dukungan untuk berbagai sistem operasi dan CPU, Emacs Copilot dapat digunakan oleh lebih banyak pengguna, yang pada gilirannya meningkatkan inklusivitas dan aksesibilitas dalam komunitas pengembang.

1 komentar

 
GN⁺ 2024-01-01
Komentar Hacker News
  • Keraguan tentang kegunaan integrasi LLM/IDE

    Tidak yakin bahwa integrasi LLM/IDE benar-benar memberikan peningkatan produktivitas yang besar dalam pekerjaan coding sehari-hari. Produktivitas rata-rata programmer mungkin sekitar 100 LOC per hari, tetapi saat membuat prototipe, menulis lebih dari 1000 LOC per hari bisa dilakukan dengan mudah. Perbedaan produktivitas antara kode produksi berkualitas dan hacking/prototyping berasal dari aspek kualitas, dan kebanyakan programmer yang kompeten dapat menghasilkan kode yang lebih baik jika menulisnya sendiri dibandingkan memakai hasil LLM atau menyalin dari sumber lain. Waktu yang dibutuhkan untuk menganalisis kode dan memastikan tidak ada kerentanan serta desainnya tepat untuk pemeliharaan di masa depan tampaknya akan mengimbangi penghematan waktu karena tidak menulis kode secara langsung. LLM bisa berguna untuk belajar atau menulis kode sekali pakai yang kualitasnya tidak terlalu penting, tetapi untuk kode produksi, saya rasa masih panjang jalannya sampai output LLM mencapai tingkat developer dan tidak perlu ditinjau/diperbaiki dengan teliti.

  • Apresiasi terhadap pengembangan alat LLM yang self-hosted

    Menyampaikan terima kasih kepada Justine karena telah mengembangkan alat LLM yang self-hosted. Llamafiles seharusnya menjadi standar. Bertanya apakah ada cara untuk terhubung ke LLM jarak jauh yang di-host di LAN yang sama; meskipun tidak menggunakan perangkat Apple, ia punya mesin kuat di jaringan dan ingin memakainya. Mungkin Llamafile bisa menyediakan API; ini akan masuk ke wilayah LSP, dan memanfaatkan Llamafiles akan menjadi hal yang baik.

  • Berbagi pengalaman integrasi LLM dengan Emacs

    Sebagian besar pekerjaan coding dan dokumentasi teknis saya dilakukan di Emacs. Saya menjalankan phind-v2-codellama, openhermes, ollama, gptel, dan Copilot dari GitHub. Saya suka fitur yang memungkinkan mengirim area arbitrer ke LLM lalu memberi permintaan. UX-nya masih tahap awal, tetapi bayangkan jika model dasar bisa menerima semua konteks (misalnya file orgmode dan buffer file yang terbuka) serta menggunakan alat seperti LSP.

  • Pengalaman menjalankan LLM di MacBook Pro M1 Max

    Saya menggunakan MacBook Pro M1 Max dengan RAM 64GB, mengunduh model 34B Q55 (model besar), dan memastikan bahwa itu berjalan dengan baik. Memang lambat, tetapi masih bisa digunakan. Saya menjalankannya di partisi Asahi Fedora Linux dan tidak tahu bagaimana GPU dimanfaatkan. Saya menyiapkan lingkungan dengan ZSH 5.9, dan jika memanggil LLM langsung lewat SUDO, itu cepat dimuat sebagai web server sehingga bisa berinteraksi lewat browser web melalui localhost:8080. Namun saat mencoba menjalankan LLM dari Emacs, muncul error "Doing vfork: Exec format error.". Mengikuti demo di Readme, setelah mengetik bagian awal fungsi isPrime lalu menekan C-c C-k, error itu muncul. Bertanya apakah ada ide tentang apa yang salah.

  • Kritik terhadap fungsi is_prime dalam demonstrasi video

    Fungsi is_prime yang ditunjukkan dalam demonstrasi video sangat buruk. Meskipun input tidak habis dibagi 2, ia tetap terus melakukan pemeriksaan modulo terhadap 4, 6, 8, dan seterusnya, yang sepenuhnya tidak bermakna. Dengan menambahkan satu baris kode saja (pengecekan bilangan ganjil), loop bisa dibuat hanya untuk bilangan ganjil sehingga 2 kali lebih cepat. Semoga orang-orang yang memakai LLM seperti ini meninjau kodenya sebelum push ke prod.

  • Pertanyaan tentang build llamafile yang tidak bisa dijalankan di NixOS

    Bertanya apakah mungkin membangun llamafile sendiri tanpa cosmopolitan/file executable yang benar-benar portabel. Tidak bisa dijalankan di NixOS.

  • Kebutuhan akan integrasi LLM yang lebih umum

    Saya puas dengan apa yang ada sekarang, tetapi saya menginginkan integrasi LLM yang lebih umum yang bisa melakukan ini sekaligus semua hal lain yang dapat dilakukan LLM. Misalnya, dengan satu penekanan tombol bisa berarti "selesaikan kode ini", tetapi penekanan tombol lain bisa mengirim buffer saat ini ke LLM apa adanya, atau mengirim area ke LLM, atau mengirim area ke LLM lalu menggantinya dengan hasil. Ada beberapa fungsi ortogonal untuk memasukkan input ke LLM dengan berbagai cara (area, buffer, file, prompt inline) dan fungsi untuk mengeluarkan hasil dengan berbagai cara (menambahkan di posisi kursor, menimpa area, menaruhnya di buffer baru, dan sebagainya), lalu di atasnya bisa dibangun berbagai system prompt otomatis seperti penyelesaian kode, prosa, dan lain-lain.

  • Berbagi perintah kustom integrasi LLM dari pengguna Vim

    Menggunakan perintah kustom yang dapat mengambil kode yang sedang dipilih, membuka jendela browser, lalu meminta berbagai engine AI untuk memperbaikinya. Membagikan perintah yang digunakan di vimrc.

  • Pertanyaan tentang jalur upgrade Llamafile

    Bertanya tentang jalur upgrade Llamafile. Dipahami sebagai gabungan antara llama.cpp (file kecil yang sering diperbarui) dan bobot model (file besar yang jarang diperbarui). Ingin tahu apakah setiap kali perlu ada perubahan pada llama.cpp, beberapa gigabyte model yang tidak berubah harus diunduh ulang.

  • Menyatakan ketertarikan dan niat mencoba integrasi LLM

    Sangat menarik dan pasti akan saya coba. Namun, karena sangat berbeda dari cara kerja GitHub CoPilot, mungkin namanya kurang tepat dipilih. Mengingat arsitektur Emacs dan hal-hal sejenis, cukup mengejutkan bahwa belum ada lebih banyak pengembangan integrasi dengan LLM, tetapi sebagian besar proyek tampaknya tidak dikerjakan selama berbulan-bulan. Namun mungkin juga kebanyakan pengguna Emacs adalah orang-orang yang menentang pemanfaatan LLM.