You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit f679c5f
Browse filesBrowse the repository at this point in the historyBrowse files
|`gpt-4.1-mini`|`aif-core-{suffix}`| East US 2 | GlobalStandard 30K TPM |`CHAT_MODEL`| General purpose chat |
53
+
|`gpt-5.4-mini`|`aif-core-{suffix}`| East US 2 | GlobalStandard 30K TPM |`CHAT_MODEL`| General purpose chat |
54
54
|`text-embedding-3-large`|`aif-core-{suffix}`| East US 2 | Standard 50K TPM |`EMBEDDING_MODEL`| Vector embeddings |
55
-
|`o3-deep-research`|`aif-research-{suffix}`| Norway East | GlobalStandard 10K TPM |`RESEARCH_MODEL`| Advanced reasoning and deep research |
55
+
|`deep-research`(`gpt-5.6-sol`) |`aif-research-{suffix}`| Norway East | GlobalStandard 200K TPM |`RESEARCH_MODEL`| Advanced reasoning and deep research |
56
56
|`Phi-4`|`aif-oss-{suffix}`| West US 3 | GlobalStandard 1K TPM |`OSS_MODEL`| Open-weights model from Microsoft |
57
57
58
58
**APIM routing rules** (evaluated in order - specific URL patterns win over the default):
59
59
60
60
| Rule | URL pattern | Backend | Auth |
61
61
|------|------------|---------|------|
62
-
| Research |`/deployments/o3-deep-research/*`|`aif-research-{suffix}`| Managed Identity |
62
+
| Research |`/deployments/deep-research/*`, and `/responses` with `"model": "deep-research"`|`aif-research-{suffix}`| Managed Identity |
Model access via connection: `core-alpha/gpt-4.1-mini`
91
+
Model access via connection: `core-alpha/gpt-5.4-mini`
92
92
93
93
---
94
94
@@ -141,7 +141,7 @@ Content Understanding requires a **dedicated** AI Services account with local mo
141
141
|----------|------|--------|-------------|
142
142
|`aif-cu-{suffix}`| Foundry Account (AI Services) | East US 2 |`CU_ACCOUNT_ENDPOINT`|
143
143
|`cu-project`| Foundry Project | East US 2 |`CU_FOUNDRY_PROJECT`, `CU_FOUNDRY_PROJECT_ENDPOINT`|
144
-
|`gpt-4.1-mini` (local) | Model Deployment on `aif-cu-{suffix}`| East US 2 | used by CU field extraction |
144
+
|`gpt-5.4-mini` (local) | Model Deployment on `aif-cu-{suffix}`| East US 2 | used by CU field extraction |
145
145
|`text-embedding-3-large` (local) | Model Deployment on `aif-cu-{suffix}`| East US 2 | used by CU embedding |
146
146
147
147
Connection: `cu-project` → `landing-zone-apim` (`CU_APIM_CONNECTION`) with key `CU_GATEWAY_KEY`
@@ -159,23 +159,25 @@ All model traffic enters through the single APIM gateway (`apim-foundry-{suffix}
159
159
APIM evaluates operations in specificity order - an exact literal path beats a wildcard path. The `{deployment-id}` placeholder in a `urlTemplate` is a wildcard; a literal model name in the same position is an exact match and always takes priority.
160
160
161
161
```
162
-
POST /deployments/o3-deep-research/chat/completions
→ wildcard match: operation "chat" → no operation policy → falls through to API-level policy → openai backend
170
170
171
171
POST /deployments/text-embedding-3-large/embeddings
172
172
→ wildcard match: operation "embeddings" → no operation policy → falls through to API-level policy → openai backend
173
173
174
174
POST /responses
175
-
→ exact match: operation "responses" → no operation policy → falls through to API-level policy → openai backend
175
+
→ exact match: operation "responses" → operation policy reads "model" from the body
176
+
→ "deep-research": openai-research backend
177
+
→ anything else: openai backend (set by the API-level policy)
176
178
```
177
179
178
-
Operations that have **no operation-level policy** inherit the **API-level (All operations) policy**, which sets the default backend to `openai` (`aif-core-{suffix}`).
180
+
Operations that have **no operation-level policy** inherit the **API-level (All operations) policy**, which sets the default backend to `openai` (`aif-core-{suffix}`). The Responses API carries the model in the request body rather than the URL, so URL matching cannot route it; the `responses` operation policy runs the API-level policy first (`<base />`) and then overrides the backend for `deep-research`.
179
181
180
182
### Inbound policy per operation
181
183
@@ -185,19 +187,19 @@ Operations that have **no operation-level policy** inherit the **API-level (All
|`embeddings`| Embeddings | No - inherits API-level | same as above |
188
-
|`responses`| Responses |No - inherits API-level | same as above|
190
+
|`responses`| Responses |Yes |API-level policy, then `set-backend-service backend-id="openai-research"` when the body's `model` is `deep-research`|
189
191
190
192
> **Policy naming note:** every APIM policy resource has the name `policy` - it is not a meaningful identifier. What distinguishes policies is which operation (or API) they are attached to. Operations with no policy of their own fall through to the API-level policy attached to "All operations".
191
193
192
194
### Operation → backend → Foundry account → model
193
195
194
196
| APIM operation | Example POST path | Backend ID | Foundry account | Model |
|`chat-oss`|`POST /deployments/Phi-4/chat/completions`|`openai-oss`|`aif-oss-{suffix}` (West US 3) |`Phi-4`|
198
-
|`chat`|`POST /deployments/gpt-4.1-mini/chat/completions`|`openai`|`aif-core-{suffix}` (East US 2) |`gpt-4.1-mini`|
200
+
|`chat`|`POST /deployments/gpt-5.4-mini/chat/completions`|`openai`|`aif-core-{suffix}` (East US 2) |`gpt-5.4-mini`|
199
201
|`embeddings`|`POST /deployments/text-embedding-3-large/embeddings`|`openai`|`aif-core-{suffix}` (East US 2) |`text-embedding-3-large`|
200
-
|`responses`|`POST /responses`|`openai`|`aif-core-{suffix}` (East US 2) | as specified by `{connection}/{model}` in request body |
202
+
|`responses`|`POST /responses`|`openai`, or `openai-research` for `deep-research`|`aif-core-{suffix}` (East US 2) or `aif-research-{suffix}` (Norway East) | as specified by `model` in the request body |
201
203
202
204
### Backend resources
203
205
@@ -217,17 +219,17 @@ Example - research model request:
217
219
218
220
```
219
221
Client
220
-
POST https://apim-foundry-{suffix}.azure-api.net/openai/deployments/o3-deep-research/chat/completions
222
+
POST https://apim-foundry-{suffix}.azure-api.net/openai/deployments/deep-research/chat/completions
221
223
↓ APIM matches operation "chat-research" (exact URL match beats wildcard)
↓ swap api-key header for managed identity Bearer token
224
226
↓ prepend backend base URL, keep path suffix unchanged
225
-
POST https://aif-research-{suffix}.cognitiveservices.azure.com/openai/deployments/o3-deep-research/chat/completions
226
-
↓ Foundry account looks up deployment "o3-deep-research"
227
-
→ o3-deep-research model responds
227
+
POST https://aif-research-{suffix}.cognitiveservices.azure.com/openai/deployments/deep-research/chat/completions
228
+
↓ Foundry account looks up deployment "deep-research"
229
+
→ gpt-5.6-sol responds
228
230
```
229
231
230
-
The same mechanics apply to the default backend - for `gpt-4.1-mini` the path `/deployments/gpt-4.1-mini/chat/completions` passes through untouched, with only the host replaced by `aif-core-{suffix}.cognitiveservices.azure.com`.
232
+
The same mechanics apply to the default backend - for `gpt-5.4-mini` the path `/deployments/gpt-5.4-mini/chat/completions` passes through untouched, with only the host replaced by `aif-core-{suffix}.cognitiveservices.azure.com`.
231
233
232
234
### Authentication
233
235
@@ -259,7 +261,7 @@ The APIM + hub Foundry account pattern is shared platform infrastructure. Team-l
259
261
260
262
**1. Quota contention**
261
263
262
-
The hub's `gpt-4.1-mini` deployment is provisioned at 30K TPM GlobalStandard, shared across all four teams via APIM. There is no mechanism to ring-fence a portion of that quota for a specific workload. Any team workload that places additional calls against core model deployments - for example, the Memory API's per-turn summarisation and fact-extraction calls, or embedding lookups - competes silently with all other inference traffic on the same quota pool. A single team's memory workload can starve the other three teams' APIM-routed requests.
264
+
The hub's `gpt-5.4-mini` deployment is provisioned at 30K TPM GlobalStandard, shared across all four teams via APIM. There is no mechanism to ring-fence a portion of that quota for a specific workload. Any team workload that places additional calls against core model deployments - for example, the Memory API's per-turn summarisation and fact-extraction calls, or embedding lookups - competes silently with all other inference traffic on the same quota pool. A single team's memory workload can starve the other three teams' APIM-routed requests.
263
265
264
266
**2. Hub ownership and blast radius**
265
267
@@ -273,7 +275,7 @@ Because the hub RG is excluded from the deny policy, model deployments there are
| Standard agents (no memory tools) |`rg-foundry-spoke-alpha-{suffix}`|`aif-spoke-alpha-{suffix}`| Uses `core-alpha/gpt-4.1-mini` via APIM connection |
278
+
| Standard agents (no memory tools) |`rg-foundry-spoke-alpha-{suffix}`|`aif-spoke-alpha-{suffix}`| Uses `core-alpha/gpt-5.4-mini` via APIM connection |
277
279
| Hosted agents |`rg-foundry-spoke-alpha-{suffix}`|`aif-spoke-alpha-{suffix}` (East US 2) | Uses existing spoke account - East US 2 is supported for hosted agents |
278
280
| Foundry IQ (KB + agentic retrieval) |`rg-foundry-multi-{suffix}`|`aif-spoke-multi-{suffix}` (existing) | Adds `iq-project` + `iq-search-{suffix}` to the shared account. No model deployments - deny policy is not violated. `iq` is a capability qualifier, not a team name. Dedicated APIM subscription (`foundry-gateway-iq`) isolates embedding batch quota from team traffic. |
279
281
| Custom MCP server (Contoso PMO KB) |`rg-foundry-core-{suffix}`|`aif-core-{suffix}` / `project-admin-{suffix}` (existing) | The agent and its tool catalog entry live on the admin project, which uses the core account's model deployments directly. The Azure Functions MCP server deploys into `rg-foundry-contoso-pmo-mcp`. |
@@ -326,7 +328,7 @@ flowchart TD
326
328
327
329
subgraph MEM_LOCAL["aif-memory - local deployments"]
| Light blue |`aif-core`| Primary core Foundry Account - hosts general-purpose and routing model deployments (East US 2). |
429
431
| Light violet |`aif-research`| Research hub Foundry Account - hosts advanced reasoning model deployments (Norway East). |
430
432
| Light fuchsia |`aif-oss`| OSS hub Foundry Account - hosts open-weights model deployments (West US 3). |
431
-
| Light rose |`aif-memory`| Memory Foundry Account - hosts local `gpt-4.1-mini` (summarisation) and `text-embedding-3-small` (indexing) deployments consumed directly by the Memory API runtime. |
433
+
| Light rose |`aif-memory`| Memory Foundry Account - hosts local `gpt-5.4-mini` (summarisation) and `text-embedding-3-small` (indexing) deployments consumed directly by the Memory API runtime. |
432
434
| Amber-orange |`rg-foundry-cu`| Content Understanding - dedicated Foundry account (`aif-cu`) with local model deployments for CU field extraction. Intentionally excluded from the deny-model-deployments policy. |
433
-
| Light orange |`aif-cu`| Content Understanding Foundry Account - hosts local `gpt-4.1-mini` (field extraction) and `text-embedding-3-large` (embeddings) deployments consumed by CU analyzers. |
435
+
| Light orange |`aif-cu`| Content Understanding Foundry Account - hosts local `gpt-5.4-mini` (field extraction) and `text-embedding-3-large` (embeddings) deployments consumed by CU analyzers. |
Copy file name to clipboardExpand all lines: 05-foundry-project-pattern-setup/05-02-deploy-foundry-core-gateway/05-02-01-deploy-foundry-core-gateway.ipynb
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -24,9 +24,9 @@
24
24
"\n",
25
25
"| Model | Hub | Purpose |\n",
26
26
"|-------|-----|---------|\n",
27
-
"| `gpt-4.1-mini` | aif-core | General purpose chat for all teams |\n",
27
+
"| `gpt-5.4-mini` | aif-core | General purpose chat for all teams |\n",
28
28
"| `text-embedding-3-large` | aif-core | Vector embeddings for search |\n",
29
-
"| `o3-deep-research` | aif-research | Advanced reasoning (only available in norwayeast) |\n",
29
+
"| `deep-research` (`gpt-5.6-sol`) | aif-research | Advanced reasoning and deep research (norwayeast) |\n",
30
30
"| `Phi-4` | aif-oss | Open-weights model from Microsoft (westus3) |\n",
31
31
"\n",
32
32
"## Naming conventions\n",
@@ -44,7 +44,7 @@
44
44
"\n",
45
45
"## Multi-region pattern\n",
46
46
"\n",
47
-
"Some models are only available in specific regions (o3-deep-research → norwayeast, Phi-4 → westus3). Rather than exposing multiple endpoints to consumers, APIM provides a **single gateway URL** and routes requests to the correct regional backend based on the deployment name in the URL path."
47
+
"Some models are only available in specific regions (Phi-4 → westus3; o3-deep-research, which `deep-research` replaced, was norwayeast-only). Rather than exposing multiple endpoints to consumers, APIM provides a **single gateway URL** and routes requests to the correct regional backend based on the deployment name in the URL path."
0 commit comments