Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4f36121
Remove OpenAI API call from app.py
NirajC-Microsoft Nov 4, 2025
89b7912
resolve pylint issues in app.py
NirajC-Microsoft Nov 4, 2025
f033e81
update test_app.py file for init_openai method
NirajC-Microsoft Nov 4, 2025
6887b78
update app.py to pass test file
NirajC-Microsoft Nov 4, 2025
6189680
Fix for test file
NirajC-Microsoft Nov 5, 2025
c1325e8
disable soft delete
NirajC-Microsoft Nov 5, 2025
20b125b
fetch upload/download data from block storage instead of data lake
NirajC-Microsoft Nov 5, 2025
ea2c82a
remove unnecessary flags
NirajC-Microsoft Nov 5, 2025
d2e4731
Remove OpenAI API call reference from chat_with_data_plugin.py file
NirajC-Microsoft Nov 6, 2025
e1176ce
Remove unuse imports
NirajC-Microsoft Nov 6, 2025
5a71a5f
Update SampleQuestions.md with response time note (#736)
Thanusree-Microsoft Nov 6, 2025
7910fed
remove openai from requirements.txt
NirajC-Microsoft Nov 6, 2025
32d2ce4
updated test file
NirajC-Microsoft Nov 6, 2025
797ea8b
fix: update API version to 2025-04-01 and adjust skuCapacity in main.…
Pavan-Microsoft Nov 7, 2025
52e6cd6
fix: rename deploymentType parameter to gptModelDeploymentType for cl…
Pavan-Microsoft Nov 7, 2025
3cddee5
fix: Re-query data after updating sample data to refresh rows (#739)
UtkarshMishra-Microsoft Nov 7, 2025
e38bdff
fix: clarify skuCapacity comment in main.bicep for WAF deployment
Pavan-Microsoft Nov 7, 2025
f09167f
fix: update skuCapacity configuration for WAF deployment to ensure co…
Pavan-Microsoft Nov 7, 2025
9bd4885
Merge pull request #738 from microsoft/psl-pk-scaleinstance
Prajwal-Microsoft Nov 7, 2025
4e14e12
Infra changes for OpenAI API call replacement
NirajC-Microsoft Nov 11, 2025
185aa7b
refactor: Replace OpenAI API call with Foundry SDK
Avijit-Microsoft Nov 11, 2025
5667d76
revert changes
NirajC-Microsoft Nov 11, 2025
bfe8a21
revert changes - 1
NirajC-Microsoft Nov 11, 2025
fc45156
add logic for both avm and bicep deployment
NirajC-Microsoft Nov 12, 2025
d7d7f6c
Merge pull request #734 from microsoft/psl-bug-25896
Prajwal-Microsoft Nov 12, 2025
63d756d
feat: Enhance Developer Experience Support in Client Advisor (#735)
Kanchan-Microsoft Nov 12, 2025
8c73dac
Add azure-ai-projects and azure-ai-inference to requirement.txt fine …
NirajC-Microsoft Nov 12, 2025
c10f3ba
Add azure-ai-projects and azure-ai-inference to requirement.txt fine …
NirajC-Microsoft Nov 12, 2025
ea5a2e5
fix: Add azure-ai-projects and azure-ai-inference to requirement.txt …
Avijit-Microsoft Nov 12, 2025
5023139
Enable Key Vault while running post deployment script
NirajC-Microsoft Nov 17, 2025
8d4298e
Merge pull request #749 from microsoft/psl-fixpostdeployment-script1
Prajwal-Microsoft Nov 17, 2025
331bd04
fix: display previous meeting dates when asked “Provide details of la…
Rafi-Microsoft Nov 19, 2025
cb66abc
feat: Centralize SQL role assignment in run_create_index_scripts.sh a…
Abdul-Microsoft Nov 19, 2025
eabb739
Removed pre-requisite sqlcmd installation from Deployment Guide
Abdul-Microsoft Nov 19, 2025
059dfa7
Merge pull request #753 from microsoft/psl-fdpobugfix
Prajwal-Microsoft Nov 20, 2025
ff09a28
feat: Add support for developer experience (#762)
Kanchan-Microsoft Nov 25, 2025
040483c
resolved conflicts (#763)
Kanchan-Microsoft Nov 25, 2025
6a0a6bb
Merge branch 'main' into dev
Kanchan-Microsoft Nov 25, 2025
f30300b
Merge branch 'dev' of https://github.com/microsoft/Build-your-own-cop…
Kanchan-Microsoft Nov 25, 2025
b0e4265
regenerated main.json
Kanchan-Microsoft Nov 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 38 additions & 0 deletions azure_custom.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json

name: build-your-own-copilot-solution-accelerator

requiredVersions:
azd: ">= 1.18.0"

metadata:
template: [email protected]
name: [email protected]

# Infrastructure configuration
infra:
path: ./infra
module: main
parameters:
solutionName: bs-azdtest
cosmosLocation: eastus2
baseUrl: 'https://github.com/microsoft/Build-your-own-copilot-Solution-Accelerator'

services:
webapp:
project: ./src/App
language: py
host: appservice
dist: ./dist
hooks:
prepackage:
windows:
shell: pwsh
run: ../../infra/scripts/package_webapp.ps1
interactive: true
continueOnError: false
posix:
shell: sh
run: bash ../../infra/scripts/package_webapp.sh
interactive: true
continueOnError: false
8 changes: 7 additions & 1 deletion docs/DeploymentGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,6 @@ If you're not using one of the above options for opening the project, then you'l
- [Docker Desktop](https://www.docker.com/products/docker-desktop/)
- [Git](https://git-scm.com/downloads)
- [Microsoft ODBC Driver 18 for SQL Server](https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server?view=sql-server-ver16)
- [sqlcmd(ODBC-Windows)](https://learn.microsoft.com/en-us/sql/tools/sqlcmd/sqlcmd-utility?view=sql-server-ver16&tabs=odbc%2Cwindows%2Cwindows-support&pivots=cs1-bash#download-and-install-sqlcmd) / [sqlcmd(Linux/Mac)](https://learn.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver16&tabs=redhat-install)

2. Clone the repository or download the project code via command-line:

Expand Down Expand Up @@ -236,6 +235,13 @@ This will rebuild the source code, package it into a container, and push it to t
### 🛠️ Troubleshooting
If you encounter any issues during the deployment process, please refer [troubleshooting](../docs/TroubleShootingSteps.md) document for detailed steps and solutions
## Deploy Your local changes
To deploy your local changes rename the below files.
1. Rename `azure.yaml` to `azure_custom2.yaml` and `azure_custom.yaml` to `azure.yaml`.
2. Go to `infra` directory
- Rename `main.bicep` to `main_custom2.bicep` and `main_custom.bicep` to `main.bicep`.
Continue with the [deploying steps](#deploying-with-azd).
## Post Deployment Steps
### 1. Import Sample Data
Expand Down
59 changes: 28 additions & 31 deletions infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ param gptModelVersion string = '2024-07-18'
@description('Optional. Version of the GPT model to deploy.')
param embeddingModelVersion string = '2'

@description('Optional. API version for the Azure OpenAI service.')
param azureOpenaiAPIVersion string = '2025-04-01-preview'
@description('Optional. API version for the Azure AI Services.')
param azureAIServicesAPIVersion string = '2025-04-01-preview'

@minValue(10)
@description('Optional. Capacity of the GPT deployment:')
Expand Down Expand Up @@ -494,7 +494,6 @@ module jumpboxVM 'br/public:avm/res/compute/virtual-machine:0.15.0' = if (enable
// ========== Private DNS Zones ========== //
var privateDnsZones = [
'privatelink.cognitiveservices.azure.com'
'privatelink.openai.azure.com'
'privatelink.services.ai.azure.com'
'privatelink.azurewebsites.net'
'privatelink.blob.${environment().suffixes.storage}'
Expand All @@ -509,22 +508,20 @@ var privateDnsZones = [
// DNS Zone Index Constants
var dnsZoneIndex = {
cognitiveServices: 0
openAI: 1
aiServices: 2
appService: 3
storageBlob: 4
storageQueue: 5
storageFile: 6
cosmosDB: 7
keyVault: 8
sqlServer: 9
searchService: 10
aiServices: 1
appService: 2
storageBlob: 3
storageQueue: 4
storageFile: 5
cosmosDB: 6
keyVault: 7
sqlServer: 8
searchService: 9
}

// List of DNS zone indices that correspond to AI-related services.
var aiRelatedDnsZoneIndices = [
dnsZoneIndex.cognitiveServices
dnsZoneIndex.openAI
dnsZoneIndex.aiServices
]

Expand Down Expand Up @@ -553,7 +550,7 @@ module avmPrivateDnsZones 'br/public:avm/res/network/private-dns-zone:0.7.1' = [
]

// ==========Key Vault Module ========== //
var keyVaultName = 'KV-${solutionSuffix}'
var keyVaultName = 'kv-${solutionSuffix}'
module keyvault 'br/public:avm/res/key-vault/vault:0.12.1' = {
name: take('avm.res.key-vault.vault.${keyVaultName}', 64)
params: {
Expand Down Expand Up @@ -613,11 +610,11 @@ module keyvault 'br/public:avm/res/key-vault/vault:0.12.1' = {
}
{
name: 'AZURE-OPENAI-PREVIEW-API-VERSION'
value: azureOpenaiAPIVersion
value: azureAIServicesAPIVersion
}
{
name: 'AZURE-OPENAI-ENDPOINT'
value: aiFoundryAiServices.outputs.endpoints['OpenAI Language Model Instance API']
value: aiFoundryAiServices.outputs.endpoint
}
{
name: 'AZURE-OPENAI-EMBEDDING-MODEL'
Expand All @@ -631,6 +628,10 @@ module keyvault 'br/public:avm/res/key-vault/vault:0.12.1' = {
name: 'AZURE-SEARCH-ENDPOINT'
value: 'https://${aiSearchName}.search.windows.net'
}
{
name: 'AZURE-AI-AGENT-ENDPOINT'
value: aiFoundryAiServices.outputs.aiProjectInfo.apiEndpoint
}
]
enableTelemetry: enableTelemetry
}
Expand Down Expand Up @@ -733,10 +734,6 @@ module aiFoundryAiServices 'modules/ai-services.bicep' = if (aiFoundryAIservices
name: 'ai-services-dns-zone-cognitiveservices'
privateDnsZoneResourceId: avmPrivateDnsZones[dnsZoneIndex.cognitiveServices]!.outputs.resourceId
}
{
name: 'ai-services-dns-zone-openai'
privateDnsZoneResourceId: avmPrivateDnsZones[dnsZoneIndex.openAI]!.outputs.resourceId
}
{
name: 'ai-services-dns-zone-aiservices'
privateDnsZoneResourceId: avmPrivateDnsZones[dnsZoneIndex.aiServices]!.outputs.resourceId
Expand Down Expand Up @@ -891,7 +888,7 @@ module avmStorageAccount 'br/public:avm/res/storage/storage-account:0.20.0' = {
bypass: 'AzureServices'
defaultAction: enablePrivateNetworking ? 'Deny' : 'Allow'
}
allowBlobPublicAccess: enablePrivateNetworking ? true : false
allowBlobPublicAccess: false
publicNetworkAccess: enablePrivateNetworking ? 'Disabled' : 'Enabled'
// Private endpoints for blob and queue
privateEndpoints: enablePrivateNetworking
Expand Down Expand Up @@ -1111,20 +1108,20 @@ module webSite 'modules/web-sites.bicep' = {
AZURE_SEARCH_URL_COLUMN: azureSearchUrlColumn
AZURE_OPENAI_RESOURCE: aiFoundryAiServices.outputs.name
AZURE_OPENAI_MODEL: gptModelName
AZURE_OPENAI_ENDPOINT: aiFoundryAiServices.outputs.endpoints['OpenAI Language Model Instance API']
AZURE_OPENAI_ENDPOINT: aiFoundryAiServices.outputs.endpoint
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_PREVIEW_API_VERSION: azureOpenaiAPIVersion
AZURE_OPENAI_PREVIEW_API_VERSION: azureAIServicesAPIVersion
AZURE_OPENAI_STREAM: azureOpenAIStream
AZURE_SEARCH_QUERY_TYPE: azureSearchQueryType
AZURE_SEARCH_VECTOR_COLUMNS: azureSearchVectorFields
AZURE_SEARCH_PERMITTED_GROUPS_COLUMN: azureSearchPermittedGroupsField
AZURE_SEARCH_STRICTNESS: azureSearchStrictness
AZURE_OPENAI_EMBEDDING_NAME: embeddingModel
AZURE_OPENAI_EMBEDDING_ENDPOINT : aiFoundryAiServices.outputs.endpoints['OpenAI Language Model Instance API']
AZURE_OPENAI_EMBEDDING_ENDPOINT : aiFoundryAiServices.outputs.endpoint
SQLDB_SERVER: sqlServerFqdn
SQLDB_DATABASE: sqlDbName
USE_INTERNAL_STREAM: useInternalStream
Expand All @@ -1140,7 +1137,7 @@ module webSite 'modules/web-sites.bicep' = {
USE_AI_PROJECT_CLIENT: useAIProjectClientFlag
AZURE_AI_AGENT_ENDPOINT: aiFoundryAiServices.outputs.aiProjectInfo.apiEndpoint
AZURE_AI_AGENT_MODEL_DEPLOYMENT_NAME: gptModelName
AZURE_AI_AGENT_API_VERSION: azureOpenaiAPIVersion
AZURE_AI_AGENT_API_VERSION: azureAIServicesAPIVersion
AZURE_SEARCH_CONNECTION_NAME: aiSearchName
AZURE_CLIENT_ID: userAssignedIdentity.outputs.clientId
}
Expand Down Expand Up @@ -1345,8 +1342,8 @@ output APPLICATIONINSIGHTS_CONNECTION_STRING string = enableMonitoring
? applicationInsights!.outputs.connectionString
: ''

@description('The API version used for the Azure AI Agent service.')
output AZURE_AI_AGENT_API_VERSION string = azureOpenaiAPIVersion
@description('The API version used for the Azure AI Agent service.')
output AZURE_AI_AGENT_API_VERSION string = azureAIServicesAPIVersion

@description('The endpoint URL of the Azure AI Agent project.')
output AZURE_AI_AGENT_ENDPOINT string = aiFoundryAiServices.outputs.aiProjectInfo.apiEndpoint
Expand All @@ -1373,13 +1370,13 @@ output AZURE_COSMOSDB_DATABASE string = cosmosDbDatabaseName
output AZURE_COSMOSDB_ENABLE_FEEDBACK string = azureCosmosDbEnableFeedback

@description('The endpoint URL for the Azure OpenAI Embedding model.')
output AZURE_OPENAI_EMBEDDING_ENDPOINT string = aiFoundryAiServices.outputs.endpoints['OpenAI Language Model Instance API']
output AZURE_OPENAI_EMBEDDING_ENDPOINT string = aiFoundryAiServices.outputs.endpoint

@description('The name of the Azure OpenAI Embedding model.')
output AZURE_OPENAI_EMBEDDING_NAME string = embeddingModel

@description('The endpoint URL for the Azure OpenAI service.')
output AZURE_OPENAI_ENDPOINT string = aiFoundryAiServices.outputs.endpoints['OpenAI Language Model Instance API']
output AZURE_OPENAI_ENDPOINT string = aiFoundryAiServices.outputs.endpoint

@description('The maximum number of tokens for Azure OpenAI responses.')
output AZURE_OPENAI_MAX_TOKENS string = azureOpenAIMaxTokens
Expand All @@ -1388,7 +1385,7 @@ output AZURE_OPENAI_MAX_TOKENS string = azureOpenAIMaxTokens
output AZURE_OPENAI_MODEL string = gptModelName

@description('The preview API version for Azure OpenAI.')
output AZURE_OPENAI_PREVIEW_API_VERSION string = azureOpenaiAPIVersion
output AZURE_OPENAI_PREVIEW_API_VERSION string = azureAIServicesAPIVersion

@description('The Azure OpenAI resource name.')
output AZURE_OPENAI_RESOURCE string = aiFoundryAiServices.outputs.name
Expand Down
Loading
Loading