Membuat Chatbot dengan Model Gratis dan Berbayar menggunakan LangChain
Berbicara tentang chatbot, saat ini tidak akan jauh dari ChatGPT. ChatGPT merupakan teknologi Large Language Models (LLMs) dari OpenAI yang berfokus pada text generation yang menyerupai manusia. Pada artikel ini, kita akan belajar cara membuat aplikasi chatbot menggunakan LangChain, sebuah ekosistem yang memudahkan integrasi LLMs. Di sini nantinya kita akan mencoba membuat chatbot menggunakan model berbayar seperti GPT dan model open source seperti Phi-3.
Apa itu LangChain?
LangChain merupakan ekosistem yang menyediakan sejumlah modul dan tools untuk membangun aplikasi LLMs. Dengan LangChain, pengembang dapat dengan mudah mengintegrasikan berbagai model LLM, baik itu yang berbayar seperti GPT-3 dari OpenAI, maupun model open source melalui platform seperti Hugging Face. LangChain memungkinkan penggunaan modul-modul penting yang diperlukan untuk membangun chatbot, seperti template prompt, parser output, dan lainnya.
Mengapa Menggunakan LangChain?
LangChain menawarkan beberapa keuntungan utama bagi pengembang:
Kemudahan Integrasi: LangChain mempermudah integrasi berbagai model LLMs ke dalam aplikasi. Dengan modul yang telah terstruktur dengan baik, pengembang tidak perlu menulis banyak kode boilerplate untuk menghubungkan model dengan aplikasi mereka.
Fleksibilitas: LangChain mendukung penggunaan berbagai model, baik berbayar maupun open source, sehingga pengembang dapat memilih model yang paling sesuai dengan kebutuhan mereka.
Monitoring dan Tracing: LangChain memiliki fitur monitoring dan tracing yang memungkinkan pengembang melacak performa dan penggunaan model dalam aplikasi mereka secara real-time. Ini membantu dalam debugging dan pengoptimalan aplikasi.
Langkah Awal dalam Membangun Chatbot
Untuk memulai pembangunan chatbot dengan LangChain, ada beberapa langkah dasar yang perlu dilakukan:
Membuat Virtual Environment: Penting untuk membuat lingkungan virtual menggunakan tools seperti
conda
atauvenv
agar dependensi proyek terisolasi dan mudah dikelola.Mengatur Environment Variable: Menyimpan kunci API dan informasi penting lainnya dalam variabel lingkungan untuk menjaga keamanan dan kemudahan akses dalam kode.
Menggunakan Template Prompt: Template prompt digunakan untuk mendefinisikan cara chatbot merespon input dari pengguna. Ini termasuk sistem prompt yang memberi instruksi dasar pada model dan user prompt yang menerima input dari pengguna.
Menggunakan Output Parser: Output parser digunakan untuk memproses output dari model LLM sehingga dapat ditampilkan atau digunakan lebih lanjut dalam aplikasi.
Studi Kasus: Chatbot dengan GPT-3 dan Model Open Source
Dalam tutorial ini, kita akan membuat dua jenis chatbot:
Chatbot dengan API Berbayar: Menggunakan GPT-4o dari OpenAI, kita akan menunjukkan bagaimana cara mengatur dan mengintegrasikan model ini ke dalam aplikasi chatbot menggunakan LangChain.
Chatbot dengan Model Open Source: Menggunakan model open source seperti Phi3, kita akan melihat bagaimana cara mendownload dan menggunakan model ini secara lokal dalam aplikasi chatbot.
Implementasi Kode Chatbot dengan GPT-4o Mini dan Ollama Phi 3
Kode 1: Chatbot dengan OpenAI GPT-4o Mini
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
import streamlit as st
import os
from dotenv import load_dotenv
Bagian ini mengimpor berbagai library yang diperlukan, termasuk ChatOpenAI
dari langchain_openai
, ChatPromptTemplate
dan StrOutputParser
dari langchain_core
, serta streamlit
untuk membangun antarmuka web. Library os
dan dotenv
digunakan untuk mengelola variabel lingkungan yang menyimpan kunci API.
os.environ["OPENAI_API_KEY"] = os.getenv("OPENAI_API_KEY")
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = os.getenv("LANGCHAIN_API_KEY")
Mengatur variabel lingkungan OPENAI_API_KEY
dan LANGCHAIN_API_KEY
untuk mengaktifkan tracing dan pemantauan menggunakan LangChain.
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant. Please respond to the queries"),
("user", "Question:{question}"),
])
Template prompt dibuat menggunakan ChatPromptTemplate
yang berisi dua bagian: instruksi sistem dan pertanyaan pengguna. Template ini akan digunakan untuk memandu model dalam memberikan respon.
st.set_page_config(
page_title="Chatbot",
page_icon=":robot:"
)
st.header("GPT 4o Mini Chatbot")
input_text = st.text_input("Search the topic u want")
Antarmuka Streamlit diatur dengan menambahkan konfigurasi halaman, termasuk judul dan ikon, serta menampilkan header dan input teks untuk pengguna memasukkan pertanyaan.
llm =ChatOpenAI(model="gpt-4o-mini")
output_parser = StrOutputParser()
chain=prompt|llm|output_parser
Model GPT-4o Mini dikonfigurasi menggunakan ChatOpenAI
, dan keluaran model diproses menggunakan StrOutputParser
. Semua komponen ini dirangkai menjadi satu rantai menggunakan operator |
.
if input_text:
st.write(chain.invoke({"question": input_text}))
Jika ada input dari pengguna, rantai dieksekusi dengan input tersebut dan hasilnya ditampilkan menggunakan st.write
.
Kode 2: Chatbot dengan Phi 3
Untuk model open source, kita akan menggunakan Ollama untuk menjalankannya dari local. Di sini kita menggunakan model Phi3, model ini dipilih karena ukurannya yang relatif kecil. Anda dipersilahkan untuk menggunakan model lainnya jika memiliki sumber daya komputasi yang mencukupi. Untuk melihat model-model yang tersedia anda bisa melihatnya di github Ollama.
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_ollama import ChatOllama
import streamlit as st
import os
from dotenv import load_dotenv
load_dotenv()
Di sini kita modul yang sama dan mengganti ChatOpenAI
dengan ChatOllama
untuk model Ollama untuk menggunakan Phi 3. Kita juga mengatur variabel lingkungan dengan cara yang sama untuk mengaktifkan tracing dan pemantauan dengan LangChain.
os.environ["LANGCHAIN_TRACING_V2"] = "true"
os.environ["LANGCHAIN_API_KEY"] = os.getenv("LANGCHAIN_API_KEY")
Mengatur variabel lingkungan sama seperti pada kode sebelumnya.
prompt = ChatPromptTemplate.from_messages([
("system", "You are a helpful assistant. Please respond to the queries"),
("user", "Question:{question}"),
])
Template prompt yang sama digunakan untuk memberikan instruksi kepada model.
st.set_page_config(
page_title="Chatbot",
page_icon=":robot:"
)
st.header("Phi 3 Chatbot")
input_text = st.text_input("Search the topic u want")
Antarmuka Streamlit diatur dengan header yang berbeda untuk membedakan antara chatbot GPT-4o Mini dan Phi 3.
llm =ChatOllama(model="phi3")
output_parser = StrOutputParser()
chain=prompt|llm|output_parser
Model Phi 3 dikonfigurasi menggunakan ChatOllama
, dan keluaran model diproses dengan StrOutputParser
. Komponen ini dirangkai menjadi satu rantai menggunakan operator |
.
if input_text:
st.write(chain.invoke({"question": input_text}))
Jika ada input dari pengguna, hasilnya ditampilkan menggunakan st.write
.
Gambar di atas merupakan contoh kedua chatbot ketika menerima prompt "tell me a funny dad joke". Kita bisa melihat bahwa meskipun memiliki ukuran lebih kecil dan gratis, phi3 tetap bisa memberikan jawaban yang relevan. Oleh karena itu, kita bisa mempertimbangkan penggunaan model-model open source pada project kita sebagai alternatif dari model GPT.
Penutup
Mengembangkan chatbot yang efisien dan responsif kini semakin mudah dengan adanya ekosistem seperti LangChain. Melalui integrasi yang mulus dan penggunaan modul-modul yang terstruktur dengan baik, LangChain mempermudah pengembang untuk menghubungkan berbagai model bahasa, baik berbayar seperti GPT dari OpenAI maupun open source seperti Phi-3.
Pada artikel ini, kita telah melihat langkah-langkah dasar dalam membangun chatbot, mulai dari membuat lingkungan virtual hingga menggunakan template prompt dan output parser. Dengan contoh implementasi menggunakan GPT-4o Mini dan Phi-3, kita dapat melihat bagaimana kedua model ini bisa diintegrasikan ke dalam aplikasi chatbot dengan mudah dan efisien.
Meskipun model berbayar seperti GPT menawarkan kinerja yang sangat baik, model open source seperti Phi-3 juga menunjukkan potensi besar dalam memberikan respons yang relevan dan berguna. Oleh karena itu, pengembang dapat mempertimbangkan penggunaan model-model open source sebagai alternatif yang lebih ekonomis tanpa mengorbankan kualitas.
Dengan LangChain, kita memiliki fleksibilitas untuk memilih model yang paling sesuai dengan kebutuhan proyek kita, serta kemampuan untuk memantau dan mengoptimalkan performa chatbot secara real-time. Ini membuka peluang baru bagi pengembangan aplikasi chatbot yang lebih canggih dan responsif di berbagai bidang. Terima kasih sudah membaca artikel ini, tetap semangat dan selamat belajar!
Source code : Github
Subscribe to my newsletter
Read articles from Muhammad Ihsan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Muhammad Ihsan
Muhammad Ihsan
AI, ML and DL Enthusiast. https://www.upwork.com/freelancers/emhaihsan https://github.com/emhaihsan https://linkedin.com/in/emhaihsan