Tutorial ini menjelaskan cara menggunakan Library Klien Google API untuk Python untuk memanggil AI Platform Prediction REST API di aplikasi Python Anda. Cuplikan dan contoh kode di bagian lainnya dalam dokumentasi ini menggunakan library klien Python ini.
Anda akan membuat model di project Google Cloud dalam tutorial ini. Itu adalah tugas sederhana yang mudah dimuat ke sebuah contoh kecil.
Tujuan
Ini adalah tutorial dasar yang dirancang untuk memahami library klien Python ini. Setelah menyelesaikannya, Anda seharusnya sudah bisa:- Mendapatkan representasi Python dari layanan AI Platform Prediction.
- Gunakan representasi tersebut untuk membuat model dalam project Anda, yang akan membantu Anda memahami cara memanggil API pengelolaan tugas dan model lainnya.
Biaya
Anda tidak akan dikenai biaya untuk pengoperasian dalam tutorial ini. Lihat halaman harga untuk mengetahui informasi selengkapnya.Sebelum memulai
Menyiapkan project GCP
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction and Compute Engine.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
-
Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.
-
Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.
-
Aktifkan API AI Platform Training & Prediction and Compute Engine.
- Menginstal Google Cloud CLI.
-
Untuk initialize gcloud CLI, jalankan perintah berikut:
gcloud init
Menyiapkan autentikasi
Untuk menyiapkan autentikasi, Anda harus membuat kunci akun layanan dan menetapkan variabel lingkungan untuk jalur file ke kunci akun layanan.
-
Buat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
- Di kolom Nama akun layanan, masukkan nama.
- Opsional: Di kolom Deskripsi akun layanan, masukkan deskripsi.
- Klik Create.
- Klik kolom Pilih peran. Di bagian Semua peran, pilih AI Platform > AI Platform Admin.
- Klik Add another role.
-
Klik kolom Pilih peran. Di bagian All roles, pilih Storage > Storage Object Admin.
-
Klik Selesai untuk membuat akun layanan.
Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.
-
-
Membuat kunci akun layanan untuk autentikasi:
- Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
- Klik Kunci.
- Klik Tambahkan kunci, lalu Buat kunci baru.
- Klik Create. File kunci JSON akan didownload ke komputer Anda.
- Klik Close.
-
Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kunci akun layanan Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali.
Menyiapkan lingkungan pengembangan Python
Pilih salah satu opsi di bawah ini untuk menyiapkan lingkungan Anda secara lokal di macOS atau di lingkungan jarak jauh di Cloud Shell.
Untuk pengguna macOS, sebaiknya siapkan lingkungan Anda menggunakan tab MACOS di bawah. Cloud Shell, yang ditampilkan di tab CLOUD SHELL, tersedia di macOS, Linux, dan Windows. Cloud Shell menyediakan cara cepat untuk mencoba AI Platform Prediction, tetapi tidak cocok untuk pekerjaan pengembangan yang sedang berlangsung.
macOS
-
Periksa penginstalan Python
Pastikan Anda telah menginstal Python dan, jika perlu, menginstalnya.python -V
-
Periksa penginstalan
pip
pip
adalah pengelola paket Python, yang disertakan dengan versi Python saat ini. Periksa apakah Anda sudah menginstalpip
dengan menjalankanpip --version
. Jika belum, lihat cara menginstalpip
.Anda dapat mengupgrade
pip
menggunakan perintah berikut:pip install -U pip
Lihat dokumentasi pip untuk mengetahui detail selengkapnya.
-
Menginstal
virtualenv
virtualenv
adalah alat untuk membuat lingkungan Python yang terisolasi. Periksa apakah Anda sudah menginstalvirtualenv
dengan menjalankanvirtualenv --version
. Jika belum, instalvirtualenv
:pip install --user --upgrade virtualenv
Guna membuat lingkungan pengembangan yang terisolasi untuk panduan ini, buat lingkungan virtual baru di
virtualenv
. Misalnya, perintah berikut mengaktifkan lingkungan bernamaaip-env
:virtualenv aip-env source aip-env/bin/activate
-
Untuk tujuan tutorial ini, jalankan perintah lainnya dalam lingkungan virtual Anda.
Lihat informasi selengkapnya tentang penggunaanvirtualenv
. Untuk keluar darivirtualenv
, jalankandeactivate
.
Cloud Shell
-
Buka konsol Google Cloud.
-
Klik tombol Activate Google Cloud Shell di bagian atas jendela konsol.
Sesi Cloud Shell akan terbuka di dalam frame baru di bagian bawah konsol dan menampilkan perintah command line. Perlu waktu beberapa detik hingga sesi shell diinisialisasi.
Sesi Cloud Shell Anda siap digunakan.
-
Konfigurasikan alat command line
gcloud
untuk menggunakan project yang Anda pilih.gcloud config set project [selected-project-id]
dengan
[selected-project-id]
sebagai project ID Anda. (Hilangkan tanda kurung penutup.)
Menginstal Library Klien Google API untuk Python
Instal Library Klien Google API untuk Python.
- Mendapatkan representasi Python dari layanan AI Platform Prediction.
- Gunakan representasi tersebut untuk membuat model dalam project Anda, yang akan membantu Anda memahami cara memanggil API pengelolaan tugas dan model lainnya.
Mengimpor modul yang diperlukan
Jika ingin menggunakan Library Klien Google API untuk Python guna memanggil AI Platform Prediction REST API dalam kode, Anda harus mengimpor paketnya dan paket OAuth2. Untuk tutorial ini (dan untuk sebagian besar penggunaan standar AI Platform Prediction), Anda hanya perlu mengimpor modul tertentu:
GoogleCredentials
dari OAuth2discovery
dari Library Klien Google API untuk Python.errors
dari Library Klien Google API untuk Python
Lihat dokumentasi paket tersebut untuk mempelajari modul lain yang tersedia.
Buat file Python baru menggunakan editor favorit Anda, lalu tambahkan baris berikut:
from oauth2client.client import GoogleCredentials from googleapiclient import discovery from googleapiclient import errors
Membuat representasi API Python
Dapatkan representasi Python dari REST API. Metode yang Anda panggil adalah build
karena library klien API menggunakan penemuan layanan untuk menyiapkan koneksi secara dinamis ke layanan saat Anda melakukan panggilan. Panggil objek Anda yang mengenkapsulasi ml
layanan:
ml = discovery.build('ml','v1')
Mengonfigurasi parameter dan isi permintaan Anda
Untuk melakukan panggilan ke layanan, Anda harus membuat parameter dan isi permintaan yang akan diteruskan ke REST API. Anda meneruskan parameter sebagai parameter Python reguler ke metode yang mewakili panggilan. Isinya adalah resource JSON seperti yang akan Anda gunakan jika memanggil API dengan permintaan HTTP secara langsung.
Lihat REST API untuk membuat model di tab browser baru, projects.models.create:
Perhatikan parameter jalur
parent
, yang merupakan bagian dari URI permintaan yang mengidentifikasi project. Jika Anda membuat permintaan POST HTTP secara langsung, gunakan URI berikut:https://ml.googleapis.com/v1/projects/YOUR_PROJECT_ID/models
Saat menggunakan library klien API, bagian variabel URI direpresentasikan sebagai parameter berjenis string ke panggilan API. Anda akan menetapkannya ke
'projects/<var>YOUR_PROJECT_ID</var>'
. Simpan project Anda dalam variabel untuk membuat panggilan API lebih bersih:project_id = 'projects/{}'.format('YOUR_PROJECT_ID')
Isi permintaan adalah resource JSON yang mewakili informasi model. Dalam definisi resource model, Anda dapat melihat bahwa model ini memiliki dua nilai untuk input: name dan description (opsional). Anda dapat meneruskan kamus Python sebagai pengganti JSON dan library klien API akan melakukan konversi yang diperlukan.
Buat kamus Python:
request_dict = {'name': 'your-model-name', 'description': 'This is a machine learning model entry.'}
Membuat permintaan Anda
Melakukan panggilan ke API dengan library klien Python memiliki dua langkah: pertama, buat permintaan, lalu buat panggilan menggunakan permintaan tersebut.
Membuat permintaan
Gunakan objek klien yang di-build yang Anda buat sebelumnya (jika Anda mengikuti cuplikan
kode dengan tepat, ini disebut ml
) sebagai root hierarki API dan
tentukan API yang ingin Anda gunakan. Setiap koleksi di jalur API berperilaku seperti fungsi yang menampilkan daftar koleksi dan metode di dalamnya. Misalnya, root dari semua AI Platform Prediction API adalah projects
, sehingga panggilan Anda dimulai dengan ml.projects()
.
Gunakan kode ini untuk membuat permintaan Anda:
request = ml.projects().models().create(parent=project_id, body=request_dict)
Mengirim permintaan
Permintaan yang Anda buat pada langkah terakhir mengekspos metode execute
yang Anda panggil untuk mengirim permintaan ke layanan:
response = request.execute()
Langkah ini umum dilakukan developer untuk menggabungkan langkah ini dengan langkah terakhir:
response = ml.projects().models().create(parent=project_id, body=request_dict).execute()
Menangani error sederhana
Banyak masalah yang bisa terjadi saat Anda melakukan panggilan API melalui Internet. Menangani kesalahan umum
adalah ide yang baik. Cara paling sederhana untuk menangani error adalah dengan
memasukkan permintaan Anda dalam blok try
dan menangkap kemungkinan error. Sebagian besar error
yang mungkin Anda dapatkan dari layanan ini adalah error HTTP, yang dienkapsulasi dalam
class HttpError
. Untuk menangkap error ini, Anda akan menggunakan modul
errors
dari paket googleapiclient
.
Gabungkan panggilan request.execute()
Anda dalam blok try
. Selain itu, masukkan pernyataan print
dalam blok, sehingga Anda akan mencoba mencetak respons hanya jika
panggilan berhasil:
try: response = request.execute() print(response)
Menambahkan blok catch untuk menangani error HTTP. Anda dapat menggunakan HttpError._get_reason()
untuk mendapatkan kolom teks alasan dari respons:
except errors.HttpError, err: # Something went wrong, print out some information. print('There was an error creating the model. Check the details:') print(err._get_reason())
Tentu saja, pernyataan cetak sederhana mungkin bukan pendekatan yang tepat untuk aplikasi Anda.
Menggabungkan semuanya
Berikut adalah contoh lengkapnya:
from googleapiclient import discovery from googleapiclient import errors # Store your full project ID in a variable in the format the API needs. project_id = 'projects/{}'.format('YOUR_PROJECT_ID') # Build a representation of the Cloud ML API. ml = discovery.build('ml', 'v1') # Create a dictionary with the fields from the request body. request_dict = {'name': 'your_model_name', 'description': 'your_model_description'} # Create a request to call projects.models.create. request = ml.projects().models().create( parent=project_id, body=request_dict) # Make the call. try: response = request.execute() print(response) except errors.HttpError, err: # Something went wrong, print out some information. print('There was an error creating the model. Check the details:') print(err._get_reason())
Menggeneralisasi ke metode lain
Anda dapat menggunakan prosedur yang dipelajari di sini untuk melakukan panggilan REST API lainnya. Beberapa API memerlukan resource JSON yang jauh lebih rumit daripada pembuatan model, tetapi prinsipnya sama:
Impor
googleapiclient.discovery
dangoogleapiclient.errors
.Gunakan modul discovery untuk mem-build representasi API Python.
Gunakan representasi API sebagai serangkaian objek bertingkat untuk mendapatkan API yang Anda inginkan dan membuat permintaan. Misalnya,
request = ml.projects().models().versions().delete( name='projects/myproject/models/mymodel/versions/myversion')
Panggil
request.execute()
untuk mengirim permintaan, menangani pengecualian dengan cara yang sesuai untuk aplikasi Anda.Jika ada isi respons, Anda dapat memperlakukannya seperti kamus Python untuk mendapatkan objek JSON yang ditentukan dalam referensi API. Perhatikan bahwa banyak objek dalam respons memiliki kolom yang hanya ada dalam situasi tertentu. Anda harus selalu memeriksa untuk menghindari kesalahan utama:
response = request.execute() some_value = response.get('some_key') or 'default_value'
Langkah selanjutnya
- Pelajari arsitektur referensi, diagram, dan praktik terbaik tentang Google Cloud. Lihat Cloud Architecture Center kami.
- Pelajari AI Platform Prediction API.
- Pelajari lebih lanjut cara mengelola model di ringkasan pengelolaan tugas dan model.