GSP1249

Présentation
Dans cet atelier, vous allez apprendre à extraire des mots clés et à évaluer les sentiments des clients dans les avis clients en utilisant BigQuery Machine Learning avec des modèles distants (Gemini Pro).
BigQuery est une plate-forme d'analyse de données entièrement gérée et compatible avec l'IA, conçue pour être multimoteur, multiformat et multicloud. Elle vous aide à maximiser la valeur de vos données. BigQuery Machine Learning, l'une de ses fonctionnalités essentielles, vous permet de créer et d'exécuter des modèles de machine learning (ML) à l'aide de requêtes SQL ou avec des notebooks Colab Enterprise.
Gemini est une famille de modèles d'IA générative développés par Google DeepMind, et conçus pour les cas d'utilisation multimodaux. L'API Gemini vous donne accès aux modèles Gemini Pro, Gemini Pro Vision et Gemini Flash.
À la fin de cet atelier, vous créerez une application de service client basée sur Python dans un notebook Colab Enterprise au sein de BigQuery, afin d'utiliser le modèle Gemini Flash pour répondre aux avis clients audio.
Objectifs
Dans cet atelier, vous allez apprendre à :
- créer un notebook Python dans BigQuery à l'aide de Colab Enterprise ;
- créer une connexion à une ressource cloud dans BigQuery ;
- créer l'ensemble de données et les tables dans BigQuery ;
- créer les modèles distants Gemini dans BigQuery ;
- demander à Gemini d'analyser les mots clés et les sentiments (positifs ou négatifs) des avis clients textuels ;
- générer un rapport avec le nombre d'avis positifs et négatifs ;
- répondre aux avis clients à grande échelle ;
- créer une application pour les conseillers clientèle afin qu'ils puissent répondre aux avis clients audio.
Préparation
Avant de cliquer sur le bouton "Démarrer l'atelier"
Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.
Cet atelier pratique vous permet de suivre les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de vous connecter à Google Cloud le temps de l'atelier.
Pour réaliser cet atelier :
- Vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome).
Remarque : Ouvrez une fenêtre de navigateur en mode incognito (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue s'affiche pour vous permettre de sélectionner un mode de paiement.
Sur la gauche, vous trouverez le panneau "Détails concernant l'atelier", qui contient les éléments suivants :
- Le bouton "Ouvrir la console Google Cloud"
- Le temps restant
- Les identifiants temporaires que vous devez utiliser pour cet atelier
- Des informations complémentaires vous permettant d'effectuer l'atelier
-
Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).
L'atelier lance les ressources, puis ouvre la page "Se connecter" dans un nouvel onglet.
Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.
Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
-
Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.
{{{user_0.username | "Username"}}}
Vous trouverez également le nom d'utilisateur dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
-
Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.
{{{user_0.password | "Password"}}}
Vous trouverez également le mot de passe dans le panneau "Détails concernant l'atelier".
-
Cliquez sur Suivant.
Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud.
Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
-
Accédez aux pages suivantes :
- Acceptez les conditions d'utilisation.
- N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
- Ne vous inscrivez pas à des essais sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
Tâche 1 : Créer un notebook Python dans BigQuery et le connecter à l'environnement d'exécution
Dans cette tâche, vous allez créer un notebook Python dans BigQuery et le connecter à l'environnement d'exécution.
Créer le notebook Python dans BigQuery
-
Dans la console Google Cloud, accédez au menu de navigation, puis cliquez sur BigQuery.
-
Cliquez sur OK dans le pop-up de bienvenue.
-
Cliquez sur Notebook.
-
Sélectionnez pour la région.
-
Cliquez sur SÉLECTIONNER.
Vous pouvez remarquer que le notebook Python est ajouté à la section des notebooks de l'explorateur sous votre projet.
-
Supprimez toutes les cellules présentes dans le notebook en cliquant sur l'icône Corbeille qui s'affiche lorsque vous pointez sur chacune des cellules.
Vous avez terminé cette étape lorsque le notebook est vide. Vous pouvez alors passer à l'étape suivante.
Se connecter à l'environnement d'exécution
-
Cliquez sur Se connecter.
-
Cliquez sur l'ID de participant Qwiklabs.
Veuillez patienter. La connexion à l'environnement d'exécution peut prendre jusqu'à trois minutes.
À un moment donné, vous verrez que l'état de connexion passe à "Connecté" en bas de la fenêtre du navigateur.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un notebook Python dans BigQuery et le connecter à l'environnement d'exécution
Tâche 2 : Créer la connexion à une ressource cloud et attribuer un rôle IAM
Créer la connexion à une ressource cloud dans BigQuery
Dans cette tâche, vous allez créer une connexion à une ressource cloud dans BigQuery pour pouvoir travailler avec les modèles Gemini Pro et Gemini Flash. Vous allez également accorder des autorisations IAM au compte de service de la connexion à la ressource cloud en lui attribuant un rôle, afin de lui permettre d'accéder aux services Vertex AI.
Vous utiliserez le SDK Python et Google Cloud CLI pour créer la connexion à la ressource. Toutefois, vous devez d'abord importer les bibliothèques Python, ainsi que définir les variables "project_id" et "region".
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Import Python libraries
import vertexai
from vertexai.generative_models import GenerativeModel, Part
from google.cloud import bigquery
from google.cloud import storage
import json
import io
import matplotlib.pyplot as plt
from IPython.display import HTML, display
from IPython.display import Audio
from pprint import pprint
Ce code importera les bibliothèques Python.
-
Exécutez cette cellule. Les bibliothèques sont désormais chargées et prêtes à être utilisées.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Set Python variables for project_id and region
project_id = "{{{project_0.project_id|Project ID}}}"
region = " {{{ project_0.default_region | "REGION" }}}"
Remarque : "project_id" et "region" sont enregistrés ici en tant que variables Python, et non SQL. Par conséquent, vous ne pouvez y faire référence dans les cellules qu'en utilisant du code Python, pas du code SQL.
-
Exécutez cette cellule. Les variables pour "project_id" et "region" sont définies.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Create the resource connection
!bq mk --connection \
--connection_type=CLOUD_RESOURCE \
--location=US \
gemini_conn
Ce code utilisera la commande bq mk --connection
de Google Cloud CLI pour créer la connexion à la ressource.
-
Exécutez cette cellule. La connexion à la ressource est maintenant créée.
-
Cliquez sur le bouton Afficher les actions à côté de l'ID de votre projet dans l'explorateur.
-
Cliquez sur Actualiser le contenu.
-
Développez les connexions externes. Vous pouvez constater que us.gemini_conn
est maintenant listé comme connexion externe.
-
Cliquez sur us.gemini_conn.
-
Copiez l'ID de compte de service indiqué dans le volet "Informations de connexion" dans un fichier texte. Vous en aurez besoin à l'étape suivante.
Attribuer le rôle d'utilisateur Vertex AI au compte de service de la connexion
-
Dans le menu de navigation de la console, cliquez sur IAM et administration.
-
Cliquez sur Accorder l'accès.
-
Dans le champ Nouveaux comptes principaux, saisissez l'ID de compte de service que vous avez copié précédemment.
-
Dans le champ "Sélectionnez un rôle", choisissez Vertex AI, puis le rôle Utilisateur Vertex AI.
-
Cliquez sur Enregistrer.
Le compte de service inclut désormais le rôle Utilisateur Vertex AI.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer la connexion à une ressource cloud et attribuer un rôle IAM
Tâche 3 : Examiner les fichiers audio et l'ensemble de données, et attribuer un rôle IAM au compte de service
Dans cette tâche, vous allez examiner l'ensemble de données et les fichiers audio. Vous accorderez ensuite des autorisations IAM au compte de service de la connexion à la ressource cloud.
Examiner les fichiers audio, les fichiers image et l'ensemble de données d'avis clients sur Cloud Storage
Avant de commencer cette tâche visant à accorder des autorisations au compte de service de la connexion à la ressource, examinez l'ensemble de données et les fichiers image.
-
Dans la console Google Cloud, sélectionnez le menu de navigation (
), puis Cloud Storage > Buckets.
-
Cliquez sur le bucket -bucket.
-
Une fois dans le bucket, ouvrez le dossier gsp1249. Celui-ci contient quatre éléments :
- Le dossier
audio
contient tous les fichiers audio que vous allez analyser. Vous pouvez y accéder et examiner les fichiers audio.
- Le fichier
customer_reviews.csv
est l'ensemble de données qui contient les avis clients textuels.
- Le dossier
images
contient un fichier image que vous allez utiliser dans la suite de cet atelier. Vous pouvez accéder à ce dossier et voir le fichier image qu'il contient.
-
notebook.ipynb
est une copie du notebook que vous créez dans cet atelier. Vous pouvez l'examiner au besoin.
Remarque : Vous pouvez utiliser l'URL authentifiée pour télécharger et examiner chaque élément.
Attribuer le rôle IAM d'administrateur des objets Storage au compte de service de la connexion
En attribuant les autorisations IAM requises au compte de service de la connexion à la ressource cloud avant de commencer à travailler dans BigQuery, vous vous assurez d'éviter les erreurs de type "accès refusé" lors de l'exécution des requêtes.
-
Revenez à la racine du bucket.
-
Cliquez sur AUTORISATIONS.
-
Cliquez sur ACCORDER L'ACCÈS.
-
Dans le champ Nouveaux comptes principaux, saisissez l'ID de compte de service que vous avez copié précédemment.
-
Dans le champ "Sélectionnez un rôle", saisissez Objets Storage, puis sélectionnez le rôle Administrateur des objets Storage.
-
Cliquez sur Enregistrer.
Le compte de service inclut désormais le rôle d'administrateur des objets Storage.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Examiner les images et l'ensemble de données, et attribuer un rôle IAM au compte de service
Tâche 4 : Créer l'ensemble de données et la table des avis clients dans BigQuery
Dans cette tâche, vous allez créer un ensemble de données pour le projet, ainsi que la table pour les avis clients.
Créer l'ensemble de données
Pour l'ensemble de données, vous allez utiliser les propriétés suivantes :
Champ |
Valeur |
ID de l'ensemble de données |
gemini_demo |
Type d'emplacement |
Sélectionnez Multirégional
|
Emplacement multirégional |
Sélectionnez US
|
-
Revenez au notebook Python dans BigQuery.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Create the dataset
%%bigquery
CREATE SCHEMA IF NOT EXISTS `{{{project_0.project_id|Project ID}}}.gemini_demo`
OPTIONS(location="US");
Notez que le code commence par %%bigquery
. Cela indique à Python que le code suivant immédiatement cette instruction sera du code SQL.
-
Exécutez cette cellule.
Le code SQL crée alors l'ensemble de données gemini_demo
dans votre projet résidant dans la région "us" listée sous votre projet dans le volet "Explorateur" de BigQuery.
Créer la table des avis clients avec des exemples de données
Pour créer la table des avis clients, vous allez utiliser une requête SQL.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Create the customer reviews table
%%bigquery
LOAD DATA OVERWRITE gemini_demo.customer_reviews
(customer_review_id INT64, customer_id INT64, location_id INT64, review_datetime DATETIME, review_text STRING, social_media_source STRING, social_media_handle STRING)
FROM FILES (
format = 'CSV',
uris = ['gs://{{{project_0.project_id|Project ID}}}-bucket/gsp1249/customer_reviews.csv']);
-
Exécutez cette cellule.
La table customer_reviews
est créée avec des exemples de données d'avis clients, incluant les éléments customer_review_id
, customer_id
, location_id
, review_datetime
, review_text
, social_media_source
et social_media_handle
pour chaque avis de l'ensemble de données.
-
Dans l'explorateur, cliquez sur la table customer_reviews, et examinez le schéma et les détails.
-
Pour interroger la table afin d'examiner les enregistrements, créez une cellule de code avec le code ci-dessous.
# Create the customer reviews table
%%bigquery
SELECT * FROM `gemini_demo.customer_reviews`
ORDER BY review_datetime
-
Exécutez cette cellule.
Les enregistrements provenant de la table sont affichés avec toutes les colonnes incluses.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer l'ensemble de données et la table des avis clients dans BigQuery
Tâche 5 : Créer le modèle Gemini Pro dans BigQuery
Maintenant que les tables sont créées, vous pouvez commencer à les utiliser. Dans cette tâche, vous allez créer le modèle Gemini Pro dans BigQuery.
-
Revenez au notebook Python.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Create the customer reviews table
%%bigquery
CREATE OR REPLACE MODEL `gemini_demo.gemini_pro`
REMOTE WITH CONNECTION `us.gemini_conn`
OPTIONS (endpoint = 'gemini-2.0-flash-001')
-
Exécutez cette cellule.
Ce code crée le modèle gemini_pro
. Celui-ci est ajouté à l'ensemble de données gemini_demo
, dans la section des modèles.
-
Dans l'explorateur, cliquez sur le modèle gemini_pro, et examinez le schéma et les détails.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer le modèle Gemini Pro dans BigQuery
Tâche 6 : Demander à Gemini d'analyser les mots clés et les sentiments des avis clients
Dans cette tâche, vous allez utiliser le modèle Gemini Pro pour analyser le sentiment, positif ou négatif, de chaque avis client.
Analyser les avis clients pour déterminer si le sentiment est positif ou négatif
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Create the sentiment analysis table
%%bigquery
CREATE OR REPLACE TABLE
`gemini_demo.customer_reviews_analysis` AS (
SELECT ml_generate_text_llm_result, social_media_source, review_text, customer_id, location_id, review_datetime
FROM
ML.GENERATE_TEXT(
MODEL `gemini_demo.gemini_pro`,
(
SELECT social_media_source, customer_id, location_id, review_text, review_datetime, CONCAT(
'Classify the sentiment of the following text as positive or negative.',
review_text, "In your response don't include the sentiment explanation. Remove all extraneous information from your response, it should be a boolean response either positive or negative.") AS prompt
FROM `gemini_demo.customer_reviews`
),
STRUCT(
0.2 AS temperature, TRUE AS flatten_json_output)));
-
Exécutez cette cellule.
Ce code récupère les avis clients de la table customer_reviews
, crée la requête, puis utilise ces éléments avec le modèle gemini_pro
afin de classer le sentiment de chaque avis. Les résultats sont ensuite stockés dans une nouvelle table appelée customer_reviews_analysis
, à laquelle vous pourrez vous reporter ultérieurement pour réaliser des analyses approfondies.
Veuillez patienter. Le traitement des enregistrements d'avis clients par le modèle prend environ 30 secondes.
Lorsque le modèle a terminé cette opération, la table customer_reviews_analysis
est créée.
-
Dans l'explorateur, cliquez sur la table customer_reviews_analysis, et examinez le schéma et les détails.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Pull the first 50 records from the customer_reviews_analysis table
%%bigquery
SELECT * FROM `gemini_demo.customer_reviews_analysis`
ORDER BY review_datetime
-
Exécutez cette cellule.
Les lignes renvoyées comportent la colonne ml_generate_text_llm_result
(qui contient l'analyse des sentiments), le texte de l'avis client, le numéro client et l'ID de zone géographique.
Examinez quelques enregistrements. Vous remarquerez peut-être que le format de certains résultats, classés positifs ou négatifs, est incorrect. Ils peuvent par exemple contenir des caractères superflus, tels que des points ou des espaces en trop. Vous pouvez nettoyer les enregistrements en utilisant la vue ci-dessous.
Créer une vue pour nettoyer les enregistrements
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Sanitize the records within a new view
%%bigquery
CREATE OR REPLACE VIEW gemini_demo.cleaned_data_view AS
SELECT REPLACE(REPLACE(LOWER(ml_generate_text_llm_result), '.', ''), ' ', '') AS sentiment,
REGEXP_REPLACE(
REGEXP_REPLACE(
REGEXP_REPLACE(social_media_source, r'Google(\+|\sReviews|\sLocal|\sMy\sBusiness|\sreviews|\sMaps)?', 'Google'),
'YELP', 'Yelp'
),
r'SocialMedia1?', 'Social Media'
) AS social_media_source,
review_text, customer_id, location_id, review_datetime
FROM `gemini_demo.customer_reviews_analysis`;
-
Exécutez cette cellule.
Le code crée la vue cleaned_data_view
, qui comprend les résultats d'analyse des sentiments, le texte de l'avis, le numéro client et l'ID de zone géographique. Ensuite, il nettoie le résultat d'analyse du sentiment (positif ou négatif) : il met toutes les lettres en minuscules et supprime les caractères superflus, comme les espaces en trop ou les points. La vue obtenue facilitera les analyses plus approfondies réalisées ultérieurement au cours de cet atelier.
-
Créez une nouvelle cellule de code avec le code ci-dessous :
# Pull the first 50 records from the cleaned_data_view view
%%bigquery
SELECT * FROM `gemini_demo.cleaned_data_view`
ORDER BY review_datetime
-
Exécutez cette cellule.
Notez que la colonne sentiment
contient désormais des valeurs nettoyées pour les avis positifs et négatifs. Vous pourrez utiliser cette vue ultérieurement pour créer un rapport.
Créer un rapport sur les nombres d'avis positifs et négatifs
Vous pouvez utiliser Python et la bibliothèque matplotlib pour créer un rapport avec graphique à barres sur les nombres d'avis positifs et négatifs.
-
Créez une cellule et ajoutez-y le code ci-dessous afin d'utiliser le client BigQuery pour interroger la vue cleaned_data_view sur les avis positifs et négatifs, de regrouper les avis par sentiment et de stocker les résultats dans un DataFrame.
# Task 6.5 - Create the BigQuery client, and query the cleaned data view for positive and negative reviews, store the results in a dataframe and then show the first 10 records
client = bigquery.Client()
query = "SELECT sentiment, COUNT(*) AS count FROM `gemini_demo.cleaned_data_view` WHERE sentiment like 'negative%' OR sentiment like 'positive%' GROUP BY sentiment;"
query_job = client.query(query)
results = query_job.result().to_dataframe()
results.head(10)
-
Exécutez cette cellule.
Le résultat de l'exécution de la cellule est une table contenant les nombres totaux d'avis positifs et négatifs.
-
Créez une cellule pour définir les variables du rapport.
# Define variable for the report.
sentiment = results["sentiment"].tolist()
count = results["count"].tolist()
-
Exécutez cette cellule. Aucun résultat n'est produit.
-
Créez une cellule pour générer le rapport.
# Task 6.7 - Build the report.
plt.bar(sentiment, count, color='skyblue')
plt.xlabel("Sentiment")
plt.ylabel("Total Count")
plt.title("Bar Chart from BigQuery Data")
plt.show()
-
Exécutez cette cellule.
Le résultat est un graphique à barres présentant les nombres d'avis positifs et négatifs.
-
Vous pouvez également créer un rapport simple avec coloration des nombres de sentiments négatifs et positifs en utilisant le code ci-dessous :
# Create an HTML table for the counts of negative and positive sentiment and color codes the results.
html_counts = f"""
Negative |
Positive |
{count[0]} |
{count[1]} |
"""
# Display the HTML tables
display(HTML(html_counts))
Cliquez sur Vérifier ma progression pour valider l'objectif.
Demander à Gemini d'analyser les mots clés et les sentiments des avis clients
Tâche 7 : Répondre aux avis clients
Data Beans souhaite tester des avis clients utilisant des images et des enregistrements audio. Dans cette section du notebook, vous allez utiliser Cloud Storage, BigQuery, Gemini Flash et Python pour réaliser une analyse des sentiments sur les avis clients fournis à Data Beans sous forme d'images et de fichiers audio. À partir de l'analyse obtenue, vous allez générer des réponses de service client à envoyer au client pour le remercier de son avis, ainsi que des actions que la chaîne de cafés peut entreprendre en fonction de l'avis.
Vous effectuerez cela à grande échelle, puis vous répéterez le processus avec une image et un fichier audio. Cela vous apprendra à créer une application de démonstration de faisabilité pour les conseillers clientèle. Un tel processus de gestion des commentaires clients permet d'adopter une stratégie "human-in-the-loop" (avec intervention humaine), où les conseillers clientèle peuvent entreprendre des actions directes auprès des clients et des cafés.
Traitement des fichiers audio à grande échelle avec réponses JSON
-
Créez une cellule pour effectuer une analyse des sentiments sur les fichiers audio et répondre au client.
# Conduct sentiment analysis on audio files and respond to the customer.
vertexai.init(project="{{{project_0.project_id|Project ID}}}", location="{{{project_0.default_region|region}}}")
model = GenerativeModel(model_name="gemini-2.0-flash-001")
prompt = """
Please provide a transcript for the audio.
Then provide a summary for the audio.
Then identify the keywords in the transcript.
Be concise and short.
Do not make up any information that is not part of the audio and do not be verbose.
Then determine the sentiment of the audio: positive, neutral or negative.
Also, you are a customer service representative.
How would you respond to this customer review?
From the customer reviews provide actions that the location can take to improve. The response and the actions should be simple, and to the point. Do not include any extraneous characters in your response.
Answer in JSON format with five keys: transcript, summary, keywords, sentiment, response and actions. Transcript should be a string, summary should be a sting, keywords should be a list, sentiment should be a string, customer response should be a string and actions should be string.
"""
bucket_name = "{{{project_0.project_id|Project ID}}}-bucket"
folder_name = 'gsp1249/audio' # Include the trailing '/'
def list_mp3_files(bucket_name, folder_name):
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
print('Accessing ', bucket, ' with ', storage_client)
blobs = bucket.list_blobs(prefix=folder_name)
mp3_files = []
for blob in blobs:
if blob.name.endswith('.mp3'):
mp3_files.append(blob.name)
return mp3_files
file_names = list_mp3_files(bucket_name, folder_name)
if file_names:
print("MP3 files found:")
print(file_names)
for file_name in file_names:
audio_file_uri = f"gs://{bucket_name}/{file_name}"
print('Processing file at ', audio_file_uri)
audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")
contents = [audio_file, prompt]
response = model.generate_content(contents)
print(response.text)
else:
print("No MP3 files found in the specified folder.")
Voici quelques points essentiels à propos de cette cellule :
- La première ligne initialise Vertex AI avec l'ID de votre projet et la région. Vous devez renseigner ces valeurs.
- La ligne suivante crée un modèle nommé "model", basé sur le modèle Gemini Flash, dans BigQuery.
- Vous définissez ensuite une requête que le modèle Gemini Flash utilisera. La requête assure la conversion du fichier audio en texte, puis l'analyse du sentiment du texte. Une fois l'analyse terminée, la réponse qui sera renvoyée au client est générée pour chaque fichier.
- Vous devez définir votre bucket en tant que variable de chaîne "bucket_name". Remarque : "folder_name" est également utilisé pour le sous-dossier gsp1249/audio. Ne modifiez pas cela.
- Une fonction appelée "list_mp3_files" est créée pour identifier tous les fichiers mp3 dans le bucket.
Ces fichiers sont ensuite traités par le modèle Gemini Flash dans l'instruction IF.
-
Exécutez cette cellule.
Les cinq fichiers audio sont analysés, et le résultat de l'analyse est fourni sous forme de réponse JSON. La réponse JSON peut être analysée en conséquence et acheminée vers les applications appropriées pour fournir une réponse au client ou indiquer des mesures d'amélioration à un café particulier.
Créer une application pour les conseillers clientèle
Dans cette section de l'atelier, vous allez apprendre à créer une application de service client basée sur l'analyse d'un avis négatif. Vous découvrirez comment :
- utiliser la même requête que celle de la cellule précédente pour analyser un seul avis négatif ;
- générer la transcription à partir du fichier audio de l'avis négatif, créer l'objet JSON à partir de la sortie du modèle avec le formatage approprié, et enregistrer des parties spécifiques de l'objet JSON en tant que variables Python à utiliser avec HTML dans votre application ;
- générer la table HTML, charger l'image que le client a importée pour l'avis et charger le fichier audio dans le lecteur ;
- afficher la table HTML, avec l'image et le lecteur pour le fichier audio.
-
Créez une cellule et insérez le code suivant pour pouvoir générer la transcription du fichier audio de l'avis négatif, ainsi que créer l'objet JSON et les variables associées.
# Generate the transcript for the negative review audio file, create the JSON object, and associated variables
audio_file_uri = f"gs://{bucket_name}/{folder_name}/data-beans_review_7061.mp3"
print(audio_file_uri)
audio_file = Part.from_uri(audio_file_uri, mime_type="audio/mpeg")
contents = [audio_file, prompt]
response = model.generate_content(contents)
print('Generating Transcript...')
#print(response.text)
results = response.text
# print("your results are", results, type(results))
print('Transcript created...')
print('Transcript ready for analysis...')
json_data = results.replace('```json', '')
json_data = json_data.replace('```', '')
jason_data = '"""' + results + '"""'
# print(json_data, type(json_data))
data = json.loads(json_data)
# print(data)
transcript = data["transcript"]
summary = data["summary"]
sentiment = data["sentiment"]
keywords = data["keywords"]
response = data["response"]
actions = data["actions"]
Voici quelques points essentiels à propos de cette cellule :
- Le code de la cellule sélectionnera un fichier audio spécifique dans Cloud Storage (data-beans_review_7061.mp3).
- Il enverra ensuite le fichier à la requête de la cellule précédente étiquetée "Task 7.1" pour que le modèle Gemini Flash le traite.
- La réponse du modèle est extraite au format JSON.
- Les données JSON sont ensuite analysées, et les variables Python pour la transcription, le résumé, le sentiment, les mots clés, la réponse apportée au client et les actions sont stockées.
-
Exécutez le code de la cellule.
La sortie est réduite au strict minimum. Elle ne contient que l'URI du fichier audio traité et les messages de traitement.
-
Créez une table HTML à partir des valeurs sélectionnées et chargez le fichier audio contenant l'avis négatif dans le lecteur.
# Create an HTML table (including the image) from the selected values.
html_string = f"""
customer_id: 7061 - @coffee_lover789 |
|
{transcript} |
{sentiment} feedback |
|
{keywords[0]} |
{keywords[1]} |
{keywords[2]} |
{keywords[3]} |
|
Customer summary:{summary} |
Recommended actions:{actions} |
Suggested Response:{response} |
"""
print('The table has been created.')
Voici quelques points essentiels à propos de cette cellule :
- Le code présent dans la cellule créera une chaîne de table HTML.
- Il insèrera ensuite les valeurs pour la transcription, le sentiment, les mots clés, l'image, le résumé, les actions et la réponse dans les cellules de la table.
- Le code appliquera également un style aux éléments de la table.
- Lors de l'exécution de la cellule, la sortie indiquera quand la table aura été créée.
-
Recherchez le tag <td style="padding:10px;">
avec la sortie {summary}
incluse. Ajoutez une ligne de code avant ce tag.
-
Collez <td rowspan="3" style="padding: 10px;"><img src="<authenticated url here>" alt="Customer Image" style="max-width: 300px;"></td>
dans cette nouvelle ligne de code.
-
Recherchez l'URL authentifiée pour le fichier image_7061.png. Accédez à Cloud Storage, sélectionnez le seul bucket disponible, puis le dossier d'images, et cliquez sur l'image.
-
Dans la page qui apparaît, copiez l'URL authentifiée pour l'image.
-
Revenez au notebook Python dans BigQuery. Remplacez <authenticated url here>
par l'URL authentifiée réelle dans le code que vous venez de coller.
-
Exécutez le code de la cellule.
Encore une fois, la sortie est réduite au strict minimum. Il s'agit seulement des messages de traitement qui indiquent l'achèvement de chaque étape.
-
Créez une cellule et insérez-y le code ci-dessous pour pouvoir télécharger le fichier audio et le charger dans le lecteur :
# Download the audio file from Google Cloud Storage and load into the player
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(f"{folder_name}/data-beans_review_7061.mp3")
audio_bytes = io.BytesIO(blob.download_as_bytes())
# Assuming a sample rate of 44100 Hz (common for MP3 files)
sample_rate = 44100
print('The audio file is loaded in the player.')
Voici quelques points essentiels à propos de cette cellule :
- Le code dans la cellule accède au bucket Cloud Storage et récupère le fichier audio concerné (data-beans_review_7061.mp3).
- Il télécharge ensuite le fichier en tant que flux d'octets et détermine le taux d'échantillonnage du fichier, de sorte que celui-ci puisse être lu dans un lecteur directement dans le notebook.
- Lorsque la cellule est exécutée, la sortie est un message indiquant que le fichier audio est chargé dans le lecteur et qu'il est prêt pour la lecture.
-
Exécutez le code de la cellule.
-
Créez une cellule et insérez le code ci-dessous :
# Task 7.5 - Build the mockup as output to the cell.
print('Analysis complete. Review the results below.')
display(HTML(html_string))
display(Audio(audio_bytes.read(), rate=sample_rate, autoplay=True))
-
Exécutez le code de la cellule.
C'est dans cette cellule que la magie opère. La méthode "display" permet d'afficher le HTML et le fichier audio chargé dans le lecteur. Examinez la sortie de la cellule. Elle doit ressembler à l'image ci-dessous :

Cliquez sur Vérifier ma progression pour valider l'objectif.
Répondre aux avis de vos clients
Félicitations !
Vous avez créé une connexion à une ressource cloud dans BigQuery. Vous avez également créé un ensemble de données, des tables et des modèles pour demander à Gemini d'analyser le sentiment et les mots clés dans des avis clients. Enfin, vous avez utilisé Gemini pour analyser les avis clients audio afin de générer des résumés et des mots clés pour répondre aux avis clients dans une application de service client.
Étapes suivantes et informations supplémentaires
Formations et certifications Google Cloud
Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.
Dernière mise à jour du manuel : 10 avril 2025
Dernier test de l'atelier : 10 avril 2025
Copyright 2025 Google LLC. Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.