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 utilizarlas 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.

Crear credenciales -> Crea un “ID de cliente de OAuth” -> Aplicación web

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

Si aún no configuraste la pantalla de consentimiento, primero configura la pantalla de consentimiento.

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

6ecf963c5957379d.png

Agrega el siguiente URI a “URI de redireccionamiento autorizados”

Escribe debajo del URI como en la siguiente captura de pantalla.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

Copiar el ID de cliente y el secreto del cliente

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

c8578bf54ade7cee.png

3. Cómo generar un token de actualización

Acceso a OAuth Playground

Puedes emitir con facilidad 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”. Una vez que hayas adquirido el ID de cliente de OAuth y el secreto de cliente del capítulo anterior, puedes colocarlos en los cuadros de texto correspondientes. ace79f71603a922.png

ad82eca7a99c446c.png

Agrega el permiso

Puedes agregar el alcance https://www.googleapis.com/auth/adwords en el siguiente área.

eff5408ba160aad1.png

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

Genera un token de actualización

Haz clic en “Intercambiar código de autorización para tokens” y verás el token de actualización.

e8c6860d61ad73fd.png

4. Prepara Colab para ejecutar el código

Colab es el notebook de código práctico 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 Nuevo notebook, verás la hoja nueva lista para ti.

5. Genera imágenes con Vertex AI de Google Cloud

Importa las bibliotecas

!pip install requests google-ads

Primero, instala bibliotecas para Google Ads y las solicitudes a 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

Obtener 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 que te autorices, estarás listo para llamar a las APIs de Google Cloud.

6. Generar imagen a partir de Vertex AI

Prepara la instrucción y la solicitud POST

Primero, debes tener el ID del proyecto de Google Cloud. Puedes obtenerlo en Google Cloud. Necesitas una instrucción de texto y también puedes configurar la cantidad de imágenes que necesitas. Para conocer 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. Aquí, queremos generar las imágenes que tienen gato y computadora juntas 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
    }
}

Cómo solicitar la generación de imágenes

Una vez que tengas todo listo para usar JSON, puedes solicitar la generación de la imagen. A continuación, se muestra una 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 varios segundos, obtendrás el resultado. ¡Muy sencillo!

dec38d2d3f7faab8.png

7. Conéctate con Google Ads

Vincula tu cuenta de Google Ads

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

El ID de cliente, el secreto de cliente y los tokens de actualización deberían 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
}

Una vez configuradas las credenciales, puedes cargar la API de GoogleAdsService. El ID del cliente suele tener el formato xxx-xxxx-xxx, pero debes quitar "-".

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

Consulta de una cuenta de Google Ads

Ahora, puede realizar la prueba con googleads_service. Preguntemos qué tipo de recursos tenemos en la cuenta de Google 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

ad_group_ad {

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

}

8. Cómo subir un recurso de imagen a Google Ads

Subir

En el último paso, vamos a subir 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 revisar 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 con la IA generativa (Vertex AI)
  • Cómo subir imágenes a Google Ads y utilizarlas como recursos de imagen