Membuat Custom Generative AI Chatbot dengan OpenAI dan Retrieval-Augmented Generation (RAG)

Rizkynindra
6 min readAug 18, 2024

Berbicara tentang generative AI (GenAI), sepertinya sudah menjadi hal yang biasa diantara kita dalam memanfaatkan teknologi ini. Salah satu platform GenAI yaitu ChatGPT mungkin sudah menjadi teman kita semua dalam mengerjakan tugas dan dalam membantu pekerjaan sehari — hari. Pada dasarnya, GenAI adalah salah satu cabang artificial intelligence yang memungkinkan algoritma untuk menghasilkan konten secara otomatis, mulai dari teks, gambar, audio, hingga video. Berbeda dengan AI tradisional yang lebih fokus pada analisis dan pengambilan keputusan, generative AI berperan aktif dalam menciptakan sesuatu yang baru. Sejatinya, kalian bisa membuat GenAI kalian sendiri yang bisa kalian atur sesuai dengan kebutuhan kalian.

Pada kesempatan kali ini, saya akan share tutorial bagaimana membuat chatbot berbasis GenAI dengan memanfaatkan metode Retrieval-Augmented Generation (RAG) dan bantuan Large Language Model (LLM) dari OpenAI (perusahaan yang menaungi chatGPT).

Sebelum kita lanjut, mari kita memahami sejenak apa itu RAG. RAG adalah pendekatan di mana sebuah model AI dilatih untuk menggabungkan kemampuan retrieval/pencarian informasi eksternal dan kemampuan generate/membangkitkan teks. Atau simplenya, RAG akan membuat LLM kita mempelajari pengetahuan (knowledge) khusus yang kita miliki. Umumnya, knowledge yang dimasukkan dapat berupa file seperti pdf, csv, excel bahkan free text.

arsitektur RAG Chatbot

Oke supaya intronya ga kelamaan, kita masuk aja ke tutorialnya.

Part #01: Persiapan

Hal pertama yang harus dipersiapkan adalah token chatGPT. Jadi pastikan kalian sudah membeli token chatGPT dulu. Disini saya akan menggunakan model GPT 3.5 Turbo karena kebutuhannya hanya menjawab dengan menggunakan teks. Jika sudah ada, silakan masuk ke platform.openai.com kemudian pilih dasboard, klik API keys, dan klik create new secret key.

figure 01. Create New Secret key

Seperti yang terlihat pada figure 01. Silakan tuliskan nama dari secret key yang akan kalian buat, kemudian pada bagian Permissions pilih bagian All

figure 02. Save your key

Jika sudah, maka akan muncul pop-up windows Save your key. Silakan copy secret key kalian kemudian buka code editor yang kalian gunakan. Disarankan menggunakan pycharm community karena lebih mudah dalam instalasi library python didalamnya.

Selanjutnya klik File kemudian pilih New Project dan tuliskan nama project kalian.

figure 03. New Project

Disini saya menggunakan python versi 3.10. Jika kalian punya versi yang lebih tinggi dipersilakan. Jika sudah, klik Create.

Lanjutkan dengan membuat satu file bernama .env (klik File > New… > File) kemudian ketikkan script dibawah ini dan paste secret key kalian.

figure 04. Create env

Selanjutnya, silakan buat lagi file python baru dan beri nama run_rag.py (penamaan boleh beda sesuka hati kalian) dan import library yang diperlukan.

figure 05. import library

Jika sudah, kita kembali sejenak ke platform.openai.com dan masuk ke ‘Dashboard’, lalu pada menu di bagian kiri pilih ‘storage’ dan klik tab ‘Vector Stores’ dan terakhir klik button ‘Create’ yang ada di bagian kanan.

figure 08. Vector stores pada OpenAI

Jika benar, maka pada dashboard akan muncul vector store baru bernama “Untitled Vector Store” lengkap dengan ID uniknya. Selanjutnya, klik ‘Add files’ yang ada dikanan bawah untuk menambahkan dokumen knowledge kalian. Setelah itu, file yang kalian upload akan muncul pada bagian Files Attached

figure 09. Files attached

Pada contoh kali ini saya menggunakan file pdf bernama ‘Rizkynindra.pdf’ untuk nama ga ada ketentuan, jadi terserah kalian aja untuk penamaannya. Selanjutnya adalah langkah optional, kalian bisa me-rename vector store kalian.

figure 10. Rename vector store

