Skip to content

Commit e61a550

Browse files
Revert "feat: Use agent operations with the Azure AI Search tool for ChatWithCallTranscripts"
1 parent b17047d commit e61a550

27 files changed

+1578
-1650
lines changed

.github/workflows/deploy-KMGeneric.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ jobs:
112112
echo "Generated SOLUTION_PREFIX: ${UNIQUE_SOLUTION_PREFIX}"
113113
- name: Determine Tag Name Based on Branch
114114
id: determine_tag
115-
run: echo "tagname=${{ github.ref_name == 'main' && 'latest_fdp' || github.ref_name == 'dev' && 'dev' || github.ref_name == 'demo' && 'demo' || github.ref_name == 'dependabotchanges' && 'dependabotchanges' || github.head_ref || 'default' }}" >> $GITHUB_OUTPUT
115+
run: echo "tagname=${{ github.ref_name == 'main' && 'latest' || github.ref_name == 'dev' && 'dev' || github.ref_name == 'demo' && 'demo' || github.ref_name == 'dependabotchanges' && 'dependabotchanges' || github.head_ref || 'default' }}" >> $GITHUB_OUTPUT
116116
- name: Deploy Bicep Template
117117
id: deploy
118118
run: |

infra/deploy_ai_foundry.bicep

Lines changed: 23 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ var keyvaultName = '${abbrs.security.keyVault}${solutionName}'
2424
var location = solutionLocation //'eastus2'
2525
var aiProjectName = '${abbrs.ai.aiFoundryProject}${solutionName}'
2626
var aiSearchName = '${abbrs.ai.aiSearch}${solutionName}'
27-
var aiSearchConnectionName = 'myVectorStoreProjectConnectionName-${solutionName}'
2827

