Men-deploy Aplikasi Web Genkit Node.js AI Generatif secara Otomatis dari Kontrol Versi ke Cloud Run

1. Ringkasan

Men-deploy aplikasi web untuk pertama kalinya bisa menjadi pengalaman yang menegangkan. Bahkan setelah deployment pertama, jika prosesnya terlalu rumit, Anda mungkin menghindari men-deploy versi baru aplikasi. Dengan deployment berkelanjutan, Anda dapat men-deploy perubahan aplikasi secara otomatis dengan mudah.

Dalam lab ini, Anda akan menulis aplikasi web dan mengonfigurasi Cloud Run untuk otomatis men-deploy aplikasi Anda saat perubahan dilakukan pada kode sumber aplikasi Anda. Kemudian, Anda memodifikasi aplikasi dan men-deploy-nya lagi.

Yang akan Anda pelajari

  • Menulis aplikasi web dengan Cloud Shell Editor
  • Menyimpan kode aplikasi Anda di GitHub
  • Men-deploy aplikasi Anda secara otomatis ke Cloud Run
  • Menambahkan AI generatif ke aplikasi Anda menggunakan Genkit
  • Mengelola perintah LLM menggunakan pustaka dotprompt

2. Prasyarat

  1. Jika Anda belum memiliki Akun Google, Anda harus membuat Akun Google.
    • Gunakan akun pribadi, bukan akun kantor atau sekolah. Akun kantor dan sekolah mungkin memiliki batasan yang mencegah Anda mengaktifkan API yang diperlukan untuk lab ini.
  2. Jika belum memiliki akun GitHub, Anda harus membuat akun GitHub

3. Penyiapan project

  1. Login ke Konsol Google Cloud.
  2. Aktifkan penagihan di Konsol Cloud.
    • Menyelesaikan lab ini akan dikenai biaya kurang dari $1 USD untuk resource Cloud.
    • Anda dapat mengikuti langkah-langkah di akhir lab ini untuk menghapus resource agar tidak dikenai biaya lebih lanjut.
    • Pengguna baru memenuhi syarat untuk mengikuti Uji Coba Gratis senilai$300 USD.
    • Menghadiri acara Gen AI for Devs? Kredit senilai$1 USD mungkin tersedia.
  3. Buat project baru atau pilih untuk menggunakan kembali project yang ada.
  4. Konfirmasi bahwa penagihan diaktifkan di Project saya di Penagihan Cloud
    • Jika project baru Anda bertuliskan Billing is disabled di kolom Billing account:
      1. Klik tiga titik di kolom Actions
      2. Klik Ubah penagihan
      3. Pilih akun penagihan yang ingin Anda gunakan
    • Jika Anda menghadiri acara Gen AI for Devs, akun tersebut kemungkinan akan diberi nama Google Cloud Platform Trial Billing Account

4. Buka Cloud Shell Editor

  1. Buka Cloud Shell Editor
  2. Jika terminal tidak muncul di bagian bawah layar, buka terminal:
    • Klik menu tiga garis Ikon menu tiga garis
    • Klik Terminal
    • Klik New TerminalMembuka terminal baru di Cloud Shell Editor
  3. Di terminal, tetapkan project Anda dengan perintah ini:
    • Format:
      gcloud config set project [PROJECT_ID]
      
    • Contoh:
      gcloud config set project lab-project-id-example
      
    • Jika Anda tidak ingat project ID Anda:
      • Anda dapat mencantumkan semua project ID Anda dengan:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      Menetapkan project ID di terminal Cloud Shell Editor
  4. Jika diminta untuk memberikan otorisasi, klik Authorize untuk melanjutkan. Klik untuk memberikan otorisasi pada Cloud Shell
  5. Anda akan melihat pesan ini:
    Updated property [core/project].
    
    Jika Anda melihat WARNING dan diminta Do you want to continue (Y/N)?, berarti Anda kemungkinan telah memasukkan ID project dengan salah. Tekan N, tekan Enter, lalu coba jalankan perintah gcloud config set project lagi.

