Memecahkan masalah dengan Gemini CodeLab

Memecahkan masalah dengan Gemini CodeLab

Tentang codelab ini

subjectTerakhir diperbarui Apr 30, 2024
account_circleDitulis oleh Leonid Yankulin

1. Pengantar

Di lab ini, Anda akan menggunakan Gemini, kolaborator berteknologi AI di Google Cloud, untuk memecahkan masalah terkait deployment Cloud Function dengan menganalisis log error, mengidentifikasi akar masalah, dan menemukan cara memperbaikinya.

Yang akan Anda lakukan ...

  • Anda akan menggunakan Terminal Cloud Shell dan gcloud CLI untuk menyiapkan lingkungan, termasuk mengaktifkan Google API yang relevan dan membuat Cloud Function dari kode yang disediakan
  • Anda akan menggunakan perangkuman log Cloud Logging untuk membuat ringkasan log agar dapat memahami informasi yang direkam.
  • Anda akan melakukan percakapan dengan Gemini untuk mendapatkan bantuan Gemini dalam memecahkan masalah dan menyelesaikan masalah.

Yang akan Anda pelajari ...

  • Cara menggunakan Gemini dengan Kemampuan Observasi Google Cloud dan untuk pemecahan masalah.
  • Cara menemukan dan memahami log Cloud Function dengan bantuan Gemini.

Yang akan Anda butuhkan ...

  • Browser web Chrome
  • Project Google Cloud yang mengaktifkan penagihan
  • Akun Google dengan izin akses ke project yang memungkinkan Anda mengaktifkan API dan memanipulasi resource

Lab ini ditujukan bagi engineer DevOps dan platform serta developer software di semua level, termasuk para pemula. Fokus kami adalah mendapatkan pengalaman langsung dengan kemampuan Gemini dalam memecahkan masalah.

2. Penyiapan

Bagian ini membahas semua hal yang perlu Anda lakukan untuk memulai lab ini.

Mengonfigurasi lingkungan

1. Login ke Konsol Cloud dengan membuka https://console.cloud.google.com.

2. Pilih project Google Cloud yang akan digunakan untuk lab ini.

22170459a4f3ba59.pngS

3. Buka halaman Cloud Functions di Console. Anda dapat melakukannya dengan memilih Cloud Functions dari menu navigasi (ikon kiri atas ⋮ di jendela Konsol).

9d27c844c16ad3e4.pngS

Atau, Anda dapat menelusuri "cloud functions" di area penelusuran konsol:

35f23e52875b26cd.pngS

Klik tombol Create Function di atas daftar fungsi 34b5e7e36f4e48e9.pngS

Jika Anda tidak pernah menggunakan Cloud Functions dalam project ini sebelumnya, Anda akan diminta untuk mengaktifkan Google API agar dapat berfungsi.

5b7978521d6f56f7.pngS

Klik ENABLE untuk melanjutkan.

4. Tentukan properti dasar Cloud Function baru.

  • Setel namanya menjadi "codelab-cf"
  • Pilih opsi Allow unauthenticated invocations

6a2aaf9bedd161d9.pngS

Untuk menyelesaikan langkah ini, klik tombol BERIKUTNYA di area kiri bawah jendela:

f4e76470dbdf6854.png

Setelah mengklik NEXT, Anda mungkin diminta untuk mengaktifkan Google API tambahan. Seperti di langkah 4, klik AKTIFKAN.

1ad7bf15c07eda49.pngS

Menyiapkan runtime dan kode Cloud Function

CodeLab ini menggunakan Python sebagai bahasa pemrograman. Jangan khawatir jika Anda tidak terbiasa dengan Python. Untuk menyelesaikan CodeLab ini, Anda tidak memerlukan pengetahuan tentang Python.

5. Pilih Python 3.11 sebagai Runtime fungsi

9a3cd8bf272b4d02.pngS

Perhatikan bahwa perubahan runtime akan mengubah kode sumber yang ditampilkan di Inline Editor.

6. Salin kode di bawah ke dalam Inline Editor untuk mengubah contoh panduan memulai yang dibuat secara otomatis.

from google.cloud import storage
import json
import re

client = storage.Client()

def get_object_list(request):
   
