Fonction Cloud pour la synthèse de contenus à l'aide de l'API PaLM Vertex AI et de Google Cloud Storage

1. Introduction

Dans cet atelier de programmation, vous allez découvrir les étapes à suivre pour synthétiser des contenus importés dans Google Cloud Storage à l'aide du grand modèle de langage Vertex AI permettant de générer du texte ( text-bison) en tant que fonction Cloud en Python. Voici la liste des services utilisés:

  • API Vertex AI PaLM: API de grand modèle de langage (LLM, Large Language Model) qui permet d'accéder au modèle PaLM Text Bison de Google AI.
  • Cloud Functions: plate-forme sans serveur permettant d'exécuter des fonctions sans avoir à gérer de serveurs.
  • Cloud Storage: service géré permettant de stocker des données non structurées.
  • Cloud Logging: service entièrement géré qui vous permet de stocker, de rechercher, d'analyser et de surveiller les données de journalisation, et d'envoyer des alertes les concernant.

Ce que vous allez faire

Vous allez créer une application déployée en tant que fonction Cloud Python pour résumer du texte à l'aide de l'API Palm.

2. Conditions requises

  • Un navigateur tel que Chrome ou Firefox
  • Un projet Google Cloud avec facturation activée

3. Avant de commencer

  1. Dans la console Google Cloud, sur la page du sélecteur de projet, sélectionnez ou créez un projet Google Cloud.
  2. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.
  3. Assurez-vous que toutes les API nécessaires (API Cloud Storage, API Vertex AI, API Cloud Functions et Cloud Logging) sont activées
  4. Vous allez utiliser Cloud Shell, un environnement de ligne de commande exécuté dans Google Cloud. Consultez la documentation pour en savoir plus sur les commandes gcloud et leur utilisation.
  5. Dans la console Cloud, cliquez sur "Activer Cloud Shell" en haut à droite :

51622c00acec2fa.png

Si votre projet n'est pas défini, utilisez la commande suivante pour le définir :

gcloud config set project <YOUR_PROJECT_ID>
  1. Assurez-vous que toutes les API nécessaires sont activées en exécutant la commande suivante à partir du terminal Cloud Shell:
gcloud services enable cloudfunctions.googleapis.com \
aiplatform.googleapis.com \
storage.googleapis.com \
logging.googleapis.com \
eventarc.googleapis.com
  1. Créez des variables d'environnement pour REGION et PROJECT_ID en exécutant la commande suivante depuis le terminal Cloud Shell:
export PROJECT_ID=<your project id>

export REGION=us-central1

4. une fonction Cloud pour appeler l'API Vertex AI ;

Nous allons créer une fonction Cloud Python et appeler l'API Vertex AI dans cette fonction.

Créer un compte de service

Créez un compte de service en exécutant la commande suivante dans le terminal Cloud Shell.

gcloud iam service-accounts create vertex-service-acc

Pour donner accès à votre projet et à vos ressources, accordez un rôle au compte de service.

gcloud projects add-iam-policy-binding $PROJECT_ID --member="serviceAccount:vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com" --role=roles/ml.developer

Pour attribuer à votre compte Google un rôle vous permettant d'utiliser les rôles du compte de service et de l'associer à d'autres ressources, exécutez la commande ci-dessous. Remplacez USER_EMAIL par l'ID d'adresse e-mail de votre compte Google.

gcloud iam service-accounts add-iam-policy-binding vertex-service-acc@$PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

Créer la fonction Python

L'API PaLM pour le texte est idéale pour les tâches pouvant être réalisées avec une seule réponse d'API, sans avoir besoin d'une conversation continue. Créons maintenant la fonction Cloud correspondante.

Exécutez les commandes suivantes dans Cloud Shell pour cloner le dépôt et accéder au projet (utilisez le même terminal que dans la section précédente):

git clone https://github.com/rominirani/genai-apptemplates-googlecloud

cd genai-apptemplates-googlecloud/summarization-gcs-cloudfunction

Le dossier qui nous intéresse ici dans ce projet est summarization-gcs-cloudfunction.

Ouvrez l'éditeur Cloud Shell depuis le terminal et vérifiez le contenu du dossier du projet qui vient d'être cloné depuis GitHub sur votre machine Cloud Shell.

Ce dossier contient deux fichiers:

  1. Le fichier Python main.py définit une fonction Cloud HTTP simple qui utilise un modèle de génération de texte Vertex AI pour générer de courts résumés des entrées de texte. La fonction utilise une entrée de texte comme paramètre et renvoie un bref résumé de l'entrée. La fonction utilise différents paramètres pour contrôler le processus de génération, tels que la créativité, la diversité et la fluidité du texte généré. La fonction Cloud HTTP accepte un objet de requête et renvoie le résumé du modèle en tant que réponse.
  2. requirements.txt contient des dépendances de packages:
  • functions-framework==3.: Elle s'assure que la fonction utilise les dernières fonctionnalités et corrections de bugs du framework des fonctions.
  • google-cloud-aiplatform: nécessaire pour utiliser le modèle de génération de texte de Vertex AI.
  • google-cloud-storage::nécessaire pour créer des buckets de stockage dans Google Cloud Storage.
  • google-cloud-logging: obligatoire pour générer des journaux.