5. Mengaktifkan API

Di terminal, aktifkan API:

gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  aiplatform.googleapis.com

Pemrosesan perintah ini mungkin membutuhkan waktu beberapa menit, tetapi pada akhirnya akan menghasilkan pesan keberhasilan yang mirip dengan yang berikut:

Operation "operations/acf.p2-73d90d00-47ee-447a-b600" finished successfully.

6. Mengonfigurasi Git

  1. Tetapkan email pengguna git global Anda:
    git config --global user.email "you@example.com"
    
  2. Tetapkan nama pengguna git global Anda:
    git config --global user.name "Your Name"
    
  3. Tetapkan cabang default git global Anda ke main:
    git config --global init.defaultBranch main
    

7. Tuliskan kode Anda

Untuk menulis aplikasi di Node.js:

  1. Buka direktori utama:
    cd ~
    
  2. Buat direktori codelab-genai:
    mkdir codelab-genai
    
  3. Buka direktori codelab-genai:
    cd codelab-genai
    
  4. Buat file index.js:
    touch index.js
    
  5. Buat file package.json:
    npm init es6 -y
    
  6. Tambahkan express sebagai dependensi
    npm install express
    
  7. Menambahkan file .gitignore untuk mencegah penerapan node_modules
    echo node_modules/ >> .gitignore
    
  8. Buka file index.js di Cloud Shell Editor:
    cloudshell edit index.js
    
    File kosong akan muncul di bagian atas layar. Di sinilah Anda dapat mengedit file index.js ini. Tunjukkan bahwa kode masuk di bagian atas layar
  9. Salin kode berikut dan tempelkan ke dalam file index.js yang terbuka:
    import express from 'express';
    
    const app = express();
    app.get('/', async (req, res) => {
        res.send('Hello world!');
    });
    
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
        console.log(`codelab-genai: listening on port ${port}`);
    });
    
    Setelah beberapa detik, Cloud Shell Editor akan menyimpan kode Anda secara otomatis. Kode ini merespons permintaan http dengan sapaan "Hello world!".

Kode awal untuk aplikasi Anda telah selesai dan siap disimpan dalam kontrol versi.

8. Membuat repositori

  1. Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
  2. Pastikan Anda masih berada di direktori yang benar:
    cd ~/codelab-genai
    
  3. Lakukan inisialisasi repositori git Anda
    git init -b main
    
  4. Login ke GitHub CLI
    gh auth login
    
    Tekan Enter untuk menerima opsi default dan ikuti petunjuk di alat GitHub CLI, termasuk:
    1. Akun mana yang ingin Anda gunakan untuk login? GitHub.com
    2. Apa protokol pilihan Anda untuk operasi Git di host ini? HTTPS
    3. Mengautentikasi Git dengan kredensial GitHub Anda? Y (Lewati jika opsi ini tidak muncul.)
    4. Bagaimana Anda ingin mengautentikasi GitHub CLI? Login with a web browser
    5. Salin kode sekali pakai Anda
    6. Buka https://github.com/login/device
    7. Tempelkan kode sekali pakai Anda
    8. Klik Authorize github
    9. Menyelesaikan login Anda
  5. Pastikan Anda login:
    gh api user -q ".login"
    
    Jika Anda berhasil login, nama pengguna GitHub Anda akan ditampilkan.
  6. Buat variabel GITHUB_USERNAME
    GITHUB_USERNAME=$(gh api user -q ".login")
    
  7. Pastikan Anda telah membuat variabel lingkungan:
    echo ${GITHUB_USERNAME}
    
    Jika Anda berhasil membuat variabel, tindakan ini akan menampilkan nama pengguna GitHub Anda.
  8. Buat repositori GitHub kosong bernama codelab-genai:
    gh repo create codelab-genai --private
    
    Jika Anda menerima error:
    GraphQL: Name already exists on this account (createRepository)
    
    Kemudian, Anda sudah memiliki repositori bernama codelab-genai. Anda memiliki dua opsi untuk terus mengikuti tutorial ini:
  9. Tambahkan repositori codelab-genai sebagai origin jarak jauh:
    git remote add origin https://github.com/${GITHUB_USERNAME}/codelab-genai
    

