Firebase Genkit と Cloud Run

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

  1. 必要なツールをインストールします。

    1. Node.js バージョン 20 以降を使用していることを確認します(node --version を実行して確認します)。

    2. Google Cloud CLI をインストールします。

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

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

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

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

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

  4. プロジェクト ディレクトリで Node.js プロジェクトを初期化します。

    npm init -y
    
  5. Node.js プロジェクトで Genkit を初期化します。

    genkit init
    
    • デプロイ プラットフォームとして [Google Cloud] を選択します。
    • 使用するモデル プロバイダを選択します。

    残りのプロンプトはデフォルトのままにします。genkit ツールは、独自の AI フローの開発を開始できるように、いくつかのサンプル ソースファイルを作成します。ただし、このチュートリアルの残りの部分では、サンプルフローをデプロイします。

  6. デプロイした関数で 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 のシークレット アクセサーのロールを使用して、デフォルトのコンピューティング サービス アカウントにシークレットへのアクセス権を付与します。(デフォルトのコンピューティング サービス アカウントの名前は IAM ページで確認できます)。

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

    4. 省略可: 次のステップのようにフローをローカルで実行する場合は、GOOGLE_GENAI_API_KEY 環境変数をキーに設定します。

      export GOOGLE_GENAI_API_KEY=<your API key>
      

    Gemini(Vertex AI)

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

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

    3. 省略可: 次のステップのようにフローをローカルで実行する場合は、追加の環境変数を設定し、gcloud ツールを使用してアプリケーションのデフォルト認証情報を設定します。

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

    このチュートリアルで設定する必要があるシークレットは、モデル プロバイダ用のみですが、通常は、フローで使用するサービスごとに同様の操作を行う必要があります。

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

    1. UI を起動します。

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

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

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

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

  8. ここまでですべてが問題なく機能していれば、フローをビルドしてデプロイできます。

    Gemini(Google AI)

    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
    

    未認証の呼び出しを許可するかどうかを尋ねられたら、[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 '{"data": "banana"}'