# AI Gateway Configuration Patterns Step-by-step patterns for configuring Azure API Management as an AI Gateway. --- ## Pattern 1: Add AI Model Backend Connect Azure OpenAI or AI Foundry models to your APIM instance. ### Prerequisites - APIM instance deployed (use **azure-prepare** skill to deploy APIM — see [APIM deployment guide](https://learn.microsoft.com/azure/api-management/get-started-create-service-instance)) - Azure OpenAI or AI Foundry resource provisioned - System-assigned or user-assigned managed identity enabled on APIM ### Steps #### 1. Discover AI Resources ```bash # Find Azure OpenAI resources az cognitiveservices account list --query "[?kind=='OpenAI'].{name:name, rg:resourceGroup, endpoint:properties.endpoint}" -o table # Find AI Foundry resources (if using) az cognitiveservices account list --query "[?kind=='AIServices'].{name:name, rg:resourceGroup}" -o table ``` #### 2. Enable Managed Identity on APIM ```bash # Enable system-assigned identity az apim update --name --resource-group --set identity.type=SystemAssigned # Get principal ID PRINCIPAL_ID=$(az apim show --name --resource-group --query "identity.principalId" -o tsv) ``` #### 3. Grant RBAC Access ```bash AOAI_ID=$(az cognitiveservices account show --name --resource-group --query id -o tsv) az role assignment create \ --assignee "$PRINCIPAL_ID" \ --role "Cognitive Services User" \ --scope "$AOAI_ID" ``` #### 4. Create Backend ```bash az apim backend create \ --service-name \ --resource-group \ --backend-id openai-backend \ --protocol http \ --url "https://.openai.azure.com/openai" ``` #### 5. Import API (OpenAPI Spec) ```bash # Import the Azure OpenAI API specification az apim api import \ --service-name \ --resource-group \ --api-id azure-openai-api \ --path "openai" \ --specification-format OpenApi \ --specification-url "https://raw.githubusercontent.com/Azure/azure-rest-api-specs/main/specification/cognitiveservices/data-plane/AzureOpenAI/inference/stable/2024-02-01/inference.json" \ --service-url "https://.openai.azure.com/openai" ``` #### 6. Set Backend Policy Add managed identity authentication in ``: ```xml ``` --- ## Pattern 2: Load Balance Across Multiple AI Backends Distribute requests across multiple Azure OpenAI instances for higher throughput. ### Steps #### 1. Create Multiple Backends ```bash # Primary region az apim backend create --service-name --resource-group \ --backend-id openai-eastus --protocol http \ --url "https://.openai.azure.com/openai" # Secondary region az apim backend create --service-name --resource-group \ --backend-id openai-westus --protocol http \ --url "https://.openai.azure.com/openai" ``` #### 2. Create Backend Pool Using APIM backend pool (preview) or policy-based load balancing: ```xml ``` #### 3. Add Circuit Breaker (Retry on 429) ```xml ``` --- ## Pattern 3: Convert API to MCP Tool Expose an existing API through APIM as an MCP-compatible tool for AI agents. ### Steps 1. **Import API** into APIM using OpenAPI spec 2. **Add rate limiting** to protect the tool endpoint 3. **Add content safety** to filter harmful inputs 4. **Generate MCP manifest** pointing to the APIM endpoint ```xml ``` --- ## Pattern 4: Add Streaming Support Configure APIM to properly handle Server-Sent Events (SSE) for streaming AI responses. ```xml @(context.Request.Body.As()["stream"]?.Value() == true ? "text/event-stream" : "application/json") ``` > **Note**: Semantic caching and token metrics policies are NOT compatible with streaming responses. Use non-streaming for cost control scenarios. --- ## Pattern 5: Multi-Tenant AI Gateway Isolate tenants with per-client rate limiting and tracking. ```xml ``` --- ## Next Steps - Apply [governance policies](policies.md) to your configured backends - Review [troubleshooting](troubleshooting.md) for common configuration issues