Saat ini adalah era di mana terobosan AI datang setiap hari. Beberapa tahun yang lalu, kita tidak memiliki banyak AI yang dihasilkan untuk masyarakat umum, tetapi sekarang teknologi ini dapat diakses oleh semua orang. Ini sangat bagus bagi kreator individu atau perusahaan yang ingin memanfaatkan teknologi ini untuk mengembangkan sesuatu yang kompleks, yang mungkin memakan waktu lama.
Salah satu terobosan paling luar biasa yang mengubah cara kita bekerja adalah rilisnya model GPT-3.5 dari OpenAI. Apa itu model GPT-3.5? Jika saya bertanya kepada mereka sendiri, jawabannya adalah “model AI yang sangat canggih dalam bidang natural language processing, dengan peningkatan besar dalam menghasilkan teks yang kontekstual dan relevan”.
OpenAI menyediakan API untuk model GPT-3.5 yang dapat kita gunakan untuk mengembangkan aplikasi sederhana, seperti text summarizer (pembuat rangkuman teks), Untuk melakukan itu, kita dapat menggunakan Python untuk mengintegrasikan API model tersebut ke dalam aplikasi yang kita inginkan secara mulus. Bagaimana prosesnya? Mari kita bahas.
Prasyarat
Ada beberapa prasyarat sebelum mengikuti tutorial ini, termasuk:
Pengetahuan tentang Python, termasuk pengetahuan tentang penggunaan external libraries dan IDE
Pemahaman tentang API dan handling endpoint dengan Python
Memiliki akses ke API OpenAI
Untuk mendapatkan akses API OpenAI, kita harus mendaftar di OpenAI Developer Platform dan mengunjungi View API keys dalam profil kita. Di web, klik tombol “Create new secret key” untuk mendapatkan akses API (Lihat gambar di bawah). Ingatlah untuk menyimpan keys tersebut, karena setelah itu keys tidak akan ditampilkan lagi.
Ketika semua persiapannya sudah selesai, mari kita coba memahami dasar-dasar model API OpenAI.
Memahami API OpenAI GPT-3.5
GPT-3.5 family model dirancang untuk banyak language task, dan setiap model dalam family ini unggul dalam beberapa tugas tertentu. Untuk contoh tutorial ini, kita akan menggunakan gpt-3.5-turbo karena merupakan model yang direkomendasikan saat artikel ini ditulis untuk kemampuan dan efisiensi biayanya.
Kita biasanya menggunakan text-davinci-003 dalam tutorial OpenAI, tetapi kita akan menggunakan model yang direkomendasikan untuk tutorial ini. Kita akan mengandalkan endpoint ChatCompletion dibandingkan Completion karena model yang direkomendasikan saat ini adalah model chat. Meskipun namanya adalah model chat, model ini bisa digunakan untuk tugas bahasa apa pun.
Mari kita coba memahami cara kerja API. Pertama, kita perlu menginstal paket OpenAI saat ini.
pip install openai
Setelah kita selesai menginstal paket tersebut, kita akan mencoba menggunakan API dengan menghubungkannya dengan endpoint ChatCompletion. Namun, kita perlu mengatur environment sebelum melanjutkan.
Di IDE favorit Anda (saya menggunakan VS Code), buat dua file bernama .env dan summarizer_app.py, seperti gambar di bawah.
summarizer_app.py adalah tempat kita akan membangun aplikasi simple summarizer kita, dan file .env adalah tempat kita akan menyimpan API Key kita. Untuk alasan keamanan, selalu disarankan untuk memisahkan API Key kita dalam file lain daripada menulisnya langsung dalam file Python.
Di file .env, masukkan sintaks berikut dan simpan file tersebut. Ganti your_api_key_here dengan API key Anda yang sebenarnya. Jangan mengubah API key menjadi objek string; biarkan seperti apa adanya.
OPENAI_API_KEY=your_api_key_here
Untuk memahami API GPT-3.5 lebih baik, kita akan menggunakan kode berikut untuk menghasilkan ringkasan kata.
openai.ChatCompletion.create(
model="gpt-3.5-turbo",
max_tokens=100,
temperature=0.7,
top_p=0.5,
frequency_penalty=0.5,
messages=[
{
"role": "system",
"content": "You are a helpful assistant for text summarization.",
},
{
"role": "user",
"content": f"Summarize this for a {person_type}: {prompt}",
},
],
)
Kode di atas adalah cara kita berinteraksi dengan model API GPT-3.5 OpenAI. Menggunakan API ChatCompletion, kita membuat percakapan dan akan mendapatkan hasil yang diinginkan setelah melewati prompt.
Mari kita uraikan setiap bagian untuk memahaminya lebih lanjut. Pada baris pertama, kita menggunakan kode openai.ChatCompletion.create untuk membuat respons dari prompt yang akan kita masukkan ke dalam API.
Pada baris berikutnya, kita memiliki hyperparameters yang kita gunakan untuk meningkatkan tugas. Berikut adalah ringkasan fungsi setiap hyperparameter:
model: Family model yang ingin kita gunakan. Dalam tutorial ini, kita menggunakan model yang direkomendasikan saat ini (gpt-3.5-turbo).
max_tokens: Batas atas kata-kata yang dihasilkan oleh model. Ini membantu membatasi panjang teks yang dihasilkan.
temperature: Keacakan output model, ketika temperature lebih tinggi berarti hasil yang lebih beragam dan kreatif. Nilai berkisar antara 0 hingga tak terhingga, meskipun nilai lebih dari 2 jarang digunakan.
top_p: Top P atau top-k sampling atau nucleus sampling adalah parameter untuk mengontrol kumpulan sampling dari distribusi output. Misalnya, nilai 0.1 berarti model hanya sampling output dari 10% teratas distribusi. Nilai berkisar antara 0 hingga 1; nilai yang lebih tinggi berarti hasil lebih beragam,
frequency_penalty: Penalti untuk token pengulangan dari output. Nilai berkisar antara -2 hingga 2, di mana nilai positif akan menahan model dari pengulangan token sementara nilai negatif mendorong model untuk menggunakan lebih banyak kata yang berulang. 0 berarti tidak ada penalti.
messages: Parameter di mana kita memasukkan teks prompt kita untuk diproses oleh model. Kita memasukkan list dictionary di mana key-nya adalah role object (baik “system”, “user”, atau “assistant”) yang membantu model memahami konteks dan struktur, sedangkan value-nya adalah konteksnya. - Role “system” adalah pedoman yang ditetapkan untuk perilaku model “assistant”, - Role“user” mewakili prompt dari orang yang berinteraksi dengan model, - Role “assistant” adalah respons terhadap prompt “user”.
Dengan penjelasan parameter di atas, kita bisa melihat bahwa parameter messages memiliki dua objek dictionary. Dictionary pertama adalah cara kita mengatur model sebagai text summarizer. Yang kedua adalah di mana kita akan memasukkan teks dan mendapatkan output ringkasan.
Di dictionary kedua, Anda juga akan melihat variabel person_type dan prompt. person_type adalah variabel yang saya gunakan untuk mengontrol gaya ringkasan, yang akan saya tunjukkan dalam tutorial. Sementara prompt adalah tempat kita memasukkan teks yang akan diringkas.
Mari lanjutkan ke tutorial, tempatkan kode di bawah ini dalam file summarizer_app.py dan kita akan mencoba menjalankan fungsi di bawah ini.
import openai
import os
from dotenv import load_dotenv
load_dotenv()
openai.api_key = os.getenv("OPENAI_API_KEY")
def generate_summarizer(
max_tokens,
temperature,
top_p,
frequency_penalty,
prompt,
person_type,
):
res = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
max_tokens=100,
temperature=0.7,
top_p=0.5,
frequency_penalty=0.5,
messages=
[
{
"role": "system",
"content": "You are a helpful assistant for text summarization.",
},
{
"role": "user",
"content": f"Summarize this for a {person_type}: {prompt}",
},
],
)
return res["choices"][0]["message"]["content"]
Kode di atas adalah tempat kita membuat fungsi Python yang akan menerima berbagai parameter yang telah kita bahas sebelumnya dan mengembalikan output berupa ringkasan teks.
Cobalah fungsi di atas dengan parameter Anda sendiri dan lihat outputnya. Kemudian mari kita lanjutkan tutorial untuk membuat aplikasi sederhana dengan paket streamlit.
Aplikasi Text Summarization dengan Streamlit
Streamlit adalah paket Python open-source yang dirancang untuk membuat aplikasi web machine learning dan data science. Streamlit mudah digunakan dan intuitif, jadi direkomendasikan untuk para pemula.
Mari kita instal paket streamlit sebelum kita melanjutkan tutorial ini.
pip install streamlit
Setelah instalasi selesai, masukkan kode berikut ke dalam file summarizer_app.py.
import streamlit as st
#Buat judul aplikasi
st.title("GPT-3.5 Text Summarizer")
#Sediakan area input untuk teks yang akan diringkas
input_text = st.text_area("Enter the text you want to summarize:", height=200)
#Inisiasi tiga kolom agar bagiannya berdampingan
col1, col2, col3 = st.columns(3)
#Slider untuk mengontrol hyperparameter model
with col1:
token = st.slider("Token", min_value=0.0, max_value=200.0, value=50.0, step=1.0)
temp = st.slider("Temperature", min_value=0.0, max_value=1.0, value=0.0, step=0.01)
top_p = st.slider("Nucleus Sampling", min_value=0.0, max_value=1.0, value=0.5, step=0.01)
f_pen = st.slider("Frequency Penalty", min_value=-1.0, max_value=1.0, value=0.0, step=0.01)
#Selection box untuk memilih gaya ringkasan
with col2:
option = st.selectbox(
"How do you like to be explained?",
(
"Second-Grader",
"Professional Data Scientist",
"Housewives",
"Retired",
"University Student",
),
)
#Menampilkan parameter yang digunakan saat ini untuk model
with col3:
with st.expander("Current Parameter"):
st.write("Current Token :", token)
st.write("Current Temperature :", temp)
st.write("Current Nucleus Sampling :", top_p)
st.write("Current Frequency Penalty :", f_pen)
#Buat tombol untuk mengeksekusi model
if st.button("Summarize"):
st.write(generate_summarizer(token, temp, top_p, f_pen, input_text, option))
Cobalah menjalankan kode berikut di command prompt Anda untuk memulai aplikasi.
streamlit run summarizer_app.py
Jika semuanya berjalan dengan baik, Anda akan melihat aplikasi berikut di browser default Anda.
Jadi, apa yang terjadi dalam kode di atas? Mari saya jelaskan secara singkat setiap fungsi yang kita gunakan:
.st.title: Menentukan teks judul aplikasi web.
.st.write: Menulis argumen ke dalam aplikasi; bisa apa saja tetapi biasanya teks string.
.st.text_area: Menyediakan area untuk input teks yang dapat disimpan dalam variabel dan digunakan untuk prompt pembuat text summarizer.
.st.columns: Objek kontainer untuk menyediakan interaksi berdampingan.
.st.slider: Menyediakan widget slider dengan nilai yang diatur yang dapat berinteraksi dengan pengguna. Nilainya disimpan dalam variabel yang digunakan sebagai parameter model.
.st.selectbox: Menyediakan selection widget untuk pengguna memilih gaya ringkasan yang mereka inginkan. Dalam contoh di atas, kita menggunakan lima gaya berbeda.
.st.expander: Menyediakan kontainer yang dapat diperluas oleh pengguna dan menampung banyak objek.
.st.button: Menyediakan tombol yang akan menjalankan fungsi ketika pengguna menekannya.
Karena streamlit secara otomatis akan mendesain UI mengikuti kode yang diberikan dari atas ke bawah, kita bisa lebih fokus pada interaksi.
Saat semua bagian sudah siap, mari coba aplikasi ringkasan kita dengan contoh teks. Untuk contoh kita, saya akan menggunakan teks halaman Wikipedia tentang Theory of Relativity untuk diringkas. Dengan parameter default dan gaya second-grader style, kita mendapatkan hasil berikut.
Albert Einstein was a very smart scientist who came up with two important ideas about how the world works. The first one, called special relativity, talks about how things move when there is no gravity. The second one, called general relativity, explains how gravity works and how it affects things in space like stars and planets. These ideas helped us understand many things in science, like how particles interact with each other and even helped us discover black holes!
Anda mungkin mendapatkan hasil yang berbeda dari yang di atas. Mari coba gaya Housewives style dan ubah parameter sedikit (Token 100, Temperature 0.5, Nucleus Sampling 0.5, Frequency Penalty 0.3).
The theory of relativity is a set of physics theories proposed by Albert Einstein in 1905 and 1915. It includes special relativity, which applies to physical phenomena without gravity, and general relativity, which explains the law of gravitation and its relation to the forces of nature. The theory transformed theoretical physics and astronomy in the 20th century, introducing concepts like 4-dimensional spacetime and predicting astronomical phenomena like black holes and gravitational waves.
Seperti yang kita lihat, ada perbedaan gaya untuk teks yang sama yang kita berikan. Dengan perubahan prompt dan parameter, aplikasi kita bisa lebih fungsional.
Tampilan keseluruhan aplikasi text summarizer kita bisa dilihat pada gambar di bawah ini.
Itulah tutorial tentang pengembangan aplikasi text summarizer dengan GPT-3.5. Anda bisa mengubah aplikasi ini lebih lanjut dan men-deploy-nya.
Kesimpulan
Generative AI sedang naik daun, dan kita harus memanfaatkan kesempatan ini dengan membuat aplikasi yang luar biasa. Dalam tutorial ini, kita belajar bagaimana API OpenAI GPT-3.5 bekerja dan cara menggunakannya untuk membuat aplikasi text summarizer dengan bantuan Python dan paket streamlit.
Comments