Générer une image à partir de Vertex AI et l'importer dans Google Ads

1. Introduction

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez apprendre à générer des images à l'aide de Vertex AI et à les envoyer à Google Ads afin que les composants puissent être utilisés comme composants Image dans les campagnes.

Points abordés

  • Générer des images à partir de GCP, Vertex AI
  • Importer des images dans Google Ads
  • Utiliser les composants dans Google Ads

Prérequis

  • Compte Google Ads
  • Compte GCP

2. Obtenir des identifiants Google Ads

Cette partie est nécessaire pour obtenir des composants Image à partir de Google Ads. Pour accéder à Google Ads depuis Colab, vous devez disposer des identifiants appropriés.

Créer des identifiants > Créer un ID client OAuth > Application Web

Pour obtenir les identifiants appropriés permettant de connecter Google Ads, vous devez accéder aux identifiants Cloud.

Si vous n'avez pas configuré l'écran d'autorisation, commencez par le faire.

  1. Type d'utilisateur : externe
  2. État de publication : En production

6ecf963c5957379d.png

Ajoutez l'URI suivant à "URI de redirection autorisés"

Saisissez l'URI ci-dessous, comme indiqué sur la capture d'écran.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

Copier l'ID client et le code secret du client

Vous pouvez obtenir un ID client et un code secret client.

c8578bf54ade7cee.png

3. Générer un jeton d'actualisation

Accès à OAuth Playground

Vous pouvez facilement émettre un jeton d'actualisation temporaire sur OAuth Playground.

Accédez aux paramètres et cochez la case "Utiliser vos propres identifiants OAuth". Après avoir obtenu l'ID client et le code secret du client OAuth à partir du chapitre précédent, vous pouvez les saisir dans les zones de texte correspondantes. ace79f71603a922.png

ad82eca7a99c446c.png

Ajouter le champ d'application

Vous pouvez ajouter le champ d'application https://www.googleapis.com/auth/adwords dans la zone ci-dessous.

eff5408ba160aad1.png

Cliquez sur "Autoriser les API". L'écran suivant s'affiche.

Générer un jeton d'actualisation

Cliquez sur "Échanger le code d'autorisation contre des jetons". Le jeton d'actualisation s'affiche.

e8c6860d61ad73fd.png

4. Préparer Colab pour l'exécution du code

Colab est un notebook de code pratique fourni avec Python. L'option par défaut fournit une puissance de calcul assez généreuse. Vous pouvez également utiliser n'importe quelle plate-forme pour appeler l'API REST de Google Cloud Vertex AI.

Pour l'utiliser, veuillez accéder à https://colab.research.google.com/.

Accédez à [Fichier → Nouvelle note] et commencez à écrire de nouveaux codes.

6b95020b3d3369ae.png

Si vous cliquez sur "Nouveau bloc-notes", la nouvelle feuille s'affiche.

5. Générer des images avec Google Cloud Vertex AI

Importer des bibliothèques

!pip install requests google-ads

Commencez par installer les bibliothèques pour Google Ads et les requêtes d'API. Vous devez redémarrer l'environnement d'exécution après avoir installé les bibliothèques.

Vous pouvez également charger des bibliothèques essentielles.

import requests
import json
import base64

from google.ads import googleads
from google.colab import auth
from IPython.display import display, Image

Obtenir l'authentification

Vous serez invité à autoriser votre compte Google.

auth.authenticate_user()

access_token = !gcloud auth print-access-token
access_token = access_token[0]

Une fois que vous vous êtes autorisé, vous pouvez appeler les API Google Cloud.

6. Générer une image à partir de Vertex AI

Préparer votre requête et votre requête POST

Tout d'abord, vous devez disposer de l'ID de votre projet Google Cloud. Vous pouvez l'obtenir depuis Google Cloud. Vous avez besoin d'une requête textuelle et vous pouvez également définir le nombre d'images dont vous avez besoin. Pour en savoir plus sur les autres options, veuillez consulter la documentation officielle.

PROJECT_ID = 'abcdefg' # Your GCP project ID
TEXT_PROMPT = 'cat computer' # Your prompt goes here.
IMAGE_COUNT = 4 # You will get 4 images as a result.

