Jak wygenerować obraz w Vertex AI i przesłać do Google Ads

1. Wprowadzenie

Co utworzysz

Z tego ćwiczenia w Codelabs dowiesz się, jak generować obrazy za pomocą Vertex AI i wysyłać je do Google Ads, aby można było używać tych komponentów jako komponentów z obrazem w kampaniach.

Czego się nauczysz

  • Jak generować obrazy przy użyciu GCP, Vertex AI
  • Przesyłanie obrazów do Google Ads
  • Jak używać go w Google Ads

Czego potrzebujesz

  • Konto Google Ads
  • Konto GCP

2. Uzyskaj dane logowania do Google Ads

Ta część jest niezbędna do pobrania z Google Ads komponentów z obrazem. Aby uzyskać dostęp do Google Ads z poziomu Colab, musisz mieć odpowiednie dane logowania.

Utwórz dane logowania -> Utwórz „Identyfikator klienta OAuth” -> Aplikacja internetowa

Aby uzyskać odpowiednie dane logowania do połączenia z Google Ads, musisz uzyskać dostęp do danych logowania do Google Cloud.

Jeśli nie masz skonfigurowanego ekranu zgody, skonfiguruj go najpierw.

  1. Typ użytkownika: zewnętrzny
  2. Stan publikacji: w wersji produkcyjnej

6ecf963c5957379d.png

Dodaj następujący identyfikator URI do pola „Autoryzowane identyfikatory URI przekierowania”

Umieść identyfikator URI poniżej jak na zrzucie ekranu poniżej.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

Skopiuj identyfikator i tajny klucz klienta

Możesz uzyskać identyfikator klienta i tajny klucz klienta.

c8578bf54ade7cee.png

3. Wygeneruj token odświeżania

Dostęp do OAuth Playground

Tymczasowy token odświeżania możesz z łatwością wystawić w OAuth Playground.

Przejdź do ustawień i zaznacz opcję „Użyj własnych danych logowania OAuth”. Uzyskane identyfikatory klienta OAuth i tajny klucz klienta z poprzedniego rozdziału możesz wpisać w odpowiednich polach tekstowych. ace79f71603a922.png

ad82eca7a99c446c.png

Dodawanie zakresu

Zakres https://www.googleapis.com/auth/adwords możesz dodać w obszarze poniżej.

eff5408ba160aad1.png

Kliknij Autoryzuj interfejsy API. Wyświetli się następny ekran.

Wygeneruj token odświeżania

Kliknij „Exchange authorization code for token” (Kod autoryzacji wymiany dla tokenów). Wyświetli się token odświeżania.

e8c6860d61ad73fd.png

4. Przygotowanie Colab do wykonania kodu

Colab to praktyczny notatnik z kodem, który wchodzi w skład Pythona. Opcja domyślna zapewnia całkiem sporą moc obliczeniową. Za pomocą dowolnej platformy możesz też wywołać interfejs API REST interfejsu Vertex AI Google Cloud.

Aby z niego skorzystać, otwórz stronę https://colab.research.google.com/.

Przejdź do [Plik → Nowa notatka] i zacznij pisać nowe kody.

6b95020b3d3369ae.png

Gdy klikniesz Nowy notatnik, zobaczysz gotowy arkusz.

5. Generowanie obrazu za pomocą Vertex AI Google Cloud

Importuj biblioteki

!pip install requests google-ads

Najpierw zainstaluj biblioteki dla Google Ads i żądania do interfejsu API. Po zainstalowaniu bibliotek musisz ponownie uruchomić środowisko wykonawcze.

Możesz też wczytać najważniejsze biblioteki.

import requests
import json
import base64

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

Uzyskaj uwierzytelnianie

Pojawi się prośba o autoryzację konta Google.

auth.authenticate_user()

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

Po przeprowadzeniu autoryzacji możesz wywoływać interfejsy Google Cloud APIs.

6. Wygeneruj obraz z Vertex AI

Przygotowywanie promptu i żądania POST

Przede wszystkim przygotuj identyfikator projektu Google Cloud. Możesz je pobrać z Google Cloud. Potrzebujesz prompta tekstowego. Możesz też określić liczbę obrazów, które potrzebujesz. Więcej opcji znajdziesz w oficjalnej dokumentacji.

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.

W prompcie tekstowym możesz wpisać, co chcesz. Tutaj chcemy wygenerować obrazy, na których kot i komputer są widoczne razem.

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

Wysyłanie prośby o wygenerowanie obrazu

Po przygotowaniu pliku JSON możesz poprosić o wygenerowanie obrazu. Poniżej znajduje się typowe żądanie HTTP.

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)

Jeśli poczekasz kilka sekund, zobaczysz wynik. To bardzo proste.

dec38d2d3f7faab8.png

7. Połącz się z Google Ads

Połącz z kontem Google Ads

Musisz uzyskać token programisty z Google Ads. Możesz poprosić o podstawowy lub standardowy token programisty, ale do celów testowych jest też dostępny token testowy. Wejdź na konto MCK. Na karcie „Narzędzia i ustawienia” pojawi się centrum interfejsu API. Swój token znajdziesz w sekcji API.

Identyfikator klienta, tajny klucz klienta i tokeny odświeżania powinny być gotowe w poprzednim rozdziale.

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
}

Po ustawieniu danych logowania możesz wczytać interfejs GoogleAdsService API. Identyfikator klienta ma zwykle format xxx-xxxx-xxx, ale należy usunąć znak „-”.

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

Wysyłanie zapytań dotyczących konta Google Ads

Teraz możesz przeprowadzać testy za pomocą usługi googleads_service. Sprawdźmy, jakie rodzaje komponentów mamy na koncie 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)

Zobaczysz listę komponentów na koncie Google Ads w formacie JSON. Jeśli zobaczysz komunikat podobny do

ad_group_ad {

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

}

8. Prześlij komponent z obrazem do Google Ads

Przesyłanie

W ostatnim kroku będziemy przesyłać do Google Ads wygenerowane komponenty.

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])

Po kilku sekundach będzie można sprawdzić przesłany zasób w interfejsie Google Ads. Oto przykładowy zrzut ekranu.

7f2fb6063e5ae675.png

9. Gratulacje

Gratulujemy! Udało Ci się wygenerować piękne komponenty z obrazem na podstawie istniejącego obrazu.

Wiesz już

  • Jak generować komponenty z obrazem za pomocą generatywnej AI (Vertex AI)
  • Przesyłanie obrazów do Google Ads i używanie ich jako komponentów z obrazem