1. 简介
构建内容
在此 Codelab 中,您将学习如何使用 Vertex AI 生成图片并将其发送到 Google Ads,以便这些素材资源可用作广告系列中的图片素材资源。
学习内容
- 如何从 GCP 和 Vertex AI 生成图片
- 如何将图片上传到 Google Ads
- 如何在 Google Ads 中使用
所需条件
- Google Ads 账号
- GCP 账号
2. 获取 Google Ads 凭据
要从 Google Ads 获取图片素材资源,需要使用此部分。要从 Colab 访问 Google Ads,您需要适当的凭据。
创建凭据 ->创建“OAuth 客户端 ID”->Web 应用
如需获取适当的凭据以关联 Google Ads,您需要访问 Cloud 凭据。
如果您尚未配置同意屏幕,请先设置同意屏幕。
- 用户类型:外部
- 发布状态:正式版
将以下 URI 添加到“已获授权的重定向 URI”中
如以下屏幕截图所示,输入下面的 URI。
https://developers.google.com/oauthplayground
复制客户端 ID 和客户端密钥
您可以获取客户端 ID 和客户端密钥。
3. 生成刷新令牌
访问 OAuth 园地
您可以在 OAuth Playground 中轻松发出临时刷新令牌。
转到“设置”,然后选中“使用您自己的 OAuth 凭据”。从上一章获取 OAuth 客户端 ID 和客户端密钥后,您可以将它们输入相应的文本框中。
添加范围
您可以将范围 https://www.googleapis.com/auth/adwords 添加到下面的区域。
点击“授权 API”,您将看到下一个屏幕。
生成刷新令牌
点击“交换令牌的授权代码”,您将看到刷新令牌。
4. 准备 Colab 执行代码
Colab 是 Python 自带的便捷代码笔记本。默认选项可提供相当大的计算能力。您还可以使用任何平台调用 Google Cloud Vertex AI 的 REST API。
请前往 https://colab.research.google.com/ 使用该工具。
前往 [文件 → 新建记事],然后开始写入新代码。
如果点击 新建笔记本 ,您将看到已经准备好的新工作表。
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)
等待几秒钟即可获得结果。非常简单!
7. 与 Google Ads 建立关联
关联到您的 Google Ads 账号
您需要 Google Ads 提供的开发者令牌。您可以申请基本或标准开发令牌,但也可以申请测试令牌。转到您的 MCC 账号。在“工具和设置”标签页中,您会看到 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 前端检查上传的素材资源了。以下是示例屏幕截图。
9. 恭喜
恭喜,您已成功利用现有图片生成了精美的图片素材资源!
您学到的内容
- 如何通过生成式 AI (Vertex AI) 生成图片素材资源
- 如何将图片上传到 Google Ads 并将其用作图片素材资源