Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
1e155a1
chore: update CODEOWNERS handles
Rafi-Mohammad-69 Jun 29, 2026
4265284
chore: update CODEOWNERS handles
Avijit-Microsoft Jun 30, 2026
4ec711f
updated the models and configs
Dhruvkumar1-Microsoft Jul 1, 2026
f1b191e
updated model to gpt5.4 models
Dhruvkumar1-Microsoft Jul 1, 2026
cb64ca9
fix: remove sensitive cookie data from sample user configuration
Ayaz-Microsoft Jul 2, 2026
f581a71
Merge pull request #1083 from microsoft/macae-ayaz
Roopan-Microsoft Jul 2, 2026
9fd3e4d
Updated team config with isdefault and logic to display teams is updated
Roopan-Microsoft Jul 3, 2026
440824b
Merge remote-tracking branch 'origin/main' into psl-mainChanges
Roopan-Microsoft Jul 3, 2026
21fc8d1
update deployment guide and azure.yaml
Ayaz-Microsoft Jul 3, 2026
56c0411
fix test cases
Ayaz-Microsoft Jul 3, 2026
663f350
updated model name related docs and var
Ayaz-Microsoft Jul 6, 2026
4541d7d
updated var names according to gpt model
Ayaz-Microsoft Jul 6, 2026
584bcbc
update environment variable names for GPT models in workflows and scr…
Ayaz-Microsoft Jul 6, 2026
212f7c5
add instructions for uploading team configurations and indexing sampl…
Ayaz-Microsoft Jul 6, 2026
01bc725
- Removed reasoning model parameters and related logic from Bicep and…
Ayaz-Microsoft Jul 7, 2026
1ab8138
remove unused instances list from TestDatabaseFactoryGetDatabase
Ayaz-Microsoft Jul 7, 2026
91e3317
update minimum required capacities for GPT models in checkquota.sh; r…
Ayaz-Microsoft Jul 7, 2026
452419c
Merge pull request #1082 from microsoft/psl-mainChanges
Avijit-Microsoft Jul 7, 2026
f323d53
Update Owners ID for Vinay and Prajwal
NirajC3-Microsoft Jul 16, 2026
a115644
Update Owners ID for Vinay and Prajwal 2
NirajC3-Microsoft Jul 16, 2026
abd2781
Merge pull request #1093 from chaudhariniraj/main
Roopan-Microsoft Jul 16, 2026
2584721
Merge branch 'main' of https://github.com/microsoft/Multi-Agent-Custo…
Ayaz-Microsoft Jul 17, 2026
50edcc1
feat: enhance WebSocket handling with streaming chunk coalescing and …
Ayaz-Microsoft Jul 17, 2026
8b0da35
updated the branch
Dhruvkumar-Microsoft Jul 17, 2026
0ac4907
Merge pull request #1104 from Dhruvkumar-Microsoft/conflicts-resolve
Roopan-Microsoft Jul 19, 2026
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
2 changes: 1 addition & 1 deletion azure.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -91,4 +91,4 @@ hooks:
printf " ${Blue}https://%s${NC}\n\n" "$webSiteDefaultHostname"