5. Déployer la fonction

  1. Créez deux buckets Cloud Storage:
  • Premier bucket: le bucket $BUCKET_NAME sera utilisé pour importer les fichiers de synthèse. Créez la variable d'environnement pour stocker le nom du bucket comme suit:
export BUCKET_NAME='Your Bucket Name'
  • Deuxième bucket: $BUCKET_NAME-summaries sera utilisé pour stocker le fichier récapitulatif.
  • Nous allons utiliser la commande gsutil pour créer les buckets:
  • gsutil est une application Python qui vous permet d'accéder à Cloud Storage à partir de la ligne de commande. Vous pouvez utiliser gsutil pour un large éventail de tâches de gestion des buckets et des objets.
  • mb signifie « Créer un bucket ».
gsutil mb -l $REGION gs://"$BUCKET_NAME"

gsutil mb -l $REGION gs://"$BUCKET_NAME"-summaries
  1. À ce stade, nous sommes prêts à déployer la fonction. Mais avant cela, assurez-vous que le compte de service du bucket Cloud Storage dispose du rôle Éditeur Pub/Sub.
  2. Accédez à Google Cloud Storage, puis cliquez sur "Paramètres" dans le volet de gauche.

8ce34eb05153abf2.png

  1. Copiez l'élément "Service account" (Compte de service). dans les paramètres et notez-le.
  2. Accédez à IAM et administration dans le menu de navigation de la console Google Cloud.

c5a7103e90689684.png

  1. Dans l'onglet "Autorisations", cliquez sur ACCORDER L'ACCÈS, puis saisissez l'ID du compte de service que vous avez noté dans la section "Nouveaux comptes principaux", puis sélectionnez le rôle "Éditeur Pub/Sub". et cliquez sur ENREGISTRER.

11c2df774fa740a9.png

  1. Déployer cette source dans Cloud Functions Exécutez la commande suivante à partir du terminal Cloud Shell:
  2. Vérifiez que vous êtes bien dans le dossier summarization-gcs-cloudfunction de ce projet.
  3. Exécutez la commande suivante :
gcloud functions deploy summarizeArticles \
--gen2 \
--runtime=python311 \
--source=. \
--region=$REGION \
--project=$PROJECT_ID \
--entry-point=summarize_gcs_object \
--trigger-bucket=$BUCKET_NAME \
--set-env-vars=GCP_PROJECT=$PROJECT_ID,GCP_REGION=$REGION \
--max-instances=1 \
--quiet
  1. Dans la console Google Cloud, accédez à Cloud Functions :

Cela permet d'afficher la fonction Cloud "vertex-ai-function" que nous venons de créer avec son URL publique. Nous allons utiliser cette fonction pour créer un déclencheur GCS.

6. Appeler la fonction

Lorsqu'un fichier est importé dans le bucket* $BUCKET_NAME*, le déclencheur GCS appelle la fonction. Le bucket $BUCKET_NAME"-summaries inclut le fichier résumé portant le même nom.

Avant de commencer, enregistrez l'exemple de fichier story.md du dossier summarization-gcs-cloudfunction sur votre ordinateur local.

  1. Dans la console Google Cloud, accédez à Cloud Storage.
  2. Ouvrez votre bucket $BUCKET_NAME à partir de la liste des buckets.
  3. Cliquez sur "Upload files" (Importer des fichiers) et sélectionnez le fichier story.md.

La fonction summarizeArticles est déclenchée et commence à résumer le contenu du fichier.

  1. Dans le volet de navigation de gauche, cliquez sur "Buckets".
  2. Ouvrez votre bucket $BUCKET_NAME"-summaries.

Le fichier story.md inclut un résumé de son contenu.

7. Effectuer un nettoyage

Pour éviter que les ressources utilisées dans cet article soient facturées sur votre compte Google Cloud, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.
  2. Dans la liste des projets, sélectionnez celui que vous souhaitez supprimer, puis cliquez sur "Supprimer".
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur "Arrêter" pour supprimer le projet.
  4. Si vous souhaitez conserver le projet et ne supprimer que certaines ressources, accédez à la console Cloud Storage, cliquez sur "Buckets". Dans la liste, cochez les buckets que vous souhaitez supprimer, puis cliquez sur SUPPRIMER.
  5. Vous pouvez également supprimer la fonction Cloud Functions en accédant à Cloud Functions et, dans la liste des fonctions, cochez celle que vous souhaitez supprimer, puis cliquez sur SUPPRIMER.

8. Félicitations

Félicitations ! Vous avez utilisé un LLM Vertex AI Text Generation de manière programmatique pour synthétiser du texte sur vos données. Pour en savoir plus sur les modèles disponibles, consultez la documentation sur les LLM de Vertex AI.