Cómo generar imágenes a partir de Vertex AI y subirlas a Google Ads

1. Introducción

Qué compilarás

En este codelab, aprenderás a generar imágenes con Vertex AI y enviarlas a Google Ads para que los recursos se puedan usar como recursos de imagen en las campañas.

Qué aprenderás

  • Cómo generar imágenes desde GCP y Vertex AI
  • Cómo subir imágenes a Google Ads
  • Cómo usarlas en Google Ads

Requisitos

  • Cuenta de Google Ads
  • Cuenta de GCP

2. Obtén credenciales de Google Ads

Esta parte es necesaria para obtener recursos de imagen de Google Ads. Para acceder a Google Ads desde Colab, necesitas las credenciales adecuadas.

Crea credenciales -> Crea un "ID de cliente de OAuth" -> Aplicación web

Para obtener las credenciales adecuadas para conectar Google Ads, debes acceder a las credenciales de Cloud.

Si no configuraste la pantalla de consentimiento, hazlo primero.

  1. Tipo de usuario: Externo
  2. Estado de publicación: En producción

6ecf963c5957379d.png

Agrega el siguiente URI a "URIs de redireccionamiento autorizados"

Coloca el siguiente URI como se muestra en la captura de pantalla.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

Copia el ID de cliente y el secreto del cliente

Puedes obtener el ID de cliente y el secreto del cliente.

c8578bf54ade7cee.png

3. Genera un token de actualización

Accede a OAuth Playground

Puedes emitir fácilmente un token de actualización temporal en OAuth Playground.

Ve a la configuración y marca la opción "Usar tus propias credenciales de OAuth". Después de obtener el ID de cliente de OAuth y el secreto del cliente del capítulo anterior, puedes colocarlos en los cuadros de texto correspondientes. ace79f71603a922.png

ad82eca7a99c446c.png

Agrega el permiso

Puedes agregar el permiso https://www.googleapis.com/auth/adwords en el área que se muestra a continuación.

eff5408ba160aad1.png

Haz clic en Autorizar APIs y verás la siguiente pantalla.

Genera un token de actualización

Haz clic en "Intercambiar código de autorización por tokens" y verás el token de actualización.

e8c6860d61ad73fd.png

4. Prepara Colab para ejecutar el código

Colab es el práctico notebook de código que viene con Python. La opción predeterminada proporciona una cantidad bastante generosa de potencia de procesamiento. También puedes usar cualquier plataforma para llamar a la API de REST de Vertex AI de Google Cloud.

Visita https://colab.research.google.com/ para usarla.

Ve a [Archivo → Nota nueva] y comienza a escribir códigos nuevos.

6b95020b3d3369ae.png

Si haces clic en Notebook nuevo, verás la nueva hoja lista para usar.

5. Genera imágenes a través de Vertex AI de Google Cloud

Importa las bibliotecas

!pip install requests google-ads

Primero, instala las bibliotecas para Google Ads y las solicitudes de la API. Debes reiniciar el entorno de ejecución después de instalar las bibliotecas.

También puedes cargar bibliotecas esenciales.

import requests
import json
import base64

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

Obtén la autenticación

Se te pedirá que autorices tu cuenta de Google.

auth.authenticate_user()

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

Después de autorizarte, podrás llamar a las APIs de Google Cloud.

6. Genera imágenes desde Vertex AI

Prepara tu instrucción y la solicitud POST

Primero, debes tener el ID de tu proyecto de Google Cloud. Puedes obtenerlo de Google Cloud. Necesitas una instrucción de texto y también puedes establecer cuántas imágenes necesitas. Para obtener más opciones, consulta la documentación oficial .

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.

Puedes escribir lo que quieras dentro de la instrucción de texto. En este caso, queremos generar las imágenes que tienen un gato y una computadora juntos en una sola imagen.

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
    }
}

Solicita la generación de imágenes

Una vez que tengas todo listo para el archivo JSON, puedes solicitar la generación de imágenes. A continuación, se muestra la solicitud HTTP típica.

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 esperas unos segundos, obtendrás el resultado. Es muy simple.

dec38d2d3f7faab8.png

7. Conéctate a Google Ads

Conéctate a tu cuenta de Google Ads

Necesitas un token de desarrollador de Google Ads. Puedes solicitar un token de desarrollador básico o estándar, pero, para realizar pruebas, también está disponible el token de prueba. Ve a tu cuenta de MCC. En la pestaña Herramientas y configuración, verás el centro de APIs. En la sección de la API, encontrarás tu token.

El ID de cliente, el secreto del cliente y los tokens de actualización deben estar listos en el capítulo anterior.

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
}

Después de configurar las credenciales, puedes cargar la API de GoogleAdsService. Por lo general, el ID de cliente tiene el formato xxx-xxxx-xxx, pero debes quitar el "-".

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

Consulta la cuenta de Google Ads

Ahora, puedes probar con googleads_service. Consultemos qué tipo de recursos tenemos en la cuenta de Ads.

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)

Verás la lista de recursos en la cuenta de Google Ads en formato JSON. Si ves algo como lo siguiente:

ad_group_ad {

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

}

8. Sube recursos de imagen a Google Ads

Subir

En el último paso, subiremos los recursos generados a 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])

Después de unos segundos, podrás verificar el recurso subido a través del frontend de Google Ads. Esta es una captura de pantalla de ejemplo.

7f2fb6063e5ae675.png

9. Felicitaciones

Felicitaciones. Generaste correctamente recursos de imagen atractivos a partir de la imagen existente.

Aprendiste lo siguiente:

  • Cómo generar recursos de imagen a través de la IA generativa (Vertex AI)
  • Cómo subir imágenes a Google Ads y usarlas como recursos de imagen