Firebase Genkit には、Cloud Functions for Firebase と Google Cloud Run にフローをデプロイするための統合が組み込まれていますが、クラウド サービスでもセルフホストでも、Express.js アプリを提供するすべてのプラットフォームにフローをデプロイすることもできます。
このページでは、例として、デフォルトのサンプルフローをデプロイするプロセスについて説明します。
始める前に
- Node.js 20 以降: 環境で Node.js バージョン 20 以降が使用されていることを確認します(node --version)。
- Genkit のフローのコンセプトに精通している必要があります。
1. プロジェクトを設定する
プロジェクトのディレクトリを作成します。
export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
mkdir -p $GENKIT_PROJECT_HOME
cd $GENKIT_PROJECT_HOME
Node.js プロジェクトを初期化します。
npm init -y
Genkit と必要な依存関係をインストールします。
npm install --save genkit @genkit-ai/googleai
npm install -D genkit-cli typescript tsx
2. Genkit アプリを構成する
サンプルのフローとサーバーを設定します。
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 ボディパーサーに渡すオプション
モデル プロバイダの認証情報を設定します。
モデル プロバイダに必要な環境変数を構成します。このガイドでは、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.json
で start
スクリプトと 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 エンドポイントとしてフローを呼び出すことができます。