11// Creates Azure dependent resources for Azure AI studio
2+
3+ @minLength (3 )
4+ @maxLength (16 )
5+ @description ('Required. Contains Solution Name' )
26param solutionName string
7+
8+ @description ('Required. Specifies the location for resources.' )
39param solutionLocation string
10+
11+ @description ('Optional. Contains KeyVault Name' )
412param keyVaultName string =''
13+
14+ @description ('Required. Contains CU Location' )
515param cuLocation string
16+
17+ @description ('Required. Contains type of Deployment' )
618param deploymentType string
19+
20+ @description ('Required. Contains GPT mode Name' )
721param gptModelName string
22+
23+ @description ('Required. Contains GPT Model Version' )
824param gptModelVersion string
25+
26+ @description ('Required. Contains Open AI API version' )
927param azureOpenAIApiVersion string
28+
29+ @description ('Required. Contains GPT Deployment Capacity' )
1030param gptDeploymentCapacity int
31+
32+ @description ('Required. Contains Embedding Model' )
1133param embeddingModel string
34+
35+ @description ('Required. Contains Embedding Deployment Capacity' )
1236param embeddingDeploymentCapacity int
37+
38+ @description ('Optional. Contains Managed Identity ObjectID' )
1339param managedIdentityObjectId string =''
40+
41+ @description ('Optional. Contains existing Log Analytics Workspace ID' )
1442param existingLogAnalyticsWorkspaceId string = ''
43+
44+ @description ('Optional. Contains existing AI Project Resource ID' )
1545param azureExistingAIProjectResourceId string = ''
1646
17- var abbrs = loadJsonContent ('./abbreviations.json' )
18- var aiServicesName = '${abbrs .ai .aiServices }${solutionName }'
19- var aiServicesName_cu = '${abbrs .ai .aiServices }${solutionName }-cu'
47+ @description ('Optional. Tags to be applied to the resources.' )
48+ param tags object = {}
49+
50+ //var abbrs = loadJsonContent('./abbreviations.json')
51+ var aiServicesName = 'aisa-${solutionName }'
52+ var aiServicesName_cu = 'aisa-${solutionName }-cu'
2053var location_cu = cuLocation
21- var workspaceName = '${ abbrs . managementGovernance . logAnalyticsWorkspace } ${solutionName }'
22- var applicationInsightsName = '${ abbrs . managementGovernance . applicationInsights } ${solutionName }'
23- var keyvaultName = '${ abbrs . security . keyVault } ${solutionName }'
54+ var workspaceName = 'log- ${solutionName }'
55+ var applicationInsightsName = 'appi- ${solutionName }'
56+ var keyvaultName = 'kv- ${solutionName }'
2457var location = solutionLocation //'eastus2'
25- var aiProjectName = '${ abbrs . ai . aiFoundryProject } ${solutionName }'
26- var aiSearchName = '${ abbrs . ai . aiSearch } ${solutionName }'
27- var aiSearchConnectionName = 'myVectorStoreProjectConnectionName -${solutionName }'
58+ var aiProjectName = 'proj- ${solutionName }'
59+ var aiSearchName = 'srch- ${solutionName }'
60+ var aiSearchConnectionName = 'myCon -${solutionName }'
2861
2962var aiModelDeployments = [
3063 {
@@ -72,7 +105,7 @@ resource existingLogAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces
72105resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2023-09-01' = if (!useExisting ){
73106 name : workspaceName
74107 location : location
75- tags : {}
108+ tags : tags
76109 properties : {
77110 retentionInDays : 30
78111 sku : {
@@ -91,6 +124,7 @@ resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
91124 publicNetworkAccessForQuery : 'Disabled'
92125 WorkspaceResourceId : useExisting ? existingLogAnalyticsWorkspace .id : logAnalytics .id
93126 }
127+ tags : tags
94128}
95129
96130resource aiServices 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' = if (empty (azureExistingAIProjectResourceId )) {
@@ -114,6 +148,7 @@ resource aiServices 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' =
114148 publicNetworkAccess : 'Enabled'
115149 disableLocalAuth : false //needs to be false to access keys
116150 }
151+ tags : tags
117152}
118153
119154module existing_aiServicesModule 'existing_foundry_project.bicep' = if (!empty (azureExistingAIProjectResourceId )) {
@@ -146,6 +181,7 @@ resource aiServices_CU 'Microsoft.CognitiveServices/accounts@2025-04-01-preview'
146181 publicNetworkAccess : 'Enabled'
147182 disableLocalAuth : false //needs to be false to access keys
148183 }
184+ tags : tags
149185}
150186
151187@batchSize (1 )
@@ -163,6 +199,7 @@ resource aiServicesDeployments 'Microsoft.CognitiveServices/accounts/deployments
163199 name : aiModeldeployment .sku .name
164200 capacity : aiModeldeployment .sku .capacity
165201 }
202+ tags : tags
166203}]
167204
168205resource aiSearch 'Microsoft.Search/searchServices@2024-06-01-preview' = {
@@ -188,6 +225,7 @@ resource aiSearch 'Microsoft.Search/searchServices@2024-06-01-preview' = {
188225 disableLocalAuth : true
189226 semanticSearch : 'free'
190227 }
228+ tags : tags
191229}
192230
193231resource aiProject 'Microsoft.CognitiveServices/accounts/projects@2025-04-01-preview' = if (empty (azureExistingAIProjectResourceId )) {
@@ -199,6 +237,7 @@ resource aiProject 'Microsoft.CognitiveServices/accounts/projects@2025-04-01-pre
199237 type : 'SystemAssigned'
200238 }
201239 properties : {}
240+ tags : tags
202241}
203242
204243resource aiproject_aisearch_connection_new 'Microsoft.CognitiveServices/accounts/projects/connections@2025-04-01-preview' = if (empty (azureExistingAIProjectResourceId )) {
@@ -371,6 +410,7 @@ resource tenantIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' =
371410 properties : {
372411 value : subscription ().tenantId
373412 }
413+ tags : tags
374414}
375415
376416resource azureOpenAIInferenceEndpoint 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -379,6 +419,7 @@ resource azureOpenAIInferenceEndpoint 'Microsoft.KeyVault/vaults/secrets@2021-11
379419 properties : {
380420 value :''
381421 }
422+ tags : tags
382423}
383424
384425resource azureOpenAIInferenceKey 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -387,6 +428,7 @@ resource azureOpenAIInferenceKey 'Microsoft.KeyVault/vaults/secrets@2021-11-01-p
387428 properties : {
388429 value :''
389430 }
431+ tags : tags
390432}
391433
392434resource azureOpenAIDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -395,6 +437,7 @@ resource azureOpenAIDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-0
395437 properties : {
396438 value : gptModelName
397439 }
440+ tags : tags
398441}
399442
400443resource azureOpenAIApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -403,6 +446,7 @@ resource azureOpenAIApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-0
403446 properties : {
404447 value : azureOpenAIApiVersion //'2024-02-15-preview'
405448 }
449+ tags : tags
406450}
407451
408452resource azureOpenAIEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -411,6 +455,7 @@ resource azureOpenAIEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-
411455 properties : {
412456 value : !empty (existingOpenAIEndpoint ) ? existingOpenAIEndpoint : aiServices .properties .endpoints ['OpenAI Language Model Instance API' ] //aiServices_m.properties.endpoint
413457 }
458+ tags : tags
414459}
415460
416461resource azureOpenAIEmbeddingDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -419,6 +464,7 @@ resource azureOpenAIEmbeddingDeploymentModel 'Microsoft.KeyVault/vaults/secrets@
419464 properties : {
420465 value : embeddingModel
421466 }
467+ tags : tags
422468}
423469
424470resource azureOpenAICUEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -427,6 +473,7 @@ resource azureOpenAICUEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-0
427473 properties : {
428474 value : aiServices_CU .properties .endpoints ['OpenAI Language Model Instance API' ]
429475 }
476+ tags : tags
430477}
431478
432479resource azureOpenAICUApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -435,6 +482,7 @@ resource azureOpenAICUApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11
435482 properties : {
436483 value : '?api-version=2024-12-01-preview'
437484 }
485+ tags : tags
438486}
439487
440488resource azureSearchServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -443,6 +491,7 @@ resource azureSearchServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021
443491 properties : {
444492 value : 'https://${aiSearch .name }.search.windows.net'
445493 }
494+ tags : tags
446495}
447496
448497resource azureSearchServiceEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -451,6 +500,7 @@ resource azureSearchServiceEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-p
451500 properties : {
452501 value : aiSearch .name
453502 }
503+ tags : tags
454504}
455505
456506resource azureSearchIndexEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -459,6 +509,7 @@ resource azureSearchIndexEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-pre
459509 properties : {
460510 value : 'transcripts_index'
461511 }
512+ tags : tags
462513}
463514
464515resource cogServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -467,6 +518,7 @@ resource cogServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-p
467518 properties : {
468519 value : !empty (existingOpenAIEndpoint ) ? existingOpenAIEndpoint : aiServices .properties .endpoints ['OpenAI Language Model Instance API' ]
469520 }
521+ tags : tags
470522}
471523
472524resource cogServiceNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -475,6 +527,7 @@ resource cogServiceNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-previ
475527 properties : {
476528 value : aiServicesName
477529 }
530+ tags : tags
478531}
479532
480533resource azureSubscriptionIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -483,6 +536,7 @@ resource azureSubscriptionIdEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-
483536 properties : {
484537 value : subscription ().subscriptionId
485538 }
539+ tags : tags
486540}
487541
488542resource resourceGroupNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -491,6 +545,7 @@ resource resourceGroupNameEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-pr
491545 properties : {
492546 value : resourceGroup ().name
493547 }
548+ tags : tags
494549}
495550
496551resource azureLocatioEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
@@ -499,23 +554,53 @@ resource azureLocatioEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview
499554 properties : {
500555 value : solutionLocation
501556 }
557+ tags : tags
502558}
559+
560+ @description ('Contains KeyVault Name' )
503561output keyvaultName string = keyvaultName
562+
563+ @description ('Contains KeyVault ID' )
504564output keyvaultId string = keyVault .id
565+
566+ @description ('Contains AI Services Target' )
505567output aiServicesTarget string = !empty (existingOpenAIEndpoint ) ? existingOpenAIEndpoint : aiServices .properties .endpoints ['OpenAI Language Model Instance API' ] //aiServices_m.properties.endpoint
568+
569+ @description ('Contains AI Services Name' )
506570output aiServicesName string = !empty (existingAIServicesName ) ? existingAIServicesName : aiServicesName
507571
572+ @description ('Contains Search Name' )
508573output aiSearchName string = aiSearchName
574+
575+ @description ('Contains Search ID' )
509576output aiSearchId string = aiSearch .id
577+
578+ @description ('Contains AI Search Target' )
510579output aiSearchTarget string = 'https://${aiSearch .name }.search.windows.net'
580+
581+ @description ('Contains AI Search Service Name' )
511582output aiSearchService string = aiSearch .name
583+
584+ @description ('Contains AI Project Name' )
512585output aiProjectName string = !empty (existingAIProjectName ) ? existingAIProjectName : aiProject .name
586+
587+ @description ('Contains AI Search Connection Name' )
513588output aiSearchConnectionName string = aiSearchConnectionName
514589
590+ @description ('Contains Application Insights ID' )
515591output applicationInsightsId string = applicationInsights .id
592+
593+ @description ('Contains LogAnalytics Workspace Resource Name' )
516594output logAnalyticsWorkspaceResourceName string = useExisting ? existingLogAnalyticsWorkspace .name : logAnalytics .name
595+
596+ @description ('Contains LogAnalytics Workspace Resource Group' )
517597output logAnalyticsWorkspaceResourceGroup string = useExisting ? existingLawResourceGroup : resourceGroup ().name
598+
599+ @description ('Contains LogAnalytics Workspace Subscription' )
518600output logAnalyticsWorkspaceSubscription string = useExisting ? existingLawSubscription : subscription ().subscriptionId
519601
602+ @description ('Contains Project Endpoint' )
520603output projectEndpoint string = !empty (existingProjEndpoint ) ? existingProjEndpoint : aiProject .properties .endpoints ['AI Foundry API' ]
604+
605+ @description ('Contains Application Insights Connection String' )
521606output applicationInsightsConnectionString string = applicationInsights .properties .ConnectionString
0 commit comments