Vous pouvez déployer des flux Genkit en tant que points de terminaison HTTPS à l'aide de Cloud Run. Cloud Run propose plusieurs options de déploiement, y compris le déploiement basé sur des conteneurs. Cette page explique comment déployer vos flux directement à partir du code.
Avant de commencer
- Installez Google Cloud CLI.
- Vous devez connaître le concept de flux de Genkit et savoir comment les écrire. Cette page suppose que vous avez déjà des flux que vous souhaitez déployer.
- Il est utile, mais pas obligatoire, d'avoir déjà utilisé Google Cloud et Cloud Run.
1. Configurer un projet Google Cloud
Si vous n'avez pas encore configuré de projet Google Cloud, procédez comme suit:
Créez un projet Google Cloud à l'aide de la console Cloud ou choisissez-en un existant.
Associez le projet à un compte de facturation, ce qui est obligatoire pour Cloud Run.
Configurez la Google Cloud CLI pour qu'elle utilise votre projet:
gcloud init
2. Préparer votre projet Node pour le déploiement
Pour que vos flux puissent être déployés, vous devez apporter quelques modifications mineures au code de votre projet:
Ajouter des scripts de démarrage et de compilation à package.json
Lorsque vous déployez un projet Node.js dans Cloud Run, les outils de déploiement s'attendent à ce que votre projet comporte un script start
et, éventuellement, un script build
. Pour un projet TypeScript typique, les scripts suivants sont généralement adaptés:
"scripts": {
"start": "node lib/index.js",
"build": "tsc"
},
Ajouter du code pour configurer et démarrer le serveur de flux
Dans le fichier exécuté par votre script start
, ajoutez un appel à startFlowServer
.
Cette méthode démarre un serveur Express configuré pour diffuser vos flux en tant que points de terminaison Web.
Lorsque vous effectuez l'appel, spécifiez les flux que vous souhaitez diffuser:
ai.startFlowServer({
flows: [menuSuggestionFlow],
});
Vous pouvez également spécifier certains paramètres facultatifs:
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.
Facultatif: définir une stratégie d'autorisation
Tous les flux déployés doivent nécessiter une forme d'autorisation. Sinon, n'importe qui pourrait appeler vos flux d'IA générative potentiellement coûteux.
Lorsque vous déployez vos flux avec Cloud Run, vous disposez de deux options d'autorisation:
Autorisation basée sur Cloud IAM: utilisez les fonctionnalités de gestion des accès natives de Google Cloud pour contrôler l'accès à vos points de terminaison. Pour savoir comment fournir ces identifiants, consultez la section Authentification dans la documentation Cloud Run.
Règle d'autorisation définie dans le code: utilisez la fonctionnalité de règle d'autorisation des flux Genkit pour vérifier les informations d'autorisation à l'aide d'un code personnalisé. Il s'agit souvent, mais pas nécessairement, d'une autorisation basée sur des jetons.
Si vous souhaitez définir une stratégie d'autorisation en code, utilisez le paramètre authPolicy
dans la définition du flux:
const myFlow = ai.defineFlow(
{
name: "myFlow",
authPolicy: (auth, input) => {
if (!auth) {
throw new Error("Authorization required.");
}
// Custom checks go here...
},
},
async () => {
// ...
}
);
Le paramètre auth
de la stratégie d'autorisation provient de la propriété auth
de l'objet de requête. Vous définissez généralement cette propriété à l'aide du middleware Express.
Consultez la section Autorisation et intégrité.
Rendre les identifiants de l'API disponibles pour les flux déployés
Une fois déployés, vos flux doivent disposer d'un moyen de s'authentifier auprès des services distants sur lesquels ils s'appuient. La plupart des flux auront au minimum besoin d'identifiants pour accéder au service d'API de modèle qu'ils utilisent.
Pour cet exemple, effectuez l'une des opérations suivantes, en fonction du fournisseur de modèle que vous avez choisi:
Gemini (IA de Google)
Assurez-vous que l'IA de Google est disponible dans votre région.
Générez une clé API pour l'API Gemini à l'aide de Google AI Studio.
Mettez la clé API à disposition dans l'environnement Cloud Run:
- Dans la console Cloud, activez l'API Secret Manager.
- Sur la page Secret Manager, créez un secret contenant votre clé API.
- Après avoir créé le secret, sur la même page, accordez à votre compte de service de calcul par défaut l'accès au secret avec le rôle Accesseur de secrets de Secret Manager. (Vous pouvez rechercher le nom du compte de service Compute par défaut sur la page IAM.)
À l'étape suivante, lorsque vous déploierez votre service, vous devrez faire référence au nom de ce secret.
Gemini (Vertex AI)
Dans la console Cloud, activez l'API Vertex AI pour votre projet.
Sur la page IAM, assurez-vous que le compte de service Compute par défaut dispose du rôle Utilisateur Vertex AI.
Le seul secret que vous devez configurer pour ce tutoriel concerne le fournisseur de modèle, mais en général, vous devez effectuer une opération similaire pour chaque service utilisé par votre flux.
3. Déployer des flux dans Cloud Run
Une fois que vous avez préparé votre projet pour le déploiement, vous pouvez le déployer à l'aide de l'outil gcloud
.
Gemini (IA de Google)
gcloud run deploy --update-secrets=GOOGLE_GENAI_API_KEY=<your-secret-name>:latest
Gemini (Vertex AI)
gcloud run deploy
L'outil de déploiement vous demandera toutes les informations dont il a besoin.
Lorsque vous êtes invité à autoriser les appels non authentifiés:
- Répondez
Y
si vous n'utilisez pas IAM et que vous avez défini une stratégie d'autorisation dans le code. - Répondez
N
pour configurer votre service de sorte qu'il exige des identifiants IAM.
Facultatif: Essayer le flux déployé
Une fois le déploiement terminé, l'outil imprime l'URL du service. Vous pouvez le tester avec curl
:
curl -X POST https://<service-url>/menuSuggestionFlow \
-H "Authorization: Bearer $(gcloud auth print-identity-token)" \
-H "Content-Type: application/json" -d '{"data": "banana"}'