9. Membagikan kode Anda

  1. Pastikan Anda berada di direktori yang benar:
    cd ~/codelab-genai
    
  2. Tambahkan semua file di direktori saat ini ke commit ini:
    git add .
    
  3. Buat commit pertama:
    git commit -m "add http server"
    
  4. Kirim commit Anda ke cabang main repositori origin:
    git push -u origin main
    

Anda dapat menjalankan perintah ini dan membuka URL yang dihasilkan untuk melihat kode aplikasi Anda di GitHub:

echo -e "\n\nTo see your code, visit this URL:\n \
    https://github.com/${GITHUB_USERNAME}/codelab-genai/blob/main/index.js \n\n"

10. Menyiapkan deployment otomatis

  1. Biarkan tab Cloud Shell Editor tetap terbuka. Kita akan kembali ke tab ini nanti.
  2. Di tab baru, buka halaman Cloud Run
  3. Pilih Project Google Cloud yang benar di konsol Dropdown project Google Cloud Console
  4. Klik HUBUNGKAN REPO
  5. Klik SIAPKAN DENGAN CLOUD BUILD
    1. Pilih GitHub sebagai Penyedia Repositori
      • Jika Anda belum login ke akun GitHub di browser, login dengan kredensial Anda.
    2. Klik Autentikasi, lalu klik Lanjutkan.
    3. Setelah login, Anda akan melihat pesan di halaman Cloud Run yang menyatakan The GitHub App is not installed on any of your repositories.
    4. Klik tombol INSTALL GOOGLE CLOUD BUILD.
      • Di halaman Penyiapan Penginstalan, pilih Only select repositories dan pilih repositori codelab-genai yang Anda buat melalui CLI.
      • Klik Instal
      • Catatan: Jika Anda memiliki banyak repositori GitHub, proses ini dapat memerlukan waktu beberapa menit untuk dimuat.
    5. Pilih your-user-name/codelab-genai sebagai Repositori
      • Jika repositori tidak ada, klik link Kelola Repositori yang Terhubung.
    6. Biarkan Cabang sebagai ^main$
    7. Klik Go, Node.js, Python, Java, .NET Core, Ruby, atau PHP melalui buildpack Google Cloud
      • Biarkan kolom lainnya (Build context directory, Entrypoint, dan Function target) seperti apa adanya.
    8. Klik Simpan
  6. Scroll ke bawah ke Autentikasi
  7. Klik Izinkan pemanggilan yang tidak diautentikasi
  8. Klik BUAT

Setelah build selesai (yang akan memakan waktu beberapa menit), jalankan perintah ini dan buka URL yang dihasilkan untuk melihat aplikasi yang sedang berjalan:

echo -e "\n\nOnce the build finishes, visit your live application:\n \
    "$( \
        gcloud run services list | \
        grep codelab-genai | \
        awk '/URL/{print $2}' | \
        head -1 \
    )" \n\n"

11. Mengubah kode Anda

Kembali ke Cloud Shell Editor

