Implementar flujos en cualquier plataforma de Node.js

Firebase Genkit tiene integraciones integradas que te ayudan a implementar tus flujos en Cloud Functions para Firebase y Google Cloud Run, pero también puedes implementar tus flujos en cualquier plataforma que pueda entregar una app de Express.js, ya sea un servicio en la nube o autoalojado.

Esta página, como ejemplo, te guía a través del proceso de implementación del flujo de la muestra predeterminado.

Antes de comenzar

  • Node.js 20 y versiones posteriores: Confirma que tu entorno use la versión 20 de Node.js o una posterior (node --version).
  • Debes estar familiarizado con el concepto de flujos de Genkit.

1. Configura tu proyecto

  1. Crea un directorio para el proyecto:

    export GENKIT_PROJECT_HOME=~/tmp/genkit-express-project
    mkdir -p $GENKIT_PROJECT_HOME
    cd $GENKIT_PROJECT_HOME
  2. Cómo inicializar un proyecto de Node.js:

    npm init -y
  3. Instala Genkit y las dependencias necesarias:

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

2. Configura tu app de Genkit

  1. Configura un flujo y un servidor de muestra:

    En src/index.ts, define un flujo de muestra y configura el servidor de flujo:

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

    También hay algunos parámetros opcionales para startFlowServer que puedes especificar:

    • port: Es el puerto de red en el que se escuchará. Si no se especifica, el servidor escucha en el puerto definido en la variable de entorno PORT y, si no se establece PORT, se establece de forma predeterminada en 3400.
    • cors: La política de CORS del servidor de flujo. Si accederás a estos extremos desde una aplicación web, es probable que necesites especificar esto.
    • pathPrefix: Es un prefijo de ruta opcional que se agrega antes de los extremos de tu flujo.
    • jsonParserOptions: Son opciones para pasar al analizador de cuerpo de JSON de Express.
  2. Configura las credenciales del proveedor del modelo:

    Configura las variables de entorno necesarias para tu proveedor de modelos. En esta guía, usaremos la API de Gemini de Google AI Studio como ejemplo.

    Obtén una clave de API de Google AI Studio

    Después de crear una clave de API, configura la variable de entorno GOOGLE_GENAI_API_KEY en tu clave con el siguiente comando:

    export GOOGLE_GENAI_API_KEY=<your API key>

    Los diferentes proveedores de implementación tendrán diferentes formas de proteger tu clave de API en su entorno. Por motivos de seguridad, asegúrate de que tu clave de API no esté expuesta públicamente.

3. Prepara tu proyecto de Node.js para la implementación

Agrega secuencias de comandos de inicio y compilación a package.json

Para implementar un proyecto de Node.js, define las secuencias de comandos start y build en package.json. Para un proyecto de TypeScript, estas secuencias de comandos se verán de la siguiente manera:

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

Compila y prueba de manera local

Ejecuta el comando de compilación, luego inicia el servidor y pruébalo de forma local para confirmar que funcione como se espera.

npm run build
npm start

En otra ventana de terminal, prueba el extremo:

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

Opcional: Inicia la IU para desarrolladores

Puedes usar la IU para desarrolladores para probar flujos de forma interactiva durante el desarrollo:

npx genkit start -- npm run start

Navega a http://localhost:4000/flows para probar tus flujos en la IU.

4. Implementa el proyecto

Una vez que tu proyecto esté configurado y probado de forma local, estará todo listo para implementarlo en cualquier plataforma compatible con Node.js. Los pasos de implementación varían según el proveedor, pero, por lo general, configurarás los siguientes parámetros:

Configuración Valor
Entorno de ejecución Node.js 20 o una versión posterior
Comando de compilación npm run build
Comando start npm start
Variables de entorno Establece GOOGLE_GENAI_API_KEY=<your-api-key> y otros secretos necesarios

El comando start (npm start) debe apuntar a tu punto de entrada compilado, por lo general, lib/index.js. Asegúrate de agregar todas las variables de entorno necesarias para tu plataforma de implementación.

Después de la implementación, puedes usar la URL del servicio proporcionada para invocar tu flujo como un extremo HTTPS.