Home

Awesome

Generative AI for Marketing using Google Cloud

This repository provides a deployment guide showcasing the application of Google Cloud's Generative AI for marketing scenarios. It offers detailed, step-by-step guidance for setting up and utilizing the Generative AI tools, including examples of their use in crafting marketing materials like blog posts and social media content.

Additionally, supplementary Jupyter notebooks are provided to aid users in grasping the concepts explored in the demonstration.

The architecture of all the demos that are implemented in this application is as follows.
Architecture

Repository structure

.
├── app
└── backend_apis
└── frontend
└── notebooks
└── templates
└── installation_scripts
└── tf

Demonstrations

In this repository, the following demonstrations are provided:

Notebooks and code samples

The notebooks listed below were developed to explain the concepts exposed in this repository:

The following additional (external) notebooks provide supplementary information on the concepts discussed in this repository:

Environment Setup

This section outlines the steps to configure the Google Cloud environment that is required in order to run the code provided in this repository.
You will be interacting with the following resources:

1- Select a Google Cloud project

In the Google Cloud Console, on the project selector page, select or create a Google Cloud project.

As this is a DEMONSTRATION, you need to be a project owner in order to set up the environment.

2- Enable the required services

From Cloud Shell, run the following commands to enable the required Cloud APIs.
Replace <CHANGE TO YOUR PROJECT ID> to the id of your project and <CHANGE TO YOUR LOCATION> to the location where your resources will be deployed.

export PROJECT_ID=<CHANGE TO YOUR PROJECT ID>  
export LOCATION=<CHANGE TO YOUR LOCATION>  
gcloud config set project $PROJECT_ID  

Enable the services:

gcloud services enable \
  run.googleapis.com \
  cloudbuild.googleapis.com \
  compute.googleapis.com \
  cloudresourcemanager.googleapis.com \
  iam.googleapis.com \
  container.googleapis.com \
  cloudapis.googleapis.com \
  cloudtrace.googleapis.com \
  containerregistry.googleapis.com \
  iamcredentials.googleapis.com \
  secretmanager.googleapis.com \
  firebase.googleapis.com

gcloud services enable \
  monitoring.googleapis.com \
  logging.googleapis.com \
  notebooks.googleapis.com \
  aiplatform.googleapis.com \
  storage.googleapis.com \
  datacatalog.googleapis.com \
  appengineflex.googleapis.com \
  translate.googleapis.com \
  admin.googleapis.com \
  docs.googleapis.com \
  drive.googleapis.com \
  sheets.googleapis.com \
  slides.googleapis.com \
  firestore.googleapis.com

3- In Cloud Shell, authenticate with your account and set Quota Project

From Cloud Shell, execute the following commands:

export PROJECT_ID=<CHANGE TO YOUR PROJECT ID>

gcloud auth application-default login

gcloud auth application-default $PROJECT_ID

4- Clone the Gen AI for Marketing repository

From Cloud Shell, execute the following command:

git clone https://github.com/GoogleCloudPlatform/genai-for-marketing

5- Update the configuration with information of your project

Open the configuration file and include your project id (line 16) and location (line 17).

6- Prepare BigQuery and Dataplex

From Cloud Shell, navigate to /installation_scripts, install the python packages and execute the following script.
Make sure you have set the environmental variables PROJECT_ID and LOCATION.

cd ./genai-for-marketing/installation_scripts
pip3 install -r requirements.txt

Run the python script to create the BigQuery dataset and the DataCatalog TagTemplate.

python3 1_env_setup_script.py

7- Create an Vertex AI Search engine for a public website

Follow the steps below to create a search engine for a website using Vertex AI Search.

After you finished creating the Vertex AI Search datastore, navigate back to the Apps page and copy the ID of the datastore you just created.
Example:
Vertex AI Search ID

Open the configuration file - line 33 and include the datastore ID. Don't forget to save the configuration file.

Important: Alternatively, you can create a search engine for structure or unstructured data.

8- Add your Looker Dashboards

In order to render your Looker Dashboards in the Marketing Insights and Campaing Performance pages, you need to update a HTML file with links to them.

  1. Open this HTML file - lines 18 and 28 and include links to the Looker dashboards for Marketing Insights. Example:
<option value="Overview">Overview</option>
<div *ngIf="overview" class="overviewcss"> <iframe width="1000" height="1000" src="https://googledemo.looker.com/embed/dashboards/2131?allow_login_screen=true" ></iframe> </div>

The allow_login_screen=true in the URL will open the authentication page from Looker to secure the access to your account.

  1. Open this HTML file - lines 27 and 37 and include links to the Looker dashboards for Campaign Performance.

[Optional] If you have your Google Ads and Google Analytics 4 accounts in production, you can deploy the Marketing Analytics Jumpstart solution to your project, build the Dashboards and link them to the demonstration UI.

9- Create a Generative AI DataStore Agent

Next you will create a Generative AI Agent that will assist the users to answer questions about Google Ads, etc.

10- Workspace integration

Follow the steps below to setup the Workspace integration with this demonstration.

10.1- Create a service account and upload the content to Secret Manager

IMPORTANT: For security reasons, DON'T push this credentials to a public Github repository.

10.2- Change the DOMAIN that folders will be shared with

This demonstration will create folders under Google Drive, Google Docs documents, Google Slides presentations and Google Sheets documents.
When we create the Drive folder, we set the permission to all users under a specific domain.

Be aware that this configuration will share the folder with all the users in that domain.
If you want to change that behavior, explore different ways of sharing resources from this documentation:
https://developers.google.com/drive/api/reference/rest/v3/permissions#resource:-permission

10.3- Google Drive

10.4- Google Slides, Google Docs and Google Sheets

11- Deploy the APIs to Cloud Run and Firebase Hosting

11.1- Cloud Run

cd ./genai-for-marketing/backend_apis/

gcloud run deploy genai-marketing --source . --region us-central1 --allow-unauthenticated

11.2- Firebase Hosting

Enable Firebase

11.3- Firebase Hosting app setup

After you have a Firebase project, you can register your web app with that project.

In the center of the Firebase console's project overview page, click the Web icon (plat_web) to launch the setup workflow.

If you've already added an app to your Firebase project, click Add app to display the platform options.

Open the frontend environment file - line 4 and include the Firebase information.

11.4- Build Angular Frontend

Angular is the framework for the Frontend. Execute the following commands to build your application.

npm install -g @angular/cli  
npm install --legacy-peer-deps  

cd ./genai-for-marketing/frontend  

ng build  

11.5- Firebase Hosting Setup

Firebase Hosting is used to serve the frontend.

npm install -g firebase-tools  

firebase login --no-localhost  

Follow the steps presented in the console to login to Firebase.

cd frontend/dist/frontend  

firebase init hosting

First type your Firebase project and then type browser as the public folder.
Leave the defaults for the rest of the questions.

firebase deploy --only hosting

Navigate to the created URL to access the Gen AI for Marketing app.

11.6- Firestore database setup

Visit the following URL to create a database for Firestore.
Replace your-project-id with your project ID.

https://console.cloud.google.com/datastore/setup?project=your-project-id

11.7- Enable Firebase Authentication with Google

Visit the following URL to enable Firebase Authentication.
Replace your-project-id with your project ID. https://console.firebase.google.com/project/your-project-id/authentication/providers

Getting help

If you have any questions or if you found any problems with this repository, please report through GitHub issues.