Membuat Aplikasi Translator Sederhana Menggunakan Streamlit dan ChatGPT

Di masa kini, pemanfaatan AI sudah menjadi hal yang tidak terpisahkan dari kehidupan sehari-hari. Keberhasilan ChatGPT yang diluncurkan OpenAI semakin memicu perkembangan dalam pemanfaatan AI di berbagai bidang. Pada artikel ini, kita akan membuat aplikasi translator sederhana ChatGPT API beserta streamlit untuk tampilannya. Aplikasi translator ini ibarat "Hello World" di dalam penggunaan ChatGPT API, yaitu sebagai pengenalan sebelum membuat aplikasi-aplikasi lain yang lebih advanced nantinya.

Instalasi Library

Langkah pertama adalah menginstal Streamlit dan OpenAI Python client. Buka terminal dan jalankan perintah berikut:

pip install streamlit openai

Mendapatkan API Key OpenAI

Kita perlu mendapatkan API key dari platform.openai.com. Setelah mendaftar, kita perlu melakukan top up agar mendapatkan API yang bisa melakukan prompt. Perlu diperhatikan bahwa, API Key bersifat sangat rahasia. Karena ia terikat dengan akun yang kita gunakan untuk mendapatkannya. Oleh karena itu, sangat tidak dianjutkan membaginya dengan orang lain atau memaparkannya dalam kondisi apa pun (browser, aplikasi). Kita perlu menyimpan sendiri tempat kunci API kita dapat dimuat dengan aman dari variabel lingkungan atau layanan manajemen kunci.

Membuat Aplikasi dengan Streamlit

Tentu! Berikut adalah penjelasan per baris dan bagian dari kode tersebut:

import os
import streamlit as st
import openai
from openai import OpenAI
  • import os: Mengimpor modul os untuk berinteraksi dengan sistem operasi, misalnya untuk mengambil environment variable.

  • import streamlit as st: Mengimpor library Streamlit dan menyingkatnya menjadi st, yang digunakan untuk membuat antarmuka web.

  • import openai: Mengimpor library OpenAI untuk berinteraksi dengan API OpenAI.

  • from openai import OpenAI: Mengimpor kelas OpenAI dari library OpenAI.

# Mengambil API key dari environment variable
openai_api_key = os.getenv('OPENAI_API_KEY')
if openai_api_key:
    openai.api_key = openai_api_key
else:
    st.error("API key untuk OpenAI tidak ditemukan. Pastikan environment variable 'OPENAI_API_KEY' sudah diset.")
  • openai_api_key = os.getenv('OPENAI_API_KEY'): Mengambil nilai dari environment variable OPENAI_API_KEY dan menyimpannya ke variabel openai_api_key.

  • if openai_api_key: ... else: ...: Memeriksa apakah openai_api_key tidak kosong. Jika ada, nilai tersebut diset sebagai API key untuk OpenAI. Jika tidak, menampilkan pesan error di antarmuka Streamlit.

client = OpenAI()
  • Membuat instance dari kelas OpenAI yang disimpan dalam variabel client. Ini digunakan untuk berinteraksi dengan API OpenAI.
# Fungsi untuk menerjemahkan teks menggunakan ChatGPT
def translate_text(text, source_lang, target_lang):
    messages = [
        {"role": "system", "content": f"You are a helpful translator that translates from {source_lang} to {target_lang}."},
        {"role": "user", "content": text}
    ]
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=messages,
    )
    translation = response.choices[0].message.content
    return translation
  • def translate_text(text, source_lang, target_lang):: Mendefinisikan fungsi translate_text yang menerima tiga parameter: text, source_lang, dan target_lang.

  • messages = [...]: Membuat daftar pesan yang akan dikirim ke API OpenAI. Pesan pertama mengatur konteks bahwa ChatGPT adalah penerjemah. Pesan kedua adalah teks yang ingin diterjemahkan.

  • response = client.chat.completions.create(...): Mengirim permintaan ke API OpenAI dengan model gpt-3.5-turbo dan daftar pesan. Hasilnya disimpan dalam variabel response.

  • translation = response.choices[0].message.content: Mengambil teks terjemahan dari respon API.

  • return translation: Mengembalikan teks terjemahan sebagai hasil dari fungsi.

# Antarmuka Streamlit
st.title("Translator Sederhana Menggunakan ChatGPT")

source_lang = st.selectbox("Pilih Bahasa Asal", ["English", "Indonesian", "Spanish", "French", "German", "Chinese"], index=1)
target_lang = st.selectbox("Pilih Bahasa Tujuan", ["English", "Indonesian", "Spanish", "French", "German", "Chinese"], index=0)

text_to_translate = st.text_area("Masukkan Teks yang Ingin Diterjemahkan")

if st.button("Terjemahkan"):
    if text_to_translate:
        translation = translate_text(text_to_translate, source_lang, target_lang)
        st.write("Hasil Terjemahan:")
        st.write(translation)
    else:
        st.write("Masukkan teks untuk diterjemahkan.")
  • st.title("Translator Sederhana Menggunakan ChatGPT"): Menampilkan judul aplikasi di antarmuka Streamlit.

  • source_lang = st.selectbox(...): Membuat dropdown menu untuk memilih bahasa asal. Defaultnya diatur ke "Indonesian".

  • target_lang = st.selectbox(...): Membuat dropdown menu untuk memilih bahasa tujuan. Defaultnya diatur ke "English".

  • text_to_translate = st.text_area(...): Membuat area teks di mana pengguna bisa memasukkan teks yang ingin diterjemahkan.

  • if st.button("Terjemahkan"): ...: Menambahkan tombol "Terjemahkan". Ketika tombol ini diklik, jika ada teks yang dimasukkan, maka fungsi translate_text akan dipanggil dengan teks yang dimasukkan, bahasa asal, dan bahasa tujuan sebagai parameter.

    • if text_to_translate: ... else: ...: Memeriksa apakah ada teks yang dimasukkan. Jika ada, memanggil translate_text dan menampilkan hasil terjemahan. Jika tidak, menampilkan pesan agar pengguna memasukkan teks yang ingin diterjemahkan.

Kode ini secara keseluruhan membuat aplikasi web yang sederhana untuk menerjemahkan teks menggunakan API ChatGPT dari OpenAI, dengan antarmuka yang ramah pengguna yang dibuat menggunakan Streamlit.

Penjelasan Kode

  1. Mengambil API Key: Aplikasi mengambil API key dari environment variable OPENAI_API_KEY. Jika tidak ditemukan, aplikasi akan menampilkan pesan error.

  2. Fungsi Penerjemahan: Fungsi translate_text membuat prompt dan mengirimkan permintaan ke API OpenAI untuk melakukan terjemahan.

  3. Antarmuka Streamlit: Antarmuka pengguna memungkinkan pengguna untuk memilih bahasa asal dan bahasa tujuan, memasukkan teks yang ingin diterjemahkan, dan menampilkan hasil terjemahan.

Menjalankan Aplikasi

Untuk menjalankan aplikasi, buka terminal dan jalankan perintah berikut:

streamlit run translator_app.py

Aplikasi akan terbuka di browser default kita dan bisa mulai digunakan.

Kesimpulan

Dengan memanfaatkan Streamlit dan API ChatGPT dari OpenAI, kita bisa dengan mudah membuat aplikasi penerjemah dengan mudah. Aplikasi ini dapat dikembangkan lebih lanjut sesuai kebutuhan kita, misalnya dengan menambahkan lebih banyak bahasa atau fitur-fitur lainnya. Selamat mencoba, dan semoga bermanfaat!

Source Code: Github