Vertex AI'dan resim oluşturma ve Google Ads'e yükleme

1. Giriş

Ne oluşturacaksınız?

Bu codelab'de, Vertex AI'ı kullanarak nasıl resim oluşturacağınızı ve öğelerin kampanyalarda resim öğesi olarak kullanılabilmesi için bu resimleri Google Ads'e nasıl göndereceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • GCP ve Vertex AI'dan resim oluşturma
  • Google Ads'e resim yükleme
  • Google Ads'de kullanma

Gerekenler

  • Google Ads hesabı
  • GCP Hesabı

2. Google Ads kimlik bilgilerini edinme

Bu bölüm, Google Ads'den resim öğeleri almak için gereklidir. Colab'den Google Ads'e erişmek için uygun kimlik bilgilerine sahip olmanız gerekir.

Kimlik bilgileri oluştur -> "OAuth istemci kimliği" oluştur -> Web uygulaması

Google Ads'i bağlamak için uygun kimlik bilgilerini almak üzere Cloud kimlik bilgilerine erişmeniz gerekir.

Kullanıcı rızası ekranını yapılandırmadıysanız önce kullanıcı rızası ekranını ayarlayın.

  1. Kullanıcı türü: Harici
  2. Yayınlanma durumu: Üretimde

6ecf963c5957379d.png

"Yetkilendirilmiş yönlendirme URI'leri" bölümüne aşağıdaki URI'yi ekleyin

Aşağıdaki URI'yi aşağıdaki ekran görüntüsünde gösterildiği gibi girin.

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

İstemci kimliğini ve istemci gizli anahtarını kopyalama

İstemci kimliğini ve istemci gizli anahtarını alabilirsiniz.

c8578bf54ade7cee.png

3. Yenileme jetonu oluşturma

OAuth Playground'a erişim

OAuth Playground'da kolayca geçici bir yenileme jetonu oluşturabilirsiniz.

Ayarlara gidin ve "Kendi OAuth kimlik bilgilerinizi kullanın" seçeneğini işaretleyin. Önceki bölümde OAuth istemci kimliğini ve istemci gizli anahtarını edindikten sonra bunları ilgili metin kutularına girebilirsiniz. ace79f71603a922.png

ad82eca7a99c446c.png

Kapsamı ekleme

https://www.googleapis.com/auth/adwords kapsamını aşağıdaki alana ekleyebilirsiniz.

eff5408ba160aad1.png

API'leri yetkilendir'i tıkladığınızda bir sonraki ekran gösterilir.

Yenileme Jetonu Oluşturma

"Jetonlar için yetkilendirme kodu değiş tokuşu yap"ı tıkladığınızda yenileme jetonunu görürsünüz.

e8c6860d61ad73fd.png

4. Colab'i kodu yürütmeye hazırlama

Colab, Python ile birlikte gelen kullanışlı kod not defteridir. Varsayılan seçenek, oldukça yüksek bir işlem gücü sağlar. Google Cloud Vertex AI'ın REST API'sini çağırmak için herhangi bir platformu da kullanabilirsiniz.

Kullanmak için lütfen https://colab.research.google.com/ adresine gidin.

[Dosya → Yeni not] seçeneğine gidip yeni kodlar yazmaya başlayın.

6b95020b3d3369ae.png

Yeni not defteri'ni tıklarsanız yeni sayfa kullanıma hazır hâlde gösterilir.

5. Google Cloud Vertex AI ile resim oluşturma

Kitaplıkları içe aktarma

!pip install requests google-ads

Öncelikle Google Ads ve API istekleri için kitaplıkları yükleyin. Kitaplıkları yükledikten sonra çalışma zamanını yeniden başlatmanız gerekir.

Gerekli kitaplıkları da yükleyebilirsiniz.

import requests
import json
import base64

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

Kimlik Doğrulama

Google Hesabınıza yetki vermeniz istenir.

auth.authenticate_user()

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

Kendinize yetki verdikten sonra Google Cloud API'lerini çağırmaya hazırsınız.

6. Vertex AI'dan resim oluşturma

İsteminizi ve POST isteğinizi hazırlama

Öncelikle Google Cloud proje kimliğiniz olmalıdır. Google Cloud'dan edinebilirsiniz. Metin istemi girmeniz gerekir. Ayrıca kaç resim istediğinizi de belirleyebilirsiniz. Daha fazla seçenek için lütfen resmi belgelere göz atın.

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.

Metin istemine istediğiniz şeyi yazabilirsiniz. Burada, tek bir resimde kedi ve bilgisayarın birlikte yer aldığı görseller oluşturmak istiyoruz.

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

Görüntü üretme isteğinde bulunma

JSON dosyası hazır olduğunda artık görüntü üretme isteğinde bulunabilirsiniz. Tipik http isteği aşağıda verilmiştir.

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)

Birkaç saniye beklerseniz sonucu alırsınız. Çok basit!

dec38d2d3f7faab8.png

7. Google Ads'e bağlanma

Google Ads hesabınıza bağlanma

Google Ads'den bir geliştirici jetonu almanız gerekir. Temel veya standart geliştirici jetonu için başvurabilirsiniz ancak test amacıyla test jetonu da kullanılabilir. MM hesabınıza gidin. Araçlar ve ayarlar sekmesinde API merkezini görürsünüz. Jetonunuzu API bölümünde bulabilirsiniz.

İstemci kimliği, istemci gizli anahtarı ve yenileme jetonları önceki bölümde hazır olmalıdır.

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
}

Kimlik bilgilerini ayarladıktan sonra GoogleAdsService API'yi yükleyebilirsiniz. Müşteri kimliği genellikle xxx-xxxx-xxx biçimindedir ancak "-" işaretini kaldırmanız gerekir.

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

Google Ads hesabına sorgu gönderme

Artık googleads_service ile test yapabilirsiniz. Reklam hesabında ne tür öğelerimiz olduğunu sorgulayalım.

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)

Google Ads hesabındaki öğelerin listesini JSON biçiminde görürsünüz. Şuna benzer bir mesaj görürseniz:

ad_group_ad {

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

}

8. Google Ads'e resim öğesi yükleme

Video 

Son adımda, oluşturulan öğeleri Google Ads'e yükleyeceğiz.

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

Birkaç saniye sonra, yüklenen öğeyi Google Ads Frontend üzerinden kontrol edebilirsiniz. Örnek ekran görüntüsünü burada bulabilirsiniz.

7f2fb6063e5ae675.png

9. Tebrikler

Tebrikler, mevcut resimden güzel resim öğeleri oluşturmayı başardınız.

Öğrendikleriniz

  • Üretken yapay zeka (Vertex AI) ile resim öğeleri oluşturma
  • Google Ads'e resim yükleme ve bunları resim öğesi olarak kullanma