diff --git a/code/backend/batch/utilities/helpers/env_helper.py b/code/backend/batch/utilities/helpers/env_helper.py index 6b4d44624..e1d40a162 100644 --- a/code/backend/batch/utilities/helpers/env_helper.py +++ b/code/backend/batch/utilities/helpers/env_helper.py @@ -88,9 +88,46 @@ def __load_config(self, **kwargs) -> None: "AZURE_SEARCH_DATASOURCE_NAME", "" ) self.AZURE_SEARCH_INDEXER_NAME = os.getenv("AZURE_SEARCH_INDEXER_NAME", "") - self.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION = self.get_env_var_bool( - "AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION", "False" - ) + + # Chat History DB Integration Settings + # Set default values based on DATABASE_TYPE + self.DATABASE_TYPE = os.getenv("DATABASE_TYPE", "").strip() or "CosmosDB" + # Cosmos DB configuration + if self.DATABASE_TYPE == DatabaseType.COSMOSDB.value: + azure_cosmosdb_info = self.get_info_from_env("AZURE_COSMOSDB_INFO", "") + self.AZURE_COSMOSDB_DATABASE = azure_cosmosdb_info.get("databaseName", "") + self.AZURE_COSMOSDB_ACCOUNT = azure_cosmosdb_info.get("accountName", "") + self.AZURE_COSMOSDB_CONVERSATIONS_CONTAINER = azure_cosmosdb_info.get( + "containerName", "" + ) + self.AZURE_COSMOSDB_ACCOUNT_KEY = self.secretHelper.get_secret( + "AZURE_COSMOSDB_ACCOUNT_KEY" + ) + self.AZURE_COSMOSDB_ENABLE_FEEDBACK = ( + os.getenv("AZURE_COSMOSDB_ENABLE_FEEDBACK", "false").lower() == "true" + ) + self.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION = self.get_env_var_bool( + "AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION", "False" + ) + self.USE_ADVANCED_IMAGE_PROCESSING = self.get_env_var_bool( + "USE_ADVANCED_IMAGE_PROCESSING", "False" + ) + # PostgreSQL configuration + elif self.DATABASE_TYPE == DatabaseType.POSTGRESQL.value: + self.AZURE_POSTGRES_SEARCH_TOP_K = self.get_env_var_int( + "AZURE_POSTGRES_SEARCH_TOP_K", 5 + ) + azure_postgresql_info = self.get_info_from_env("AZURE_POSTGRESQL_INFO", "") + self.POSTGRESQL_USER = azure_postgresql_info.get("user", "") + self.POSTGRESQL_DATABASE = azure_postgresql_info.get("dbname", "") + self.POSTGRESQL_HOST = azure_postgresql_info.get("host", "") + # Ensure integrated vectorization is disabled for PostgreSQL + self.AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION = "False" + self.USE_ADVANCED_IMAGE_PROCESSING = "False" + else: + raise ValueError( + "Unsupported DATABASE_TYPE. Please set DATABASE_TYPE to 'CosmosDB' or 'PostgreSQL'." + ) self.AZURE_AUTH_TYPE = os.getenv("AZURE_AUTH_TYPE", "keys") # Azure OpenAI @@ -147,9 +184,6 @@ def __load_config(self, **kwargs) -> None: self.AZURE_TOKEN_PROVIDER = get_bearer_token_provider( DefaultAzureCredential(), "https://cognitiveservices.azure.com/.default" ) - self.USE_ADVANCED_IMAGE_PROCESSING = self.get_env_var_bool( - "USE_ADVANCED_IMAGE_PROCESSING", "False" - ) self.ADVANCED_IMAGE_PROCESSING_MAX_IMAGES = self.get_env_var_int( "ADVANCED_IMAGE_PROCESSING_MAX_IMAGES", 1 ) @@ -294,37 +328,6 @@ def __load_config(self, **kwargs) -> None: self.PROMPT_FLOW_DEPLOYMENT_NAME = os.getenv("PROMPT_FLOW_DEPLOYMENT_NAME", "") - # Chat History DB Integration Settings - # Set default values based on DATABASE_TYPE - self.DATABASE_TYPE = os.getenv("DATABASE_TYPE", "").strip() or "CosmosDB" - # Cosmos DB configuration - if self.DATABASE_TYPE == DatabaseType.COSMOSDB.value: - azure_cosmosdb_info = self.get_info_from_env("AZURE_COSMOSDB_INFO", "") - self.AZURE_COSMOSDB_DATABASE = azure_cosmosdb_info.get("databaseName", "") - self.AZURE_COSMOSDB_ACCOUNT = azure_cosmosdb_info.get("accountName", "") - self.AZURE_COSMOSDB_CONVERSATIONS_CONTAINER = azure_cosmosdb_info.get( - "containerName", "" - ) - self.AZURE_COSMOSDB_ACCOUNT_KEY = self.secretHelper.get_secret( - "AZURE_COSMOSDB_ACCOUNT_KEY" - ) - self.AZURE_COSMOSDB_ENABLE_FEEDBACK = ( - os.getenv("AZURE_COSMOSDB_ENABLE_FEEDBACK", "false").lower() == "true" - ) - # PostgreSQL configuration - elif self.DATABASE_TYPE == DatabaseType.POSTGRESQL.value: - self.AZURE_POSTGRES_SEARCH_TOP_K = self.get_env_var_int( - "AZURE_POSTGRES_SEARCH_TOP_K", 5 - ) - azure_postgresql_info = self.get_info_from_env("AZURE_POSTGRESQL_INFO", "") - self.POSTGRESQL_USER = azure_postgresql_info.get("user", "") - self.POSTGRESQL_DATABASE = azure_postgresql_info.get("dbname", "") - self.POSTGRESQL_HOST = azure_postgresql_info.get("host", "") - else: - raise ValueError( - "Unsupported DATABASE_TYPE. Please set DATABASE_TYPE to 'CosmosDB' or 'PostgreSQL'." - ) - def is_chat_model(self): if "gpt-4" in self.AZURE_OPENAI_MODEL_NAME.lower(): return True diff --git a/infra/app/storekeys.bicep b/infra/app/storekeys.bicep index deca84872..fa9f54c02 100644 --- a/infra/app/storekeys.bicep +++ b/infra/app/storekeys.bicep @@ -7,9 +7,9 @@ param formRecognizerName string = '' param contentSafetyName string = '' param speechServiceName string = '' param computerVisionName string = '' -param postgresServerName string = '' // PostgreSQL server name -param postgresDatabaseName string = 'postgres' // Default database name -param postgresInfoName string = 'AZURE-POSTGRESQL-INFO' // Secret name for PostgreSQL info +param postgresServerName string = '' // PostgreSQL server name +param postgresDatabaseName string = 'PostgreSQL' // Default database name +param postgresInfoName string = 'AZURE-POSTGRESQL-INFO' // Secret name for PostgreSQL info param postgresDatabaseAdminUserName string = '' param postgresDatabaseAdminPassword string = '' param storageAccountKeyName string = 'AZURE-STORAGE-ACCOUNT-KEY' diff --git a/infra/app/web.bicep b/infra/app/web.bicep index 90e6cb1f3..90b50086c 100644 --- a/infra/app/web.bicep +++ b/infra/app/web.bicep @@ -31,52 +31,62 @@ param useDocker bool = dockerFullImageName != '' param healthCheckPath string = '' // Database parameters -param databaseType string = 'cosmos' // 'cosmos' or 'postgres' +param databaseType string = 'CosmosDB' // 'CosmosDB' or 'PostgreSQL' param cosmosDBKeyName string = '' param postgresInfoName string = '' var azureFormRecognizerInfoUpdated = useKeyVault ? azureFormRecognizerInfo - : replace(azureFormRecognizerInfo, '$FORM_RECOGNIZER_KEY', listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.CognitiveServices/accounts', - formRecognizerName - ), - '2023-05-01' - ).key1) + : replace( + azureFormRecognizerInfo, + '$FORM_RECOGNIZER_KEY', + listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.CognitiveServices/accounts', + formRecognizerName + ), + '2023-05-01' + ).key1 + ) var azureBlobStorageInfoUpdated = useKeyVault ? azureBlobStorageInfo - : replace(azureBlobStorageInfo, '$STORAGE_ACCOUNT_KEY', listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.Storage/storageAccounts', - storageAccountName - ), - '2021-09-01' - ).keys[0].value) - -// Database-specific settings -var databaseSettings = databaseType == 'cosmos' ? { - DATABASE_TYPE: 'cosmos' - AZURE_COSMOSDB_ACCOUNT_KEY: (useKeyVault || cosmosDBKeyName == '') - ? cosmosDBKeyName - : listKeys( + : replace( + azureBlobStorageInfo, + '$STORAGE_ACCOUNT_KEY', + listKeys( resourceId( subscription().subscriptionId, resourceGroup().name, - 'Microsoft.DocumentDB/databaseAccounts', - cosmosDBKeyName + 'Microsoft.Storage/storageAccounts', + storageAccountName ), - '2022-08-15' - ).primaryMasterKey -} : { - DATABASE_TYPE: 'postgres' - AZURE_POSTGRESQL_INFO: useKeyVault ? postgresInfoName : '' -} + '2021-09-01' + ).keys[0].value + ) + +// Database-specific settings +var databaseSettings = databaseType == 'CosmosDB' + ? { + DATABASE_TYPE: 'CosmosDB' + AZURE_COSMOSDB_ACCOUNT_KEY: (useKeyVault || cosmosDBKeyName == '') + ? cosmosDBKeyName + : listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.DocumentDB/databaseAccounts', + cosmosDBKeyName + ), + '2022-08-15' + ).primaryMasterKey + } + : { + DATABASE_TYPE: 'PostgreSQL' + AZURE_POSTGRESQL_INFO: useKeyVault ? postgresInfoName : '' + } module web '../core/host/appservice.bicep' = { name: '${name}-app-module' @@ -88,67 +98,70 @@ module web '../core/host/appservice.bicep' = { appCommandLine: useDocker ? '' : appCommandLine applicationInsightsName: applicationInsightsName appServicePlanId: appServicePlanId - appSettings: union(appSettings, union(databaseSettings, { - AZURE_AUTH_TYPE: authType - USE_KEY_VAULT: useKeyVault ? useKeyVault : '' - AZURE_OPENAI_API_KEY: useKeyVault - ? openAIKeyName - : listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.CognitiveServices/accounts', - azureOpenAIName - ), - '2023-05-01' - ).key1 - AZURE_SEARCH_KEY: useKeyVault - ? searchKeyName - : listAdminKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.Search/searchServices', - azureAISearchName - ), - '2021-04-01-preview' - ).primaryKey - AZURE_BLOB_STORAGE_INFO: azureBlobStorageInfoUpdated - AZURE_FORM_RECOGNIZER_INFO: azureFormRecognizerInfoUpdated - AZURE_CONTENT_SAFETY_KEY: useKeyVault - ? contentSafetyKeyName - : listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.CognitiveServices/accounts', - contentSafetyName - ), - '2023-05-01' - ).key1 - AZURE_SPEECH_SERVICE_KEY: useKeyVault - ? speechKeyName - : listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.CognitiveServices/accounts', - speechServiceName - ), - '2023-05-01' - ).key1 - AZURE_COMPUTER_VISION_KEY: (useKeyVault || computerVisionName == '') - ? computerVisionKeyName - : listKeys( - resourceId( - subscription().subscriptionId, - resourceGroup().name, - 'Microsoft.CognitiveServices/accounts', - computerVisionName - ), - '2023-05-01' - ).key1 - })) + appSettings: union( + appSettings, + union(databaseSettings, { + AZURE_AUTH_TYPE: authType + USE_KEY_VAULT: useKeyVault ? useKeyVault : '' + AZURE_OPENAI_API_KEY: useKeyVault + ? openAIKeyName + : listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.CognitiveServices/accounts', + azureOpenAIName + ), + '2023-05-01' + ).key1 + AZURE_SEARCH_KEY: useKeyVault + ? searchKeyName + : listAdminKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.Search/searchServices', + azureAISearchName + ), + '2021-04-01-preview' + ).primaryKey + AZURE_BLOB_STORAGE_INFO: azureBlobStorageInfoUpdated + AZURE_FORM_RECOGNIZER_INFO: azureFormRecognizerInfoUpdated + AZURE_CONTENT_SAFETY_KEY: useKeyVault + ? contentSafetyKeyName + : listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.CognitiveServices/accounts', + contentSafetyName + ), + '2023-05-01' + ).key1 + AZURE_SPEECH_SERVICE_KEY: useKeyVault + ? speechKeyName + : listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.CognitiveServices/accounts', + speechServiceName + ), + '2023-05-01' + ).key1 + AZURE_COMPUTER_VISION_KEY: (useKeyVault || computerVisionName == '') + ? computerVisionKeyName + : listKeys( + resourceId( + subscription().subscriptionId, + resourceGroup().name, + 'Microsoft.CognitiveServices/accounts', + computerVisionName + ), + '2023-05-01' + ).key1 + }) + ) keyVaultName: keyVaultName runtimeName: runtimeName runtimeVersion: runtimeVersion diff --git a/infra/main.bicep b/infra/main.bicep index f4696a2a9..f164aeb4b 100644 --- a/infra/main.bicep +++ b/infra/main.bicep @@ -102,7 +102,7 @@ param azureSearchOffsetColumn string = 'offset' @description('Url column') param azureSearchUrlColumn string = 'url' -@description('Use Azure Search Integrated Vectorization') +@description('Whether to use Azure Search Integrated Vectorization. If the database type is PostgreSQL, set this to false.') param azureSearchUseIntegratedVectorization bool = false @description('Name of Azure OpenAI Resource') @@ -123,7 +123,7 @@ param azureOpenAIModelVersion string = '0613' @description('Azure OpenAI Model Capacity - See here for more info https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/quota') param azureOpenAIModelCapacity int = 30 -@description('Enables the use of a vision LLM and Computer Vision for embedding images') +@description('Whether to enable the use of a vision LLM and Computer Vision for embedding images. If the database type is PostgreSQL, set this to false.') param useAdvancedImageProcessing bool = false @description('The maximum number of images to pass to the vision model in a single request') @@ -303,11 +303,10 @@ param azureMachineLearningName string = 'aml-${resourceToken}' @description('The type of database to deploy (cosmos or postgres)') @allowed([ - 'cosmos' - 'postgres' + 'CosmosDB' + 'PostgreSQL' ]) -param databaseType string = 'cosmos' - +param databaseType string = 'CosmosDB' @description('Azure Cosmos DB Account Name') param azureCosmosDBAccountName string = 'cosmos-${resourceToken}' @@ -334,8 +333,8 @@ var azureOpenAIEmbeddingModelInfo = string({ modelVersion: azureOpenAIEmbeddingModelVersion }) -var appversion = 'latest' // Update GIT deployment branch -var registryName = 'fruoccopublic' // Update Registry name +var appversion = 'latest' // Update GIT deployment branch +var registryName = 'fruoccopublic' // Update Registry name // Organize resources in a resource group resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = { @@ -363,7 +362,7 @@ module cosmosDBModule './core/database/cosmosdb.bicep' = if (databaseType == 'co scope: rg } -module postgresDBModule './core/database/postgresdb.bicep' = if (databaseType == 'postgres') { +module postgresDBModule './core/database/postgresdb.bicep' = if (databaseType == 'PostgreSQL') { name: 'deploy_postgres_sql' params: { solutionName: azurePostgresDBAccountName @@ -532,11 +531,17 @@ module storekeys './app/storekeys.bicep' = if (useKeyVault) { contentSafetyName: contentsafety.outputs.name speechServiceName: speechServiceName computerVisionName: useAdvancedImageProcessing ? computerVision.outputs.name : '' - cosmosAccountName: databaseType == 'cosmos' ? cosmosDBModule.outputs.cosmosOutput.cosmosAccountName : '' - postgresServerName: databaseType == 'postgres' ? postgresDBModule.outputs.postgresDbOutput.postgreSQLServerName : '' - postgresDatabaseName: databaseType == 'postgres' ? 'postgres' : '' - postgresDatabaseAdminUserName: databaseType == 'postgres' ? postgresDBModule.outputs.postgresDbOutput.postgreSQLDbUser : '' - postgresDatabaseAdminPassword: databaseType == 'postgres' ? postgresDBModule.outputs.postgresDbOutput.postgreSQLDbPwd : '' + cosmosAccountName: databaseType == 'CosmosDB' ? cosmosDBModule.outputs.cosmosOutput.cosmosAccountName : '' + postgresServerName: databaseType == 'PostgreSQL' + ? postgresDBModule.outputs.postgresDbOutput.postgreSQLServerName + : '' + postgresDatabaseName: databaseType == 'PostgreSQL' ? 'PostgreSQL' : '' + postgresDatabaseAdminUserName: databaseType == 'PostgreSQL' + ? postgresDBModule.outputs.postgresDbOutput.postgreSQLDbUser + : '' + postgresDatabaseAdminPassword: databaseType == 'PostgreSQL' + ? postgresDBModule.outputs.postgresDbOutput.postgreSQLDbPwd + : '' rgName: rgName } } @@ -578,9 +583,9 @@ module hostingplan './core/host/appserviceplan.bicep' = { } var azureCosmosDBInfo = string({ - accountName: databaseType == 'cosmos' ? cosmosDBModule.outputs.cosmosOutput.cosmosAccountName : '' - databaseName: databaseType == 'cosmos' ? cosmosDBModule.outputs.cosmosOutput.cosmosDatabaseName : '' - containerName: databaseType == 'cosmos' ? cosmosDBModule.outputs.cosmosOutput.cosmosContainerName : '' + accountName: databaseType == 'CosmosDB' ? cosmosDBModule.outputs.cosmosOutput.cosmosAccountName : '' + databaseName: databaseType == 'CosmosDB' ? cosmosDBModule.outputs.cosmosOutput.cosmosDatabaseName : '' + containerName: databaseType == 'CosmosDB' ? cosmosDBModule.outputs.cosmosOutput.cosmosContainerName : '' }) var azurePostgresDBInfo = string({ @@ -611,7 +616,7 @@ module web './app/web.bicep' = if (hostingModel == 'code') { computerVisionName: useAdvancedImageProcessing ? computerVision.outputs.name : '' // New database-related parameters - databaseType: databaseType // Add this parameter to specify 'postgres' or 'cosmos' + databaseType: databaseType // Add this parameter to specify 'PostgreSQL' or 'CosmosDB' // Conditional key vault key names openAIKeyName: useKeyVault ? storekeys.outputs.OPENAI_KEY_NAME : '' @@ -623,68 +628,74 @@ module web './app/web.bicep' = if (hostingModel == 'code') { computerVisionKeyName: useKeyVault ? storekeys.outputs.COMPUTER_VISION_KEY_NAME : '' // Conditionally set database key names - cosmosDBKeyName: databaseType == 'cosmos' && useKeyVault ? storekeys.outputs.COSMOS_ACCOUNT_KEY_NAME : '' - postgresInfoName: databaseType == 'postgres' && useKeyVault ? storekeys.outputs.POSTGRESQL_INFO_NAME : '' + cosmosDBKeyName: databaseType == 'CosmosDB' && useKeyVault ? storekeys.outputs.COSMOS_ACCOUNT_KEY_NAME : '' + postgresInfoName: databaseType == 'PostgreSQL' && useKeyVault ? storekeys.outputs.POSTGRESQL_INFO_NAME : '' useKeyVault: useKeyVault keyVaultName: useKeyVault || authType == 'rbac' ? keyvault.outputs.name : '' authType: authType - appSettings: union({ - // Existing app settings - AZURE_COMPUTER_VISION_ENDPOINT: useAdvancedImageProcessing ? computerVision.outputs.endpoint : '' - AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION: computerVisionVectorizeImageApiVersion - AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION: computerVisionVectorizeImageModelVersion - AZURE_CONTENT_SAFETY_ENDPOINT: contentsafety.outputs.endpoint - AZURE_OPENAI_RESOURCE: azureOpenAIResourceName - AZURE_OPENAI_MODEL_INFO: azureOpenAIModelInfo - AZURE_OPENAI_TEMPERATURE: azureOpenAITemperature - AZURE_OPENAI_TOP_P: azureOpenAITopP - AZURE_OPENAI_MAX_TOKENS: azureOpenAIMaxTokens - AZURE_OPENAI_STOP_SEQUENCE: azureOpenAIStopSequence - AZURE_OPENAI_SYSTEM_MESSAGE: azureOpenAISystemMessage - AZURE_OPENAI_API_VERSION: azureOpenAIApiVersion - AZURE_OPENAI_STREAM: azureOpenAIStream - AZURE_OPENAI_EMBEDDING_MODEL_INFO: azureOpenAIEmbeddingModelInfo - AZURE_SEARCH_USE_SEMANTIC_SEARCH: azureSearchUseSemanticSearch - AZURE_SEARCH_SERVICE: 'https://${azureAISearchName}.search.windows.net' - AZURE_SEARCH_INDEX: azureSearchIndex - AZURE_SEARCH_CONVERSATIONS_LOG_INDEX: azureSearchConversationLogIndex - AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: azureSearchSemanticSearchConfig - AZURE_SEARCH_INDEX_IS_PRECHUNKED: azureSearchIndexIsPrechunked - AZURE_SEARCH_TOP_K: azureSearchTopK - AZURE_SEARCH_ENABLE_IN_DOMAIN: azureSearchEnableInDomain - AZURE_SEARCH_FILENAME_COLUMN: azureSearchFilenameColumn - AZURE_SEARCH_FILTER: azureSearchFilter - AZURE_SEARCH_FIELDS_ID: azureSearchFieldId - AZURE_SEARCH_CONTENT_COLUMN: azureSearchContentColumn - AZURE_SEARCH_CONTENT_VECTOR_COLUMN: azureSearchVectorColumn - AZURE_SEARCH_TITLE_COLUMN: azureSearchTitleColumn - AZURE_SEARCH_FIELDS_METADATA: azureSearchFieldsMetadata - AZURE_SEARCH_SOURCE_COLUMN: azureSearchSourceColumn - AZURE_SEARCH_CHUNK_COLUMN: azureSearchChunkColumn - AZURE_SEARCH_OFFSET_COLUMN: azureSearchOffsetColumn - AZURE_SEARCH_URL_COLUMN: azureSearchUrlColumn - AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: azureSearchUseIntegratedVectorization - AZURE_SPEECH_SERVICE_NAME: speechServiceName - AZURE_SPEECH_SERVICE_REGION: location - AZURE_SPEECH_RECOGNIZER_LANGUAGES: recognizedLanguages - USE_ADVANCED_IMAGE_PROCESSING: useAdvancedImageProcessing - ADVANCED_IMAGE_PROCESSING_MAX_IMAGES: advancedImageProcessingMaxImages - ORCHESTRATION_STRATEGY: orchestrationStrategy - CONVERSATION_FLOW: conversationFlow - LOGLEVEL: logLevel - - // Add database type to settings - AZURE_DATABASE_TYPE: databaseType - }, - // Conditionally add database-specific settings - databaseType == 'cosmos' ? { - AZURE_COSMOSDB_INFO: azureCosmosDBInfo - AZURE_COSMOSDB_ENABLE_FEEDBACK: true - } : databaseType == 'postgres' ? { - AZURE_POSTGRES_INFO: azurePostgresDBInfo - } : {}) + appSettings: union( + { + // Existing app settings + AZURE_COMPUTER_VISION_ENDPOINT: useAdvancedImageProcessing ? computerVision.outputs.endpoint : '' + AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION: computerVisionVectorizeImageApiVersion + AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION: computerVisionVectorizeImageModelVersion + AZURE_CONTENT_SAFETY_ENDPOINT: contentsafety.outputs.endpoint + AZURE_OPENAI_RESOURCE: azureOpenAIResourceName + AZURE_OPENAI_MODEL_INFO: azureOpenAIModelInfo + AZURE_OPENAI_TEMPERATURE: azureOpenAITemperature + AZURE_OPENAI_TOP_P: azureOpenAITopP + AZURE_OPENAI_MAX_TOKENS: azureOpenAIMaxTokens + AZURE_OPENAI_STOP_SEQUENCE: azureOpenAIStopSequence + AZURE_OPENAI_SYSTEM_MESSAGE: azureOpenAISystemMessage + AZURE_OPENAI_API_VERSION: azureOpenAIApiVersion + AZURE_OPENAI_STREAM: azureOpenAIStream + AZURE_OPENAI_EMBEDDING_MODEL_INFO: azureOpenAIEmbeddingModelInfo + AZURE_SEARCH_USE_SEMANTIC_SEARCH: azureSearchUseSemanticSearch + AZURE_SEARCH_SERVICE: 'https://${azureAISearchName}.search.windows.net' + AZURE_SEARCH_INDEX: azureSearchIndex + AZURE_SEARCH_CONVERSATIONS_LOG_INDEX: azureSearchConversationLogIndex + AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: azureSearchSemanticSearchConfig + AZURE_SEARCH_INDEX_IS_PRECHUNKED: azureSearchIndexIsPrechunked + AZURE_SEARCH_TOP_K: azureSearchTopK + AZURE_SEARCH_ENABLE_IN_DOMAIN: azureSearchEnableInDomain + AZURE_SEARCH_FILENAME_COLUMN: azureSearchFilenameColumn + AZURE_SEARCH_FILTER: azureSearchFilter + AZURE_SEARCH_FIELDS_ID: azureSearchFieldId + AZURE_SEARCH_CONTENT_COLUMN: azureSearchContentColumn + AZURE_SEARCH_CONTENT_VECTOR_COLUMN: azureSearchVectorColumn + AZURE_SEARCH_TITLE_COLUMN: azureSearchTitleColumn + AZURE_SEARCH_FIELDS_METADATA: azureSearchFieldsMetadata + AZURE_SEARCH_SOURCE_COLUMN: azureSearchSourceColumn + AZURE_SEARCH_CHUNK_COLUMN: azureSearchChunkColumn + AZURE_SEARCH_OFFSET_COLUMN: azureSearchOffsetColumn + AZURE_SEARCH_URL_COLUMN: azureSearchUrlColumn + AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: azureSearchUseIntegratedVectorization + AZURE_SPEECH_SERVICE_NAME: speechServiceName + AZURE_SPEECH_SERVICE_REGION: location + AZURE_SPEECH_RECOGNIZER_LANGUAGES: recognizedLanguages + USE_ADVANCED_IMAGE_PROCESSING: useAdvancedImageProcessing + ADVANCED_IMAGE_PROCESSING_MAX_IMAGES: advancedImageProcessingMaxImages + ORCHESTRATION_STRATEGY: orchestrationStrategy + CONVERSATION_FLOW: conversationFlow + LOGLEVEL: logLevel + + // Add database type to settings + AZURE_DATABASE_TYPE: databaseType + }, + // Conditionally add database-specific settings + databaseType == 'CosmosDB' + ? { + AZURE_COSMOSDB_INFO: azureCosmosDBInfo + AZURE_COSMOSDB_ENABLE_FEEDBACK: true + } + : databaseType == 'PostgreSQL' + ? { + AZURE_POSTGRES_INFO: azurePostgresDBInfo + } + : {} + ) } } @@ -720,68 +731,74 @@ module web_docker './app/web.bicep' = if (hostingModel == 'container') { speechKeyName: useKeyVault ? storekeys.outputs.SPEECH_KEY_NAME : '' // Conditionally set database key names - cosmosDBKeyName: databaseType == 'cosmos' && useKeyVault ? storekeys.outputs.COSMOS_ACCOUNT_KEY_NAME : '' - postgresInfoName: databaseType == 'postgres' && useKeyVault ? storekeys.outputs.POSTGRESQL_INFO_NAME : '' + cosmosDBKeyName: databaseType == 'CosmosDB' && useKeyVault ? storekeys.outputs.COSMOS_ACCOUNT_KEY_NAME : '' + postgresInfoName: databaseType == 'PostgreSQL' && useKeyVault ? storekeys.outputs.POSTGRESQL_INFO_NAME : '' useKeyVault: useKeyVault keyVaultName: useKeyVault || authType == 'rbac' ? keyvault.outputs.name : '' authType: authType - appSettings: union({ - // Existing app settings - AZURE_COMPUTER_VISION_ENDPOINT: useAdvancedImageProcessing ? computerVision.outputs.endpoint : '' - AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION: computerVisionVectorizeImageApiVersion - AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION: computerVisionVectorizeImageModelVersion - AZURE_CONTENT_SAFETY_ENDPOINT: contentsafety.outputs.endpoint - AZURE_OPENAI_RESOURCE: azureOpenAIResourceName - AZURE_OPENAI_MODEL_INFO: azureOpenAIModelInfo - AZURE_OPENAI_TEMPERATURE: azureOpenAITemperature - AZURE_OPENAI_TOP_P: azureOpenAITopP - AZURE_OPENAI_MAX_TOKENS: azureOpenAIMaxTokens - AZURE_OPENAI_STOP_SEQUENCE: azureOpenAIStopSequence - AZURE_OPENAI_SYSTEM_MESSAGE: azureOpenAISystemMessage - AZURE_OPENAI_API_VERSION: azureOpenAIApiVersion - AZURE_OPENAI_STREAM: azureOpenAIStream - AZURE_OPENAI_EMBEDDING_MODEL_INFO: azureOpenAIEmbeddingModelInfo - AZURE_SEARCH_USE_SEMANTIC_SEARCH: azureSearchUseSemanticSearch - AZURE_SEARCH_SERVICE: 'https://${azureAISearchName}.search.windows.net' - AZURE_SEARCH_INDEX: azureSearchIndex - AZURE_SEARCH_CONVERSATIONS_LOG_INDEX: azureSearchConversationLogIndex - AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: azureSearchSemanticSearchConfig - AZURE_SEARCH_INDEX_IS_PRECHUNKED: azureSearchIndexIsPrechunked - AZURE_SEARCH_TOP_K: azureSearchTopK - AZURE_SEARCH_ENABLE_IN_DOMAIN: azureSearchEnableInDomain - AZURE_SEARCH_FILENAME_COLUMN: azureSearchFilenameColumn - AZURE_SEARCH_FILTER: azureSearchFilter - AZURE_SEARCH_FIELDS_ID: azureSearchFieldId - AZURE_SEARCH_CONTENT_COLUMN: azureSearchContentColumn - AZURE_SEARCH_CONTENT_VECTOR_COLUMN: azureSearchVectorColumn - AZURE_SEARCH_TITLE_COLUMN: azureSearchTitleColumn - AZURE_SEARCH_FIELDS_METADATA: azureSearchFieldsMetadata - AZURE_SEARCH_SOURCE_COLUMN: azureSearchSourceColumn - AZURE_SEARCH_CHUNK_COLUMN: azureSearchChunkColumn - AZURE_SEARCH_OFFSET_COLUMN: azureSearchOffsetColumn - AZURE_SEARCH_URL_COLUMN: azureSearchUrlColumn - AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: azureSearchUseIntegratedVectorization - AZURE_SPEECH_SERVICE_NAME: speechServiceName - AZURE_SPEECH_SERVICE_REGION: location - AZURE_SPEECH_RECOGNIZER_LANGUAGES: recognizedLanguages - USE_ADVANCED_IMAGE_PROCESSING: useAdvancedImageProcessing - ADVANCED_IMAGE_PROCESSING_MAX_IMAGES: advancedImageProcessingMaxImages - ORCHESTRATION_STRATEGY: orchestrationStrategy - CONVERSATION_FLOW: conversationFlow - LOGLEVEL: logLevel - - // Add database type to settings - AZURE_DATABASE_TYPE: databaseType - }, - // Conditionally add database-specific settings - databaseType == 'cosmos' ? { - AZURE_COSMOSDB_INFO: azureCosmosDBInfo - AZURE_COSMOSDB_ENABLE_FEEDBACK: true - } : databaseType == 'postgres' ? { - AZURE_POSTGRESDB_INFO: azurePostgresDBInfo - } : {}) + appSettings: union( + { + // Existing app settings + AZURE_COMPUTER_VISION_ENDPOINT: useAdvancedImageProcessing ? computerVision.outputs.endpoint : '' + AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION: computerVisionVectorizeImageApiVersion + AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION: computerVisionVectorizeImageModelVersion + AZURE_CONTENT_SAFETY_ENDPOINT: contentsafety.outputs.endpoint + AZURE_OPENAI_RESOURCE: azureOpenAIResourceName + AZURE_OPENAI_MODEL_INFO: azureOpenAIModelInfo + AZURE_OPENAI_TEMPERATURE: azureOpenAITemperature + AZURE_OPENAI_TOP_P: azureOpenAITopP + AZURE_OPENAI_MAX_TOKENS: azureOpenAIMaxTokens + AZURE_OPENAI_STOP_SEQUENCE: azureOpenAIStopSequence + AZURE_OPENAI_SYSTEM_MESSAGE: azureOpenAISystemMessage + AZURE_OPENAI_API_VERSION: azureOpenAIApiVersion + AZURE_OPENAI_STREAM: azureOpenAIStream + AZURE_OPENAI_EMBEDDING_MODEL_INFO: azureOpenAIEmbeddingModelInfo + AZURE_SEARCH_USE_SEMANTIC_SEARCH: azureSearchUseSemanticSearch + AZURE_SEARCH_SERVICE: 'https://${azureAISearchName}.search.windows.net' + AZURE_SEARCH_INDEX: azureSearchIndex + AZURE_SEARCH_CONVERSATIONS_LOG_INDEX: azureSearchConversationLogIndex + AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG: azureSearchSemanticSearchConfig + AZURE_SEARCH_INDEX_IS_PRECHUNKED: azureSearchIndexIsPrechunked + AZURE_SEARCH_TOP_K: azureSearchTopK + AZURE_SEARCH_ENABLE_IN_DOMAIN: azureSearchEnableInDomain + AZURE_SEARCH_FILENAME_COLUMN: azureSearchFilenameColumn + AZURE_SEARCH_FILTER: azureSearchFilter + AZURE_SEARCH_FIELDS_ID: azureSearchFieldId + AZURE_SEARCH_CONTENT_COLUMN: azureSearchContentColumn + AZURE_SEARCH_CONTENT_VECTOR_COLUMN: azureSearchVectorColumn + AZURE_SEARCH_TITLE_COLUMN: azureSearchTitleColumn + AZURE_SEARCH_FIELDS_METADATA: azureSearchFieldsMetadata + AZURE_SEARCH_SOURCE_COLUMN: azureSearchSourceColumn + AZURE_SEARCH_CHUNK_COLUMN: azureSearchChunkColumn + AZURE_SEARCH_OFFSET_COLUMN: azureSearchOffsetColumn + AZURE_SEARCH_URL_COLUMN: azureSearchUrlColumn + AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION: azureSearchUseIntegratedVectorization + AZURE_SPEECH_SERVICE_NAME: speechServiceName + AZURE_SPEECH_SERVICE_REGION: location + AZURE_SPEECH_RECOGNIZER_LANGUAGES: recognizedLanguages + USE_ADVANCED_IMAGE_PROCESSING: useAdvancedImageProcessing + ADVANCED_IMAGE_PROCESSING_MAX_IMAGES: advancedImageProcessingMaxImages + ORCHESTRATION_STRATEGY: orchestrationStrategy + CONVERSATION_FLOW: conversationFlow + LOGLEVEL: logLevel + + // Add database type to settings + AZURE_DATABASE_TYPE: databaseType + }, + // Conditionally add database-specific settings + databaseType == 'CosmosDB' + ? { + AZURE_COSMOSDB_INFO: azureCosmosDBInfo + AZURE_COSMOSDB_ENABLE_FEEDBACK: true + } + : databaseType == 'PostgreSQL' + ? { + AZURE_POSTGRESDB_INFO: azurePostgresDBInfo + } + : {} + ) } } @@ -1230,22 +1247,22 @@ module machineLearning 'app/machinelearning.bicep' = if (orchestrationStrategy = } } -module createIndex './core/database/deploy_create_table_script.bicep' = if (databaseType == 'postgres') { - name : 'deploy_create_table_script' - params:{ +module createIndex './core/database/deploy_create_table_script.bicep' = if (databaseType == 'postgres') { + name: 'deploy_create_table_script' + params: { solutionLocation: location - identity:managedIdentityModule.outputs.managedIdentityOutput.id - baseUrl:baseUrl - keyVaultName:keyvault.outputs.name + identity: managedIdentityModule.outputs.managedIdentityOutput.id + baseUrl: baseUrl + keyVaultName: keyvault.outputs.name postgresSqlServerName: postgresDBModule.outputs.postgresDbOutput.postgresSQLName } scope: rg - dependsOn:[keyvault, postgresDBModule, storekeys] + dependsOn: [keyvault, postgresDBModule, storekeys] } output APPLICATIONINSIGHTS_CONNECTION_STRING string = monitoring.outputs.applicationInsightsConnectionString output AZURE_APP_SERVICE_HOSTING_MODEL string = hostingModel -output AZURE_BLOB_STORAGE_INFO string = replace(azureBlobStorageInfo, '$STORAGE_ACCOUNT_KEY','') +output AZURE_BLOB_STORAGE_INFO string = replace(azureBlobStorageInfo, '$STORAGE_ACCOUNT_KEY', '') output AZURE_COMPUTER_VISION_ENDPOINT string = useAdvancedImageProcessing ? computerVision.outputs.endpoint : '' output AZURE_COMPUTER_VISION_LOCATION string = useAdvancedImageProcessing ? computerVision.outputs.location : '' output AZURE_COMPUTER_VISION_KEY string = useKeyVault ? storekeys.outputs.COMPUTER_VISION_KEY_NAME : '' @@ -1253,7 +1270,7 @@ output AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION string = computerVision output AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION string = computerVisionVectorizeImageModelVersion output AZURE_CONTENT_SAFETY_ENDPOINT string = contentsafety.outputs.endpoint output AZURE_CONTENT_SAFETY_KEY string = useKeyVault ? storekeys.outputs.CONTENT_SAFETY_KEY_NAME : '' -output AZURE_FORM_RECOGNIZER_INFO string = replace(azureFormRecognizerInfo, '$FORM_RECOGNIZER_KEY','') +output AZURE_FORM_RECOGNIZER_INFO string = replace(azureFormRecognizerInfo, '$FORM_RECOGNIZER_KEY', '') output AZURE_KEY_VAULT_ENDPOINT string = useKeyVault ? keyvault.outputs.endpoint : '' output AZURE_KEY_VAULT_NAME string = useKeyVault || authType == 'rbac' ? keyvault.outputs.name : '' output AZURE_LOCATION string = location diff --git a/infra/main.json b/infra/main.json index 314c1f8d3..cb7269c61 100644 --- a/infra/main.json +++ b/infra/main.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.30.23.60470", - "templateHash": "16387401552448615008" + "templateHash": "14534949706227721920" } }, "parameters": { @@ -215,7 +215,7 @@ "type": "bool", "defaultValue": false, "metadata": { - "description": "Use Azure Search Integrated Vectorization" + "description": "Whether to use Azure Search Integrated Vectorization. If the database type is PostgreSQL, set this to false." } }, "azureOpenAIResourceName": { @@ -264,7 +264,7 @@ "type": "bool", "defaultValue": false, "metadata": { - "description": "Enables the use of a vision LLM and Computer Vision for embedding images" + "description": "Whether to enable the use of a vision LLM and Computer Vision for embedding images. If the database type is PostgreSQL, set this to false." } }, "advancedImageProcessingMaxImages": { @@ -614,10 +614,10 @@ }, "databaseType": { "type": "string", - "defaultValue": "cosmos", + "defaultValue": "CosmosDB", "allowedValues": [ - "cosmos", - "postgres" + "CosmosDB", + "PostgreSQL" ], "metadata": { "description": "The type of database to deploy (cosmos or postgres)" @@ -946,7 +946,7 @@ ] }, { - "condition": "[equals(parameters('databaseType'), 'postgres')]", + "condition": "[equals(parameters('databaseType'), 'PostgreSQL')]", "type": "Microsoft.Resources/deployments", "apiVersion": "2022-09-01", "name": "deploy_postgres_sql", @@ -2070,11 +2070,11 @@ "value": "[parameters('speechServiceName')]" }, "computerVisionName": "[if(parameters('useAdvancedImageProcessing'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'computerVision'), '2022-09-01').outputs.name.value), createObject('value', ''))]", - "cosmosAccountName": "[if(equals(parameters('databaseType'), 'cosmos'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName), createObject('value', ''))]", - "postgresServerName": "[if(equals(parameters('databaseType'), 'postgres'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), createObject('value', ''))]", - "postgresDatabaseName": "[if(equals(parameters('databaseType'), 'postgres'), createObject('value', 'postgres'), createObject('value', ''))]", - "postgresDatabaseAdminUserName": "[if(equals(parameters('databaseType'), 'postgres'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser), createObject('value', ''))]", - "postgresDatabaseAdminPassword": "[if(equals(parameters('databaseType'), 'postgres'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd), createObject('value', ''))]", + "cosmosAccountName": "[if(equals(parameters('databaseType'), 'CosmosDB'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName), createObject('value', ''))]", + "postgresServerName": "[if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), createObject('value', ''))]", + "postgresDatabaseName": "[if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('value', 'PostgreSQL'), createObject('value', ''))]", + "postgresDatabaseAdminUserName": "[if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser), createObject('value', ''))]", + "postgresDatabaseAdminPassword": "[if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd), createObject('value', ''))]", "rgName": { "value": "[variables('rgName')]" } @@ -2086,7 +2086,7 @@ "_generator": { "name": "bicep", "version": "0.30.23.60470", - "templateHash": "4301444608123274670" + "templateHash": "10141904934443597449" } }, "parameters": { @@ -2132,7 +2132,7 @@ }, "postgresDatabaseName": { "type": "string", - "defaultValue": "postgres" + "defaultValue": "PostgreSQL" }, "postgresInfoName": { "type": "string", @@ -2651,8 +2651,8 @@ "contentSafetyKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.CONTENT_SAFETY_KEY_NAME.value), createObject('value', ''))]", "speechKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.SPEECH_KEY_NAME.value), createObject('value', ''))]", "computerVisionKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COMPUTER_VISION_KEY_NAME.value), createObject('value', ''))]", - "cosmosDBKeyName": "[if(and(equals(parameters('databaseType'), 'cosmos'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COSMOS_ACCOUNT_KEY_NAME.value), createObject('value', ''))]", - "postgresInfoName": "[if(and(equals(parameters('databaseType'), 'postgres'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.POSTGRESQL_INFO_NAME.value), createObject('value', ''))]", + "cosmosDBKeyName": "[if(and(equals(parameters('databaseType'), 'CosmosDB'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COSMOS_ACCOUNT_KEY_NAME.value), createObject('value', ''))]", + "postgresInfoName": "[if(and(equals(parameters('databaseType'), 'PostgreSQL'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.POSTGRESQL_INFO_NAME.value), createObject('value', ''))]", "useKeyVault": { "value": "[parameters('useKeyVault')]" }, @@ -2661,7 +2661,7 @@ "value": "[parameters('authType')]" }, "appSettings": { - "value": "[union(createObject('AZURE_COMPUTER_VISION_ENDPOINT', if(parameters('useAdvancedImageProcessing'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'computerVision'), '2022-09-01').outputs.endpoint.value, ''), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION', parameters('computerVisionVectorizeImageApiVersion'), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION', parameters('computerVisionVectorizeImageModelVersion'), 'AZURE_CONTENT_SAFETY_ENDPOINT', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', parameters('contentSafetyName')), '2022-09-01').outputs.endpoint.value, 'AZURE_OPENAI_RESOURCE', parameters('azureOpenAIResourceName'), 'AZURE_OPENAI_MODEL_INFO', variables('azureOpenAIModelInfo'), 'AZURE_OPENAI_TEMPERATURE', parameters('azureOpenAITemperature'), 'AZURE_OPENAI_TOP_P', parameters('azureOpenAITopP'), 'AZURE_OPENAI_MAX_TOKENS', parameters('azureOpenAIMaxTokens'), 'AZURE_OPENAI_STOP_SEQUENCE', parameters('azureOpenAIStopSequence'), 'AZURE_OPENAI_SYSTEM_MESSAGE', parameters('azureOpenAISystemMessage'), 'AZURE_OPENAI_API_VERSION', parameters('azureOpenAIApiVersion'), 'AZURE_OPENAI_STREAM', parameters('azureOpenAIStream'), 'AZURE_OPENAI_EMBEDDING_MODEL_INFO', variables('azureOpenAIEmbeddingModelInfo'), 'AZURE_SEARCH_USE_SEMANTIC_SEARCH', parameters('azureSearchUseSemanticSearch'), 'AZURE_SEARCH_SERVICE', format('https://{0}.search.windows.net', parameters('azureAISearchName')), 'AZURE_SEARCH_INDEX', parameters('azureSearchIndex'), 'AZURE_SEARCH_CONVERSATIONS_LOG_INDEX', parameters('azureSearchConversationLogIndex'), 'AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG', parameters('azureSearchSemanticSearchConfig'), 'AZURE_SEARCH_INDEX_IS_PRECHUNKED', parameters('azureSearchIndexIsPrechunked'), 'AZURE_SEARCH_TOP_K', parameters('azureSearchTopK'), 'AZURE_SEARCH_ENABLE_IN_DOMAIN', parameters('azureSearchEnableInDomain'), 'AZURE_SEARCH_FILENAME_COLUMN', parameters('azureSearchFilenameColumn'), 'AZURE_SEARCH_FILTER', parameters('azureSearchFilter'), 'AZURE_SEARCH_FIELDS_ID', parameters('azureSearchFieldId'), 'AZURE_SEARCH_CONTENT_COLUMN', parameters('azureSearchContentColumn'), 'AZURE_SEARCH_CONTENT_VECTOR_COLUMN', parameters('azureSearchVectorColumn'), 'AZURE_SEARCH_TITLE_COLUMN', parameters('azureSearchTitleColumn'), 'AZURE_SEARCH_FIELDS_METADATA', parameters('azureSearchFieldsMetadata'), 'AZURE_SEARCH_SOURCE_COLUMN', parameters('azureSearchSourceColumn'), 'AZURE_SEARCH_CHUNK_COLUMN', parameters('azureSearchChunkColumn'), 'AZURE_SEARCH_OFFSET_COLUMN', parameters('azureSearchOffsetColumn'), 'AZURE_SEARCH_URL_COLUMN', parameters('azureSearchUrlColumn'), 'AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION', parameters('azureSearchUseIntegratedVectorization'), 'AZURE_SPEECH_SERVICE_NAME', parameters('speechServiceName'), 'AZURE_SPEECH_SERVICE_REGION', parameters('location'), 'AZURE_SPEECH_RECOGNIZER_LANGUAGES', parameters('recognizedLanguages'), 'USE_ADVANCED_IMAGE_PROCESSING', parameters('useAdvancedImageProcessing'), 'ADVANCED_IMAGE_PROCESSING_MAX_IMAGES', parameters('advancedImageProcessingMaxImages'), 'ORCHESTRATION_STRATEGY', parameters('orchestrationStrategy'), 'CONVERSATION_FLOW', parameters('conversationFlow'), 'LOGLEVEL', parameters('logLevel'), 'AZURE_DATABASE_TYPE', parameters('databaseType')), if(equals(parameters('databaseType'), 'cosmos'), createObject('AZURE_COSMOSDB_INFO', string(createObject('accountName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, ''))), 'AZURE_COSMOSDB_ENABLE_FEEDBACK', true()), if(equals(parameters('databaseType'), 'postgres'), createObject('AZURE_POSTGRES_INFO', string(createObject('serverName', format('{0}.postgres.database.azure.com', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), 'databaseName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDatabaseName, 'userName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser, 'password', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd))), createObject())))]" + "value": "[union(createObject('AZURE_COMPUTER_VISION_ENDPOINT', if(parameters('useAdvancedImageProcessing'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'computerVision'), '2022-09-01').outputs.endpoint.value, ''), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION', parameters('computerVisionVectorizeImageApiVersion'), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION', parameters('computerVisionVectorizeImageModelVersion'), 'AZURE_CONTENT_SAFETY_ENDPOINT', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', parameters('contentSafetyName')), '2022-09-01').outputs.endpoint.value, 'AZURE_OPENAI_RESOURCE', parameters('azureOpenAIResourceName'), 'AZURE_OPENAI_MODEL_INFO', variables('azureOpenAIModelInfo'), 'AZURE_OPENAI_TEMPERATURE', parameters('azureOpenAITemperature'), 'AZURE_OPENAI_TOP_P', parameters('azureOpenAITopP'), 'AZURE_OPENAI_MAX_TOKENS', parameters('azureOpenAIMaxTokens'), 'AZURE_OPENAI_STOP_SEQUENCE', parameters('azureOpenAIStopSequence'), 'AZURE_OPENAI_SYSTEM_MESSAGE', parameters('azureOpenAISystemMessage'), 'AZURE_OPENAI_API_VERSION', parameters('azureOpenAIApiVersion'), 'AZURE_OPENAI_STREAM', parameters('azureOpenAIStream'), 'AZURE_OPENAI_EMBEDDING_MODEL_INFO', variables('azureOpenAIEmbeddingModelInfo'), 'AZURE_SEARCH_USE_SEMANTIC_SEARCH', parameters('azureSearchUseSemanticSearch'), 'AZURE_SEARCH_SERVICE', format('https://{0}.search.windows.net', parameters('azureAISearchName')), 'AZURE_SEARCH_INDEX', parameters('azureSearchIndex'), 'AZURE_SEARCH_CONVERSATIONS_LOG_INDEX', parameters('azureSearchConversationLogIndex'), 'AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG', parameters('azureSearchSemanticSearchConfig'), 'AZURE_SEARCH_INDEX_IS_PRECHUNKED', parameters('azureSearchIndexIsPrechunked'), 'AZURE_SEARCH_TOP_K', parameters('azureSearchTopK'), 'AZURE_SEARCH_ENABLE_IN_DOMAIN', parameters('azureSearchEnableInDomain'), 'AZURE_SEARCH_FILENAME_COLUMN', parameters('azureSearchFilenameColumn'), 'AZURE_SEARCH_FILTER', parameters('azureSearchFilter'), 'AZURE_SEARCH_FIELDS_ID', parameters('azureSearchFieldId'), 'AZURE_SEARCH_CONTENT_COLUMN', parameters('azureSearchContentColumn'), 'AZURE_SEARCH_CONTENT_VECTOR_COLUMN', parameters('azureSearchVectorColumn'), 'AZURE_SEARCH_TITLE_COLUMN', parameters('azureSearchTitleColumn'), 'AZURE_SEARCH_FIELDS_METADATA', parameters('azureSearchFieldsMetadata'), 'AZURE_SEARCH_SOURCE_COLUMN', parameters('azureSearchSourceColumn'), 'AZURE_SEARCH_CHUNK_COLUMN', parameters('azureSearchChunkColumn'), 'AZURE_SEARCH_OFFSET_COLUMN', parameters('azureSearchOffsetColumn'), 'AZURE_SEARCH_URL_COLUMN', parameters('azureSearchUrlColumn'), 'AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION', parameters('azureSearchUseIntegratedVectorization'), 'AZURE_SPEECH_SERVICE_NAME', parameters('speechServiceName'), 'AZURE_SPEECH_SERVICE_REGION', parameters('location'), 'AZURE_SPEECH_RECOGNIZER_LANGUAGES', parameters('recognizedLanguages'), 'USE_ADVANCED_IMAGE_PROCESSING', parameters('useAdvancedImageProcessing'), 'ADVANCED_IMAGE_PROCESSING_MAX_IMAGES', parameters('advancedImageProcessingMaxImages'), 'ORCHESTRATION_STRATEGY', parameters('orchestrationStrategy'), 'CONVERSATION_FLOW', parameters('conversationFlow'), 'LOGLEVEL', parameters('logLevel'), 'AZURE_DATABASE_TYPE', parameters('databaseType')), if(equals(parameters('databaseType'), 'CosmosDB'), createObject('AZURE_COSMOSDB_INFO', string(createObject('accountName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, ''))), 'AZURE_COSMOSDB_ENABLE_FEEDBACK', true()), if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('AZURE_POSTGRES_INFO', string(createObject('serverName', format('{0}.postgres.database.azure.com', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), 'databaseName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDatabaseName, 'userName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser, 'password', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd))), createObject())))]" } }, "template": { @@ -2671,7 +2671,7 @@ "_generator": { "name": "bicep", "version": "0.30.23.60470", - "templateHash": "64857797928052295" + "templateHash": "12192862160861363431" } }, "parameters": { @@ -2793,7 +2793,7 @@ }, "databaseType": { "type": "string", - "defaultValue": "cosmos" + "defaultValue": "CosmosDB" }, "cosmosDBKeyName": { "type": "string", @@ -2835,7 +2835,7 @@ "value": "[parameters('appServicePlanId')]" }, "appSettings": { - "value": "[union(parameters('appSettings'), union(if(equals(parameters('databaseType'), 'cosmos'), createObject('DATABASE_TYPE', 'cosmos', 'AZURE_COSMOSDB_ACCOUNT_KEY', if(or(parameters('useKeyVault'), equals(parameters('cosmosDBKeyName'), '')), parameters('cosmosDBKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDBKeyName')), '2022-08-15').primaryMasterKey)), createObject('DATABASE_TYPE', 'postgres', 'AZURE_POSTGRESQL_INFO', if(parameters('useKeyVault'), parameters('postgresInfoName'), ''))), createObject('AZURE_AUTH_TYPE', parameters('authType'), 'USE_KEY_VAULT', if(parameters('useKeyVault'), parameters('useKeyVault'), ''), 'AZURE_OPENAI_API_KEY', if(parameters('useKeyVault'), parameters('openAIKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('azureOpenAIName')), '2023-05-01').key1), 'AZURE_SEARCH_KEY', if(parameters('useKeyVault'), parameters('searchKeyName'), listAdminKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Search/searchServices', parameters('azureAISearchName')), '2021-04-01-preview').primaryKey), 'AZURE_BLOB_STORAGE_INFO', if(parameters('useKeyVault'), parameters('azureBlobStorageInfo'), replace(parameters('azureBlobStorageInfo'), '$STORAGE_ACCOUNT_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)), 'AZURE_FORM_RECOGNIZER_INFO', if(parameters('useKeyVault'), parameters('azureFormRecognizerInfo'), replace(parameters('azureFormRecognizerInfo'), '$FORM_RECOGNIZER_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('formRecognizerName')), '2023-05-01').key1)), 'AZURE_CONTENT_SAFETY_KEY', if(parameters('useKeyVault'), parameters('contentSafetyKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('contentSafetyName')), '2023-05-01').key1), 'AZURE_SPEECH_SERVICE_KEY', if(parameters('useKeyVault'), parameters('speechKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('speechServiceName')), '2023-05-01').key1), 'AZURE_COMPUTER_VISION_KEY', if(or(parameters('useKeyVault'), equals(parameters('computerVisionName'), '')), parameters('computerVisionKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('computerVisionName')), '2023-05-01').key1))))]" + "value": "[union(parameters('appSettings'), union(if(equals(parameters('databaseType'), 'CosmosDB'), createObject('DATABASE_TYPE', 'CosmosDB', 'AZURE_COSMOSDB_ACCOUNT_KEY', if(or(parameters('useKeyVault'), equals(parameters('cosmosDBKeyName'), '')), parameters('cosmosDBKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDBKeyName')), '2022-08-15').primaryMasterKey)), createObject('DATABASE_TYPE', 'PostgreSQL', 'AZURE_POSTGRESQL_INFO', if(parameters('useKeyVault'), parameters('postgresInfoName'), ''))), createObject('AZURE_AUTH_TYPE', parameters('authType'), 'USE_KEY_VAULT', if(parameters('useKeyVault'), parameters('useKeyVault'), ''), 'AZURE_OPENAI_API_KEY', if(parameters('useKeyVault'), parameters('openAIKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('azureOpenAIName')), '2023-05-01').key1), 'AZURE_SEARCH_KEY', if(parameters('useKeyVault'), parameters('searchKeyName'), listAdminKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Search/searchServices', parameters('azureAISearchName')), '2021-04-01-preview').primaryKey), 'AZURE_BLOB_STORAGE_INFO', if(parameters('useKeyVault'), parameters('azureBlobStorageInfo'), replace(parameters('azureBlobStorageInfo'), '$STORAGE_ACCOUNT_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)), 'AZURE_FORM_RECOGNIZER_INFO', if(parameters('useKeyVault'), parameters('azureFormRecognizerInfo'), replace(parameters('azureFormRecognizerInfo'), '$FORM_RECOGNIZER_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('formRecognizerName')), '2023-05-01').key1)), 'AZURE_CONTENT_SAFETY_KEY', if(parameters('useKeyVault'), parameters('contentSafetyKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('contentSafetyName')), '2023-05-01').key1), 'AZURE_SPEECH_SERVICE_KEY', if(parameters('useKeyVault'), parameters('speechKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('speechServiceName')), '2023-05-01').key1), 'AZURE_COMPUTER_VISION_KEY', if(or(parameters('useKeyVault'), equals(parameters('computerVisionName'), '')), parameters('computerVisionKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('computerVisionName')), '2023-05-01').key1))))]" }, "keyVaultName": { "value": "[parameters('keyVaultName')]" @@ -3647,8 +3647,8 @@ "computerVisionKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COMPUTER_VISION_KEY_NAME.value), createObject('value', ''))]", "contentSafetyKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.CONTENT_SAFETY_KEY_NAME.value), createObject('value', ''))]", "speechKeyName": "[if(parameters('useKeyVault'), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.SPEECH_KEY_NAME.value), createObject('value', ''))]", - "cosmosDBKeyName": "[if(and(equals(parameters('databaseType'), 'cosmos'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COSMOS_ACCOUNT_KEY_NAME.value), createObject('value', ''))]", - "postgresInfoName": "[if(and(equals(parameters('databaseType'), 'postgres'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.POSTGRESQL_INFO_NAME.value), createObject('value', ''))]", + "cosmosDBKeyName": "[if(and(equals(parameters('databaseType'), 'CosmosDB'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.COSMOS_ACCOUNT_KEY_NAME.value), createObject('value', ''))]", + "postgresInfoName": "[if(and(equals(parameters('databaseType'), 'PostgreSQL'), parameters('useKeyVault')), createObject('value', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'storekeys'), '2022-09-01').outputs.POSTGRESQL_INFO_NAME.value), createObject('value', ''))]", "useKeyVault": { "value": "[parameters('useKeyVault')]" }, @@ -3657,7 +3657,7 @@ "value": "[parameters('authType')]" }, "appSettings": { - "value": "[union(createObject('AZURE_COMPUTER_VISION_ENDPOINT', if(parameters('useAdvancedImageProcessing'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'computerVision'), '2022-09-01').outputs.endpoint.value, ''), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION', parameters('computerVisionVectorizeImageApiVersion'), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION', parameters('computerVisionVectorizeImageModelVersion'), 'AZURE_CONTENT_SAFETY_ENDPOINT', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', parameters('contentSafetyName')), '2022-09-01').outputs.endpoint.value, 'AZURE_OPENAI_RESOURCE', parameters('azureOpenAIResourceName'), 'AZURE_OPENAI_MODEL_INFO', variables('azureOpenAIModelInfo'), 'AZURE_OPENAI_TEMPERATURE', parameters('azureOpenAITemperature'), 'AZURE_OPENAI_TOP_P', parameters('azureOpenAITopP'), 'AZURE_OPENAI_MAX_TOKENS', parameters('azureOpenAIMaxTokens'), 'AZURE_OPENAI_STOP_SEQUENCE', parameters('azureOpenAIStopSequence'), 'AZURE_OPENAI_SYSTEM_MESSAGE', parameters('azureOpenAISystemMessage'), 'AZURE_OPENAI_API_VERSION', parameters('azureOpenAIApiVersion'), 'AZURE_OPENAI_STREAM', parameters('azureOpenAIStream'), 'AZURE_OPENAI_EMBEDDING_MODEL_INFO', variables('azureOpenAIEmbeddingModelInfo'), 'AZURE_SEARCH_USE_SEMANTIC_SEARCH', parameters('azureSearchUseSemanticSearch'), 'AZURE_SEARCH_SERVICE', format('https://{0}.search.windows.net', parameters('azureAISearchName')), 'AZURE_SEARCH_INDEX', parameters('azureSearchIndex'), 'AZURE_SEARCH_CONVERSATIONS_LOG_INDEX', parameters('azureSearchConversationLogIndex'), 'AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG', parameters('azureSearchSemanticSearchConfig'), 'AZURE_SEARCH_INDEX_IS_PRECHUNKED', parameters('azureSearchIndexIsPrechunked'), 'AZURE_SEARCH_TOP_K', parameters('azureSearchTopK'), 'AZURE_SEARCH_ENABLE_IN_DOMAIN', parameters('azureSearchEnableInDomain'), 'AZURE_SEARCH_FILENAME_COLUMN', parameters('azureSearchFilenameColumn'), 'AZURE_SEARCH_FILTER', parameters('azureSearchFilter'), 'AZURE_SEARCH_FIELDS_ID', parameters('azureSearchFieldId'), 'AZURE_SEARCH_CONTENT_COLUMN', parameters('azureSearchContentColumn'), 'AZURE_SEARCH_CONTENT_VECTOR_COLUMN', parameters('azureSearchVectorColumn'), 'AZURE_SEARCH_TITLE_COLUMN', parameters('azureSearchTitleColumn'), 'AZURE_SEARCH_FIELDS_METADATA', parameters('azureSearchFieldsMetadata'), 'AZURE_SEARCH_SOURCE_COLUMN', parameters('azureSearchSourceColumn'), 'AZURE_SEARCH_CHUNK_COLUMN', parameters('azureSearchChunkColumn'), 'AZURE_SEARCH_OFFSET_COLUMN', parameters('azureSearchOffsetColumn'), 'AZURE_SEARCH_URL_COLUMN', parameters('azureSearchUrlColumn'), 'AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION', parameters('azureSearchUseIntegratedVectorization'), 'AZURE_SPEECH_SERVICE_NAME', parameters('speechServiceName'), 'AZURE_SPEECH_SERVICE_REGION', parameters('location'), 'AZURE_SPEECH_RECOGNIZER_LANGUAGES', parameters('recognizedLanguages'), 'USE_ADVANCED_IMAGE_PROCESSING', parameters('useAdvancedImageProcessing'), 'ADVANCED_IMAGE_PROCESSING_MAX_IMAGES', parameters('advancedImageProcessingMaxImages'), 'ORCHESTRATION_STRATEGY', parameters('orchestrationStrategy'), 'CONVERSATION_FLOW', parameters('conversationFlow'), 'LOGLEVEL', parameters('logLevel'), 'AZURE_DATABASE_TYPE', parameters('databaseType')), if(equals(parameters('databaseType'), 'cosmos'), createObject('AZURE_COSMOSDB_INFO', string(createObject('accountName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, ''))), 'AZURE_COSMOSDB_ENABLE_FEEDBACK', true()), if(equals(parameters('databaseType'), 'postgres'), createObject('AZURE_POSTGRESDB_INFO', string(createObject('serverName', format('{0}.postgres.database.azure.com', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), 'databaseName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDatabaseName, 'userName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser, 'password', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd))), createObject())))]" + "value": "[union(createObject('AZURE_COMPUTER_VISION_ENDPOINT', if(parameters('useAdvancedImageProcessing'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'computerVision'), '2022-09-01').outputs.endpoint.value, ''), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_API_VERSION', parameters('computerVisionVectorizeImageApiVersion'), 'AZURE_COMPUTER_VISION_VECTORIZE_IMAGE_MODEL_VERSION', parameters('computerVisionVectorizeImageModelVersion'), 'AZURE_CONTENT_SAFETY_ENDPOINT', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', parameters('contentSafetyName')), '2022-09-01').outputs.endpoint.value, 'AZURE_OPENAI_RESOURCE', parameters('azureOpenAIResourceName'), 'AZURE_OPENAI_MODEL_INFO', variables('azureOpenAIModelInfo'), 'AZURE_OPENAI_TEMPERATURE', parameters('azureOpenAITemperature'), 'AZURE_OPENAI_TOP_P', parameters('azureOpenAITopP'), 'AZURE_OPENAI_MAX_TOKENS', parameters('azureOpenAIMaxTokens'), 'AZURE_OPENAI_STOP_SEQUENCE', parameters('azureOpenAIStopSequence'), 'AZURE_OPENAI_SYSTEM_MESSAGE', parameters('azureOpenAISystemMessage'), 'AZURE_OPENAI_API_VERSION', parameters('azureOpenAIApiVersion'), 'AZURE_OPENAI_STREAM', parameters('azureOpenAIStream'), 'AZURE_OPENAI_EMBEDDING_MODEL_INFO', variables('azureOpenAIEmbeddingModelInfo'), 'AZURE_SEARCH_USE_SEMANTIC_SEARCH', parameters('azureSearchUseSemanticSearch'), 'AZURE_SEARCH_SERVICE', format('https://{0}.search.windows.net', parameters('azureAISearchName')), 'AZURE_SEARCH_INDEX', parameters('azureSearchIndex'), 'AZURE_SEARCH_CONVERSATIONS_LOG_INDEX', parameters('azureSearchConversationLogIndex'), 'AZURE_SEARCH_SEMANTIC_SEARCH_CONFIG', parameters('azureSearchSemanticSearchConfig'), 'AZURE_SEARCH_INDEX_IS_PRECHUNKED', parameters('azureSearchIndexIsPrechunked'), 'AZURE_SEARCH_TOP_K', parameters('azureSearchTopK'), 'AZURE_SEARCH_ENABLE_IN_DOMAIN', parameters('azureSearchEnableInDomain'), 'AZURE_SEARCH_FILENAME_COLUMN', parameters('azureSearchFilenameColumn'), 'AZURE_SEARCH_FILTER', parameters('azureSearchFilter'), 'AZURE_SEARCH_FIELDS_ID', parameters('azureSearchFieldId'), 'AZURE_SEARCH_CONTENT_COLUMN', parameters('azureSearchContentColumn'), 'AZURE_SEARCH_CONTENT_VECTOR_COLUMN', parameters('azureSearchVectorColumn'), 'AZURE_SEARCH_TITLE_COLUMN', parameters('azureSearchTitleColumn'), 'AZURE_SEARCH_FIELDS_METADATA', parameters('azureSearchFieldsMetadata'), 'AZURE_SEARCH_SOURCE_COLUMN', parameters('azureSearchSourceColumn'), 'AZURE_SEARCH_CHUNK_COLUMN', parameters('azureSearchChunkColumn'), 'AZURE_SEARCH_OFFSET_COLUMN', parameters('azureSearchOffsetColumn'), 'AZURE_SEARCH_URL_COLUMN', parameters('azureSearchUrlColumn'), 'AZURE_SEARCH_USE_INTEGRATED_VECTORIZATION', parameters('azureSearchUseIntegratedVectorization'), 'AZURE_SPEECH_SERVICE_NAME', parameters('speechServiceName'), 'AZURE_SPEECH_SERVICE_REGION', parameters('location'), 'AZURE_SPEECH_RECOGNIZER_LANGUAGES', parameters('recognizedLanguages'), 'USE_ADVANCED_IMAGE_PROCESSING', parameters('useAdvancedImageProcessing'), 'ADVANCED_IMAGE_PROCESSING_MAX_IMAGES', parameters('advancedImageProcessingMaxImages'), 'ORCHESTRATION_STRATEGY', parameters('orchestrationStrategy'), 'CONVERSATION_FLOW', parameters('conversationFlow'), 'LOGLEVEL', parameters('logLevel'), 'AZURE_DATABASE_TYPE', parameters('databaseType')), if(equals(parameters('databaseType'), 'CosmosDB'), createObject('AZURE_COSMOSDB_INFO', string(createObject('accountName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, ''))), 'AZURE_COSMOSDB_ENABLE_FEEDBACK', true()), if(equals(parameters('databaseType'), 'PostgreSQL'), createObject('AZURE_POSTGRESDB_INFO', string(createObject('serverName', format('{0}.postgres.database.azure.com', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLServerName), 'databaseName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDatabaseName, 'userName', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbUser, 'password', reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_postgres_sql'), '2022-09-01').outputs.postgresDbOutput.value.postgreSQLDbPwd))), createObject())))]" } }, "template": { @@ -3667,7 +3667,7 @@ "_generator": { "name": "bicep", "version": "0.30.23.60470", - "templateHash": "64857797928052295" + "templateHash": "12192862160861363431" } }, "parameters": { @@ -3789,7 +3789,7 @@ }, "databaseType": { "type": "string", - "defaultValue": "cosmos" + "defaultValue": "CosmosDB" }, "cosmosDBKeyName": { "type": "string", @@ -3831,7 +3831,7 @@ "value": "[parameters('appServicePlanId')]" }, "appSettings": { - "value": "[union(parameters('appSettings'), union(if(equals(parameters('databaseType'), 'cosmos'), createObject('DATABASE_TYPE', 'cosmos', 'AZURE_COSMOSDB_ACCOUNT_KEY', if(or(parameters('useKeyVault'), equals(parameters('cosmosDBKeyName'), '')), parameters('cosmosDBKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDBKeyName')), '2022-08-15').primaryMasterKey)), createObject('DATABASE_TYPE', 'postgres', 'AZURE_POSTGRESQL_INFO', if(parameters('useKeyVault'), parameters('postgresInfoName'), ''))), createObject('AZURE_AUTH_TYPE', parameters('authType'), 'USE_KEY_VAULT', if(parameters('useKeyVault'), parameters('useKeyVault'), ''), 'AZURE_OPENAI_API_KEY', if(parameters('useKeyVault'), parameters('openAIKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('azureOpenAIName')), '2023-05-01').key1), 'AZURE_SEARCH_KEY', if(parameters('useKeyVault'), parameters('searchKeyName'), listAdminKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Search/searchServices', parameters('azureAISearchName')), '2021-04-01-preview').primaryKey), 'AZURE_BLOB_STORAGE_INFO', if(parameters('useKeyVault'), parameters('azureBlobStorageInfo'), replace(parameters('azureBlobStorageInfo'), '$STORAGE_ACCOUNT_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)), 'AZURE_FORM_RECOGNIZER_INFO', if(parameters('useKeyVault'), parameters('azureFormRecognizerInfo'), replace(parameters('azureFormRecognizerInfo'), '$FORM_RECOGNIZER_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('formRecognizerName')), '2023-05-01').key1)), 'AZURE_CONTENT_SAFETY_KEY', if(parameters('useKeyVault'), parameters('contentSafetyKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('contentSafetyName')), '2023-05-01').key1), 'AZURE_SPEECH_SERVICE_KEY', if(parameters('useKeyVault'), parameters('speechKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('speechServiceName')), '2023-05-01').key1), 'AZURE_COMPUTER_VISION_KEY', if(or(parameters('useKeyVault'), equals(parameters('computerVisionName'), '')), parameters('computerVisionKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('computerVisionName')), '2023-05-01').key1))))]" + "value": "[union(parameters('appSettings'), union(if(equals(parameters('databaseType'), 'CosmosDB'), createObject('DATABASE_TYPE', 'CosmosDB', 'AZURE_COSMOSDB_ACCOUNT_KEY', if(or(parameters('useKeyVault'), equals(parameters('cosmosDBKeyName'), '')), parameters('cosmosDBKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.DocumentDB/databaseAccounts', parameters('cosmosDBKeyName')), '2022-08-15').primaryMasterKey)), createObject('DATABASE_TYPE', 'PostgreSQL', 'AZURE_POSTGRESQL_INFO', if(parameters('useKeyVault'), parameters('postgresInfoName'), ''))), createObject('AZURE_AUTH_TYPE', parameters('authType'), 'USE_KEY_VAULT', if(parameters('useKeyVault'), parameters('useKeyVault'), ''), 'AZURE_OPENAI_API_KEY', if(parameters('useKeyVault'), parameters('openAIKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('azureOpenAIName')), '2023-05-01').key1), 'AZURE_SEARCH_KEY', if(parameters('useKeyVault'), parameters('searchKeyName'), listAdminKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Search/searchServices', parameters('azureAISearchName')), '2021-04-01-preview').primaryKey), 'AZURE_BLOB_STORAGE_INFO', if(parameters('useKeyVault'), parameters('azureBlobStorageInfo'), replace(parameters('azureBlobStorageInfo'), '$STORAGE_ACCOUNT_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)), 'AZURE_FORM_RECOGNIZER_INFO', if(parameters('useKeyVault'), parameters('azureFormRecognizerInfo'), replace(parameters('azureFormRecognizerInfo'), '$FORM_RECOGNIZER_KEY', listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('formRecognizerName')), '2023-05-01').key1)), 'AZURE_CONTENT_SAFETY_KEY', if(parameters('useKeyVault'), parameters('contentSafetyKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('contentSafetyName')), '2023-05-01').key1), 'AZURE_SPEECH_SERVICE_KEY', if(parameters('useKeyVault'), parameters('speechKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('speechServiceName')), '2023-05-01').key1), 'AZURE_COMPUTER_VISION_KEY', if(or(parameters('useKeyVault'), equals(parameters('computerVisionName'), '')), parameters('computerVisionKeyName'), listKeys(resourceId(subscription().subscriptionId, resourceGroup().name, 'Microsoft.CognitiveServices/accounts', parameters('computerVisionName')), '2023-05-01').key1))))]" }, "keyVaultName": { "value": "[parameters('keyVaultName')]" @@ -12304,7 +12304,7 @@ }, "AZURE_COSMOSDB_INFO": { "type": "string", - "value": "[string(createObject('accountName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'cosmos'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, '')))]" + "value": "[string(createObject('accountName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosAccountName, ''), 'databaseName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosDatabaseName, ''), 'containerName', if(equals(parameters('databaseType'), 'CosmosDB'), reference(extensionResourceId(format('/subscriptions/{0}/resourceGroups/{1}', subscription().subscriptionId, variables('rgName')), 'Microsoft.Resources/deployments', 'deploy_cosmos_db'), '2022-09-01').outputs.cosmosOutput.value.cosmosContainerName, '')))]" }, "AZURE_POSTGRESDB_INFO": { "type": "string",