2928
var aiModelDeployments = [
3029
{
@@ -57,8 +56,8 @@ var existingOpenAIEndpoint = !empty(azureExistingAIProjectResourceId) ? format('
5756
var existingProjEndpoint = !empty(azureExistingAIProjectResourceId) ? format('https://{0}.services.ai.azure.com/api/projects/{1}', split(azureExistingAIProjectResourceId, '/')[8], split(azureExistingAIProjectResourceId, '/')[10]) : ''
5857
var existingAIServicesName = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[8] : ''
5958
var existingAIProjectName = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[10] : ''
60-
var existingAIServiceSubscription = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[2] : subscription().subscriptionId
61-
var existingAIServiceResourceGroup = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[4] : resourceGroup().name
59+
var existingAIServiceSubscription = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[2] : ''
60+
var existingAIServiceResourceGroup = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[4] : ''
6261

6362
resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = {
6463
name: keyVaultName
@@ -162,9 +161,6 @@ resource aiSearch 'Microsoft.Search/searchServices@2024-06-01-preview' = {
162161
sku: {
163162
name: 'basic'
164163
}
165-
identity: {
166-
type: 'SystemAssigned'
167-
}
168164
properties: {
169165
replicaCount: 1
170166
partitionCount: 1
@@ -176,7 +172,10 @@ resource aiSearch 'Microsoft.Search/searchServices@2024-06-01-preview' = {
176172
encryptionWithCmk: {
177173
enforcement: 'Unspecified'
178174
}
179-
disableLocalAuth: true
175+
disableLocalAuth: false
176+
authOptions: {
177+
apiKeyOnly: {}
178+
}
180179
semanticSearch: 'free'
181180
}
182181
}
@@ -193,7 +192,7 @@ resource aiProject 'Microsoft.CognitiveServices/accounts/projects@2025-04-01-pre
193192
}
194193

195194
resource aiproject_aisearch_connection_new 'Microsoft.CognitiveServices/accounts/projects/connections@2025-04-01-preview' = if (empty(azureExistingAIProjectResourceId)) {
196-
name: aiSearchConnectionName
195+
name: 'myVectorStoreProjectConnectionName-${solutionName}'
197196
parent: aiProject
198197
properties: {
199198
category: 'CognitiveSearch'
@@ -217,121 +216,31 @@ module existing_AIProject_SearchConnectionModule 'deploy_aifp_aisearch_connectio
217216
aiSearchName: aiSearchName
218217
aiSearchResourceId: aiSearch.id
219218
aiSearchLocation: aiSearch.location
220-
aiSearchConnectionName: aiSearchConnectionName
219+
solutionName: solutionName
221220
}
222221
}
223222

224223
resource aiUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
225224
name: '53ca6127-db72-4b80-b1b0-d745d6d5456d'
226225
}
227226

228-
resource assignFoundryRoleToMI 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty(azureExistingAIProjectResourceId)) {
229-
name: guid(resourceGroup().id, aiServices.id, aiUser.id)
230-
scope: aiServices
227+
resource aiUserAccessFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
228+
name: guid(resourceGroup().id, managedIdentityObjectId, aiUser.id)
231229
properties: {
232230
principalId: managedIdentityObjectId
233231
roleDefinitionId: aiUser.id
234-
principalType: 'ServicePrincipal'
232+
principalType: 'ServicePrincipal'
235233
}
236234
}
237235

238-
module assignFoundryRoleToMIExisting 'deploy_foundry_role_assignment.bicep' = if (!empty(azureExistingAIProjectResourceId)) {
239-
name: 'assignFoundryRoleToMI'
236+
module assignAiUserRoleToManagedIdentity 'deploy_foundry_role_assignment.bicep' = if(!empty(azureExistingAIProjectResourceId)) {
237+
name: 'assignAiUserRoleToManagedIdentity'
240238
scope: resourceGroup(existingAIServiceSubscription, existingAIServiceResourceGroup)
241239
params: {
242240
roleDefinitionId: aiUser.id
243-
roleAssignmentName: guid(resourceGroup().id, managedIdentityObjectId, aiUser.id, 'foundry')
244-
aiServicesName: !empty(azureExistingAIProjectResourceId) ? existingAIServicesName : aiServicesName
245-
aiProjectName: !empty(azureExistingAIProjectResourceId) ? existingAIProjectName : aiProjectName
246-
principalId: managedIdentityObjectId
247-
}
248-
}
249-
250-
resource assignAiUserToAiFoundryCU 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
251-
name: guid(resourceGroup().id, aiServices_CU.id, aiUser.id)
252-
scope: aiServices_CU
253-
properties: {
254-
principalId: managedIdentityObjectId
255-
roleDefinitionId: aiUser.id
256-
principalType: 'ServicePrincipal'
257-
}
258-
}
259-
260-
resource cognitiveServicesOpenAIUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
261-
name: '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'
262-
}
263-
264-
module assignOpenAIRoleToAISearch 'deploy_foundry_role_assignment.bicep' = {
265-
name: 'assignOpenAIRoleToAISearch'
266-
scope: resourceGroup(existingAIServiceSubscription, existingAIServiceResourceGroup)
267-
params: {
268-
roleDefinitionId: cognitiveServicesOpenAIUser.id
269-
roleAssignmentName: guid(resourceGroup().id, aiSearch.id, cognitiveServicesOpenAIUser.id, 'openai-foundry')
241+
roleAssignmentName: guid(managedIdentityObjectId, aiServices.id, aiUser.id)
270242
aiServicesName: !empty(azureExistingAIProjectResourceId) ? existingAIServicesName : aiServicesName
271-
aiProjectName: !empty(azureExistingAIProjectResourceId) ? existingAIProjectName : aiProjectName
272-
principalId: aiSearch.identity.principalId
273-
}
274-
}
275-
276-
resource searchIndexDataReader 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
277-
name: '1407120a-92aa-4202-b7e9-c0e197c71c8f'
278-
}
279-
280-
resource assignSearchIndexDataReaderToAiProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty(azureExistingAIProjectResourceId)) {
281-
name: guid(resourceGroup().id, aiProject.id, searchIndexDataReader.id)
282-
scope: aiSearch
283-
properties: {
284-
principalId: aiProject.identity.principalId
285-
roleDefinitionId: searchIndexDataReader.id
286-
principalType: 'ServicePrincipal'
287-
}
288-
}
289-
290-
resource assignSearchIndexDataReaderToExistingAiProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty(azureExistingAIProjectResourceId)) {
291-
name: guid(resourceGroup().id, existingAIProjectName, searchIndexDataReader.id, 'Existing')
292-
scope: aiSearch
293-
properties: {
294-
principalId: assignOpenAIRoleToAISearch.outputs.aiProjectPrincipalId
295-
roleDefinitionId: searchIndexDataReader.id
296-
principalType: 'ServicePrincipal'
297-
}
298-
}
299-
300-
resource searchServiceContributor 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
301-
name: '7ca78c08-252a-4471-8644-bb5ff32d4ba0'
302-
}
303-
304-
resource assignSearchServiceContributorToAiProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (empty(azureExistingAIProjectResourceId)) {
305-
name: guid(resourceGroup().id, aiProject.id, searchServiceContributor.id)
306-
scope: aiSearch
307-
properties: {
308-
principalId: aiProject.identity.principalId
309-
roleDefinitionId: searchServiceContributor.id
310-
principalType: 'ServicePrincipal'
311-
}
312-
}
313-
314-
resource assignSearchServiceContributorToExistingAiProject 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty(azureExistingAIProjectResourceId)) {
315-
name: guid(resourceGroup().id, existingAIProjectName, searchServiceContributor.id, 'Existing')
316-
scope: aiSearch
317-
properties: {
318-
principalId: assignOpenAIRoleToAISearch.outputs.aiProjectPrincipalId
319-
roleDefinitionId: searchServiceContributor.id
320-
principalType: 'ServicePrincipal'
321-
}
322-
}
323-
324-
resource searchIndexDataContributor 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
325-
name: '8ebe5a00-799e-43f5-93ac-243d3dce84a7'
326-
}
327-
328-
resource assignSearchIndexDataContributorToMI 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
329-
name: guid(resourceGroup().id, aiProject.id, searchIndexDataContributor.id)
330-
scope: aiSearch
331-
properties: {
332-
principalId: managedIdentityObjectId
333-
roleDefinitionId: searchIndexDataContributor.id
334-
principalType: 'ServicePrincipal'
243+
userassignedIdentityId: managedIdentityObjectId
335244
}
336245
}
337246

