Esegui il deployment dei flussi su qualsiasi piattaforma Node.js

Firebase Genkit ha integrazioni integrate che ti aiutano a eseguire il deployment dei flussi su Cloud Functions per Firebase e Google Cloud Run, ma puoi anche eseguire il deployment dei flussi su qualsiasi piattaforma in grado di pubblicare un'app Express.js, che si tratti di un servizio cloud o self-hosted.

Questa pagina, ad esempio, illustra la procedura di deployment del flusso di esempio predefinito.

Prima di iniziare

  • Node.js 20 e versioni successive: verifica che il tuo ambiente utilizzi Node.js 20 o versioni successive (node --version).
  • Devi conoscere il concetto di flussi di Genkit.

1. Configura il progetto

  1. Crea una directory per il progetto:

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

    npm init -y
  3. Installa Genkit e le dipendenze necessarie:

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

2. Configurare l'app Genkit

  1. Configura un flusso e un server di esempio:

    In src/index.ts, definisci un flusso di esempio e configura il server di flusso:

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

    Esistono anche alcuni parametri facoltativi per startFlowServer che puoi specificare:

    • port: la porta di rete su cui ascoltare. Se non specificato, il server rimane in ascolto sulla porta definita nella variabile di ambiente PORT e, se PORT non è impostata, il valore predefinito è 3400.
    • cors: il criterio CORS del server di flusso. Se accederai a questi endpoint da un'applicazione web, probabilmente dovresti specificarlo.
    • pathPrefix: un prefisso del percorso facoltativo da aggiungere prima degli endpoint del flusso.
    • jsonParserOptions: opzioni da passare al parser del corpo JSON di Express
  2. Configura le credenziali del fornitore del modello:

    Configura le variabili di ambiente richieste per il provider del modello. In questa guida utilizzeremo l'API Gemini di Google AI Studio come esempio.

    Ottenere una chiave API da Google AI Studio

    Dopo aver creato una chiave API, imposta la variabile di ambiente GOOGLE_GENAI_API_KEY sulla chiave con il seguente comando:

    export GOOGLE_GENAI_API_KEY=<your API key>

    I diversi provider per il deployment avranno modi diversi per proteggere la chiave API nel proprio ambiente. Per motivi di sicurezza, assicurati che la chiave API non sia esposta pubblicamente.

3. Preparare il progetto Node.js per il deployment

Aggiungi script di avvio e compilazione a package.json

Per eseguire il deployment di un progetto Node.js, definisci gli script start e build in package.json. Per un progetto TypeScript, questi script avranno il seguente aspetto:

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

Esegui la compilazione e i test in locale

Esegui il comando di compilazione, quindi avvia il server e testalo localmente per verificare che funzioni come previsto.

npm run build
npm start

In un'altra finestra del terminale, testa l'endpoint:

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

(Facoltativo) Avvia l'interfaccia utente per gli sviluppatori

Puoi utilizzare l'interfaccia utente per sviluppatori per testare i flussi in modo interattivo durante lo sviluppo:

npx genkit start -- npm run start

Vai alla pagina http://localhost:4000/flows per testare i flussi nell'interfaccia utente.

4. Esegui il deployment del progetto

Una volta configurato e testato localmente, il progetto è pronto per il deployment su qualsiasi piattaforma compatibile con Node.js. I passaggi di implementazione variano in base al provider, ma in genere dovrai configurare le seguenti impostazioni:

Impostazione Valore
Tempo di esecuzione Node.js 20 o versioni successive
Comando di compilazione npm run build
Comando start npm start
Variabili di ambiente Imposta GOOGLE_GENAI_API_KEY=<your-api-key> e gli altri secret necessari

Il comando start (npm start) deve puntare al punto di ingresso compilato, in genere lib/index.js. Assicurati di aggiungere tutte le variabili di ambiente necessarie per la tua piattaforma di deployment.

Dopo il deployment, puoi utilizzare l'URL del servizio fornito per richiamare il flusso come endpoint HTTPS.