No-code movement? Biasa! AI ngoding, baru luar biasa!
GitHub memiliki sebuah terobosan baru, yaitu GitHub Copilot. Seperti namanya, Copilot, fitur ini bekerja layaknya seorang copilot buat seorang programmer, yaitu membantu dalam programming. Mudahnya, Copilot bakal men-generate lines of code sesuai dengan fungsi yang diinginkan oleh kita, sang programmer. Menarik, bukan?
Tentang
Perkembangan dunia AI, terutama NLP (natural language processing), akhir-akhir ini terjadi sangat pesat. Yang menjadi tonggak begitu derasnya advancement ini adalah deep learning, terutama setelah sebuah breakthrough, bernama Transformer, di deep learning muncul.
Singkatnya, banyak orang dan organisasi telah, sedang, dan akan berlomba-lomba mengembangkan model transformer versi mereka sendiri. Beberapa versi model transformer yang terkenal adalah model-model yang berasal dari GPT familiy, yang terdiri dari GPT, GPT-2, dan GPT-3, yang dikembangkan oleh OpenAI.
Kemudian, GPT-3, sebagai model paling anyar dari GPT family, di-improve (fine-tuning) lebih lanjut oleh OpenAI dan dinamai Codex. Model Codex ini di-train di public repositories yang tersebar di GitHub. Dan Copilot ini menggunakan API yang berasal dari model OpenAI Codex.
Fitur
Jika kita melihat website Copilot di bawah ini, fitur ini dikatakan lebih dari sekadar fitur Autocomplete:
GitHub Copilot understands significantly more context than most code assistants. So, whether it’s in a docstring, comment, function name, or the code itself, GitHub Copilot uses the context you’ve provided and synthesizes code to match.
Beberapa fitur yang dimilikinya adalah:
- Convert comments to code
Kita cukup ketik yang kita inginkan di bagian comments, lalu biarkan Copilot bekerja untuk menerjemahkan kebutuhan kita ke dalam lines of code.
- Autofill for repetitive code
Saat kita perlu mengetik baris code yang berulang, Copilot bakal membantu pekerjaan merepotkan ini.
- Tests without the toil
Bagi para programmers yang bekerja dalam sebuah project, sebelum mereka yakin codingan mereka dapat berfungsi dengan baik, biasanya mereka melakukan beberapa tests. Salah satunya adalah Unit Test. Copilot juga akan membantu mereka dalam mendefinisikan Unit Test.
- Show me alternatives
Setelah Copilot memberikan solusi lines of code-nya ke kita dan ternyata kita masih belum puas dengan hasilnya, tenang saja, Copilot bisa men-generate alternatif solusi lain.
Cara Menggunakan
Mendaftar
Oke, kita sudah melihat kehebatan Copilot. Sekarang pertanyaan yang muncul adalah “bagaimana cara pakainya?”. Simpel saja. Kita cuma perlu klik tombol Sign Up di website GitHub Copilot, maka kemudian kita akan diarahkan untuk sign in ke waitlist. Untuk join ke waitlist, kita cukup sign in dengan akun GitHub yang kita miliki
Sebagai informasi, Copilot saat ini masih dalam tahap technical preview dan baru tersedia sebagai extension di beberapa IDE populer seperti Visual Studio Code, Neovim, dan JetBrains suite. Jadi, tidak heran kalau kita perlu join ke waitlist terlebih dahulu.
Setelah kita sukses join ke waitlist, kita harus menunggu sampai kita dapat email balasan agar bisa menggunakan Copilot. Untuk kasus saya, saya menunggu kurang lebih satu bulan hingga akhirnya saya dapat email seperti di bawah ini.
Meng-install
Setelah kita mendapat email dari GitHub, kita tinggal klik tombol Install GitHub Copilot seperti gambar di atas atau kita juga bisa kunjungi link di bawah ini karena tombol tersebut juga mengarah ke link tersebut.
Link tersebut mengarah ke sebuah repository. Di bagian README-nya, kita bisa dengan mudah mendapatkan informasi mengenai Copilot ini lebih detail dan cara meng-install-nya di beberapa IDEs populer.
Tes
Oke. Sekarang kita coba tes si Copilot ini. Di tes ini, saya menggunakan IDE Visual Studio Code. Bahasa yang saya gunakan adalah Python. Sebelum kita lakukan tes, pastikan bahwa Copilot telah running di VS Code yang kita gunakan. Jika running, akan muncul logo Copilot di kanan bawah window VS Code kita, seperti yang ditunjukkan oleh gambar di bawah ini.
Kemudian, kita perlu memahami keyboard shortcuts Copilot yang running di VS Code, yaitu sebagai berikut:
- Accept an inline suggestion:
Tab
. - Dismiss an inline suggestion:
Esc
. - Show next inline suggestion:
Alt + ]
orOption (⌥) + ]
. - Show previous inline suggestion:
Alt + [
orOption (⌥) + [
. - Trigger inline suggestion:
Alt + \
orOption (⌥) + \
. - Open Copilot (10 suggestions in separate pane):
Ctrl + Enter
.
Tes pertama
Sekarang kita akan mencoba membuat sebuah program yang dapat melakukan operasi pertambahan, pengurangan, perkalian, dan pembagian, layaknya sebuah kalkulator. Video di bawah ini menunjukkan bagaimana kita melakukan tes yang pertama ini.
Dari video di atas, bisa kita lihat bahwa dengan menginput instruksi dalam bentuk comments, Copilot kemudian akan men-generate lines of code. Tapi mungkin kita harus beberapa kali menekan tombol enter agar code baris per baris bisa di-generate. Setelah script Python selesai dibuat, script tersebut bisa di-run di Terminal atau Command Prompt.
Tes kedua
Untuk menguji seberapa hebatnya Copilot, kita akan tambah perintah lebih kompleks. Dari fungsi kalkulator di atas, kita ingin Copilot mengkompilasi semua functions ke dalam sebuah class SimpleCalculator
. Lalu kita mau Copilot membuat tampilan web page sederhana dengan menggunakan library Dash, agar user bisa menginput dua angka, memilih operasi yang diinginkan, dan click tombol “Calculate”, lalu program akan menampilkan perhitungan yang kita inginkan. Web server app
dari Dash ini akan running di localhost sehingga bisa kita akses langsung melalui web browser.
Video di bawah ini menunjukkan bagaimana kita melakukan tes yang kedua ini.
Pastikan anda telah menginstall library Dash sebelumnya. Saya menyarankan agar anda membuat python/conda virtual environment untuk menginstall Dash.
Dari video di atas, kita bisa lihat, pertama kita bisa menambah instruksi baru dengan cara menambah baris comments. Di instruksi pertama, kita minta Copilot untuk mengkompilasi functions calculator yang sudah di-define sebelumnya. Namun, hasilnya, Copilot malah menulis ulang function-function tersebut ke dalam class yang kita inginkan. Oke, tidak mengapa.
Di instruksi kedua, kita minta Copilot untuk membuat Dash app agar bisa men-serve class SimpleCalculator
di frontend. Seperti biasa, kita harus tekan enter dan tab berkali-kali agar Copilot bisa men-generate lines of code permintaan kita. Saat kita selesai dengan script yang ditulis oleh Copilot, kita bisa me-run nya di Terminal atau Command Prompt. Namun, saat saya mau me-run-nya, ada sedikit kendala di mana ternyata Copilot tidak men-generate lines of code untuk meng-import library Dash dan turunannya. Jadi, saya harus mengoreksi kekeliruan Copilot ini.
Setelah selesai dikoreksi, saya perlu meng-activate conda environment saya yang memiliki Dash library yang telah terinstall. Setelah activated, script bisa di-run dengan sukses. IP address yang muncul bisa kita klik untuk membukanya langsung atau di-copy-paste ke browser.
Dan voila! Dash App buatan Copilot berhasil running sesuai dengan permintaan kita!
Tes ketiga
Ini tes terakhir. Di sini, kita akan push Copilot ke kondisi yang sangat spesifik. Kita akan minta Copilot untuk membuat sebuah chatbot dengan menggunakan, karena GitHub adalah subsidiary dari Microsoft, Microsoft Bot Framework.
Video di bawah ini menunjukkan bagaimana kita melakukan tes yang ketiga ini.
Dari video di atas, kita bisa lihat bahwa Copilot tidak mampu men-generate lines of code dari instruksi untuk membuat chatbot menggunakan Microsoft Bot Framework. Copilot hanya menyarankan lines of code yang sudah kita lakukan, seperti import dash
, padahal kita tidak membutuhkannya untuk kasus kali ini.
Pada contoh lain, saya juga pernah memberikan instruksi-instruksi sulit lain ke Copilot, seperti:
- membuat sebuah program untuk mendeteksi apakah sebuah akun Twitter itu adalah bot atau bukan,
- men-download pre-trained model transformer tertentu dari HuggingFace, memasangkan head tambahan pada model tersebut, men-download public dataset, dan terakhir men-fine-tune model tersebut.
Hasilnya, untuk instruksi yang pertama, Copilot kewalahan, dan malah men-generate lines of code aneh yang tidak ada sangkut pautnya dengan instruksinya. Untuk instruksi yang kedua, Copilot hanya berulang-ulang men-generate import
beragam libraries, tanpa menulis code lain. Bahkan libraries yang di-import tersebut beberapa kali malah ditulis ulang kembali.
Tambahan
Sebelum GitHub Copilot rilis, model utamanya, yaitu OpenAI Codex, pada dasarnya mampu men-generate lines of code dari instruksi yang diberikan oleh user. Pihak OpenAI sendiri juga telah merilis video live demo Codex di YouTube, seperti yang ditunjukkan di bawah ini.
Kesimpulan
Kita telah membahas hal menarik panjang lebar. Kita telah sedikit membahas tentang asal-usul GitHub Copilot dan fitur-fitur yang dimilikinya. Kita juga telah membahas bagaimana cara mendapatkan Copilot ini dan meng-install-nya di IDE favorit kita. Dan terakhir, kita juga telah melakukan beberapa uji coba pada kemampuan Copilot.
Dari tiga tes yang telah dilakukan, ada beberapa hal menarik yang bisa kita simpulkan:
- Copilot mampu men-generate instruksi-instruksi mudah dan sederhana, bahkan memberikan beberapa alternatif code.
- Copilot mampu memberikan rekomendasi lines of code yang menggunakan libraries lain yang cenderung populer.
- Lines of code yang di-generate oleh Copilot tidak bisa semerta-merta kita percayai karena tidak akan tidak mungkin coding yang dihasilkan masih terdapat bugs.
- Jika kita memberikan instruksi yang lebih spesifik dan menantang, terutama dengan menggunakan library yang less popular, Copilot akan gagal memenuhi ekspektasi kita.
- Copilot juga tidak mampu mengerjakan instruksi yang terlalu high-level.
- Pada dasarnya, Copilot hanya mampu melaksanakan instruksi-intruksi low-level yang logical thinking-nya sudah di-break-down oleh sang programmer.
- dsb.
Kembali lagi, sama seperi namanya, Copilot hanyalah sebuah tool untuk membantu pilot utama, yaitu sang programmer. Oleh karena itu, untuk saat ini, kita belum bisa terlalu berharap suatu AGI (artificial general intelligence) yang benar-benar mampu berpikir layaknya kognisi manusia.
Di lain sisi, ada beberapa side effect jika kita berniat menggunakan tool Copilot ini. Dirangkum dari sebuah artikel Medium oleh Arnold Abraham, berikut hal-hal yang perlu kita pertimbangkan sebelum menggunakan Copilot:
- Open-source licenses get disrespected.
- Code provided by GitHub Copilot may expose you to liability.
- Tools you depend on are crutches. GitHub Copilot is a crutch.
- This tool is free now, but it won’t stay gratis.
- Your code is exposed to other humans and stored. If you have an NDA, you are screwed.
- You have to constantly check the code this tool delivers to you. Not a great service for a tool.
Terima kasih telah membaca!