Cloud Run を使った Firebase Genkit

Firebase Genkit のフローは、Cloud Run を使用してウェブサービスとしてデプロイできます。このページでは、例として、デフォルトのサンプルフローをデプロイするプロセスについて説明します。

  1. Google Cloud CLI をインストールします(まだインストールしていない場合)。

  2. Cloud コンソールを使用して新しい Google Cloud プロジェクトを作成するか、既存のプロジェクトを選択します。プロジェクトは請求先アカウントにリンクされている必要があります。

    プロジェクトを作成または選択したら、そのプロジェクトを使用するように Google Cloud CLI を構成します。

    gcloud auth login
    gcloud init
    
  3. Genkit サンプル プロジェクトのディレクトリを作成します。

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

    IDE を使用する場合は、このディレクトリに開きます。

  4. プロジェクト ディレクトリで Go モジュールを初期化します。

    go mod init example/cloudrun
    
  5. プロジェクトで Genkit を初期化します。

    genkit init
    

    使用するモデル プロバイダを選択します。

    残りのプロンプトではデフォルト値を受け入れます。genkit ツールが、独自の AI フローの開発を開始するためのサンプルのソースファイルを作成します。ただし、このチュートリアルの残りの部分では、サンプル フローのデプロイのみを行います。

  6. サンプル ファイル(main.go または genkit.go)を編集して、フローサーバーがリッスンするポートを明示的に指定します。

    if err := genkit.Init(ctx,
    	&genkit.Options{FlowAddr: ":3400"}, // Add this parameter.
    ); err != nil {
    	log.Fatal(err)
    }
    
  7. デプロイされた関数で API 認証情報を使用できるようにします。選択したモデル プロバイダに応じて、次のいずれかを行います。

    Gemini(Google AI)

    1. Google AI がお住まいの地域で利用可能であることを確認します。

    2. Google AI Studio を使用して Gemini API の API キーを生成します。

    3. その API キーを Cloud Run 環境で使用できるようにします。

      1. Cloud コンソールで、Secret Manager API を有効にします。
      2. [Secret Manager] ページで、API キーを含む新しいシークレットを作成します。
      3. シークレットを作成したら、同じページで、デフォルトのコンピューティング サービス アカウントに、Secret Manager Secret アクセサーのロールを付与して、シークレットにアクセスできるようにします。(デフォルトのコンピューティング サービス アカウントの名前は、[IAM] ページで検索できます)。

      後でサービスをデプロイするときに、このシークレットの名前を参照する必要があります。

    Gemini(Vertex AI)

    1. Cloud コンソールで、プロジェクトの Vertex AI API を有効を有効にするを選択します。

    2. [IAM] ページで、デフォルトのコンピューティング サービス アカウントVertex AI ユーザーロールが付与されていることを確認します。

    このチュートリアルで設定する必要があるシークレットはモデル プロバイダ用のものだけですが、一般的には、フローで使用する各サービスに対して同様の設定を行う必要があります。

  8. 省略可: デベロッパー UI でフローを試します。

    1. 選択したモデル プロバイダ用にローカル環境をセットアップします。

      Gemini(Google AI)

      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. UI を起動します。

      genkit start
      
    3. デベロッパー UI(http://localhost:4000/)で、フローを実行します。

      1. [menuSuggestionFlow] をクリックします。

      2. [Input JSON] タブで、モデルのサブジェクトを指定します。

        "banana"
        
      3. [実行] をクリックします。

  9. これまでのところすべてが想定どおりに動作している場合は、フローをビルドしてデプロイできます。

    Gemini(Google AI)

    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 は、使用する Vertex API リージョンを構成します)。

    未認証の呼び出しを許可するかどうかを尋ねられたら、[N] を選択します。[N] を選択すると、IAM 認証情報を必要とするようサービスが設定されます。これらの認証情報の提供に関しては、Cloud Run ドキュメントの認証をご覧ください。

デプロイが完了すると、ツールによってサービスの URL が出力されます。curl を使用してこれをテストできます。

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