Vous pouvez écrire ce que vous voulez dans la requête textuelle. Ici, nous voulons générer des images montrant un chat et un ordinateur sur une même photo.

url = f"https://us-central1-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/us-central1/publishers/google/models/imagegeneration:predict"

headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json; charset=utf-8"
}

data = {
    "instances": [
        {
            "prompt": TEXT_PROMPT
        }
    ],
    "parameters": {
        "sampleCount": IMAGE_COUNT
    }
}

Demander la génération d'images

Une fois que vous êtes prêt pour le fichier JSON, vous pouvez demander la génération d'image. Vous trouverez ci-dessous la requête HTTP type.

response = requests.post(url, headers=headers, data=json.dumps(data))

if response.status_code == 200:
    response_data = response.json()

    for prediction in response_data.get('predictions', []):
        image_data = base64.b64decode(prediction['bytesBase64Encoded'])
        display(Image(data=image_data))
else:
    print("Request failed:", response.status_code, response.text)

Si vous patientez quelques secondes, vous obtiendrez le résultat. C'est très simple !

dec38d2d3f7faab8.png

7. Associer votre compte à Google Ads

Associer votre compte Google Ads

Vous avez besoin d'un jeton de développeur Google Ads. Vous pouvez demander un jeton développeur de base ou standard, mais un jeton de test est également disponible à des fins de test. Accédez à votre compte CM. Dans l'onglet "Outils et paramètres", vous trouverez le centre d'API. Vous trouverez votre jeton dans la section "API".

L'ID client, le code secret du client et les jetons d'actualisation doivent être prêts à l'étape précédente.

credentials = {
    "developer_token": "ABCDEFG",
    "client_id": "123456789012-abcd1234.apps.googleusercontent.com",
    "client_secret": "GOCSPX-abcd1234-abcd1234-abcd1234",
    "refresh_token": "1//abcdefghijklmnopqrstuvwxyz",
    "use_proto_plus": True
}

Une fois les identifiants définis, vous pouvez charger l'API GoogleAdsService. Le numéro client est généralement au format xxx-xxxx-xxx, mais vous devez supprimer le tiret.

client = googleads.client.GoogleAdsClient.load_from_dict(credentials, version='v13')
googleads_service = client.get_service("GoogleAdsService")
customer_id = "1234567890"

Interroger un compte Google Ads

Vous pouvez désormais effectuer des tests avec googleads_service. Interrogeons le compte Ads pour connaître les types de composants qu'il contient.

query = (
'''
SELECT
    ad_group_ad.ad.id,
    ad_group_ad.ad.app_ad.headlines,
    ad_group_ad.ad.app_ad.descriptions,
    ad_group_ad.ad.app_ad.images
FROM ad_group_ad
''')
response = googleads_service.search(customer_id=customer_id, query=query)
for googleads_row in response:
    print(googleads_row)

La liste des composants s'affiche au format JSON dans le compte Google Ads. Si vous voyez un message semblable à

ad_group_ad {

`images { asset: "customers/1234567890/assets/09876543210" }` 

}

8. Importer un composant Image dans Google Ads

Importer

Pour la dernière étape, nous allons importer les composants générés dans Google Ads.

for prediction in response_data.get('predictions', []):
    image_base64 = prediction['bytesBase64Encoded']

    image_bytes = base64.b64decode(image_base64)

    asset_service = client.get_service('AssetService')
    asset_operation = client.get_type('AssetOperation')

    asset = asset_operation.create
    asset.type_ = client.enums.AssetTypeEnum.IMAGE
    asset.image_asset.data = image_bytes
    asset.name = "cats"

    asset_service.mutate_assets(customer_id=customer_id, operations=[asset_operation])

Au bout de quelques secondes, vous pourrez vérifier le composant importé dans l'interface Google Ads. Voici un exemple de capture d'écran.

7f2fb6063e5ae675.png

9. Félicitations

Félicitations, vous avez réussi à générer de magnifiques composants d'image à partir de l'image existante !

Ce que vous avez appris

  • Générer des composants Image à l'aide de l'IA générative (Vertex AI)
  • Importer des images dans Google Ads et les utiliser comme composants Image