This module handles the creation of AI Applications data sources, engines and related configurations.
This module uses these APIs
discoveryengine.googleapis.comdialogflow.googleapis.com(if you create a chat engine)
To run this module you'll need to set a quota project.
export GOOGLE_BILLING_PROJECT=your-project-id
export USER_PROJECT_OVERRIDE=trueThis is a minimal example to create a Chat Engine (Dialogflow CX) agent.
By default, this uses the location global for engines, agents and data stores.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
}
}
}
# tftest modules=1 resources=3You can change this location for all components.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
location = "eu"
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
}
}
}
# tftest modules=1 resources=3You may need to create the Dialogflow CX agent in a specific region. While the agent can be created within a specific region, the engine and the data stores still need to be created in multi-regional locations. Refer to this table for the compatibility matrix. In this case, you need to specify different locations for each component.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
location = "eu"
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
agent_config = {
location = "europe-west1"
}
}
}
}
# tftest modules=1 resources=3Instead of creating a new agent, you can reference an existing agent.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
agent_config = {
security_settings_config = {
id = "projects/my-project/locations/global/agents/my-agent"
}
}
}
}
}
# tftest modules=1 resources=3If you create and agent, you can also create the agent security settings.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
agent_config = {
security_settings_config = {
create = true
}
}
}
}
}
# tftest modules=1 resources=4With the security_settings_config you can control every security aspect of the agent, including the creation of the DLP inspect and deidentify templates.
You can also reference an existing security profile by passing its id.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
agent_config = {
security_settings_config = {
create = false
id = "projects/my-project/locations/global/securitySettings/my-sec-settings"
}
}
}
}
}
# tftest modules=1 resources=3This is a minimal example to create a Search Engine agent.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-search-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_SEARCH"]
}
}
engines_configs = {
data_store_ids = ["data-store-1"]
search_engine_config = {}
}
}
# tftest modules=1 resources=2You can create and connect from your engines multiple data stores. Data stores can be either created in the module or you can reference existing data stores, by passing their id.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-chat-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
data-store-2 = {
solution_types = ["SOLUTION_TYPE_CHAT"]
}
}
engines_configs = {
data_store_ids = [
"data-store-1",
"data-store-2",
"projects/my-project/locations/global/collections/default_collection/dataStores/data-store-3"
]
chat_engine_config = {
company_name = "Google"
default_language_code = "en"
time_zone = "America/Los_Angeles"
}
}
}
# tftest modules=1 resources=4You can configure JSON data store schemas directly in your data store configuration.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-search-app"
project_id = var.project_id
data_stores_configs = {
data-store-1 = {
json_schema = "{\"$schema\":\"https://json-schema.org/draft/2020-12/schema\",\"datetime_detection\":true,\"type\":\"object\",\"geolocation_detection\":true}"
solution_types = ["SOLUTION_TYPE_SEARCH"]
}
}
}
# tftest modules=1 resources=2For search engines, you can make data stores point to multiple websites and optionally specify their sitemap.
module "ai-applications" {
source = "./fabric/modules/ai-applications"
name = "my-search-app"
project_id = var.project_id
data_stores_configs = {
website-search-ds = {
solution_types = ["SOLUTION_TYPE_SEARCH"]
sites_search_config = {
sitemap_uri = "https://cloud.google.com/sitemap.xml"
target_sites = {
include-google-docs = {
provided_uri_pattern = "cloud.google.com/docs/*"
}
exclude-one-page = {
exact_match = true
provided_uri_pattern = "https://cloud.google.com/ai-applications"
type = "EXCLUDE"
}
}
}
}
}
engines_configs = {
data_store_ids = [
"website-search-ds"
]
industry_vertical = "GENERIC"
search_engine_config = {}
}
}
# tftest modules=1 resources=5| name | description | type | required | default |
|---|---|---|---|---|
| name | The name of the resources. | string |
✓ | |
| project_id | The ID of the project where the data stores and the agents will be created. | string |
✓ | |
| chat_agent_security_configs | The DLP security configurations for (Dialogflow CX) chat agents. | object({…}) |
{} |
|
| data_stores_configs | The ai-applications datastore configurations. | map(object({…})) |
{} |
|
| engines_configs | The AI applications engines configurations. | object({…}) |
{} |
|
| location | Location where the data stores and agents will be created. | string |
"global" |
| name | description | sensitive |
|---|---|---|
| chat_agent | The (Dialogflow CX) chat agent object. | |
| chat_agent_id | The id of the (Dialogflow CX) chat agent. | |
| chat_engine | The chat engine object. | |
| chat_engine_id | The id of the chat engine. | |
| data_store_ids | The ids of the data stores created. | |
| data_stores | The data stores resources created. | |
| search_engine | The search engines object. | |
| search_engine_id | The id of the search engine. |