Cloud Run を使った Firebase Genkit

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

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

    1. Node.js バージョン 20 以降を使用していることを確認してください( node --version で確認してください)。

    2. Google Cloud CLI

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

    プロジェクトを作成または選択したら、 説明します。

    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

    使用するモデル プロバイダを選択します。環境変数は、デフォルト値をそのまま使用します。 できます。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 Secret アクセサーのロールを付与して、シークレットにアクセスできるようにします。(名前は デフォルトのコンピューティング サービス アカウントの [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"}'