Jika masih membuka Cloud Shell Editor, Anda dapat melewati langkah-langkah ini.

  1. Buka Cloud Shell Editor
  2. Jika terminal tidak muncul di bagian bawah layar, buka terminal:
    • Klik menu tiga garis Ikon menu tiga garis
    • Klik Terminal
    • Klik New TerminalMembuka terminal baru di Cloud Shell Editor
  3. Di terminal, tetapkan project Anda dengan perintah ini:
    • Format:
      gcloud config set project [PROJECT_ID]
      
    • Contoh:
      gcloud config set project lab-project-id-example
      
    • Jika Anda tidak ingat project ID Anda:
      • Anda dapat mencantumkan semua project ID Anda dengan:
        gcloud projects list | awk '/PROJECT_ID/{print $2}'
        
      Menetapkan project ID di terminal Cloud Shell Editor
  4. Jika diminta untuk memberikan otorisasi, klik Authorize untuk melanjutkan. Klik untuk memberikan otorisasi pada Cloud Shell
  5. Anda akan melihat pesan ini:
    Updated property [core/project].
    
    Jika Anda melihat WARNING dan diminta Do you want to continue (Y/N)?, berarti Anda kemungkinan telah memasukkan ID project dengan salah. Tekan N, tekan Enter, lalu coba jalankan perintah gcloud config set project lagi.

Menambahkan Genkit dan Vertex AI ke aplikasi Anda

  1. Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
  2. Pastikan Anda masih berada di direktori yang benar:
    cd ~/codelab-genai
    
  3. Instal Genkit SDK Node.js:
    npm install @genkit-ai/ai
    
  4. Instal Node.js Genkit SDK untuk Vertex AI:
    npm install @genkit-ai/vertexai
    
  5. Buka kembali index.js di Cloud Shell Editor
    cloudshell edit ~/codelab-genai/index.js
    
  6. Ganti kode di file index.js Anda dengan:
    import express from 'express';
    const app = express();
    
    import { genkit } from 'genkit';
    import { gemini15Flash, vertexAI } from '@genkit-ai/vertexai';
    
    const ai = genkit({
        plugins: [
            vertexAI({ location: 'us-central1' }),
        ],
    });
    
    app.get('/', async (req, res) => {
        const animal = req.query.animal || 'dog';
        const prompt = `Give me 10 fun facts about ${animal}. Return this as html without backticks.`
        const llmResponse = await ai.generate({
            model: gemini15Flash,
            prompt: prompt,
        });
        const html = llmResponse.text;
        res.send(html);
    });
    
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
        console.log(`codelab-genai: listening on port ${port}`);
    });
    
  1. Pastikan Anda masih berada di direktori yang benar di Cloud Shell:
    cd ~/codelab-genai
    
  2. Jalankan perintah ini untuk melakukan commit versi baru aplikasi Anda ke repositori git lokal:
    git add .
    git commit -m "add latest changes"
    
  3. Kirim perubahan ke GitHub:
    git push
    
  4. Setelah build selesai, jalankan perintah ini dan buka aplikasi yang di-deploy:
    echo -e "\n\nOnce the build finishes, visit your live application:\n \
        "$( \
            gcloud run services list | \
            grep codelab-genai | \
            awk '/URL/{print $2}' | \
            head -1 \
        )" \n\n"
    

Mungkin diperlukan waktu beberapa menit hingga build selesai sebelum Anda dapat melihat perubahan.

Anda dapat melihat histori semua revisi di sini: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