if request.args and 'path' in request.args:
       
path = request.args['path']
   
else:
       
return '{}'
   
parsed = re.search('gs:\/\/([a-zA-Z0-9_-]{3,63})\/([-a-zA-Z0-9_\+.\/]*)', path)
   
bucket, prefix = parsed.group(1), parsed.group(2)
   
blobs = client.list_blobs(bucket, prefix=prefix, delimiter='/')
   
objects = []
   
if (blobs):
       
for blob in blobs:
           
objects.append(blob.name)
   
return json.dumps(objects)

Kode ini membaca atribut path dari permintaan GET, mengurai jalur untuk mengambil nama bucket, dan memanggil Google Cloud Storage API untuk mendapatkan daftar objek yang disimpan di jalur ini. Fungsi (get_object_list) menerima permintaan yang merupakan objek Flask sebagai argumen input dan menampilkan nama objek sebagai array JSON.

7. Pilih file requirements.txt dari daftar file yang tersisa di Inline Editor. Ganti daftar dependensi saat ini dengan yang baru dengan menyalin kode di bawah ini ke dalam Inline Editor.

google-cloud-storage

8. Untuk men-deploy Cloud Function, klik DEPLOY di kiri bawah.

17c4828702a32cd9.pngS

Anda mungkin perlu menunggu beberapa menit sampai proses deployment selesai. Jika telah mengikuti petunjuk penyiapan dengan cermat, Anda akan melihat deployment yang dilaporkan sebagai gagal.

3. Menemukan dan menyelesaikan masalah

Di bagian ini, Anda akan menggunakan fitur Penjelasan log dan bantuan Gemini lainnya untuk mengidentifikasi masalah dan cara menyelesaikannya.

1. Deployment gagal. Anda akan melihat pesan error yang memberi tahu tentang hal ini, beserta informasi tambahan dan opsi untuk melihat log deployment. Klik VIEW LOGS untuk melihat log deployment.

bc62db6ef3b35420.png

PERHATIKAN bahwa log deployment akan dibuka di tab terpisah pada browser yang sama. Anda harus berpindah-pindah tab untuk menyelesaikan CodeLab ini.

CATATAN bahwa Anda mungkin tidak melihat baris log saat mengklik VIEW LOGS atau hanya melihat beberapa baris. Dalam peristiwa tersebut, gunakan pemilih rentang waktu di panel kueri Log explorer dan pilih Last 30 minutes.

e24856920201ebf8.png

2. Tinjau log di tab yang terbuka. Perhatikan bahwa ringkasan log terlihat seperti beberapa baris dari callstack pengecualian. Hal ini karena Cloud Function menangkap teks yang dicetak ke stdout atau stderr dan menulis setiap baris sebagai entri log terpisah. Baris log lain meringkas informasi tentang kode error keluar serta informasi tambahan yang dilaporkan oleh Cloud Functions dan Cloud Run API.

b49e41594173b57c.png

Anda dapat mengklik salah satu baris untuk melihat informasi lebih lanjut tentang log tertentu. Log yang diperluas memiliki elemen UI tambahan yang dapat diklik sehingga Anda dapat menyalin semua informasi tentang log, meluaskan semua kolom untuk menampilkan semua data entri log, dan menjelaskan entri log menggunakan Gemini.

4. Pengecualian callstack tidak terlalu informatif. Periksa log untuk menemukan akhir log pelacakan tumpukan pengecualian. Ini adalah baris yang bertuliskan "Container called exit(1)". Ringkasan log berikut menyatakan:

functions_framework.exceptions.MissingTargetException: File /workspace/main.py is expected to contain...

Sepertinya kandidat yang bagus untuk penyelidikan. Klik baris ini untuk meluaskan entri log. Lalu, klik "Explain this log entry" untuk melihat informasi tambahan tentang log yang dipilih.

b815de46d1b4597c.png

Jika Gemini belum pernah digunakan dalam project ini, Anda akan diminta untuk mengaktifkan API yang diperlukan. Jika Anda diminta untuk mengaktifkan API, klik AKTIFKAN untuk melanjutkan.

7ca90e087a2e99d1.pngS

