Menggunakan library klien Python


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

  1. 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.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  5. Menginstal Google Cloud CLI.
  6. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  7. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  8. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  9. Enable the AI Platform Training & Prediction and Compute Engine APIs.

    Enable the APIs

  10. Menginstal Google Cloud CLI.
  11. 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.

  1. Buat akun layanan:

    1. Di konsol Google Cloud, buka halaman Buat akun layanan.

      Buka Create service account

    2. Di kolom Nama akun layanan, masukkan nama.
    3. Opsional: Di kolom Deskripsi akun layanan, masukkan deskripsi.
    4. Klik Create.
    5. Klik kolom Pilih peran. Di bagian Semua peran, pilih AI Platform > AI Platform Admin.
    6. Klik Add another role.
    7. Klik kolom Pilih peran. Di bagian All roles, pilih Storage > Storage Object Admin.

    8. Klik Selesai untuk membuat akun layanan.

      Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.

  2. Membuat kunci akun layanan untuk autentikasi:

    1. Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
    2. Klik Kunci.
    3. Klik Tambahkan kunci, lalu Buat kunci baru.
    4. Klik Create. File kunci JSON akan didownload ke komputer Anda.
    5. Klik Close.
  3. 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

  1. Periksa penginstalan Python
    Pastikan Anda telah menginstal Python dan, jika perlu, menginstalnya.

    python -V
  2. Periksa penginstalan pip
    pip adalah pengelola paket Python, yang disertakan dengan versi Python saat ini. Periksa apakah Anda sudah menginstal pip dengan menjalankan pip --version. Jika belum, lihat cara menginstal pip.

    Anda dapat mengupgrade pip menggunakan perintah berikut:

    pip install -U pip

    Lihat dokumentasi pip untuk mengetahui detail selengkapnya.

  3. Menginstal virtualenv
    virtualenv adalah alat untuk membuat lingkungan Python yang terisolasi. Periksa apakah Anda sudah menginstal virtualenv dengan menjalankan virtualenv --version. Jika belum, instal virtualenv:

    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 bernama aip-env:

    virtualenv aip-env
    source aip-env/bin/activate
  4. Untuk tujuan tutorial ini, jalankan perintah lainnya dalam lingkungan virtual Anda.

    Lihat informasi selengkapnya tentang penggunaan virtualenv. Untuk keluar dari virtualenv, jalankan deactivate.

Cloud Shell

  1. Buka konsol Google Cloud.

    Google Cloud console

  2. Klik tombol Activate Google Cloud Shell di bagian atas jendela konsol.

    Mengaktifkan Google Cloud Shell

    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

    Sesi Cloud Shell Anda siap digunakan.

  3. 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.

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.
Anda tidak akan dikenai biaya untuk pengoperasian dalam tutorial ini. Lihat halaman harga untuk mengetahui informasi selengkapnya.

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:

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:

  1. Impor googleapiclient.discovery dan googleapiclient.errors.

  2. Gunakan modul discovery untuk mem-build representasi API Python.

  3. 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')
    
  4. Panggil request.execute() untuk mengirim permintaan, menangani pengecualian dengan cara yang sesuai untuk aplikasi Anda.

  5. 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