如何透過 Vertex AI 產生圖片並上傳至 Google Ads

1. 簡介

建構項目

在本程式碼研究室中,您將瞭解如何使用 Vertex AI 產生圖片,並傳送至 Google Ads,這些素材資源就能做為廣告活動中的圖片素材資源。

課程內容

  • 如何透過 Vertex AI 從 GCP 產生圖片
  • 如何將圖片上傳至 Google Ads
  • 如何在 Google Ads 中使用

軟硬體需求

  • Google Ads 帳戶
  • GCP 帳戶

2. 取得 Google Ads 憑證

您可以透過這個步驟從 Google Ads 取得圖片素材資源。你需要取得適當憑證,才能透過 Colab 存取 Google Ads。

建立憑證 ->建立「OAuth 用戶端 ID」->網頁應用程式

如要取得適當憑證來連結 Google Ads,您需要存取 Cloud 憑證

如果您尚未設定同意畫面,請先設定同意畫面。

  1. 使用者類型:外部
  2. 發布狀態:正式版

6ecf963c5957379d.png

將下列 URI 加入「已授權的重新導向 URI」

請在下方的 URI 中輸入螢幕截圖。

https://developers.google.com/oauthplayground

b5d054a6cac40869.png

複製用戶端 ID 與用戶端密鑰

您可以取得用戶端 ID 和用戶端密鑰。

c8578bf54ade7cee.png

3. 產生更新權杖

OAuth Playground 存取權

您可以利用 OAuth Playground,輕鬆核發臨時的更新權杖。

請前往設定頁面,然後檢查「使用您專屬的 OAuth 憑證」。從上一章取得 OAuth 用戶端 ID 和用戶端密鑰後,您就可以將這些資訊放入對應的文字方塊。ace79f71603a922.png

ad82eca7a99c446c.png

新增範圍

您可以在下列區域中新增範圍 https://www.googleapis.com/auth/adwords

eff5408ba160aad1.png

點選「Authorize API」(授權 API),然後您就會看到下一個畫面。

產生更新權杖

按一下 [交換權杖的授權代碼],您會看到更新權杖。

e8c6860d61ad73fd.png

4. 準備 Colab 執行程式碼

Colab 是附帶 Python 的便利程式碼筆記本。預設選項可提供大量的運算能力。您也可以使用任何平台呼叫 Google Cloud Vertex AI 的 REST API。

如要使用,請前往 https://colab.research.google.com/

依序前往 [檔案] → [新增記事],然後開始撰寫新的驗證碼。

6b95020b3d3369ae.png

按一下「新增筆記本」即可看到新的工作表。

5. 透過 Google Cloud Vertex AI 生成圖片

匯入程式庫

!pip install requests google-ads

首先,安裝 Google Ads 的程式庫和 API 要求。安裝程式庫後,您需要重新啟動執行階段。

您也可以載入必要程式庫。

import requests
import json
import base64

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

取得驗證

系統會要求您授權 Google 帳戶。

auth.authenticate_user()

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

取得授權後,您就可以呼叫 Google Cloud API。

6. 從 Vertex AI 產生圖片

準備提示和 POST 要求

首先,您必須擁有 Google Cloud 專案 ID。您可以從 Google Cloud 取得必須提供文字提示,也能設定需要的圖片數量。如想瞭解更多選項,請參閱官方說明文件

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.

在文字提示中輸入任何內容。在本例中,我們要產生一張圖片中有貓和電腦的圖片。

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

要求生成圖片

準備好使用 JSON 檔案時,就可以要求產生圖片。以下是一般的 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)

等候數秒後,就會得到結果。非常簡單!

dec38d2d3f7faab8.png

7. 連結至 Google Ads

連結至 Google Ads 帳戶

您需要 Google Ads 的開發人員權杖。您可以申請基本或標準開發權杖,但基於測試目的,我們也提供測試權杖。前往「我的客戶中心」帳戶。「工具和設定」分頁會顯示 API 中心。「API」專區會顯示您的權杖。

用戶端 ID、用戶端密鑰和更新權杖應已在上一節中準備就緒。

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
}

設定憑證後,您就可以載入 GoogleAdsService API。客戶 ID 的格式通常是 xxx-xxxx-xxx,但您應移除「-」。

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

查詢 Google Ads 帳戶

您現在可以使用 googleads_service 進行測試。來看看 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)

您會看到 Google Ads 帳戶中的素材資源清單,採用 JSON 格式。如果看到

ad_group_ad {

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

}

8. 將圖片素材資源上傳至 Google Ads

上傳

最後一個步驟是將產生的素材資源上傳至 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])

幾秒後,您就能透過 Google Ads 前端查看上傳的素材資源。這是螢幕截圖範例。

7f2fb6063e5ae675.png

9. 恭喜

恭喜,您已成功從現有圖片產生精美的圖片素材資源!

您已瞭解

  • 如何透過生成式 AI (Vertex AI) 產生圖片素材資源
  • 如何將圖片上傳至 Google Ads 並做為圖片素材資源使用