@@ -383,14 +292,6 @@ resource azureOpenAIEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-
383292
}
384293
}
385294

386-
resource azureOpenAIEmbeddingDeploymentModel 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
387-
parent: keyVault
388-
name: 'AZURE-OPENAI-EMBEDDING-MODEL'
389-
properties: {
390-
value: embeddingModel
391-
}
392-
}
393-
394295
resource azureOpenAICUEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
395296
parent: keyVault
396297
name: 'AZURE-OPENAI-CU-ENDPOINT'
@@ -407,6 +308,14 @@ resource azureOpenAICUApiVersionEntry 'Microsoft.KeyVault/vaults/secrets@2021-11
407308
}
408309
}
409310

311+
resource azureSearchAdminKeyEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
312+
parent: keyVault
313+
name: 'AZURE-SEARCH-KEY'
314+
properties: {
315+
value: aiSearch.listAdminKeys().primaryKey
316+
}
317+
}
318+
410319
resource azureSearchServiceEndpointEntry 'Microsoft.KeyVault/vaults/secrets@2021-11-01-preview' = {
411320
parent: keyVault
412321
name: 'AZURE-SEARCH-ENDPOINT'
@@ -481,7 +390,6 @@ output aiSearchId string = aiSearch.id
481390
output aiSearchTarget string = 'https://${aiSearch.name}.search.windows.net'
482391
output aiSearchService string = aiSearch.name
483392
output aiProjectName string = !empty(existingAIProjectName) ? existingAIProjectName : aiProject.name
484-
output aiSearchConnectionName string = aiSearchConnectionName
485393

486394
output applicationInsightsId string = applicationInsights.id
487395
output logAnalyticsWorkspaceResourceName string = useExisting ? existingLogAnalyticsWorkspace.name : logAnalytics.name

infra/deploy_aifp_aisearch_connection.bicep

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ param existingAIServicesName string
33
param aiSearchName string
44
param aiSearchResourceId string
55
param aiSearchLocation string
6-
param aiSearchConnectionName string
6+
param solutionName string
77

88
resource projectAISearchConnection 'Microsoft.CognitiveServices/accounts/projects/connections@2025-04-01-preview' = {
9-
name: '${existingAIServicesName}/${existingAIProjectName}/${aiSearchConnectionName}'
9+
name: '${existingAIServicesName}/${existingAIProjectName}/myVectorStoreProjectConnectionName-${solutionName}'
1010
properties: {
1111
category: 'CognitiveSearch'
1212
target: 'https://${aiSearchName}.search.windows.net'

infra/deploy_backend_docker.bicep

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ param keyVaultName string
1313
param aiServicesName string
1414
param useLocalBuild string
1515
param azureExistingAIProjectResourceId string = ''
16-
param aiSearchName string
1716
var existingAIServiceSubscription = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[2] : subscription().subscriptionId
1817
var existingAIServiceResourceGroup = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[4] : resourceGroup().name
1918
var existingAIServicesName = !empty(azureExistingAIProjectResourceId) ? split(azureExistingAIProjectResourceId, '/')[8] : ''
@@ -144,23 +143,6 @@ resource keyVaultSecretsUserAssignment 'Microsoft.Authorization/roleAssignments@
144143
}
145144
}
146145

147-
resource aiSearch 'Microsoft.Search/searchServices@2024-06-01-preview' existing = {
148-
name: aiSearchName
149-
}
150-
151-
resource searchIndexDataReader 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
152-
name: '1407120a-92aa-4202-b7e9-c0e197c71c8f'
153-
}
154-
155-
resource searchIndexDataReaderAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
156-
name: guid(appService.name, aiSearch.name, searchIndexDataReader.id)
157-
scope: aiSearch
158-
properties: {
159-
roleDefinitionId: searchIndexDataReader.id
160-
principalId: appService.outputs.identityPrincipalId
161-
}
162-
}
163-
164146
resource aiUser 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
165147
name: '53ca6127-db72-4b80-b1b0-d745d6d5456d'
166148
}

