任意の 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';
    
    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;
      }
    );
    
    ai.startFlowServer({
      flows: [menuSuggestionFlow],
    });
    

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

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

    モデル プロバイダに必要な環境変数を構成します。このガイドでは、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 エンドポイントとしてフローを呼び出すことができます。