28 min
Lesson 2 of 4
Enterprise Deployment Patterns
From the course Azure OpenAI Service
Deploy Azure OpenAI Service with enterprise patterns for security, scalability, and integration.
Authentication and Security
Managed Identity (Recommended)
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import AzureOpenAI
# No API keys — uses Azure AD identity
token_provider = get_bearer_token_provider(
DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default"
)
client = AzureOpenAI(
azure_endpoint="https://your-resource.openai.azure.com",
azure_ad_token_provider=token_provider,
api_version="2024-09-01-preview"
)
Private Endpoint Setup
# Create private endpoint for VNet isolation
az network private-endpoint create \
--name myOpenAIPrivateEndpoint \
--resource-group myRG \
--vnet-name myVNet \
--subnet mySubnet \
--private-connection-resource-id /subscriptions/.../openai/myOpenAI \
--group-id account \
--connection-name myOpenAIConnection
Semantic Kernel Integration
Building AI Applications
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
kernel = Kernel()
# Add Azure OpenAI service
kernel.add_service(AzureChatCompletion(
service_id="azure-gpt4o",
deployment_name="gpt-4o",
endpoint="https://your-resource.openai.azure.com",
api_key="your-key"
))
# Create prompts as functions
summarize = kernel.add_function(
function_name="summarize",
plugin_name="DocumentProcessing",
prompt="Summarize this document in 3 bullet points: {{$input}}"
)
# Execute
result = await kernel.invoke(summarize, input=document_text)
print(result)
Multi-Region Load Balancing
import random
from openai import AzureOpenAI
# Multiple regional endpoints for resilience
endpoints = [
{"url": "https://eastus.openai.azure.com", "key": "key1"},
{"url": "https://westeurope.openai.azure.com", "key": "key2"},
{"url": "https://australiaeast.openai.azure.com", "key": "key3"}
]
def get_client():
# Random selection for load distribution
endpoint = random.choice(endpoints)
return AzureOpenAI(
azure_endpoint=endpoint["url"],
api_key=endpoint["key"],
api_version="2024-09-01-preview"
)
# With retry and fallover
def invoke_with_fallback(prompt, retries=3):
for attempt in range(retries):
try:
client = get_client()
return client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": prompt}]
)
except Exception as e:
if attempt == retries - 1:
raise
Key Takeaways
- •Managed Identity eliminates API key management and improves security posture
- •Private endpoints isolate Azure OpenAI traffic within corporate VNet
- •Semantic Kernel provides a production-ready SDK for building AI applications
- •Multi-region deployment with load balancing ensures high availability
0 of 4 lessons marked complete
Progress is kept in this browser only.