PERHATIKAN bahwa terkadang Anda mungkin mendapatkan error saat meminta Gemini. Pada peristiwa seperti itu, ulangi perintah Anda sekali lagi untuk mendapatkan respons. Misalnya, klik "Explain this log entry" tombol lagi.

5. Tinjau penjelasan yang diberikan oleh Gemini. Jika penjelasan yang diberikan tidak memadai atau tidak jelas, minta Gemini untuk memberikan informasi lebih lanjut dengan menggunakan salah satu perintah berikut atau membuat pertanyaan Anda sendiri

Dapatkah Anda memberikan informasi lebih lanjut tentang log ini?
Dapatkah Anda memberikan informasi lebih lanjut tentang error tersebut?

6. Lalu, minta saran kepada Gemini untuk menyelesaikan masalah. Misalnya, minta bantuan Gemini

Bagaimana cara mengatasi masalah ini?
Sarankan solusi untuk mengatasi error ini
Sarankan cara untuk memperbaiki error ini

Respons Gemini dapat bervariasi bergantung pada konteks saat ini serta susunan kata dan format perintah Anda. Gemini diharapkan akan merekomendasikan untuk memastikan bahwa kode sumber Cloud Function memiliki fungsi dengan nama hello_http.

7. Saat ini Anda melihat tab yang menunjukkan log Cloud Functions. Pilih tab sebelumnya yang menampilkan halaman deployment Cloud Function yang berisi error, lalu klik EDIT.

c3d9b207214a2240.png

8. Pastikan autentikasi masih ditetapkan ke Allow unauthenticated invocations dan perbarui pilihan jika perlu.

6a2aaf9bedd161d9.pngS

9. Klik BERIKUTNYA di bagian bawah untuk melihat Editor Inline. Ikuti rekomendasi Gemini dan ubah nama fungsi dari get_order_list menjadi hello_http.

Setelah menyelesaikan edit, klik DEPLOY.

Anda mungkin perlu menunggu beberapa menit sampai proses deployment selesai. Konfirmasi bahwa deployment berhasil diselesaikan dan tidak ada pesan error yang muncul.

CATATAN bahwa Console dapat terus menampilkan pesan error terakhir hingga proses deployment selesai.

10. Pastikan Cloud Function beroperasi dengan mengirim permintaan HTTPS berikut menggunakan curl. Anda dapat menggunakan Cloud Shell atau melakukannya dari terminal mana pun yang telah menginstal CLI curl dan gcloud, yang menjalankan perintah berikut dari Terminal Cloud Shell.

curl -m 70 -X GET \
https
://us-central1-${GOOGLE_CLOUD_PROJECT}.cloudfunctions.net/\
codelab
-cf?path=gs://cloud-samples-data/generative-ai/image/ \
-H "Authorization: bearer $(gcloud auth print-identity-token)"

PERHATIKAN bahwa untuk menjalankan perintah ini dari terminal, Anda harus melakukan autentikasi menggunakan gcloud CLI dan menetapkan nilai project ID ke variabel lingkungan GOOGLE_CLOUD_PROJECT.

Bonus

Nama fungsi hello_http ditentukan sebagai titik entri default untuk Cloud Function yang dipicu HTTP saat runtime Python dipilih. Solusi alternatifnya adalah dengan tetap menyimpan get_order_list sebagai nama fungsi dalam kode sumber dan memperbarui kolom titik entri Cloud Function yang terletak di atas Inline Editor di sebelah kanan dari kolom Runtime:

9a3cd8bf272b4d02.pngS

Mengubah titik entri dari hello_http menjadi get_order_list akan menyelesaikan masalah deployment.

4. Pembersihan

Untuk membersihkannya, Anda dapat mematikan project atau menghapus instance Cloud Function. Anda dapat menghapus Cloud Functions menggunakan Konsol atau dengan perintah CLI seperti di bawah ini:

gcloud functions delete codelab-cf --region=us-central1

5. Selamat!

Selamat! Anda telah berhasil menggunakan Gemini untuk memecahkan masalah dan menyelesaikan masalah terkait aplikasi Anda. Anda sekarang memahami bagaimana Gemini dapat membantu memahami log dan mendapatkan jawaban atas pertanyaan terkait Google Cloud.

Dokumen referensi ...