Microsoft Foundry Integration with AZD
April 3, 2026 · View on GitHub
Chapter Navigation:
- ð Course Home: AZD For Beginners
- ð Current Chapter: Chapter 2 - AI-First Development
- ⎠ïļ Previous Chapter: Chapter 1: Your First Project
- âĄïļ Next: AI Model Deployment
- ð Next Chapter: Chapter 3: Configuration
Overview
āļāļđāđāļĄāļ·āļāļāļĩāđāļŠāļēāļāļīāļāļ§āļīāļāļĩāļāļēāļĢāļĢāļ§āļĄāļāļĢāļīāļāļēāļĢ Microsoft Foundry āđāļāđāļēāļāļąāļ Azure Developer CLI (AZD) āđāļāļ·āđāļāļāļēāļĢāļāļĢāļąāļāđāļāđāđāļāļāļāļĨāļīāđāļāļāļąāļ AI āļāļĩāđāļĢāļēāļāļĢāļ·āđāļ Microsoft Foundry āļĄāļāļāđāļāļĨāļāļāļāļĢāđāļĄāļāļĢāļāļ§āļāļāļĢāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļŠāļĢāđāļēāļ āļāļĢāļąāļāđāļāđ āđāļĨāļ°āļāļąāļāļāļēāļĢāđāļāļāļāļĨāļīāđāļāļāļąāļ AI āļāļāļ°āļāļĩāđ AZD āļāđāļ§āļĒāđāļŦāđāļāđāļēāļĒāļāđāļāļāļēāļĢāļāļąāļāļāļēāļĢāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāđāļĨāļ°āļāļąāđāļāļāļāļāļāļēāļĢāļāļĢāļąāļāđāļāđ
What is Microsoft Foundry?
Microsoft Foundry āļāļ·āļāđāļāļĨāļāļāļāļĢāđāļĄāļĢāļ§āļĄāļāļāļ Microsoft āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļē AI āļāļĩāđāļāļĢāļ°āļāļāļāļāđāļ§āļĒ:
- Model Catalog: āļāļēāļĢāđāļāđāļēāļāļķāļāđāļĄāđāļāļĨ AI āļāļąāđāļāļŠāļđāļ
- Prompt Flow: āđāļāļĢāļ·āđāļāļāļĄāļ·āļāļāļāļāđāļāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđ AI āđāļāļāļ āļēāļ
- Microsoft Foundry Portal: āļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāļāļąāļāļāļēāļĢāđāļ§āļĄāļŠāļģāļŦāļĢāļąāļāđāļāļ AI
- Deployment Options: āļāļąāļ§āđāļĨāļ·āļāļāđāļŪāļŠāļāļīāđāļāđāļĨāļ°āļāļĢāļąāļāļāļāļēāļāļŦāļĨāļēāļāļŦāļĨāļēāļĒ
- Safety and Security: āļāļĩāđāļāļāļĢāđ AI āļāļĩāđāļĢāļąāļāļāļīāļāļāļāļāđāļāļāļąāļ§
AZD + Microsoft Foundry: Better Together
| Feature | Microsoft Foundry | AZD Integration Benefit |
|---|---|---|
| Model Deployment | āļāļĢāļąāļāđāļāđāļāđāļ§āļĒāļāļāļĢāđāļāļąāļĨāļāđāļ§āļĒāļāļāđāļāļ | āļāļēāļĢāļāļĢāļąāļāđāļāđāļāļąāļāđāļāļĄāļąāļāļīāđāļĨāļ°āļāļģāļāđāļģāđāļāđ |
| Infrastructure | āļāļēāļĢāļāļąāļāļŦāļēāđāļāļāļāļĨāļīāļāļāđāļēāļ | āđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāđāļāđāļāđāļāđāļ (Bicep) |
| Environment Management | āļĄāļļāđāļāđāļāđāļāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāđāļāļĩāļĒāļ§ | āļŦāļĨāļēāļĒāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ (dev/staging/prod) |
| CI/CD Integration | āļāļģāļāļąāļ | āļĢāļāļāļĢāļąāļ GitHub Actions āđāļāļĒāļāļĢāļ |
| Cost Management | āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāļ·āđāļāļāļēāļ | āļāļēāļĢāļāļĢāļąāļāđāļāđāļāļāđāļēāđāļāđāļāđāļēāļĒāļāļēāļĄāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ |
Prerequisites
- āļāļēāļĢāļŠāļĄāļąāļāļĢāđāļāđāļāļēāļ Azure āļāļĩāđāļĄāļĩāļŠāļīāļāļāļīāđāđāļŦāļĄāļēāļ°āļŠāļĄ
- āļāļīāļāļāļąāđāļ Azure Developer CLI
- āđāļāđāļēāļāļķāļāļāļĢāļīāļāļēāļĢ Microsoft Foundry Models
- āļāļ§āļēāļĄāļāļļāđāļāđāļāļĒāļāļ·āđāļāļāļēāļāļāļąāļ Microsoft Foundry
Current AZD baseline: āļāļąāļ§āļāļĒāđāļēāļāđāļŦāļĨāđāļēāļāļĩāđāļāļđāļāļāļāļŠāļāļāļāļąāļ
azd1.23.12āļŠāļģāļŦāļĢāļąāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļąāļ§āđāļāļ AI āđāļŦāđāđāļāđāđāļ§āļāļĢāđāļāļąāļāļāļĢāļĩāļ§āļīāļ§āļĨāđāļēāļŠāļļāļāđāļĨāļ°āļāļĢāļ§āļāļŠāļāļāđāļ§āļāļĢāđāļāļąāļāļāļĩāđāļāļīāļāļāļąāđāļāļāđāļāļāđāļĢāļīāđāļĄ
Core Integration Patterns
Pattern 1: Microsoft Foundry Models Integration
Use Case: āļāļĢāļąāļāđāļāđāđāļāļāđāļāļāļāđāļ§āļĒāđāļĄāđāļāļĨ Microsoft Foundry Models
# azure.yaml
name: ai-chat-app
services:
api:
project: ./api
host: containerapp
env:
- AZURE_OPENAI_ENDPOINT
- AZURE_OPENAI_API_KEY
Infrastructure (main.bicep):
// Microsoft Foundry Models Account
resource openAIAccount 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
name: openAIAccountName
location: location
kind: 'OpenAI'
sku: {
name: 'S0'
}
properties: {
customSubDomainName: openAIAccountName
disableLocalAuth: false
}
}
// Deploy GPT model
resource gptDeployment 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = {
parent: openAIAccount
name: 'gpt-4.1-mini'
properties: {
model: {
format: 'OpenAI'
name: 'gpt-4.1-mini'
version: '2024-07-18'
}
scaleSettings: {
scaleType: 'Standard'
capacity: 30
}
}
}
Pattern 2: AI Search + RAG Integration
Use Case: āļāļĢāļąāļāđāļāđāđāļāļāļāļēāļĢāļŠāļĢāđāļēāļāđāļāļāđāļŠāļĢāļīāļĄāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨ (RAG)
// Azure AI Search
resource searchService 'Microsoft.Search/searchServices@2023-11-01' = {
name: searchServiceName
location: location
sku: {
name: 'basic'
}
properties: {
replicaCount: 1
partitionCount: 1
hostingMode: 'default'
}
}
// Connect Search with OpenAI
resource searchConnection 'Microsoft.Search/searchServices/dataConnections@2023-11-01' = {
parent: searchService
name: 'openai-connection'
properties: {
targetResourceId: openAIAccount.id
authenticationMethod: 'managedIdentity'
}
}
Pattern 3: Document Intelligence Integration
Use Case: āđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđāļāļēāļĢāļāļĢāļ°āļĄāļ§āļĨāļāļĨāđāļĨāļ°āļ§āļīāđāļāļĢāļēāļ°āļŦāđāđāļāļāļŠāļēāļĢ
// Document Intelligence service
resource documentIntelligence 'Microsoft.CognitiveServices/accounts@2023-05-01' = {
name: documentIntelligenceName
location: location
kind: 'FormRecognizer'
sku: {
name: 'S0'
}
properties: {
customSubDomainName: documentIntelligenceName
}
}
// Storage for document processing
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
allowBlobPublicAccess: false
}
}
ð§ Configuration Patterns
Environment Variables Setup
Production Configuration:
# āļāļĢāļīāļāļēāļĢ AI āđāļāļāļŦāļĨāļąāļ
azd env set AZURE_OPENAI_ENDPOINT "https://your-openai.openai.azure.com/"
azd env set AZURE_SEARCH_ENDPOINT "https://your-search.search.windows.net"
azd env set AZURE_DOCUMENT_INTELLIGENCE_ENDPOINT "https://your-formrec.cognitiveservices.azure.com/"
# āļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļĢāļđāļāđāļāļ
azd env set AZURE_OPENAI_MODEL "gpt-4.1-mini"
azd env set AZURE_OPENAI_EMBEDDING_MODEL "text-embedding-3-large"
# āļāļēāļĢāļāļąāđāļāļāđāļēāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
azd env set AZURE_OPENAI_CAPACITY 30
azd env set AZURE_SEARCH_SKU "standard"
Development Configuration:
# āļāļēāļĢāļāļąāđāļāļāđāļēāļāļĩāđāđāļŦāļĄāļēāļ°āļŠāļĄāļāđāļēāļāļāđāļāļāļļāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļē
azd env set AZURE_OPENAI_CAPACITY 10
azd env set AZURE_SEARCH_SKU "basic"
azd env set AZURE_DOCUMENT_INTELLIGENCE_SKU "F0" # āļĢāļ°āļāļąāļāļāļĢāļĩ
Secure Configuration with Key Vault
// Key Vault for secrets
resource keyVault 'Microsoft.KeyVault/vaults@2023-02-01' = {
name: keyVaultName
location: location
properties: {
tenantId: tenant().tenantId
sku: {
family: 'A'
name: 'standard'
}
accessPolicies: [
{
tenantId: tenant().tenantId
objectId: webAppIdentity.properties.principalId
permissions: {
secrets: ['get']
}
}
]
}
}
// Store OpenAI key securely
resource openAIKeySecret 'Microsoft.KeyVault/vaults/secrets@2023-02-01' = {
parent: keyVault
name: 'openai-api-key'
properties: {
value: openAIAccount.listKeys().key1
}
}
Deployment Workflows
AZD Extensions for Foundry
AZD āđāļŦāđāļŠāđāļ§āļāļāļĒāļēāļĒāļāļĩāđāđāļāļīāđāļĄāļāļ§āļēāļĄāļŠāļēāļĄāļēāļĢāļāđāļāļāļēāļ°āļāđāļēāļ AI āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļģāļāļēāļāļāļąāļāļāļĢāļīāļāļēāļĢ Microsoft Foundry:
# āļāļīāļāļāļąāđāļāļŠāđāļ§āļāļāļĒāļēāļĒāđāļāđāļāļāļāđ Foundry
azd extension install azure.ai.agents
# āļāļīāļāļāļąāđāļāļŠāđāļ§āļāļāļĒāļēāļĒāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļĨāļ°āđāļāļĩāļĒāļ
azd extension install azure.ai.finetune
# āļāļīāļāļāļąāđāļāļŠāđāļ§āļāļāļĒāļēāļĒāđāļĄāđāļāļĨāļāļĩāđāļāļģāļŦāļāļāđāļāļ
azd extension install azure.ai.models
# āđāļŠāļāļāļĢāļēāļĒāļāļēāļĢāļŠāđāļ§āļāļāļĒāļēāļĒāļāļĩāđāļāļīāļāļāļąāđāļ
azd extension list --installed
# āļāļĢāļ§āļāļŠāļāļāđāļ§āļāļĢāđāļāļąāļāļŠāđāļ§āļāļāļĒāļēāļĒāđāļāđāļāļāļāđāļāļĩāđāļāļīāļāļāļąāđāļāđāļāļāļąāļāļāļļāļāļąāļ
azd extension show azure.ai.agents
āļŠāđāļ§āļāļāļĒāļēāļĒ AI āļĒāļąāļāļāļāļāļąāļāļāļēāļāļĒāđāļēāļāļĢāļ§āļāđāļĢāđāļ§āđāļāļāđāļ§āļāļāļĢāļĩāļ§āļīāļ§ āļŦāļēāļāļāļģāļŠāļąāđāļāļāļģāļāļēāļāđāļāļāļāđāļēāļāļāļēāļāļāļĩāđāđāļŠāļāļ āđāļŦāđāļāļģāļāļēāļĢāļāļąāļāđāļāļĢāļāļŠāđāļ§āļāļāļĒāļēāļĒāļāļĩāđāđāļāļĩāđāļĒāļ§āļāđāļāļāļāđāļāļāđāļāđāđāļāļāļąāļāļŦāļēāđāļāļĢāđāļāļāļāđ
Agent-First Deployment with azd ai
āļŦāļēāļāļāļļāļāļĄāļĩāđāļāđāļāļāļģāļāļąāļāļāļąāļ§āđāļāļ āđāļāđ azd ai agent init āđāļāļ·āđāļāļŠāļĢāđāļēāļāđāļāļĢāļāđāļāļĢāđāļāļāļāđāļāļĩāđāđāļāļ·āđāļāļĄāļāđāļāļāļąāļ Foundry Agent Service:
# āđāļĢāļīāđāļĄāļāđāļāļāļēāļāļāļąāļ§āļĢāļ°āļāļļāđāļāđāļĒāđāļāļāđ
azd ai agent init -m agent-manifest.yaml --project-id <foundry-project-id>
# āļāļīāļāļāļąāđāļāđāļāļĒāļąāļ Azure
azd up
āļāļēāļĢāđāļāļīāļāļāļąāļ§āļāļĢāļĩāļ§āļīāļ§āļĨāđāļēāļŠāļļāļāļāļāļ azure.ai.agents āļĒāļąāļāđāļāļīāđāļĄāļāļēāļĢāļĢāļāļāļĢāļąāļāļāļēāļĢāđāļĢāļīāđāļĄāļāđāļāļāđāļ§āļĒāđāļāļĄāđāļāļĨāļāļŠāļģāļŦāļĢāļąāļ azd ai agent init āļŦāļēāļāļāļļāļāļāļģāļĨāļąāļāļāļīāļāļāļēāļĄāļāļąāļ§āļāļĒāđāļēāļāļāļąāļ§āđāļāļāļĢāļļāđāļāđāļŦāļĄāđ āļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļāđāļ§āļĒāđāļŦāļĨāļ·āļāļāļāļāļŠāđāļ§āļāļāļĒāļēāļĒāđāļāļ·āđāļāļāļđāļāļāļāļĩāđāļĄāļĩāđāļāđāļ§āļāļĢāđāļāļąāļāļāļĩāđāļāļīāļāļāļąāđāļ
āļāļđāļāļĩāđ AZD AI CLI Commands āļŠāļģāļŦāļĢāļąāļāđāļāļāļŠāļēāļĢāļāļģāļŠāļąāđāļāđāļĨāļ°āļāļāļāļąāđāļāļŦāļĄāļ
Single Command Deployment
# āđāļāđāļāļģāļŠāļąāđāļāđāļāļĩāļĒāļ§āđāļāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļąāđāļāļŦāļĄāļ
azd up
# āļŦāļĢāļ·āļāļāļĢāļąāļāđāļāđāļāļĒāđāļēāļāļāđāļāļĒāđāļāđāļāļāđāļāļĒāđāļ
azd provision # āđāļāđāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāđāļāđāļēāļāļąāđāļ
azd deploy # āđāļāđāđāļāļāļāļĨāļīāđāļāļāļąāļāđāļāđāļēāļāļąāđāļ
# āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļĢāļąāļāđāļāđāļāļēāļāđāļāļ AI āļāļĩāđāļāļģāļāļēāļāļĒāļēāļ§āļāļēāļāđāļ azd 1.23.11+
azd deploy --timeout 1800
Environment-Specific Deployments
# āļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāļāļąāļāļāļē
azd env new development
azd env set AZURE_LOCATION eastus
azd env set ENVIRONMENT_TYPE dev
azd up
# āļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļēāļĢāļāļĨāļīāļ
azd env new production
azd env set AZURE_LOCATION westus2
azd env set ENVIRONMENT_TYPE prod
azd env set AZURE_OPENAI_CAPACITY 100
azd up
Monitoring and Observability
Application Insights Integration
// Application Insights for AI application monitoring
resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
name: applicationInsightsName
location: location
kind: 'web'
properties: {
Application_Type: 'web'
WorkspaceResourceId: logAnalyticsWorkspace.id
}
}
// Custom metrics for AI operations
resource customMetrics 'Microsoft.Insights/components/analyticsItems@2015-05-01' = {
parent: applicationInsights
name: 'AI-Metrics'
properties: {
name: 'AI Operations Metrics'
content: '''
requests
| where name contains "openai"
| summarize
RequestCount = count(),
AvgDuration = avg(duration),
SuccessRate = countif(success == true) * 100.0 / count()
by bin(timestamp, 5m)
'''
}
}
Cost Monitoring
// Budget alert for AI services
resource budget 'Microsoft.Consumption/budgets@2023-05-01' = {
name: 'ai-services-budget'
properties: {
timePeriod: {
startDate: '2024-01-01'
endDate: '2024-12-31'
}
timeGrain: 'Monthly'
amount: 500
category: 'Cost'
notifications: {
notification1: {
enabled: true
operator: 'GreaterThan'
threshold: 80
contactEmails: [
'admin@company.com'
]
}
}
}
}
ð Security Best Practices
Managed Identity Configuration
// Managed identity for the web application
resource webAppIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: '${appName}-identity'
location: location
}
// Assign OpenAI User role
resource openAIRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
scope: openAIAccount
name: guid(openAIAccount.id, webAppIdentity.id, 'Cognitive Services OpenAI User')
properties: {
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd')
principalId: webAppIdentity.properties.principalId
principalType: 'ServicePrincipal'
}
}
Network Security
// Private endpoints for AI services
resource openAIPrivateEndpoint 'Microsoft.Network/privateEndpoints@2023-04-01' = {
name: '${openAIAccountName}-pe'
location: location
properties: {
subnet: {
id: virtualNetwork.properties.subnets[0].id
}
privateLinkServiceConnections: [
{
name: 'openai-connection'
properties: {
privateLinkServiceId: openAIAccount.id
groupIds: ['account']
}
}
]
}
}
Performance Optimization
Caching Strategies
# azure.yaml - Redis cache integration
services:
api:
project: ./api
host: containerapp
env:
- REDIS_CONNECTION_STRING
- CACHE_TTL=3600
// Redis cache for AI responses
resource redisCache 'Microsoft.Cache/redis@2023-04-01' = {
name: redisCacheName
location: location
properties: {
sku: {
name: 'Basic'
family: 'C'
capacity: 1
}
enableNonSslPort: false
minimumTlsVersion: '1.2'
}
}
Auto-scaling Configuration
// Container App with auto-scaling
resource containerApp 'Microsoft.App/containerApps@2023-05-01' = {
name: containerAppName
location: location
properties: {
configuration: {
ingress: {
external: true
targetPort: 8000
}
}
template: {
scale: {
minReplicas: 1
maxReplicas: 10
rules: [
{
name: 'http-scaling'
http: {
metadata: {
concurrentRequests: '30'
}
}
}
]
}
}
}
}
Troubleshooting Common Issues
Issue 1: OpenAI Quota Exceeded
Symptoms:
- āļāļēāļĢāļāļĢāļąāļāđāļāđāļĨāđāļĄāđāļŦāļĨāļ§āļāđāļ§āļĒāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļ§āļāļē
- āļāđāļāļāļīāļāļāļĨāļēāļ 429 āđāļāļāļąāļāļāļķāļāđāļāļāļāļĨāļīāđāļāļāļąāļ
Solutions:
# āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāđāļāđāļāļēāļāđāļāļ§āļāļēāļāļąāļāļāļļāļāļąāļ
az cognitiveservices usage list --location eastus
# āļĨāļāļāđāļāđāļ āļđāļĄāļīāļ āļēāļāļāļ·āđāļ
azd env set AZURE_LOCATION westus2
azd up
# āļĨāļāļāļ§āļēāļĄāļāļļāļāļąāđāļ§āļāļĢāļēāļ§
azd env set AZURE_OPENAI_CAPACITY 10
azd deploy
Issue 2: Authentication Failures
Symptoms:
- āļāđāļāļāļīāļāļāļĨāļēāļ 401/403 āđāļĄāļ·āđāļāđāļĢāļĩāļĒāļāļāļĢāļīāļāļēāļĢ AI
- āļāđāļāļāļ§āļēāļĄ "Access denied"
Solutions:
# āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļŦāļāļāļāļāļāļēāļ
az role assignment list --scope /subscriptions/YOUR_SUB/resourceGroups/YOUR_RG
# āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļąāļāļāļĩāļāļąāļ§āļāļāļāļĩāđāļāļąāļāļāļēāļĢ
az webapp identity show --name YOUR_APP --resource-group YOUR_RG
# āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāđāļāđāļēāļāļķāļ Key Vault
az keyvault secret show --vault-name YOUR_KV --name openai-api-key
Issue 3: Model Deployment Issues
Symptoms:
- āđāļĄāđāļāļĨāđāļĄāđāļāļĢāđāļāļĄāđāļāđāļāļēāļāđāļāļāļĢāļąāļāđāļāđ
- āđāļ§āļāļĢāđāļāļąāļāđāļĄāđāļāļĨāļāļēāļāļāļąāļ§āļĨāđāļĄāđāļŦāļĨāļ§
Solutions:
# āđāļŠāļāļāļĢāļēāļĒāļāļēāļĢāđāļĄāđāļāļĨāļāļĩāđāļĄāļĩāļāļēāļĄāļ āļđāļĄāļīāļ āļēāļ
az cognitiveservices model list --location eastus
# āļāļąāļāđāļāļāđāļ§āļāļĢāđāļāļąāļāđāļĄāđāļāļĨāđāļāđāļāļĄāđāļāļĨāļ bicep
# āļāļĢāļ§āļāļŠāļāļāļāļ§āļēāļĄāļāđāļāļāļāļēāļĢāļāļ§āļēāļĄāļāļļāļāļāļāđāļĄāđāļāļĨ
Example Templates
RAG Chat Application (Python)
Repository: azure-search-openai-demo
Services: Azure OpenAI + Azure AI Search + Azure Container Apps + Azure Blob Storage
Description: āļāļąāļ§āļāļĒāđāļēāļ Azure AI āļĒāļāļāļāļīāļĒāļĄāļāļĩāđāļŠāļļāļ â āđāļāļāđāļāļ RAG āļāļĩāđāļāļĢāđāļāļĄāđāļāđāļāļēāļāļāļĢāļīāļāļāļķāđāļāđāļŦāđāļāļļāļāļāļēāļĄāļāļģāļāļēāļĄāļāļąāļāđāļāļāļŠāļēāļĢāļāļāļāļāļļāļāđāļāļ āđāļāđ GPT-4.1-mini āļŠāļģāļŦāļĢāļąāļāđāļāļ, text-embedding-3-large āļŠāļģāļŦāļĢāļąāļ embeddings, āđāļĨāļ° Azure AI Search āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļķāļāļāđāļāļĄāļđāļĨ āļĢāļāļāļĢāļąāļāđāļāļāļŠāļēāļĢāļŦāļĨāļēāļĒāļĢāļđāļāđāļāļ, āļāļēāļĢāļāđāļāļ/āļŠāđāļāđāļŠāļĩāļĒāļ, āļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļŠāļīāļāļāļīāđ Microsoft Entra, āđāļĨāļ°āļāļēāļĢāļāļīāļāļāļēāļĄāļāđāļ§āļĒ Application Insights
Quick Start:
azd init --template azure-search-openai-demo
azd up
RAG Chat Application (.NET)
Repository: azure-search-openai-demo-csharp
Services: Azure OpenAI + Azure AI Search + Azure Container Apps + Semantic Kernel
Description: āđāļāļĩāļĒāļāđāļāđāļēāļāļāļ .NET/C# āļāļāļāļāļąāļ§āļāļĒāđāļēāļ RAG chat āđāļ Python āļŠāļĢāđāļēāļāļāđāļ§āļĒ ASP.NET Core Minimal API āđāļĨāļ° Blazor WebAssembly frontend āļĄāļĩāļāļēāļĢāđāļāļāļāđāļ§āļĒāđāļŠāļĩāļĒāļ, āļĢāļāļāļĢāļąāļ GPT-4o-mini vision āđāļĨāļ°āđāļāļĨāđāļāļāļāđ .NET MAUI Blazor Hybrid āļŠāļģāļŦāļĢāļąāļāđāļāļŠāļāđāļāđāļāļ/āļĄāļ·āļāļāļ·āļ
Quick Start:
azd init --template azure-search-openai-demo-csharp
azd up
RAG Chat Application (Java)
Repository: azure-search-openai-demo-java
Services: Azure OpenAI + Azure AI Search + Azure Container Apps / AKS + Langchain4J + Azure Cosmos DB
Description: āđāļ§āļāļĢāđāļāļąāļ Java āļāļāļāļāļąāļ§āļāļĒāđāļēāļ RAG chat āđāļāđ Langchain4J āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢ AI āļĢāļāļāļĢāļąāļāļŠāļāļēāļāļąāļāļĒāļāļĢāļĢāļĄāļāļĩāđāļ§āļāļāđāđāļĄāđāļāļĢāđāļāļāļĢāđāļ§āļīāļŠ, āļāļĨāļĒāļļāļāļāđāļāļēāļĢāļāđāļāļŦāļēāļŦāļĨāļēāļĒāđāļāļ (āļāđāļāļāļ§āļēāļĄ, āđāļ§āļāđāļāļāļĢāđ, āđāļŪāļāļĢāļīāļ), āļāļēāļĢāļāļąāļāđāļŦāļĨāļāđāļāļāļŠāļēāļĢāļāđāļ§āļĒ Azure Document Intelligence, āđāļĨāļ°āļāļĢāļąāļāđāļāđāļāļ Azure Container Apps āļŦāļĢāļ·āļ Azure Kubernetes Service
Quick Start:
azd init --template azure-search-openai-demo-java
azd up
Enterprise Retail Copilot with Azure AI Foundry
Repository: contoso-chat
Services: Azure OpenAI + Azure AI Foundry + Prompty + Azure AI Search + Azure Container Apps + Azure Cosmos DB
Description: āđāļāđāļāļĨāļāļ RAG āļŠāļģāļŦāļĢāļąāļāļāļļāļĢāļāļīāļāļāđāļēāļāļĨāļĩāļāļāļĢāļāļ§āļāļāļĢ āđāļāđ Azure AI Foundry āđāļĨāļ° Prompty āđāļāļāļāļāļ Contoso Outdoor āļāļĩāđāļĒāļķāļāļāļģāļāļāļāļāļąāļāļāđāļāļĄāļđāļĨāđāļāļāļāļēāļĨāđāļāļāļŠāļīāļāļāđāļēāđāļĨāļ°āļāļģāļŠāļąāđāļāļāļ·āđāļāļāļđāđāđāļāđ āđāļŠāļāļāđāļ§āļīāļĢāđāļāđāļāļĨāļ§āđ GenAIOps āļāļąāđāļāļŦāļĄāļ â āļāđāļāđāļāļāļāļąāļ Prompty, āļāļĢāļ°āđāļĄāļīāļāļāđāļ§āļĒāļāļđāđāļāđāļ§āļĒ AI, āđāļĨāļ°āļāļĢāļąāļāđāļāđāļāđāļēāļ AZD āđāļāļĒāļąāļ Container Apps
Quick Start:
azd init --template contoso-chat
azd up
Creative Writing Multi-Agent Application
Repository: contoso-creative-writer
Services: Azure OpenAI + Azure AI Agent Service + Bing Grounding + Azure AI Search + Azure Container Apps
Description: āļāļąāļ§āļāļĒāđāļēāļ multi-agent āļāļĩāđāđāļŠāļāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļąāļ§āđāļāļ AI āļāđāļ§āļĒ Prompty āđāļāđāļāļąāļ§āđāļāļāļ§āļīāļāļąāļĒ (Bing Grounding āđāļ Azure AI Agent Service), āļāļąāļ§āđāļāļāļāļĨāļīāļāļ āļąāļāļāđ (Azure AI Search), āļāļąāļ§āđāļāļāļāļđāđāđāļāļĩāļĒāļ āđāļĨāļ°āļāļąāļ§āđāļāļāļāļĢāļĢāļāļēāļāļīāļāļēāļĢ āļāļģāļāļēāļāļĢāđāļ§āļĄāļāļąāļāļŠāļĢāđāļēāļāļāļāļāļ§āļēāļĄāļāļĩāđāļĄāļĩāļāļēāļĢāļ§āļīāļāļąāļĒāļāļĩ āļĢāļ§āļĄ CI/CD āļāđāļ§āļĒāļāļēāļĢāļāļĢāļ°āđāļĄāļīāļāđāļ GitHub Actions
Quick Start:
azd init --template contoso-creative-writer
azd up
Serverless RAG Chat (JavaScript/TypeScript)
Repository: serverless-chat-langchainjs
Services: Azure OpenAI + Azure Functions + Azure Static Web Apps + Azure Cosmos DB for NoSQL + LangChain.js
Description: āđāļāļāļāļāļ RAG āđāļāļāđāļĄāđāļĄāļĩāđāļāļīāļĢāđāļāđāļ§āļāļĢāđāđāļāđāļĄāļĢāļđāļāđāļāļ āđāļāđ LangChain.js āļāļąāļ Azure Functions āļŠāļģāļŦāļĢāļąāļ API āđāļĨāļ° Azure Static Web Apps āļŠāļģāļŦāļĢāļąāļāđāļŪāļŠāļāđ āđāļāđ Azure Cosmos DB āđāļāđāļāļāļąāđāļāļāļĩāđāđāļāđāļāđāļ§āļāđāļāļāļĢāđāđāļĨāļ°āļāļēāļāļāđāļāļĄāļđāļĨāļāļĢāļ°āļ§āļąāļāļīāļāļēāļĢāđāļāļ āļĢāļāļāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļāđāļāļāļāļīāđāļāļāđāļ§āļĒ Ollama āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļŠāļāļāļāļĢāļĩ
Quick Start:
azd init --template serverless-chat-langchainjs
azd up
Chat with Your Data Solution Accelerator
Repository: chat-with-your-data-solution-accelerator
Services: Azure OpenAI + Azure AI Search + Azure App Service + Azure Document Intelligence + Azure Functions + Azure Cosmos DB / PostgreSQL
Description: āļāļąāļ§āđāļĢāđāļāļāļ§āļēāļĄāđāļĢāđāļ§āđāļāļĨāļđāļāļąāļ RAG āļĢāļ°āļāļąāļāļāļāļāđāļāļĢ āļāļĢāđāļāļĄāļāļāļĢāđāļāļąāļĨāļāļđāđāļāļđāđāļĨāļĢāļ°āļāļāļŠāļģāļŦāļĢāļąāļāļāļąāļāđāļŦāļĨāļ/āļāļąāļāļāļēāļĢāđāļāļāļŠāļēāļĢ, āļāļąāļ§āđāļĨāļ·āļāļāļāļāļĢāđāđāļāļŠāđāļāļĢāđāļāļāļĢāđāļŦāļĨāļēāļĒāđāļāļ (Semantic Kernel, LangChain, Prompt Flow), āļāļēāļĢāļāļđāļāđāļāđāļāļāđāļāļāļ§āļēāļĄ, āļāļēāļĢāļāļŠāļēāļāļāļąāļ Microsoft Teams, āđāļĨāļ°āđāļĨāļ·āļāļāđāļāđāļāļēāļāļāđāļāļĄāļđāļĨ PostgreSQL āļŦāļĢāļ·āļ Cosmos DB āļāļāļāđāļāļāđāļāđāļāļāļļāļāđāļĢāļīāđāļĄāļāđāļāļāļĩāđāļāļĢāļąāļāđāļāđāļāđāļāđāļŠāļģāļŦāļĢāļąāļāļŠāļāļēāļāļāļēāļĢāļāđ RAG āđāļāļāļēāļĢāļāļĨāļīāļ
Quick Start:
azd init --template chat-with-your-data-solution-accelerator
azd up
AI Travel Agents â Multi-Agent MCP Orchestration
Repository: azure-ai-travel-agents
Services: Azure OpenAI + Azure AI Foundry + Azure Container Apps + MCP Servers (.NET, Python, Java, TypeScript)
Description: āđāļāļāļāđāļēāļāļāļīāļāļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļąāļāļāļēāļĢāļāļąāļ§āđāļāļ AI āļŦāļĨāļēāļĒāļāļąāļ§ āđāļāđāļŠāļēāļĄāđāļāļĢāļĄāđāļ§āļīāļĢāđāļ (LangChain.js, LlamaIndex.TS āđāļĨāļ° Microsoft Agent Framework) āļĄāļĩāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ MCP (Model Context Protocol) āļŠāļĩāđāļ āļēāļĐāļē āļāļĢāļąāļāđāļāđāđāļāđāļ Azure Container Apps āđāļāļāđāļĄāđāļĄāļĩāđāļāļīāļĢāđāļāđāļ§āļāļĢāđ āļāļĢāđāļāļĄāļāļēāļĢāļāļĢāļ§āļāļŠāļāļāļāđāļ§āļĒ OpenTelemetry
Quick Start:
azd init --template azure-ai-travel-agents
azd up
Azure AI Starter
Repository: azd-ai-starter
Services: Azure AI Services + Azure OpenAI
Description: āđāļāļĄāđāļāļĨāļ Bicep āļāļąāđāļāļāđāļģāļāļĩāđāļāļĢāļąāļāđāļāđāļāļĢāļīāļāļēāļĢ Azure AI āļāļĢāđāļāļĄāđāļĄāđāļāļĨāļāļēāļĢāđāļĢāļĩāļĒāļāļĢāļđāđāđāļāļĢāļ·āđāļāļāļāļĩāđāļāļąāđāļāļāđāļēāđāļ§āđ āļāļļāļāđāļĢāļīāđāļĄāļāđāļāļāđāļģāļŦāļāļąāļāđāļāļēāļŠāļģāļŦāļĢāļąāļāđāļĄāļ·āđāļāļāļļāļāļāđāļāļāļāļēāļĢāđāļāđāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļ Azure AI āđāļāļĒāđāļĄāđāļāđāļāļāļĄāļĩāļŠāđāļāļāđāļāļāđāļāđāļĄāļĢāļđāļāđāļāļ
Quick Start:
azd init --template azd-ai-starter
azd up
Browse more templates: āđāļĒāļĩāđāļĒāļĄāļāļĄ Awesome AZD AI Template Gallery āļŠāļģāļŦāļĢāļąāļāđāļāļĄāđāļāļĨāļ AZD āđāļāļāļēāļ° AI āļāļ§āđāļē 80 āđāļāļ āļāļĢāļāļāļāļĨāļļāļĄāļŦāļĨāļēāļĒāļ āļēāļĐāļēāđāļĨāļ°āļŠāļāļēāļāļāļēāļĢāļāđ
Next Steps
- Try the Examples: āđāļĢāļīāđāļĄāļāđāļ§āļĒāđāļāļĄāđāļāļĨāļāļāļĩāđāļŠāļĢāđāļēāļāđāļ§āđāđāļĨāđāļ§āļāļķāđāļāļāļĢāļāļāļąāļāļāļĢāļāļĩāđāļāđāļāļēāļāļāļāļāļāļļāļ
- Customize for Your Needs: āļāļĢāļąāļāđāļāđāļāđāļāļĢāļāļŠāļĢāđāļēāļāļāļ·āđāļāļāļēāļāđāļĨāļ°āđāļāđāļāđāļāļāļāļĨāļīāđāļāļāļąāļ
- Add Monitoring: āļāļģāļāļēāļĢāļŠāļąāļāđāļāļāļāļēāļĢāļāđāļāļĢāļāļ§āļāļāļĢāļĄāļēāđāļāđ
- Optimize Costs: āļāļĢāļąāļāđāļāđāļāļāļēāļĢāļāļąāđāļāļāđāļēāļŠāļģāļŦāļĢāļąāļāļāļāļāļĢāļ°āļĄāļēāļāļāļāļāļāļļāļ
- Secure Your Deployment: āļāļģāļĢāļđāļāđāļāļāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļāļāļāļāđāļāļĢāļĄāļēāđāļāđ
- Scale to Production: āđāļāļīāđāļĄāļāļĩāđāļāļāļĢāđāļŦāļĨāļēāļĒāļ āļđāļĄāļīāļ āļēāļāđāļĨāļ°āļāļ§āļēāļĄāļāļĢāđāļāļĄāđāļāđāļāļēāļāļŠāļđāļ
ðŊ Hands-On Exercises
Exercise 1: Deploy Microsoft Foundry Models Chat App (30 minutes)
Goal: āļāļĢāļąāļāđāļāđāđāļĨāļ°āļāļāļŠāļāļāđāļāļāđāļāļ AI āļāļĢāđāļāļĄāđāļāđāđāļāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄāļāļĢāļīāļ
# āđāļĢāļīāđāļĄāļāđāļāđāļāļĄāđāļāļĨāļ
mkdir ai-chat-demo && cd ai-chat-demo
azd init --template azure-search-openai-demo
# āļāļąāđāļāļāđāļēāļāļąāļ§āđāļāļĢāļŠāļ āļēāļāđāļ§āļāļĨāđāļāļĄ
azd env set AZURE_LOCATION eastus2
azd env set AZURE_OPENAI_CAPACITY 30
# āļāļĢāļąāļāđāļāđ
azd up
# āļāļāļŠāļāļāđāļāļāļāļĨāļīāđāļāļāļąāļ
WEB_URL=$(azd show --output json | jq -r '.services.web.endpoint')
echo "Chat app: $WEB_URL"
# āļāļĢāļ§āļāļŠāļāļāļāļēāļĢāļāļģāļāļēāļāļāļāļ AI
azd monitor
# āļāļģāļāļ§āļēāļĄāļŠāļ°āļāļēāļ
azd down --force --purge
Success Criteria:
- āļāļĢāļąāļāđāļāđāļŠāļģāđāļĢāđāļāđāļāļĒāđāļĄāđāļĄāļĩāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļ§āļāļē
- āļŠāļēāļĄāļēāļĢāļāđāļāđāļēāļāļķāļāļāļīāļāđāļāļāļĢāđāđāļāļāđāļāļāđāļāđāļāļĢāļēāļ§āđāđāļāļāļĢāđ
- āļŠāļēāļĄāļēāļĢāļāļāļēāļĄāļāļģāļāļēāļĄāđāļĨāļ°āđāļāđāļĢāļąāļāļāļģāļāļāļāļāļēāļ AI
- Application Insights āđāļŠāļāļāļāđāļāļĄāļđāļĨāđāļāļĢāļĄāļēāļāļĢ
- āļĨāđāļēāļāļāļĢāļąāļāļĒāļēāļāļĢāļŠāļģāđāļĢāđāļ
Estimated Cost: $5-10 āļŠāļģāļŦāļĢāļąāļāļāļēāļĢāļāļāļŠāļāļ 30 āļāļēāļāļĩ
Exercise 2: Configure Multi-Model Deployment (45 minutes)
Goal: āļāļĢāļąāļāđāļāđāđāļĄāđāļāļĨ AI āļŦāļĨāļēāļĒāļāļąāļ§āđāļāļĒāđāļāđāļāļēāļĢāļāļąāđāļāļāđāļēāļāļĩāđāđāļāļāļāđāļēāļ
# āļŠāļĢāđāļēāļāļāļēāļĢāļāļģāļŦāļāļāļāđāļē Bicep āļāļĩāđāļāļģāļŦāļāļāđāļāļ
cat > infra/ai-models.bicep << 'EOF'
param openAiAccountName string
param location string
resource openAi 'Microsoft.CognitiveServices/accounts@2023-05-01' existing = {
name: openAiAccountName
}
// gpt-4.1-mini for general chat
resource gpt4omini 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = {
parent: openAi
name: 'gpt-4.1-mini'
properties: {
model: {
format: 'OpenAI'
name: 'gpt-4.1-mini'
version: '2024-07-18'
}
scaleSettings: {
scaleType: 'Standard'
capacity: 30
}
}
}
// Text embedding for search
resource embedding 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = {
parent: openAi
name: 'text-embedding-3-large'
properties: {
model: {
format: 'OpenAI'
name: 'text-embedding-3-large'
version: '1'
}
scaleSettings: {
scaleType: 'Standard'
capacity: 50
}
}
dependsOn: [gpt4omini]
}
EOF
# āļāļģāđāļāđāļāđāđāļĨāļ°āļāļĢāļ§āļāļŠāļāļ
azd provision
azd show
Success Criteria:
- āđāļĄāđāļāļĨāļŦāļĨāļēāļĒāļāļąāļ§āļāļđāļāļāļĢāļąāļāđāļāđāļŠāļģāđāļĢāđāļ
- āļāļģāļŦāļāļāļāļ§āļēāļĄāļāļļāļāđāļēāļāļāļąāļāđāļāđ
- āđāļĄāđāļāļĨāđāļāđāļēāļāļķāļāđāļāđāļāđāļēāļ API
- āļŠāļēāļĄāļēāļĢāļāđāļĢāļĩāļĒāļāđāļāđāļāļąāđāļāļŠāļāļāđāļĄāđāļāļĨāļāļēāļāđāļāļāļāļĨāļīāđāļāļāļąāļ
Exercise 3: Implement Cost Monitoring (20 minutes)
Goal: āļāļąāđāļāļāđāļēāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāļāļāļāļĢāļ°āļĄāļēāļāđāļĨāļ°āļāļīāļāļāļēāļĄāļāđāļēāđāļāđāļāđāļēāļĒ
# āđāļāļīāđāļĄāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāļāļāļāļĢāļ°āļĄāļēāļāđāļ Bicep
cat >> infra/main.bicep << 'EOF'
resource budget 'Microsoft.Consumption/budgets@2023-05-01' = {
name: 'ai-monthly-budget'
properties: {
timePeriod: {
startDate: '2024-01-01'
endDate: '2025-12-31'
}
timeGrain: 'Monthly'
amount: 200
category: 'Cost'
notifications: {
notification1: {
enabled: true
operator: 'GreaterThan'
threshold: 80
contactEmails: ['your-email@example.com']
}
notification2: {
enabled: true
operator: 'GreaterThan'
threshold: 100
contactEmails: ['your-email@example.com']
}
}
}
}
EOF
# āļāļĢāļąāļāđāļāđāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāļāļāļāļĢāļ°āļĄāļēāļ
azd provision
# āļāļĢāļ§āļāļŠāļāļāļāđāļēāđāļāđāļāđāļēāļĒāļāļąāļāļāļļāļāļąāļ
az consumption usage list --start-date $(date -d '7 days ago' +%Y-%m-%d) --end-date $(date +%Y-%m-%d)
Success Criteria:
- āļŠāļĢāđāļēāļāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāļāļāļāļĢāļ°āļĄāļēāļāđāļ Azure āļŠāļģāđāļĢāđāļ
- āļāļąāđāļāļāđāļēāļāļēāļĢāđāļāđāļāđāļāļ·āļāļāļāļēāļāļāļĩāđāļĄāļĨ
- āļŠāļēāļĄāļēāļĢāļāļāļđāļāđāļāļĄāļđāļĨāļāđāļēāđāļāđāļāđāļēāļĒāđāļ Azure Portal
- āļāļąāđāļāļāđāļēāļāļĩāļāļāļģāļāļąāļāļāļāļāļĢāļ°āļĄāļēāļāđāļŦāļĄāļēāļ°āļŠāļĄ
ðĄ Frequently Asked Questions
āļāļąāļāļāļ°āļĨāļāļāđāļēāđāļāđāļāđāļēāļĒ Microsoft Foundry Models āđāļāļāđāļ§āļāļāļąāļāļāļēāļĢāļ°āļāļāđāļāđāļāļĒāđāļēāļāđāļĢ?
- āđāļāđ Free Tier: Microsoft Foundry Models āđāļŦāđāđāļāđāļāđāļāļāļĢāļĩ 50,000 āđāļāđāļāđāļ/āđāļāļ·āļāļ
- āļĨāļāļāļ§āļēāļĄāļāļļ: āļāļąāđāļāļāđāļēāļāļ§āļēāļĄāļāļļāđāļāđāļ 10 TPM āđāļāļ 30+ āđāļāļāđāļ§āļāļāļąāļāļāļē
- āđāļāđ azd down: āļāļĨāļāļāļĢāļąāļāļĒāļēāļāļĢāđāļĄāļ·āđāļāļāļāļāđāļĄāđāđāļāđāļāļąāļāļāļē
- āđāļāļāļāļēāļĢāļāļāļāļāļĨāļąāļ: āđāļāđ Redis cache āļŠāļģāļŦāļĢāļąāļāļāļģāļāļēāļĄāļāđāļģāđ
- āđāļāđ Prompt Engineering: āļĨāļāļāļēāļĢāđāļāđāđāļāđāļāđāļāļāđāļ§āļĒāļāļēāļĢāļāļąāđāļāļāđāļēāļāļģāļŠāļąāđāļāļāļĩāđāļĄāļĩāļāļĢāļ°āļŠāļīāļāļāļīāļ āļēāļ
# āļāļēāļĢāļāļģāļŦāļāļāļāđāļēāļāļēāļĢāļāļąāļāļāļē
azd env set AZURE_OPENAI_CAPACITY 10
azd env set ENABLE_RESPONSE_CACHE true
āļāļ§āļēāļĄāđāļāļāļāđāļēāļāļĢāļ°āļŦāļ§āđāļēāļ Microsoft Foundry Models āļāļąāļ OpenAI API āļāļ·āļāļāļ°āđāļĢ?
Microsoft Foundry Models:
- āļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāđāļĨāļ°āļāļēāļĢāļāļāļīāļāļąāļāļīāļāļēāļĄāļāđāļāļāļģāļŦāļāļāļŠāļģāļŦāļĢāļąāļāļāļāļāđāļāļĢ
- āļāļēāļĢāļĢāļ§āļĄāđāļāļĢāļ·āļāļāđāļēāļĒāļŠāđāļ§āļāļāļąāļ§
- āļāļēāļĢāļĢāļąāļāļāļĢāļ°āļāļąāļ SLA
- āļāļēāļĢāļāļīāļŠāļđāļāļāđāļāļąāļ§āļāļāļāđāļ§āļĒ managed identity
- āđāļāļ§āļāđāļēāļāļĩāđāļŠāļđāļāļāļ§āđāļē
OpenAI API:
- āđāļāđāļēāļāļķāļāđāļĄāđāļāļĨāđāļŦāļĄāđāđāļāđāđāļĢāđāļ§āļāļ§āđāļē
- āļāļēāļĢāļāļąāđāļāļāđāļēāļāđāļēāļĒāļāļ§āđāļē
- āļĢāļ°āļāļąāļāļāļēāļĢāđāļāđāļēāļāļķāļāļāđāļģāļāļ§āđāļē
- āđāļāđāļāļēāļāđāļāđāđāļāļāļīāļāđāļāļāļĢāđāđāļāđāļāļŠāļēāļāļēāļĢāļāļ°āđāļāđāļēāļāļąāđāļ
āļŠāļģāļŦāļĢāļąāļāđāļāļāļāļĨāļīāđāļāļāļąāļāđāļāļĢāļ°āļāļąāļāļāļēāļĢāļāļĨāļīāļ āđāļāļ°āļāļģāđāļŦāđāđāļāđ Microsoft Foundry Models.
āļāļąāļāļāļ°āđāļāđāđāļāļāđāļāļāļīāļāļāļĨāļēāļāđāļāļ§āļāđāļēāļāļĩāđāđāļāļīāļāļāļāļ Microsoft Foundry Models āđāļāđāļāļĒāđāļēāļāđāļĢ?
# āļāļĢāļ§āļāļŠāļāļāđāļāļ§āļāđāļēāļāļąāļāļāļļāļāļąāļ
az cognitiveservices usage list --location eastus2
# āļĨāļāļāļ āļđāļĄāļīāļ āļēāļāļāļ·āđāļ
azd env set AZURE_LOCATION westus2
azd up
# āļĨāļāļāļ§āļēāļĄāļāļļāļāļąāđāļ§āļāļĢāļēāļ§
azd env set AZURE_OPENAI_CAPACITY 10
azd provision
# āļāļāđāļāļīāđāļĄāđāļāļ§āļāđāļē
# āđāļāļāļĩāđ Azure Portal > Quotas > āļāļāđāļāļīāđāļĄāđāļāļ§āļāđāļē
āļāļąāļāļŠāļēāļĄāļēāļĢāļāđāļāđāļāđāļāļĄāļđāļĨāļāļāļāļāļąāļ§āđāļāļāļāļąāļ Microsoft Foundry Models āđāļāđāđāļŦāļĄ?
āđāļāđāđāļĨāļĒ! āđāļāđ Azure AI Search āļŠāļģāļŦāļĢāļąāļ RAG (Retrieval Augmented Generation):
# azure.yaml
services:
ai:
env:
- AZURE_SEARCH_ENDPOINT
- AZURE_SEARCH_INDEX
- AZURE_OPENAI_ENDPOINT
āļāļđāđāļāļĄāđāļāļĨāļ azure-search-openai-demo
āļāļąāļāļāļ°āļĢāļąāļāļĐāļēāļāļ§āļēāļĄāļāļĨāļāļāļ āļąāļĒāļāļāļ AI model endpoints āđāļāđāļāļĒāđāļēāļāđāļĢ?
āđāļāļ§āļāļēāļāļāļāļīāļāļąāļāļīāļāļĩāđāļāļĩāļāļĩāđāļŠāļļāļ:
- āđāļāđ Managed Identity (āđāļĄāđāđāļāđāļāļĩāļĒāđ API)
- āđāļāļīāļāđāļāđāļāļēāļ Private Endpoints
- āļāļģāļŦāļāļāļāđāļē network security groups
- āđāļāđāļāļēāļĢāļāļģāļāļąāļāļāļąāļāļĢāļē (rate limiting)
- āđāļāđ Azure Key Vault āļŠāļģāļŦāļĢāļąāļāđāļāđāļāļāļ§āļēāļĄāļĨāļąāļ
// Managed Identity authentication
resource webAppIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: 'web-identity'
location: location
}
resource openAIRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
scope: openAIAccount
name: guid(openAIAccount.id, webAppIdentity.id)
properties: {
roleDefinitionId: subscriptionResourceId('Microsoft.Authorization/roleDefinitions', '5e0bd9bd-7b93-4f28-af87-19fc36ad61bd')
principalId: webAppIdentity.properties.principalId
}
}
āļāļļāļĄāļāļāđāļĨāļ°āļāļēāļĢāļŠāļāļąāļāļŠāļāļļāļ
- Microsoft Foundry Discord: #Azure channel
- AZD GitHub: āļāļąāļāļŦāļēāđāļĨāļ°āļāļēāļĢāļāļ āļīāļāļĢāļēāļĒ
- Microsoft Learn: āđāļāļāļŠāļēāļĢāļāļĒāđāļēāļāđāļāđāļāļāļēāļāļāļēāļĢ
- Agent Skills: āļāļąāļāļĐāļ° Microsoft Foundry āļāļ skills.sh - āļāļīāļāļāļąāđāļāļāļąāļāļĐāļ° Azure + Foundry agent āđāļāļāļąāļ§āđāļāđāđāļāļāļāļāļāļļāļāļāđāļ§āļĒāļāļģāļŠāļąāđāļ
npx skills add microsoft/github-copilot-for-azure
āļāļēāļĢāļāļģāļāļēāļāļāļ:
- ð āļŦāļāđāļēāđāļĢāļāļŦāļĨāļąāļāļŠāļđāļāļĢ: AZD For Beginners
- ð āļāļāļāļąāļāļāļļāļāļąāļ: āļāļāļāļĩāđ 2 - āļāļēāļĢāļāļąāļāļāļē AI-First
- ⎠ïļ āļāļāļāđāļāļāļŦāļāđāļē: āļāļāļāļĩāđ 1: āđāļāļĢāđāļāļāļāđāđāļĢāļāļāļāļāļāļļāļ
- âĄïļ āļāļąāļāđāļ: āļāļēāļĢāļāļĢāļąāļāđāļāđāđāļĄāđāļāļĨ AI
- ð āļāļāļāļąāļāđāļ: āļāļāļāļĩāđ 3: āļāļēāļĢāļāļģāļŦāļāļāļāđāļē
āļāđāļāļāļāļēāļĢāļāļ§āļēāļĄāļāđāļ§āļĒāđāļŦāļĨāļ·āļ? āđāļāđāļēāļĢāđāļ§āļĄāļāļēāļĢāļāļ āļīāļāļĢāļēāļĒāļāļļāļĄāļāļāļāļāļāđāļĢāļēāļŦāļĢāļ·āļāđāļāļīāļāļāļĢāļ°āđāļāđāļāļāļąāļāļŦāļēāđāļāļāļĩāđāđāļāđāļāđāļāđāļ āļāļļāļĄāļāļ Azure AI + AZD āļāļĢāđāļāļĄāļāđāļ§āļĒāđāļŦāđāļāļļāļāļāļĢāļ°āļŠāļāļāļ§āļēāļĄāļŠāļģāđāļĢāđāļ!
āļāđāļāļāļāļīāđāļŠāļāļāļ§āļēāļĄāļĢāļąāļāļāļīāļāļāļāļ:
āđāļāļāļŠāļēāļĢāļāļāļąāļāļāļĩāđāđāļāđāļāļđāļāđāļāļĨāđāļāļĒāđāļāđāļāļĢāļīāļāļēāļĢāđāļāļĨāļ āļēāļĐāļēāļāļąāļāđāļāļĄāļąāļāļī Co-op Translator āđāļĄāđāđāļĢāļēāļāļ°āļāļĒāļēāļĒāļēāļĄāđāļŦāđāļāđāļāļĄāļđāļĨāļāļđāļāļāđāļāļāļāļĩāđāļŠāļļāļ āđāļāļĢāļāļāļĢāļēāļāļ§āđāļēāļāļēāļĢāđāļāļĨāļāļąāļāđāļāļĄāļąāļāļīāļāļēāļāļĄāļĩāļāđāļāļāļīāļāļāļĨāļēāļāļŦāļĢāļ·āļāļāļ§āļēāļĄāđāļĄāđāļāļđāļāļāđāļāļ āđāļāļāļŠāļēāļĢāļāđāļāļāļāļąāļāđāļāļ āļēāļĐāļēāļāđāļāļāļēāļāļāļ§āļĢāļāļđāļāļāļīāļāļēāļĢāļāļēāđāļāđāļāđāļŦāļĨāđāļāļāđāļāļĄāļđāļĨāļāļĩāđāđāļāļ·āđāļāļāļ·āļāđāļāđ āļŠāļģāļŦāļĢāļąāļāļāđāļāļĄāļđāļĨāļāļĩāđāļŠāļģāļāļąāļ āļāļ§āļĢāđāļāđāļāļēāļĢāđāļāļĨāđāļāļĒāļĄāļ·āļāļāļēāļāļĩāļāļāļĩāđāļĄāļĩāļāļ§āļēāļĄāļāļģāļāļēāļ āđāļĢāļēāđāļĄāđāļĢāļąāļāļāļīāļāļāļāļāļāđāļāļāļ§āļēāļĄāđāļāđāļēāđāļāļāļīāļāļŦāļĢāļ·āļāļāļēāļĢāļāļĩāļāļ§āļēāļĄāļāļīāļāļāļĨāļēāļāđāļ āđ āļāļĩāđāļāļēāļāđāļāļīāļāļāļķāđāļāļāļēāļāļāļēāļĢāđāļāđāļāļēāļĢāđāļāļĨāļāļĩāđ