Déployez des flux sur n'importe quelle plate-forme Node.js

Firebase Genkit dispose d'intégrations intégrées qui vous aident à déployer vos flux dans Cloud Functions pour Firebase et Google Cloud Run. Vous pouvez également les déployer sur n'importe quelle plate-forme pouvant diffuser une application Express.js, qu'il s'agisse d'un service cloud ou d'un service auto-hébergé.

À titre d'exemple, cette page vous explique comment déployer l'exemple de flux par défaut.

Avant de commencer

  • Node.js 20 ou version ultérieure: vérifiez que votre environnement utilise la version 20 ou ultérieure de Node.js (node --version).
  • Vous devez connaître le concept de flux de Genkit.

1. Configurer votre projet

  1. Créez un répertoire pour le projet:

    export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
    mkdir -p $GENKIT_PROJECT_HOME
    cd $GENKIT_PROJECT_HOME
  2. Initialisez un projet Node.js:

    npm init -y
  3. Installez Genkit et les dépendances nécessaires:

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

2. Configurer votre application Genkit

  1. Configurez un exemple de flux et de serveur:

    Dans src/index.ts, définissez un exemple de flux et configurez le serveur de flux:

    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],
    });
    

    Vous pouvez également spécifier des paramètres facultatifs pour startFlowServer:

    • port: port réseau à écouter. Si elle n'est pas spécifiée, le serveur écoute sur le port défini dans la variable d'environnement PORT. Si PORT n'est pas défini, la valeur par défaut est 3400.
    • cors: règle CORS du serveur de flux. Si vous accédez à ces points de terminaison à partir d'une application Web, vous devrez probablement le spécifier.
    • pathPrefix: préfixe de chemin d'accès facultatif à ajouter avant vos points de terminaison de flux.
    • jsonParserOptions: options à transmettre à l'analyseur de corps JSON d'Express.
  2. Configurez les identifiants du fournisseur de modèles:

    Configurez les variables d'environnement requises pour votre fournisseur de modèles. Dans ce guide, nous utiliserons l'API Gemini de Google AI Studio comme exemple.

    Obtenir une clé API depuis Google AI Studio

    Après avoir créé une clé API, définissez la variable d'environnement GOOGLE_GENAI_API_KEY sur votre clé à l'aide de la commande suivante:

    export GOOGLE_GENAI_API_KEY=<your API key>

    Les différents fournisseurs de déploiement ont des méthodes différentes pour sécuriser votre clé API dans leur environnement. Pour des raisons de sécurité, assurez-vous que votre clé API n'est pas exposée publiquement.

3. Préparer votre projet Node.js au déploiement

Ajouter des scripts de démarrage et de compilation à package.json

Pour déployer un projet Node.js, définissez des scripts start et build dans package.json. Pour un projet TypeScript, ces scripts se présentent comme suit:

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

Compiler et tester en local

Exécutez la commande de compilation, puis démarrez le serveur et testez-le localement pour vérifier qu'il fonctionne comme prévu.

npm run build
npm start

Dans une autre fenêtre de terminal, testez le point de terminaison:

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

Facultatif: Démarrer l'UI du développeur

Vous pouvez utiliser l'UI du développeur pour tester les flux de manière interactive pendant le développement:

npx genkit start -- npm run start

Accédez à http://localhost:4000/flows pour tester vos flux dans l'interface utilisateur.

4. Déployer le projet

Une fois votre projet configuré et testé en local, vous pouvez le déployer sur n'importe quelle plate-forme compatible avec Node.js. Les étapes de déploiement varient selon le fournisseur, mais vous devez généralement configurer les paramètres suivants:

Paramètre Valeur
Exécution Node.js 20 ou version ultérieure
Commande de compilation npm run build
Commande de démarrage npm start
Variables d'environnement Définir GOOGLE_GENAI_API_KEY=<your-api-key> et d'autres secrets nécessaires

La commande start (npm start) doit pointer vers votre point d'entrée compilé, généralement lib/index.js. Veillez à ajouter toutes les variables d'environnement nécessaires pour votre plate-forme de déploiement.

Après le déploiement, vous pouvez utiliser l'URL de service fournie pour appeler votre flux en tant que point de terminaison HTTPS.