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

1. Wprowadzenie

Co utworzysz

W tym ćwiczeniu 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ć zasobów jako komponentów z obrazem w kampaniach.

Czego się nauczysz

  • Jak generować obrazy z GCP i Vertex AI
  • Jak przesyłać obrazy do Google Ads
  • Jak korzystać z niej w Google Ads

Czego potrzebujesz

  • Konto Google Ads
  • Konto GCP

2. Uzyskiwanie certyfikatów Google Ads

Ta część jest potrzebna do pobierania komponentów z obrazem z Google Ads. Aby uzyskać dostęp do Google Ads z 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 Google Ads, musisz mieć dostęp do danych logowania do Cloud.

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

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

6ecf963c5957379d.png

Dodaj ten identyfikator URI do sekcji „Autoryzowane identyfikatory URI przekierowania”

Wpisz poniższy identyfikator URI, jak pokazano na zrzucie ekranu poniżej.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

Skopiuj identyfikator klienta i tajny klucz klienta

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

c8578bf54ade7cee.png

3. Generowanie tokena odświeżania

Dostęp do OAuth Playground

Możesz łatwo wygenerować tymczasowy token odświeżania w OAuth Playground.

Otwórz ustawienia i zaznacz „Używaj własnych danych logowania OAuth”. Po uzyskaniu identyfikatora klienta OAuth i tajnego klucza klienta w poprzednim rozdziale możesz wpisać je w odpowiednich polach tekstowych. ace79f71603a922.png

ad82eca7a99c446c.png

Dodaj zakres

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

eff5408ba160aad1.png

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

Generowanie tokena odświeżania

Kliknij „Wymień kod autoryzacji na tokeny”, a zobaczysz token odświeżania.

e8c6860d61ad73fd.png

4. Przygotowywanie Colab do wykonania kodu

Colab to przydatny notatnik do kodu, który jest dostarczany z Pythonem. Opcja domyślna zapewnia dość dużą moc obliczeniową. Możesz też użyć dowolnej platformy, aby wywołać interfejs API REST Google Cloud Vertex AI.

Aby z niej skorzystać, wejdź na https://colab.research.google.com/.

Wybierz [Plik → Nowa notatka] i zacznij pisać nowe kody.

6b95020b3d3369ae.png

Jeśli klikniesz Nowy notatnik, zobaczysz nowy arkusz gotowy do użycia.

5. Generowanie obrazów za pomocą Google Cloud Vertex AI

Importowanie bibliotek

!pip install requests google-ads

Najpierw zainstaluj biblioteki do obsługi Google Ads i żądań interfejsu API. Po zainstalowaniu bibliotek musisz ponownie uruchomić środowisko wykonawcze.

Możesz też wczytać niezbędne biblioteki.

import requests
import json
import base64

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

Uzyskiwanie uwierzytelniania

Zobaczysz prośbę o autoryzację konta Google.

auth.authenticate_user()

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

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

6. Generowanie obrazu z Vertex AI

Przygotuj prompt i żądanie POST

Najpierw musisz mieć identyfikator projektu w chmurze Google. Możesz go pobrać z Google Cloud. Potrzebujesz prompta tekstowego. Możesz też określić, ile obrazów chcesz wygenerować. 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 napisać dowolną treść. Chcemy wygenerować obrazy, na których kot i komputer będą razem na jednym zdjęciu.

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

Poproś o wygenerowanie obrazu

Gdy plik JSON będzie gotowy, możesz poprosić o wygenerowanie obrazu. Poniżej znajdziesz 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, otrzymasz wynik. To bardzo proste.

dec38d2d3f7faab8.png

7. Łączenie z Google Ads

Połącz z kontem Google Ads

Musisz mieć token programisty z Google Ads. Możesz poprosić o podstawowy lub standardowy token deweloperski, ale do celów testowych dostępny jest też token testowy. Otwórz konto MCK. Na karcie Narzędzia i ustawienia zobaczysz Centrum interfejsów API. W sekcji API znajdziesz swój token.

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ń do konta Google Ads

Teraz możesz przeprowadzać testy za pomocą usługi googleads_service. Sprawdźmy, jakie zasoby 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 coś takiego:

ad_group_ad {

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

}

8. Przesyłanie komponentu z obrazem do Google Ads

Przesyłanie

W ostatnim kroku prześlemy wygenerowane komponenty do 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])

Po kilku sekundach przesłany komponent będzie widoczny w interfejsie Google Ads. Oto przykładowy zrzut ekranu.

7f2fb6063e5ae675.png

9. Gratulacje

Gratulacje! Udało Ci się wygenerować piękne zasoby graficzne na podstawie istniejącego obrazu.

Czego się nauczysz

  • Jak generować komponenty z obrazem za pomocą generatywnej AI (Vertex AI)
  • Jak przesyłać obrazy do Google Ads i używać ich jako komponentów z obrazem