Next, pada bagian Used by klik ‘create assistant’ dan secara otomatis kalian akan mendapatkan ID unik dari assistant baru kalian. ID inilah nantinya yang akan kita gunakan untuk membuat chatbot genAI kita.

Part #02: Pembuatan Generative AI Chatbot

Oke, kita sudah selesai berurusan dengan dashboard openAI, saatnya kita kembali ke code editor kita. Buka lagi file .env yang sudah kita buat dan tambahkan ID assistant dan ID vector store yang sudah kita buat sebelumnya. ID assistant adalah kode unik yang diawali dengan asst_ (figure 11) dan ID vector store adalah kode unik yang diawali dengan vs_ (figure 12).

figure 11. ID assistant
figure 12. ID vector
figure 13. Hasil update .env

Selanjutnya silakan kembali ke file run_rag.py dan ketikkan script yang ada pada figure 14 dibawah ini.

figure 14. Inisiasi api key, assistant_id, dan vector_store_id

Baris ke 6–8 adalah baris yang masing — masing digunakan untuk memasukkan openAI api key, assistant ID & vector store id yang akan kita gunakan untuk membuat custom chatbot kita. Dan pada baris ke 10, kita buat variable client yang berisikan api key dan juga vector store IDyang kita sudah generate di awal tadi. Selanjutnya kita buat assistant kita dengan mengetik script pada figure 15 dibawah.

figure 15. update

Baris ke 13–16 adalah script untuk mengupdate assistant kita dengan assistant ID dan vector store ID yang kita punya. Pada baris ke 15, tool_resources kita arahkan ke file_search agar chatbot yang kita buat hanya mempelajari knowledge dari kita.

figure 16. Pembuatan thread ID

Selanjutnya kita generate thread ID untuk meng-auto generated-kan ID thread percakapan kita dengan chatbot dengan mengetik script pada figure 16.

Setelah itu, tibalah kita pada akhir script ini. Langkah terakhir adalah kita membuat looping untuk membuat skema tanya jawab antara user dan chatbot. Silakan ketik dulu script pada figure 17 dibawah dan setelah itu baru kita bahas perlahan fungsi dari scriptnya.

figure 17. Looping untuk tanya jawab user.

Baris ke 26 adalah script yang bisa kita gunakan untuk membuat salam pembuka dari chatbot. Inputannya bisa kalian sesuaikan, ga harus sama dengan yang ada di script. Baris ke 30 kita mendefinisikan rolenya adalah “user” yang artinya script ini berfungsi untuk menampung inputan dari user. Lanjut ke baris 38–41 adalah serangkaian script yang berfungsi untuk menampung pesan yang dituliskan, kemudian menampilkan response atau jawaban chatbot atas pertanyaan dari user (Baris 41).

Kalau sudah sekarang kalian bisa uji coba chatbot kalian dengan klik terminal pada pojok kiri bawah dari pycharm (kalau pakai code editor lain silakan menyesuaikan, intinya harus buka terminal dari code editor tersebut) kemudian ketik python run_rag.py. Jika berhasil maka tampilan terminal akan seperti gambar dibawah ini.

figure 18. Run the script

Nah ketika salam pembukanya muncul, silakan ketikkan pertanyaan yang berkaitan dengan knowledge yang kalian upload sebelumnya. Karena contoh yang saya gunakan adalah knowledge dari link ini. Maka pertanyaannya juga seputar artikel tersebut.

figure 19. Respon dari chatbot

Seperti yang terlihat pada figure 19. Chatbot berhasil merangkai jawaban dengan kata — kata yang mudah dimengerti oleh manusia. Jika kalian bertanya, bagaimana kita tau kalau chatbot itu benar-benar mempelajari knowledge yang kita upload? Cara untuk memastikannya adalah dengan melihat di akhir jawabannya terdapat pattern “【x:x†source】”. Jika pattern ini muncul, maka chatbot buatan kalian sudah berhasil mempelajari knowledge yang kalian berikan.

Part #03: Penutup

Oke, mungkin sekian dulu tutorial yang bisa saya sampaikan terkait membuat custom generative AI chatbot dengan memanfaatkan metode RAG dan openAI. Nextnya (kalau ada niat) akan saya share bagaimana membuat interfacenya atau mungkin membuat custom genAI chatbot lagi dengan model LLM yang lainnya. Untuk script yang saya buat ini dapat diakses melalui link github ini: rizkynindra/RAG-BOT: Chatbot with OpenAI, RAG (github.com).

Akhir kata saya sampaikan terima kasih telah membaca dan see you in the next story.

--

--

Rizkynindra
Rizkynindra

No responses yet