Firebase Genkit dengan Cloud Run

Anda dapat men-deploy flow Firebase Genkit sebagai layanan web menggunakan Cloud Run. Halaman ini, sebagai contoh, akan memandu Anda melalui proses deployment flow sampel default.

  1. Instal alat yang diperlukan:

    1. Pastikan Anda menggunakan Node.js versi 20 atau yang lebih tinggi (jalankan node --version untuk diperiksa).

    2. Instal Google Cloud CLI.

  2. Buat project Google Cloud baru menggunakan Konsol Cloud atau pilih yang sudah ada. Project harus ditautkan ke akun penagihan.

    Setelah membuat atau memilih project, konfigurasikan Google Cloud CLI untuk menggunakannya:

    gcloud init
  3. Buat direktori untuk project contoh Genkit:

    mkdir -p ~/tmp/genkit-cloud-project
    cd ~/tmp/genkit-cloud-project

    Jika Anda akan menggunakan IDE, buka direktori ini.

  4. Inisialisasi project Node.js di direktori project Anda:

    npm init -y
  5. Inisialisasi Genkit di project Node.js Anda:

    genkit init

    Pilih penyedia model yang ingin Anda gunakan. Terima default untuk prompt yang tersisa. Alat genkit akan membuat beberapa contoh file sumber untuk membantu Anda mulai mengembangkan alur AI Anda sendiri. Selanjutnya untuk materi ini, tutorial, Anda hanya akan men-deploy contoh alur.

  6. Sediakan kredensial API untuk fungsi yang Anda deploy. Tergantung pada penyedia model yang Anda pilih, lakukan salah satu hal berikut ini:

    Gemini (AI Google)

    1. Pastikan AI Google tersedia di region Anda.

    2. Buat kunci API untuk Gemini API menggunakan Google AI Studio.

    3. Sediakan kunci API di lingkungan Cloud Run:

      1. Di Konsol Cloud, aktifkan Secret Manager API.
      2. Pada halaman Secret Manager, buat secret baru yang berisi kunci API Anda.
      3. Setelah Anda membuat secret di halaman yang sama, berikan akses akun layanan komputasi default ke secret tersebut dengan peran Secret Manager Secret Accessor. (Anda bisa mencari nama akun layanan komputasi default di halaman IAM.)

      Pada langkah selanjutnya, saat men-deploy layanan, Anda harus mereferensikan nama secret ini.

    4. Opsional: Jika Anda ingin menjalankan flow secara lokal, seperti pada langkah berikutnya tetapkan variabel lingkungan GOOGLE_GENAI_API_KEY ke kunci Anda:

      export GOOGLE_GENAI_API_KEY=<your API key>

    Gemini (Vertex AI)

    1. Di Konsol Cloud, Aktifkan API Vertex AI untuk project Anda.

    2. Pada halaman IAM, pastikan bahwa Akun layanan komputasi default diberikan peran Vertex AI User.

    3. Opsional: Jika Anda ingin menjalankan flow secara lokal, seperti pada langkah berikutnya , atur beberapa variabel lingkungan tambahan dan gunakan Alat gcloud untuk disiapkan kredensial default aplikasi:

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login

    Satu-satunya secret yang perlu Anda siapkan untuk tutorial ini adalah untuk penyedia model, tetapi secara umum, Anda harus melakukan hal serupa untuk setiap layanan yang digunakan oleh flow Anda.

  7. Opsional: Coba flow Anda di UI developer:

    1. Mulai UI:

      genkit start
    2. Di UI developer (http://localhost:4000/), jalankan flow:

      1. Klik menuSuggestionFlow.

      2. Di tab Input JSON, berikan subjek untuk model:

        "banana"
        
      3. Klik Run.

  8. Jika semuanya telah berfungsi seperti yang diharapkan, Anda bisa membangun dan men-deploy flow:

    Gemini (AI Google)

    npm run build
    gcloud run deploy --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest

    Gemini (Vertex AI)

    npm run build
    gcloud run deploy

    Pilih N saat ditanya apakah Anda ingin mengizinkan pemanggilan yang tidak diautentikasi. Menjawab N akan mengonfigurasi layanan Anda agar memerlukan kredensial IAM. Lihat Autentikasi di dokumen Cloud Run untuk mengetahui informasi tentang cara memberikan kredensial ini.

Setelah deployment selesai, alat akan mencetak URL layanan. Anda dapat mengujinya dengan curl:

curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '{"data": "banana"}'