shell: sh
interactive: true
interactive: true
1 change: 1 addition & 0 deletions content_packs/content_gen/agent_teams/content_gen.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4-mini",
"is_default": true,
"agents": [
{
"input_key": "CG_triage_agent",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4-mini",
"is_default": true,
"description": "A multi-agent compliance review team that summarizes NDAs, identifies risks, checks compliance, and recommends improvements using advanced legal reasoning and retrieval-augmented analysis.",
"logo": "",
"plan": "",
Expand Down
1 change: 1 addition & 0 deletions content_packs/hr_onboarding/agent_teams/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4",
"is_default": true,
"agents": [
{
"input_key": "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4-mini",
"is_default": true,
"agents": [
{
"input_key": "",
Expand Down
1 change: 1 addition & 0 deletions content_packs/retail_customer/agent_teams/retail.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4-mini",
"is_default": true,
"agents": [
{
"input_key": "",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"created": "",
"created_by": "",
"deployment_name": "gpt-5.4-mini",
"is_default": true,
"description": "A specialized multi-agent team that analyzes RFP and contract documents to summarize content, identify potential risks, check compliance gaps, and provide action plans for contract improvement.",
"logo": "",
"plan": "",
Expand Down
2 changes: 1 addition & 1 deletion docs/AzureGPTQuotaSettings.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
3. **Go to** the `Management Center` from the bottom-left navigation menu.
4. Select `Quota`
- Click on the `GlobalStandard` dropdown.
- Select the required **GPT model** (`GPT-5.4`)
- Select the required **GPT model** (`gpt-5.4` / `gpt-5.4-mini`)
- Choose the **region** where the deployment is hosted.
5. Request More Quota or delete any unused model deployments as needed.
15 changes: 11 additions & 4 deletions docs/DeploymentGuide.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,10 @@ Ensure you have access to an [Azure subscription](https://azure.microsoft.com/fr
📖 **Follow:** [Quota Check Instructions](./quota_check.md) to ensure sufficient capacity.

**Default Quota Configuration:**
- **GPT-5.4-mini:** 100k tokens
- **GPT-5.4:** 150k tokens
- **gpt-5.4 (150k tokens)** — backs the larger GPT model deployment (alias `gpt-5.4`).
- **gpt-5.4-mini (100k tokens)** — backs the smaller GPT model deployment (alias `gpt-5.4-mini`), also used for reasoning workloads.

> **Note:** The underlying models are `gpt-5.4` (2026-03-05 series) and `gpt-5.4-mini` (2026-03-17 series). Both are reasoning-capable GPT-5.4 GA models.

> **Note:** When you run `azd up`, the deployment will automatically show you regions with available quota, so this pre-check is optional but helpful for planning purposes. You can customize these settings later in [Step 3.3: Advanced Configuration](#33-advanced-configuration-optional).

Expand Down Expand Up @@ -323,7 +325,8 @@ azd up

**Expected Duration:** 9-10 minutes for default configuration

- **Upon successful completion**, you will see a success message indicating that all resources have been deployed, along with the application URL and next steps for building and pushing the application container images and uploading team configurations and sample data.

- **Upon successful completion**, you will see a success message indicating that all resources have been deployed, along with the application URL. The next steps are to build and push the backend, frontend, and mcp_server container images to ACR, point the container app and web app at them, and upload the team configurations and sample data.

![Deployment Success message](./images/Deployment_success_message.png)

Expand Down Expand Up @@ -391,6 +394,10 @@ The images are **built remotely in ACR** using `az acr build`, so no local Docke

![Usecase selection](./images/Usecase_selection.png)

### 5.3 Access the Application

Once both scripts complete, access your deployed frontend application at the URL printed by the `postdeploy` hook (`https://<webSiteDefaultHostname>`), or retrieve it from the Azure Portal as described in [Step 4.3](#43-get-application-url).


### 5.3 Configure Authentication (Optional)

Expand All @@ -409,7 +416,7 @@ The images are **built remotely in ACR** using `az acr build`, so no local Docke

1. **Access the application** using the URL from Step 4.3
2. **Sign in** with your authenticated account
3. **Select a use case** from the available scenarios you uploaded in Step 5.1
3. **Select a use case** from the available scenarios you uploaded in Step 5.2
4. **Ask a sample question** relevant to the selected use case
5. **Verify the response** includes appropriate multi-agent collaboration
6. **Check the logs** in Azure Portal to confirm backend processing
Expand Down
721 changes: 149 additions & 572 deletions docs/TroubleShootingSteps.md

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions docs/quota_check.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
## Check Quota Availability Before Deployment

Before deploying the accelerator, **ensure sufficient quota availability** for the required model.
> **For Global Standard | GPT-5.4 - the capacity to at least 150k tokens for optimal performance.**
> **For Global Standard | gpt-5.4 - set the capacity to at least 150k tokens for optimal performance.**

### Login if you have not done so already
```
Expand All @@ -16,7 +16,7 @@ az login --use-device-code

### 📌 Default Models & Capacities:
```
gpt-5.4-mini:100,gpt-5.4:150
gpt-5.4:150,gpt-5.4-mini:100
```
### 📌 Default Regions:
```
Expand All @@ -43,6 +43,7 @@ australiaeast, eastus2, francecentral, japaneast, norwayeast, swedencentral, uks
✔️ Check specific model(s) in default regions:
```
./quota_check_params.sh --models gpt-5.4:150
./quota_check_params.sh --models gpt-5.4:150
```
✔️ Check default models in specific region(s):
```
Expand Down
1 change: 0 additions & 1 deletion infra/main.bicep
Original file line number Diff line number Diff line change
Expand Up @@ -524,4 +524,3 @@ output MCP_IMAGE_NAME string = isAvm ? avmDeployment!.outputs.MCP_IMAGE_NAME : b

@description('Port the frontend Web App container listens on.')
output FRONTEND_WEBSITES_PORT string = isAvm ? avmDeployment!.outputs.FRONTEND_WEBSITES_PORT : bicepDeployment!.outputs.FRONTEND_WEBSITES_PORT

106 changes: 66 additions & 40 deletions infra/main.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "2110057819441640559"
"templateHash": "17775288733861273358"
},
"name": "Multi-Agent Custom Automation Engine - Deployment Router",
"description": "Deployment router for the Multi-Agent Custom Automation Engine accelerator. Routes to either the AVM or vanilla Bicep orchestrator and preserves a unified deployment contract."
Expand Down Expand Up @@ -561,7 +561,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "10080544909430391861"
"templateHash": "6216243501205527784"
},
"name": "Multi-Agent Custom Automation Engine - AVM",
"description": "AVM orchestrator for the Multi-Agent Custom Automation Engine accelerator. Deploys the same logical resources and preserves the same outputs as infra\\main.bicep using local AVM wrapper modules."
Expand Down Expand Up @@ -1242,7 +1242,7 @@
"aiSearchIndexNameForRFPSummary": "macae-rfp-summary-index",
"aiSearchIndexNameForRFPRisk": "macae-rfp-risk-index",
"aiSearchIndexNameForRFPCompliance": "macae-rfp-compliance-index",
"virtualMachineAvailabilityZone": 1,
"virtualMachineAvailabilityZone": -1,
"aiFoundryOpenAIEndpoint": "[format('https://{0}.openai.azure.com/', variables('aiFoundryAiServicesResourceName'))]"
},
"resources": {
Expand Down Expand Up @@ -29138,7 +29138,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "10180502016624897684"
"templateHash": "13733831222630151234"
}
},
"parameters": {
Expand All @@ -29164,7 +29164,7 @@
"modelName": {
"type": "string",
"metadata": {
"description": "Required. Model name (e.g., gpt-4o, text-embedding-ada-002)."
"description": "Required. Model name (e.g., gpt-5.4-mini, text-embedding-ada-002)."
}
},
"modelVersion": {
Expand Down Expand Up @@ -57521,10 +57521,18 @@
"name": "AZURE_OPENAI_IMAGE_DEPLOYMENT",
"value": "[parameters('gptImageModelName')]"
},
{
"name": "AZURE_OPENAI_IMAGE_QUALITY",
"value": "high"
},
{
"name": "AZURE_STORAGE_BLOB_URL",
"value": "[reference('storage_account').outputs.blobEndpoint.value]"
},
{
"name": "AZURE_STORAGE_IMAGES_CONTAINER",
"value": "generated-images"
},
{
"name": "BACKEND_URL",
"value": "[format('https://{0}.{1}', variables('containerAppName'), reference('containerAppEnvironment').outputs.defaultDomain.value)]"
Expand Down Expand Up @@ -60245,14 +60253,19 @@
"value": {
"SCM_DO_BUILD_DURING_DEPLOYMENT": "true",
"DOCKER_REGISTRY_SERVER_URL": "[format('https://{0}', if(variables('useExistingContainerRegistry'), format('{0}.azurecr.io', variables('existingContainerRegistryName')), reference('container_registry').outputs.loginServer.value))]",
"WEBSITES_PORT": "3000",
"WEBSITES_CONTAINER_START_TIME_LIMIT": "1800",
"BACKEND_API_URL": "[format('https://{0}', reference('containerApp').outputs.fqdn.value)]",
"AUTH_ENABLED": "false",
"PROXY_API_REQUESTS": "[if(parameters('enablePrivateNetworking'), 'true', 'false')]"
}
},
"virtualNetworkSubnetId": "[if(parameters('enablePrivateNetworking'), createObject('value', reference('virtualNetwork').outputs.webserverfarmSubnetResourceId.value), createObject('value', ''))]",
"vnetRouteAllEnabled": {
"value": "[parameters('enablePrivateNetworking')]"
},
"imagePullTraffic": {
"value": "[parameters('enablePrivateNetworking')]"
},
"publicNetworkAccess": {
"value": "Enabled"
},
Expand All @@ -60267,7 +60280,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "9621160936099183182"
"templateHash": "9504607717010385151"
}
},
"definitions": {
Expand Down Expand Up @@ -60805,6 +60818,40 @@
}
},
"resources": {
"site": {
"existing": true,
"type": "Microsoft.Web/sites",
"apiVersion": "2025-03-01",
"name": "[parameters('name')]"
},
"logsConfig": {
"type": "Microsoft.Web/sites/config",
"apiVersion": "2025-03-01",
"name": "[format('{0}/{1}', parameters('name'), 'logs')]",
"properties": {
"applicationLogs": {
"fileSystem": {
"level": "Verbose"
}
},
"detailedErrorMessages": {
"enabled": true
},
"failedRequestsTracing": {
"enabled": true
},
"httpLogs": {
"fileSystem": {
"enabled": true,
"retentionInDays": 1,
"retentionInMb": 35
}
}
},
"dependsOn": [
"appService"
]
},
"appService": {
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
Expand Down Expand Up @@ -60848,6 +60895,7 @@
"healthCheckPath": "[if(not(empty(parameters('healthCheckPath'))), parameters('healthCheckPath'), null())]",
"webSocketsEnabled": "[parameters('webSocketsEnabled')]",
"appCommandLine": "[parameters('appCommandLine')]",
"vnetRouteAllEnabled": "[parameters('vnetRouteAllEnabled')]",
"acrUseManagedIdentityCreds": "[not(empty(parameters('acrUserManagedIdentityClientId')))]",
"acrUserManagedIdentityID": "[if(not(empty(parameters('acrUserManagedIdentityClientId'))), parameters('acrUserManagedIdentityClientId'), null())]"
}
Expand All @@ -60861,35 +60909,6 @@
"name": "appsettings",
"properties": "[parameters('appSettings')]",
"applicationInsightResourceId": "[if(not(empty(parameters('applicationInsightResourceId'))), parameters('applicationInsightResourceId'), null())]"
},
{
"name": "logs",
"properties": {
"applicationLogs": {
"fileSystem": {
"level": "Verbose"
}
},
"detailedErrorMessages": {
"enabled": true
},
"failedRequestsTracing": {
"enabled": true
},
"httpLogs": {
"fileSystem": {
"enabled": true,
"retentionInDays": 1,
"retentionInMb": 35
}
}
}
},
{
"name": "web",
"properties": {
"vnetRouteAllEnabled": "[parameters('vnetRouteAllEnabled')]"
}
}
]
},
Expand Down Expand Up @@ -76885,7 +76904,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "11051305577029776274"
"templateHash": "1904819476144963209"
},
"name": "Multi-Agent Custom Automation Engine - Vanilla Bicep",
"description": "Vanilla Bicep orchestrator for the Multi-Agent Custom Automation Engine accelerator. This deployment intentionally excludes WAF features such as private networking, scale-out, redundancy, bastion, and VM resources while keeping router-compatible outputs."
Expand Down Expand Up @@ -78097,7 +78116,7 @@
"_generator": {
"name": "bicep",
"version": "0.44.1.10279",
"templateHash": "10180502016624897684"
"templateHash": "13733831222630151234"
}
},
"parameters": {
Expand All @@ -78123,7 +78142,7 @@
"modelName": {
"type": "string",
"metadata": {
"description": "Required. Model name (e.g., gpt-4o, text-embedding-ada-002)."
"description": "Required. Model name (e.g., gpt-5.4-mini, text-embedding-ada-002)."
}
},
"modelVersion": {
Expand Down Expand Up @@ -80082,10 +80101,18 @@
"name": "AZURE_OPENAI_IMAGE_DEPLOYMENT",
"value": "[parameters('gptImageModelName')]"
},
{
"name": "AZURE_OPENAI_IMAGE_QUALITY",
"value": "high"
},
{
"name": "AZURE_STORAGE_BLOB_URL",
"value": "[reference(resourceId('Microsoft.Resources/deployments', take(format('module.storage-account.{0}', variables('solutionSuffix')), 64)), '2025-04-01').outputs.blobEndpoint.value]"
},
{
"name": "AZURE_STORAGE_IMAGES_CONTAINER",
"value": "[parameters('storageContainerNameGeneratedImages')]"
},
{
"name": "BACKEND_URL",
"value": "[format('https://{0}.{1}', variables('backendContainerAppName'), reference(resourceId('Microsoft.Resources/deployments', take(format('module.container-app-environment.{0}', variables('solutionSuffix')), 64)), '2025-04-01').outputs.defaultDomain.value)]"
Expand Down Expand Up @@ -80499,7 +80526,6 @@
"value": {
"SCM_DO_BUILD_DURING_DEPLOYMENT": "true",
"DOCKER_REGISTRY_SERVER_URL": "[format('https://{0}', if(variables('useExistingContainerRegistry'), format('{0}.azurecr.io', variables('existingContainerRegistryName')), reference(resourceId('Microsoft.Resources/deployments', take(format('module.container-registry.{0}', variables('solutionSuffix')), 64)), '2025-04-01').outputs.loginServer.value))]",
"WEBSITES_PORT": "3000",
"WEBSITES_CONTAINER_START_TIME_LIMIT": "1800",
"BACKEND_API_URL": "[format('https://{0}', reference(resourceId('Microsoft.Resources/deployments', take(format('module.backend-container-app.{0}', variables('solutionSuffix')), 64)), '2025-04-01').outputs.fqdn.value)]",
"AUTH_ENABLED": "false",
Expand Down
2 changes: 1 addition & 1 deletion src/App/src/hooks/usePlanWebSocket.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -423,4 +423,4 @@ export function usePlanWebSocket({
}, [dispatch, planId, continueWithWebsocketFlow]);
}

export default usePlanWebSocket;
export default usePlanWebSocket;
1 change: 1 addition & 0 deletions src/backend/.env.sample
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ COSMOSDB_DATABASE=macae
COSMOSDB_CONTAINER=memory

AZURE_OPENAI_ENDPOINT=
AZURE_OPENAI_MODEL_NAME=gpt-5.4-mini
AZURE_OPENAI_DEPLOYMENT_NAME=gpt-5.4-mini
AZURE_OPENAI_API_VERSION=2024-12-01-preview
AZURE_OPENAI_RAI_DEPLOYMENT_NAME=
Expand Down
4 changes: 3 additions & 1 deletion src/backend/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,10 @@ ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy

WORKDIR /app

# Install the project's dependencies using the lockfile and settings
# Copy lock and project files first for better layer caching
COPY uv.lock pyproject.toml /app/

# Install the project's dependencies using the lockfile and settings
RUN uv sync --frozen --no-install-project --no-dev

# Backend app setup
Expand Down
Loading
Loading