Kursus
ChatGPT adalah model bahasa besar mutakhir untuk menghasilkan teks. Ini sudah mengubah cara kita menulis hampir semua jenis teks, dari tutorial seperti ini, hingga deskripsi produk yang dihasilkan otomatis, hasil mesin pencari Bing, dan puluhan kasus penggunaan data seperti yang dijelaskan dalam lembar contekan ChatGPT untuk Data Science.
Untuk penggunaan interaktif, antarmuka web ChatGPT sangat ideal. Namun, OpenAI (perusahaan di balik ChatGPT) juga memiliki application programming interface (API) yang memungkinkan Anda berinteraksi dengan ChatGPT dan model mereka lainnya menggunakan kode.
Dalam tutorial ini, Anda akan mempelajari cara menggunakan paket Python openai untuk melakukan percakapan secara terprogram dengan ChatGPT.
Perhatikan bahwa OpenAI mengenakan biaya untuk menggunakan GPT API. (Kredit gratis kadang-kadang diberikan kepada pengguna baru, tetapi siapa yang mendapat kredit dan berapa lama penawaran ini akan berlangsung tidak transparan.) Biayanya $0,002 / 1000 token, di mana 1000 token setara dengan sekitar 750 kata. Menjalankan semua contoh dalam tutorial ini satu kali seharusnya berbiaya kurang dari 2 sen AS (tetapi jika Anda menjalankan ulang tugas, Anda akan dikenakan biaya setiap kali).
Kapan Sebaiknya Menggunakan API Alih-alih Antarmuka Web?
Aplikasi web ChatGPT adalah antarmuka yang sangat baik untuk model GPT. Namun, jika Anda ingin menyertakan AI ke dalam pipeline data atau perangkat lunak, API lebih tepat. Beberapa kemungkinan kasus penggunaan untuk praktisi data mencakup:
- Mengambil data dari basis data atau API lain, lalu meminta GPT merangkumnya atau menghasilkan laporan tentangnya
- Menyematkan fungsionalitas GPT dalam dasbor untuk secara otomatis memberikan ringkasan teks atas hasil
- Menyediakan antarmuka bahasa alami ke data mart Anda
- Melakukan riset dengan menarik makalah jurnal melalui paket scholarly (PyPI, Conda), dan meminta GPT merangkum hasilnya
Menyiapkan Akun Pengembang OpenAI
Untuk menggunakan API, Anda perlu membuat akun pengembang di OpenAI. Anda perlu menyiapkan alamat email, nomor telepon, dan detail kartu debit atau kredit Anda.
Ikuti langkah-langkah berikut:
- Buka halaman pendaftaran API.
- Buat akun Anda (Anda perlu memberikan alamat email dan nomor telepon).
- Buka halaman API keys.
- Buat secret key baru.
- Simpan salinan kunci ini. (Jika Anda kehilangannya, hapus kunci tersebut dan buat yang baru.)
- Buka halaman Payment Methods.
- Klik 'Add payment method' dan isi detail kartu Anda.
Menyimpan Kredensial Akun Anda dengan Aman
Secret key harus dijaga kerahasiaannya! Jika tidak, orang lain dapat menggunakannya untuk mengakses API, dan Anda yang akan menanggung biayanya. Langkah-langkah berikut menjelaskan cara menyimpan kunci Anda dengan aman di DataLab, notebook data bertenaga AI milik DataCamp. Jika Anda menggunakan platform lain, silakan periksa dokumentasi untuk platform tersebut. Anda juga dapat meminta saran kepada ChatGPT. Berikut prompt yang disarankan:
> Anda adalah pakar keamanan TI. Anda berbicara kepada seorang data scientist. Jelaskan praktik terbaik untuk menyimpan private key yang digunakan untuk akses API secara aman.
- Di workbook DataLab Anda, klik "Environment"
- Klik tanda plus di samping "Environment"
- Di kolom "Name", ketik "OPENAI". Di kolom "Value", tempelkan secret key Anda
- Berikan nama untuk sekumpulan variabel lingkungan (bebas, apa saja)
- Klik "Create", dan hubungkan integrasi baru tersebut
Menyiapkan Python
Untuk menggunakan GPT melalui API, Anda perlu mengimpor paket Python os dan openai.
Jika Anda menggunakan solusi Jupyter Notebook (seperti DataLab), akan berguna juga mengimpor beberapa fungsi dari IPython.display.
Salah satu contoh juga menggunakan paket yfinance untuk mengambil harga saham.
# Import the os package
import os
# Import the openai package
import openai
# From the IPython.display package, import display and Markdown
from IPython.display import display, Markdown
# Import yfinance as yf
import yfinance as yf
Tugas penyiapan lainnya adalah menempatkan variabel lingkungan yang baru saja Anda buat di lokasi yang dapat dilihat oleh paket openai.
# Set openai.api_key to the OPENAI environment variable
openai.api_key = os.environ["OPENAI"]
Pola Kode untuk Memanggil GPT melalui API
Pola kode untuk memanggil OpenAI API dan mendapatkan respons chat adalah sebagai berikut:
response = openai.ChatCompletion.create(
model="MODEL_NAME",
messages=[{"role": "system", "content": 'SPECIFY HOW THE AI ASSISTANT SHOULD BEHAVE'},
{"role": "user", "content": 'SPECIFY WANT YOU WANT THE AI ASSISTANT TO SAY'}
])
Ada beberapa hal yang perlu dibahas di sini.
Nama model OpenAI API untuk GPT
Nama model tercantum di halaman Model Overview pada dokumentasi pengembang. Dalam tutorial ini, Anda akan menggunakan gpt-3.5-turbo, yaitu model terbaru yang digunakan oleh ChatGPT dan memiliki akses API publik. (Ketika tersedia secara luas, Anda akan ingin beralih ke gpt-4.)
Tipe pesan GPT pada OpenAI API
Ada tiga tipe pesan yang didokumentasikan dalam dokumentasi Introduction to the Chat:
- Pesan
systemmenggambarkan perilaku asisten AI. Pesan sistem yang berguna untuk kasus penggunaan data science adalah "You are a helpful assistant who understands data science." - Pesan
usermenjelaskan apa yang Anda ingin asisten AI katakan. Kita akan membahas contoh pesan pengguna sepanjang tutorial ini - Pesan
assistantmenggambarkan respons sebelumnya dalam percakapan. Kita akan membahas cara melakukan percakapan interaktif pada tugas-tugas selanjutnya
Pesan pertama sebaiknya berupa pesan sistem. Pesan tambahan harus bergantian antara pengguna dan asisten.
Percakapan Pertama Anda: Menghasilkan Dataset
Menghasilkan dataset contoh berguna untuk menguji kode Anda terhadap berbagai skenario data atau untuk mendemonstrasikan kode kepada orang lain. Untuk mendapatkan respons yang berguna dari GPT, Anda perlu presisi dan menentukan detail dataset Anda, termasuk:
- jumlah baris dan kolom
- nama kolom
- deskripsi tentang isi setiap kolom
- format keluaran dataset
Berikut contoh pesan pengguna untuk membuat dataset.
Create a small dataset about total sales over the last year.
The format of the dataset should be a data frame with 12 rows and 2 columns.
The columns should be called "month" and "total_sales_usd".
The "month" column should contain the shortened forms of month names
from "Jan" to "Dec". The "total_sales_usd" column should
contain random numeric values taken from a normal distribution
with mean 100000 and standard deviation 5000. Provide Python code to
generate the dataset, then provide the output in the format of a markdown table.
Mari sertakan pesan ini dalam pola kode sebelumnya.
# Define the system message
system_msg = 'You are a helpful assistant who understands data science.'
# Define the user message
user_msg = 'Create a small dataset about total sales over the last year. The format of the dataset should be a data frame with 12 rows and 2 columns. The columns should be called "month" and "total_sales_usd". The "month" column should contain the shortened forms of month names from "Jan" to "Dec". The "total_sales_usd" column should contain random numeric values taken from a normal distribution with mean 100000 and standard deviation 5000. Provide Python code to generate the dataset, then provide the output in the format of a markdown table.'
# Create a dataset using GPT
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
messages=[{"role": "system", "content": system_msg},
{"role": "user", "content": user_msg}])
Periksa apakah respons dari GPT OK
Panggilan API itu "berisiko" karena masalah dapat terjadi di luar notebook Anda, seperti masalah konektivitas internet, atau masalah dengan server yang mengirimkan data, atau karena Anda kehabisan kredit API. Anda harus memeriksa bahwa respons yang Anda dapatkan OK.
Model GPT mengembalikan kode status dengan salah satu dari empat nilai, yang didokumentasikan dalam bagian Response format pada dokumentasi Chat.
stop: API mengembalikan keluaran model yang lengkaplength: Keluaran model tidak lengkap karena parameter max_tokens atau batas tokencontent_filter: Konten dihilangkan karena ditandai oleh filter konten kaminull: Respons API masih berlangsung atau tidak lengkap
GPT API mengirimkan data ke Python dalam format JSON, sehingga variabel respons berisi daftar dan kamus yang bertingkat dalam. Cukup merepotkan untuk dikerjakan!
Untuk variabel respons bernama response, kode status disimpan di lokasi berikut.
response["choices"][0]["finish_reason"]
Ekstrak pesan asisten AI
Tersembunyi di dalam variabel respons adalah teks yang kita minta GPT untuk hasilkan. Untungnya, selalu berada di tempat yang sama.
response["choices"][0]["message"]["content"]
Konten respons dapat dicetak seperti biasa dengan print(content), tetapi itu adalah konten Markdown, yang dapat dirender oleh Jupyter notebook melalui display(Markdown(content))
Here's the Python code to generate the dataset:
import numpy as np
import pandas as pd
# Set random seed for reproducibility
np.random.seed(42)
# Generate random sales data
sales_data = np.random.normal(loc=100000, scale=5000, size=12)
# Create month abbreviation list
month_abbr = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
# Create dataframe
sales_df = pd.DataFrame({'month': month_abbr, 'total_sales_usd': sales_data})
# Print dataframe
print(sales_df)
And here's the output in markdown format:
| month | total_sales_usd |
|-------|----------------|
| Jan | 98728.961189 |
| Feb | 106931.030292 |
| Mar | 101599.514152 |
| Apr | 97644.534384 |
| May | 103013.191014 |
| Jun | 102781.514665 |
| Jul | 100157.741173 |
| Aug | 104849.281004 |
| Sep | 100007.081991 |
| Oct | 94080.272682 |
| Nov | 96240.993328 |
| Dec | 104719.371461 |
Gunakan Fungsi Helper untuk memanggil GPT
Anda perlu menulis banyak kode boilerplate berulang untuk melakukan tiga hal sederhana ini. Memiliki fungsi pembungkus untuk mengabstraksi bagian yang membosankan akan berguna. Dengan begitu, kita bisa fokus pada kasus penggunaan data science.
Semoga, OpenAI akan meningkatkan antarmuka paket Python mereka sehingga hal semacam ini menjadi bawaan. Sementara itu, silakan gunakan ini dalam kode Anda sendiri.
Fungsi ini menerima dua argumen.
system: String yang berisi pesan sistem.user_assistant: Array string yang bergantian antara pesan pengguna lalu pesan asisten.
Nilai kembalian adalah konten yang dihasilkan.
def chat(system, user_assistant):
assert isinstance(system, str), "`system` should be a string"
assert isinstance(user_assistant, list), "`user_assistant` should be a list"
system_msg = [{"role": "system", "content": system}]
user_assistant_msgs = [
{"role": "assistant", "content": user_assistant[i]} if i % 2 else {"role": "user", "content": user_assistant[i]}
for i in range(len(user_assistant))]
msgs = system_msg + user_assistant_msgs
response = openai.ChatCompletion.create(model="gpt-3.5-turbo",
messages=msgs)
status_code = response["choices"][0]["finish_reason"]
assert status_code == "stop", f"The status code was {status_code}."
return response["choices"][0]["message"]["content"]
Contoh penggunaan fungsi ini adalah
response_fn_test = chat("You are a machine learning expert.",["Explain what a neural network is."])
display(Markdown(response_fn_test))
A neural network is a type of machine learning model that is inspired by the architecture of the human brain. It consists of layers of interconnected processing units, called neurons, that work together to process and analyze data.
Each neuron receives input from other neurons or from external sources, processes that input using a mathematical function, and then produces an output that is passed on to other neurons in the network.
The structure and behavior of a neural network can be adjusted by changing the weights and biases of the connections between neurons. During the training process, the network learns to recognize patterns and make predictions based on the input it receives.
Neural networks are often used for tasks such as image classification, speech recognition, and natural language processing, and have been shown to be highly effective at solving complex problems that are difficult to solve with traditional rule-based programming methods.
Menggunakan Kembali Respons dari Asisten AI
Dalam banyak situasi, Anda akan ingin membentuk percakapan yang lebih panjang dengan AI. Artinya, Anda mengirim prompt ke GPT, mendapatkan respons, dan mengirim prompt lain untuk melanjutkan chat. Dalam hal ini, Anda perlu menyertakan respons sebelumnya dari GPT dalam pemanggilan API kedua, agar GPT memiliki konteks lengkap. Ini akan meningkatkan akurasi respons dan meningkatkan konsistensi sepanjang percakapan.
Untuk menggunakan kembali pesan GPT, Anda mengambilnya dari respons, lalu meneruskannya ke pemanggilan chat yang baru.
Contoh: Menganalisis dataset sampel
Mari coba menghitung mean dari kolom penjualan pada dataset yang sebelumnya dihasilkan. Perhatikan bahwa karena kita tidak menggunakan fungsi chat() pada saat pertama, kita harus menggunakan kode subset yang lebih panjang untuk mengambil teks respons sebelumnya. Jika Anda menggunakan chat(), kodenya lebih sederhana.
# Assign the content from the response in Task 1 to assistant_msg
assistant_msg = response["choices"][0]["message"]["content"]
# Define a new user message
user_msg2 = 'Using the dataset you just created, write code to calculate the mean of the `total_sales_usd` column. Also include the result of the calculation.'
# Create an array of user and assistant messages
user_assistant_msgs = [user_msg, assistant_msg, user_msg2]
# Get GPT to perform the request
response_calc = chat(system_msg, user_assistant_msgs)
# Display the generated content
display(Markdown(response_calc))
Sure! Here's the code to calculate the mean of the `total_sales_usd` column:
```python
mean_sales = sales_df['total_sales_usd'].mean()
print("Mean sales: $", round(mean_sales, 2))
```
And here's the output of this code:
```
Mean sales: $ 100077.57
```
Therefore, the mean of total sales over the last year is about $100,077.57.
Menggunakan GPT dalam Pipeline
Keunggulan besar menggunakan API dibandingkan antarmuka web adalah Anda dapat mengombinasikan GPT dengan API lainnya. Mengambil data dari satu atau lebih sumber, lalu menerapkan AI padanya adalah alur kerja yang kuat.
Menerapkan AI GPT pada data cuaca
Di sini, kita akan mengambil prakiraan cuaca dengan paket weather2 (PyPI) dan menggunakan GPT untuk menghasilkan ide aktivitas.
# Import the weather2 package
import weather
# Get the forecast for Miami
location = "Miami"
forecast = weather.forecast(location)
# Pull out forecast data for midday tomorrow
fcast = forecast.tomorrow["12:00"]
# Create a prompt
user_msg_weather = f"In {location} at midday tomorrow, the temperature is forecast to be {fcast.temp}, the wind speed is forecast to be {fcast.wind.speed} m/s, and the amount of precipitation is forecast to be {fcast.precip}. Make a list of suitable leisure activities."
# Call GPT
response_activities = chat("You are a travel guide.", [user_msg_weather])
display(Markdown(response_activities))
With mild temperatures and calm winds, Miami is the perfect place for leisure activities. Here are some suggestions:
1. Visit Miami's beaches and soak up some sun or take a dip in the ocean!
2. Explore Miami's art scene with a visit to the Perez Art Museum Miami or the Wynwood Walls.
3. Take a stroll along the famous Ocean Drive and enjoy the colorful Art Deco architecture.
4. Head to Little Havana to experience the Cuban culture and delicious cuisine.
5. Enjoy a scenic walk or bike ride through one of Miami's many parks, such as Bayfront Park or South Pointe Park.
6. Visit the Miami Seaquarium and see some incredible marine life up close.
7. Take a boat tour to see the stunning Miami skyline from the water.
8. Shopping enthusiasts can explore the many high-end boutiques and outdoor shopping malls, such as Lincoln Road Mall.
9. Foodies can venture to one of the many food festivals happening throughout the year.
10. Finally, there are plenty of nightclubs and live music venues to keep the night going.
Bagus! Sebagian dari diri saya berharap saya berada di Miami besok!
Naik ke Level Berikutnya
Anda dapat mempelajari lebih lanjut tentang penggunaan GPT di kursus Introduction to ChatGPT. (Kursus lengkap tentang bekerja dengan OpenAI API akan segera hadir!)
Sebagai referensi atas apa yang baru saja Anda pelajari, ambil salinan Lembar Contekan OpenAI API di Python atau tonton rekaman pelatihan langsung Getting Started with the OpenAI API and ChatGPT.
Jika Anda tertarik pada transkripsi text-to-speech, baca tutorial Mengonversi Ucapan ke Teks dengan OpenAI Whisper API.