infra/deploy_foundry_role_assignment.bicep

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,13 @@ param principalId string = ''
22
param roleDefinitionId string
33
param roleAssignmentName string = ''
44
param aiServicesName string
5-
param aiProjectName string = ''
5+
param userassignedIdentityId string = ''
66

77
resource aiServices 'Microsoft.CognitiveServices/accounts@2025-04-01-preview' existing = {
88
name: aiServicesName
99
}
1010

11-
resource aiProject 'Microsoft.CognitiveServices/accounts/projects@2025-04-01-preview' existing = if (!empty(aiProjectName)) {
12-
name: aiProjectName
13-
parent: aiServices
14-
}
15-
16-
resource roleAssignmentToFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
11+
resource roleAssignmentToFoundry 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty(aiServicesName) && !empty(principalId)) {
1712
name: roleAssignmentName
1813
scope: aiServices
1914
properties: {
@@ -22,5 +17,12 @@ resource roleAssignmentToFoundry 'Microsoft.Authorization/roleAssignments@2022-0
2217
}
2318
}
2419

25-
output aiServicesPrincipalId string = aiServices.identity.principalId
26-
output aiProjectPrincipalId string = !empty(aiProjectName) ? aiProject.identity.principalId : ''
20+
resource roleAssignmentToManagedIdentity 'Microsoft.Authorization/roleAssignments@2022-04-01' = if (!empty(userassignedIdentityId)) {
21+
name: roleAssignmentName
22+
scope: aiServices
23+
properties: {
24+
roleDefinitionId: roleDefinitionId
25+
principalId: userassignedIdentityId
26+
principalType: 'ServicePrincipal'
27+
}
28+
}

infra/main.bicep

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ param embeddingModel string = 'text-embedding-ada-002'
6060
@description('Capacity of the Embedding Model deployment')
6161
param embeddingDeploymentCapacity int = 80
6262

63-
param imageTag string = 'latest_fdp'
63+
param imageTag string = 'latest'
6464

6565
param AZURE_LOCATION string=''
6666
var solutionLocation = empty(AZURE_LOCATION) ? resourceGroup().location : AZURE_LOCATION
@@ -226,8 +226,7 @@ module backend_docker 'deploy_backend_docker.bicep' = {
226226
keyVaultName: kvault.outputs.keyvaultName
227227
aiServicesName: aifoundry.outputs.aiServicesName
228228
useLocalBuild: useLocalBuildLower
229-
azureExistingAIProjectResourceId: azureExistingAIProjectResourceId
230-
aiSearchName: aifoundry.outputs.aiSearchName
229+
azureExistingAIProjectResourceId: azureExistingAIProjectResourceId
231230
appSettings: {
232231
AZURE_OPENAI_DEPLOYMENT_MODEL: gptModelName
233232
AZURE_OPENAI_ENDPOINT: aifoundry.outputs.aiServicesTarget
@@ -246,9 +245,9 @@ module backend_docker 'deploy_backend_docker.bicep' = {
246245
SQLDB_USER_MID: managedIdentityModule.outputs.managedIdentityBackendAppOutput.clientId
247246

248247
AZURE_AI_SEARCH_ENDPOINT: aifoundry.outputs.aiSearchTarget
248+
AZURE_AI_SEARCH_API_KEY: '@Microsoft.KeyVault(SecretUri=${kvault.outputs.keyvaultUri}secrets/AZURE-SEARCH-KEY/)'
249249
AZURE_AI_SEARCH_INDEX: 'call_transcripts_index'
250-
AZURE_AI_SEARCH_CONNECTION_NAME: aifoundry.outputs.aiSearchConnectionName
251-
USE_AI_PROJECT_CLIENT: 'True'
250+
USE_AI_PROJECT_CLIENT: 'False'
252251
DISPLAY_CHART_DEFAULT: 'False'
253252
APPLICATIONINSIGHTS_CONNECTION_STRING: aifoundry.outputs.applicationInsightsConnectionString
254253
DUMMY_TEST: 'True'
@@ -286,7 +285,6 @@ output AZURE_AI_PROJECT_NAME string = aifoundry.outputs.aiProjectName
286285
output AZURE_AI_SEARCH_API_KEY string = ''
287286
output AZURE_AI_SEARCH_ENDPOINT string = aifoundry.outputs.aiSearchTarget
288287
output AZURE_AI_SEARCH_INDEX string = 'call_transcripts_index'
289-
output AZURE_AI_SEARCH_CONNECTION_NAME string = aifoundry.outputs.aiSearchConnectionName
290288
output AZURE_COSMOSDB_ACCOUNT string = cosmosDBModule.outputs.cosmosAccountName
291289
output AZURE_COSMOSDB_CONVERSATIONS_CONTAINER string = 'conversations'
292290
output AZURE_COSMOSDB_DATABASE string = 'db_conversation_history'

0 commit comments

Comments
 (0)