任意の Node.js プラットフォームにフローをデプロイ

Firebase Genkit には、Cloud Functions for Firebase と Google Cloud Run にフローをデプロイするための統合が組み込まれていますが、クラウド サービスでもセルフホストでも、Express.js アプリを提供するすべてのプラットフォームにフローをデプロイすることもできます。

このページでは、例として、デフォルトのサンプルフローをデプロイするプロセスについて説明します。

始める前に

  • Node.js 20 以降: 環境で Node.js バージョン 20 以降が使用されていることを確認します(node --version)。
  • Genkit のフローのコンセプトを理解している必要があります。

1. プロジェクトを設定する

  1. プロジェクトのディレクトリを作成します。

    export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
    mkdir -p $GENKIT_PROJECT_HOME
    cd $GENKIT_PROJECT_HOME
  2. Node.js プロジェクトを初期化します。

    npm init -y
  3. Genkit と必要な依存関係をインストールします。

    npm install --save genkit @genkit-ai/googleai
    npm install -D genkit-cli typescript tsx

2. Genkit アプリを構成する

  1. サンプルのフローとサーバーを設定します。

src/index.ts でサンプルフローを定義し、フローサーバーを構成します。

  import { genkit } from 'genkit';
  import { googleAI, gemini15Flash } from '@genkit-ai/googleai';
  import { startFlowServer } from '@genkit-ai/express';

  const ai = genkit({
    plugins: [googleAI()],
    model: gemini15Flash,
  });

  const helloFlow = ai.defineFlow(
    {
      name: 'helloFlow',
      inputSchema: z.object({ name: z.string() }),
      outputSchema: z.string(),
    },
    async (input) => {
      const { text } = ai.generate('Say hello to ${input.name}');
      return text;
    }
  );

  startFlowServer({
    flows: [menuSuggestionFlow],
  });

startFlowServer には、指定できるオプション パラメータもあります。

  • port: リッスンするネットワーク ポート。指定しない場合、サーバーは PORT 環境変数で定義されたポートをリッスンします。PORT が設定されていない場合は、デフォルトで 3400 になります。
  • cors: フロー サーバーの CORS ポリシー。ウェブ アプリケーションからこれらのエンドポイントにアクセスする場合は、この値を指定する必要があります。
  • pathPrefix: フロー エンドポイントの前に追加するパス接頭辞(省略可)。
  • jsonParserOptions: Express の JSON ボディパーサーに渡すオプション
  1. モデル プロバイダの認証情報を設定します。

モデル プロバイダに必要な環境変数を構成します。このガイドでは、Google AI Studio の Gemini API を例として使用します。

Google AI Studio から API キーを取得する

API キーを作成したら、次のコマンドを使用して GOOGLE_GENAI_API_KEY 環境変数をキーに設定します。

  export GOOGLE_GENAI_API_KEY=<your API key>

デプロイするプロバイダによって、環境内での API キーの保護方法は異なります。セキュリティを確保するため、API キーが公開されないようにしてください。

3. デプロイ用に Node.js プロジェクトを準備する

起動スクリプトとビルド スクリプトを package.json に追加

Node.js プロジェクトをデプロイするには、package.jsonstart スクリプトと build スクリプトを定義します。TypeScript プロジェクトの場合、これらのスクリプトは次のようになります。

"scripts": {
  "start": "node --watch lib/index.js",
  "build": "tsc"
},

ローカルでビルドしてテストする

ビルドコマンドを実行し、サーバーを起動してローカルでテストし、想定どおりに動作することを確認します。

npm run build
npm start

別のターミナル ウィンドウで、エンドポイントをテストします。

curl -X POST "http://127.0.0.1:3400/menuSuggestionFlow" \
  -H "Content-Type: application/json" \
  -d '{"data": "banana"}'

省略可: デベロッパー UI を起動する

デベロッパー UI を使用すると、開発中にフローをインタラクティブにテストできます。

npx genkit start -- npm run start

http://localhost:4000/flows に移動して、UI でフローをテストします。

4. プロジェクトをデプロイする

プロジェクトをローカルで構成してテストしたら、Node.js 互換の任意のプラットフォームにデプロイする準備が整います。デプロイ手順はプロバイダによって異なりますが、一般的には次の設定を構成します。

設定
ランタイム Node.js 20 以降
ビルドコマンド npm run build
開始コマンド npm start
環境変数 GOOGLE_GENAI_API_KEY=<your-api-key> とその他の必要なシークレットを設定する

start コマンド(npm start)は、コンパイルされたエントリ ポイント(通常は lib/index.js)を参照する必要があります。デプロイ プラットフォームに必要な環境変数をすべて追加してください。

デプロイ後、指定されたサービス URL を使用して、HTTPS エンドポイントとしてフローを呼び出すことができます。