12. (Opsional) Menggunakan file .prompt dengan Genkit

  1. Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
  2. Pastikan Anda masih berada di direktori yang benar:
    cd ~/codelab-genai
    
  3. Buat folder prompts untuk menyimpan perintah Anda:
    mkdir prompts
    
  4. Buat file animal-facts.prompt untuk membuat perintah pertama Anda:
    touch prompts/animal-facts.prompt
    
  5. Buka file animal-facts.prompt di Cloud Shell Editor:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  6. Edit animal-facts.prompt dan tempelkan kode berikut ke dalamnya:
    ---
    model: vertexai/gemini-1.5-flash
    input:
        schema:
            animal: string
    ---
    
    Give me 10 fun facts about {{animal}}. Return the results as HTML without markdown backticks.
    
  7. Buka file index.js di Cloud Shell Editor:
    cloudshell edit ~/codelab-genai/index.js
    
  8. Ganti kode di file index.js Anda dengan:
    import express from 'express';
    const app = express();
    
    import { genkit } from 'genkit';
    import { vertexAI } from '@genkit-ai/vertexai';
    
    const ai = genkit({
        plugins: [
            vertexAI({ location: 'us-central1' }),
        ],
    });
    
    app.get('/', async (req, res) => {
        const animal = req.query.animal || 'dog';
        const animalPrompt = ai.prompt('animal-facts');
        const llmResponse = await animalPrompt({animal});
        const html = llmResponse.text;
        res.send(html);
    });
    
    const port = process.env.PORT || 8080;
    app.listen(port, () => {
        console.log(`codelab-genai: listening on port ${port}`);
    });
    
  1. Pastikan Anda masih berada di direktori yang benar di Cloud Shell:
    cd ~/codelab-genai
    
  2. Jalankan perintah ini untuk melakukan commit versi baru aplikasi Anda ke repositori git lokal:
    git add .
    git commit -m "add latest changes"
    
  3. Kirim perubahan ke GitHub:
    git push
    
  4. Setelah build selesai, jalankan perintah ini dan buka aplikasi yang di-deploy:
    echo -e "\n\nOnce the build finishes, visit your live application:\n \
        "$( \
            gcloud run services list | \
            grep codelab-genai | \
            awk '/URL/{print $2}' | \
            head -1 \
        )" \n\n"
    

Mungkin diperlukan waktu beberapa menit hingga build selesai sebelum Anda dapat melihat perubahan.

Anda dapat melihat histori semua revisi di sini: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

13. (Opsional) Menggunakan perintah sistem

Langkah ini mengasumsikan bahwa Anda telah menambahkan file .prompt pada langkah sebelumnya.

  1. Kembali ke terminal Cloud Shell di bagian bawah layar Anda.
  2. Pastikan Anda masih berada di direktori yang benar:
    cd ~/codelab-genai
    
  3. Buka file animal-facts.prompt di Cloud Shell Editor:
    cloudshell edit ~/codelab-genai/prompts/animal-facts.prompt
    
  4. Edit animal-facts.prompt dan tempelkan kode berikut ke dalamnya:
    ---
    model: vertexai/gemini-1.5-flash
    config:
        temperature: 0.9
    input:
        schema:
            animal: string
    ---
    
    role "system"
    The user should have submitted an animal.
    If the user requests anything besides animal fun facts, respond in a kind and firm manner that you only provide information about fun facts.
    Give the user 10 fun facts about the animal the user provided.
    All responses should be valid HTML without markdown backticks.
    
    role "user"
    {{animal}}
    
  1. Pastikan Anda masih berada di direktori yang benar di Cloud Shell:
    cd ~/codelab-genai
    
  2. Jalankan perintah ini untuk melakukan commit versi baru aplikasi Anda ke repositori git lokal:
    git add .
    git commit -m "add latest changes"
    
  3. Kirim perubahan ke GitHub:
    git push
    
  4. Setelah build selesai, jalankan perintah ini dan buka aplikasi yang di-deploy:
    echo -e "\n\nOnce the build finishes, visit your live application:\n \
        "$( \
            gcloud run services list | \
            grep codelab-genai | \
            awk '/URL/{print $2}' | \
            head -1 \
        )" \n\n"
    

Mungkin diperlukan waktu beberapa menit hingga build selesai sebelum Anda dapat melihat perubahan.

Anda dapat melihat histori semua revisi di sini: https://console.cloud.google.com/run/detail/us-central1/codelab-genai/revisions

14. Selamat

Dalam lab ini, Anda telah menulis aplikasi web dan mengonfigurasi Cloud Run untuk otomatis men-deploy aplikasi Anda saat perubahan dilakukan pada kode sumber aplikasi Anda. Kemudian, Anda mengubah aplikasi dan men-deploy-nya lagi.

Jika Anda menikmati lab ini, Anda dapat mencobanya lagi dalam bahasa atau framework coding lain:

Berikut beberapa opsi untuk melanjutkan pembelajaran Anda: