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 Google Cloud CLI jika Anda belum melakukannya.

  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 auth login
    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 modul Go di direktori project Anda:

    go mod init example/cloudrun
    
  5. Inisialisasi Genkit di project Anda:

    genkit init
    

    Pilih penyedia model yang ingin Anda gunakan.

    Terima setelan default untuk prompt yang tersisa. Alat genkit akan membuat contoh file sumber agar Anda dapat mulai mengembangkan flow AI Anda sendiri. Namun, untuk bagian selanjutnya dari tutorial ini, Anda hanya akan men-deploy contoh flow.

  6. Edit file contoh (main.go atau genkit.go) untuk menentukan port secara eksplisit yang harus diproses oleh server flow:

    if err := genkit.Init(ctx,
    	&genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
    	log.Fatal(err)
    }
    
  7. 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.

    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.

    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.

  8. Opsional: Coba flow Anda di UI developer:

    1. Siapkan lingkungan lokal untuk penyedia model yang Anda pilih:

      Gemini (AI Google)

      export GOOGLE_GENAI_API_KEY=<your API key>
      

      Gemini (Vertex AI)

      export GCLOUD_PROJECT=<your project ID>
      export GCLOUD_LOCATION=us-central1
      gcloud auth application-default login
      
    2. Mulai UI:

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

      1. Klik menuSuggestionFlow.

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

        "banana"
        
      3. Klik Run.

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

    Gemini (AI Google)

    gcloud run deploy --port 3400 \
      --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
    

    Gemini (Vertex AI)

    gcloud run deploy --port 3400 \
      --set-env-vars GCLOUD_PROJECT=<your-gcloud-project> \
      --set-env-vars GCLOUD_LOCATION=us-central1
    

    (GCLOUD_LOCATION mengonfigurasi region Vertex API yang ingin Anda gunakan.)

    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 '"banana"'