Skill 1 · 25–30%

Plan and manage an Azure AI solution

The architecture and operations quarter of the exam. It rewards you for knowing which service to reach for, what a deployment type actually changes, why a 429 is not always a quota problem, and where each responsible-AI control is enforced.

Four objectives in this skill area:

1.1 Choose the appropriate Foundry services

This objective is pure decision-making, and it is the highest-density source of "which service?" questions in the whole exam. The diagram below is the map; the tables underneath are the tie-breakers.

flowchart TD
  Q["What does the workload need to do?"]
  Q --> G["Generate or reason<br/>over free text"] --> GM["Foundry Models<br/>LLM / SLM / reasoning"]
  Q --> R["Answer from<br/>private content"] --> RA{"How much content,<br/>how complex?"}
  RA -- "A handful of files,<br/>Foundry owns the lifecycle" --> FS["File search tool<br/>+ vector store"]
  RA -- "Enterprise corpus,<br/>filters, permissions, scale" --> AS["Azure AI Search index"]
  RA -- "Many sources, one reusable,<br/>permission-aware layer" --> IQ["Foundry IQ<br/>knowledge base"]
  Q --> P["Turn messy files into<br/>clean structured data"] --> CU["Content Understanding"]
  Q --> T["Bounded NLP / speech<br/>/ vision task"] --> FT["Foundry Tools<br/>Language · Speech · Translator · Vision"]
  Q --> A["Take actions,<br/>multi-step"] --> AG["Foundry Agent Service<br/>+ Toolbox"]
  Q --> W["Public web facts"] --> WS["Web search tool /<br/>Grounding with Bing"]
Routing a requirement to a Foundry capability. Most exam scenarios are one of these seven branches.

Choosing a model for each task

The trade-off table lives on the Foundations page; what follows is the part the exam actually phrases as scenarios.

Scenario wordingSignalAnswer
"Millions of short classifications per day, cost per call is the constraint"Volume + narrow taskSmall language model (Phi family / mini tier)
"Must run on a factory device with intermittent connectivity"EdgeSLM, or a Foundry Tools container if the task is bounded
"Plan a multi-step remediation and justify each step"Deep reasoningReasoning model (o-series or equivalent)
"Answer questions about the photo the user uploaded"Image + text inputMultimodal model
"Extract 14 named fields from scanned invoices with a confidence score per field"Schema + confidence + auditContent Understanding, not a raw prompt
"Redact national ID numbers before the text leaves our tenant"Deterministic complianceAzure Language PII detection (container if it must stay on-prem)
"Find semantically similar support tickets"Similarity, no generationEmbedding model + vector search

Choosing a retrieval and indexing method

"Choose an appropriate method for retrieval and indexing" is its own bullet in the outline. Four options, and they are not interchangeable:

OptionWhat it isChoose it whenLimits
File search tool Foundry-hosted vector stores over files you upload to the project A curated knowledge base where you want Foundry to own ingestion and the vector-store lifecycle; fastest path to a working RAG agent No enterprise-grade filtering, security trimming or custom skillsets
Azure AI Search index Your own index with keyword, vector, hybrid and semantic ranking, filters, facets, scoring profiles and skillsets The corpus is large or changing, you need filters and relevance tuning, or the index is already the source of truth You own the indexer, the schema and the refresh
Foundry IQ knowledge base A managed knowledge layer over Azure AI Search: one or more knowledge sources, an optional LLM for query planning and answer synthesis, and agentic retrieval Multiple sources behind one reusable, permission-aware retrieval surface shared by several agents Adds a planning model to the cost and latency budget
Agentic retrieval A multi-query pipeline: plan → decompose into subqueries → retrieve in parallel → semantically rerank → merge Complex, multi-part questions where a single query loses recall More model calls per answer; needs a knowledge base

File search vs Azure AI Search — the deciding words

Watch for "filter by department", "only show documents the user is allowed to see", "millions of documents", "tune relevance", "enrich during indexing" or "the index already exists". Any of those means Azure AI Search. Words like "a folder of PDFs", "get a prototype working" or "let the service manage the vector store" mean file search.

Memory, tools and knowledge for agents

Three different things that scenarios deliberately blur:

Conversation state
The transcript of the current interaction, held server-side as a conversation of items. Pass the conversation id on each call and history is maintained for you. You can bring your own Azure Cosmos DB for conversation state when compliance requires you to own the store.
Semantic memory
Durable facts and summaries extracted from conversations and stored by scope, then retrieved in later sessions. This is what "remembers the user across sessions" means — it is deliberately not the full transcript. Extraction is asynchronous, so a write is not immediately readable.
Knowledge
Grounding content the agent retrieves from: file search, Azure AI Search, Foundry IQ, SharePoint, Fabric, Work IQ, or the public web. Knowledge is read; memory is learned.
Tools
Actions the agent can take: functions, OpenAPI endpoints, MCP servers, code interpreter, browser automation, agent-to-agent calls. Curated into a toolbox for reuse and central governance.

A phrasing cue that keeps paying out

"The agent should recall the user's preferences next week" → memory. "The agent should cite the HR policy" → knowledge / retrieval. "The agent should create the ticket" → tool. "The agent should keep track of this conversation" → conversation state.

1.2 Set up AI solutions in Foundry

Designing the Azure infrastructure

A defensible default enterprise topology, and the reasoning behind each choice:

  1. One Foundry resource per security/governance boundary — typically per environment (dev, test, prod) or per business unit with genuinely different compliance needs. Not one per team: that multiplies networking and policy work for no benefit.
  2. One project per team or application inside that resource. Projects inherit the parent's security and connections and can carry their own RBAC.
  3. Model deployments at resource scope, shared by the projects. Size them with quota in mind — see quota and rate limits.
  4. Connections for everything external: Azure AI Search for retrieval, Storage for documents, Application Insights for traces, Cosmos DB if you must own conversation state. Authenticate with managed identity, and remember the role assignment on the target.
  5. Private networking where required: private endpoints on the Foundry resource and every connected service, public network access disabled. Note that key-based auth is not supported with private networking for the Azure AI Search tool — use the project managed identity.
  6. Guardrails and Azure Policy applied at resource scope so every project inherits them.
  7. Observability wired up from day one: Application Insights connected, tracing on, an evaluation dataset in source control.

High availability and regional failure

With Global Standard and Data Zone Standard, if the primary region has an interruption, all traffic initially routed there is affected — global routing is not automatic disaster recovery. For real resilience you deploy the same model in more than one region and fail over (or load balance) in front of it, typically through a gateway such as Azure API Management.

Configuring model and agent deployments

A deployment binds a model, a version, a deployment type (the SKU) and a capacity allocation. Capacity is the lever that sets your rate limits.

Azure CLI · model deployment
# Deploy a model with the Azure CLI. The SKU name is the deployment TYPE.
az cognitiveservices account deployment create \
  --name my-foundry \
  --resource-group rg-ai103 \
  --deployment-name gpt-5-mini \
  --model-name gpt-5-mini \
  --model-version "2026-04-01" \
  --model-format OpenAI \
  --sku-name GlobalStandard \
  --sku-capacity 50          # capacity units -> TPM and, proportionally, RPM

Other settings the exam expects you to know exist:

  • Version upgrade policy — auto-update to default, upgrade when expired, or pin. Models retire; pinning without a plan means an outage on retirement day.
  • Guardrail assignment — every deployment gets one; the default is Microsoft.DefaultV2.
  • Dynamic quota preview — lets a standard deployment opportunistically exceed its TPM when spare capacity exists. It can only ever raise the effective limit, never lower it, and the extra tokens bill at normal rates.
  • Agent deployments — prompt agents are created as agent versions through the portal or SDK; hosted agents ship as a container image or a .zip that Foundry builds. Publishing promotes an agent to a managed resource with a stable endpoint.

CI/CD for Foundry projects

flowchart LR
  DEV["Developer<br/>branch"] --> PR["Pull request"]
  PR --> CI["CI: lint, unit tests,<br/>evaluate agent against<br/>a golden dataset"]
  CI -->|"quality gate passes"| BICEP["Deploy infra<br/>Bicep / Terraform:<br/>resource, project,<br/>deployments, connections"]
  BICEP --> AGENT["Create or update<br/>agent version via SDK"]
  AGENT --> TEST["Test project<br/>smoke + safety evals"]
  TEST -->|"promote"| PROD["Prod project<br/>publish agent,<br/>stable endpoint"]
  PROD --> MON["Continuous evaluation<br/>+ Azure Monitor alerts"]
  MON -.->|"regression"| DEV
Evaluation as a quality gate is what makes this a genuine AI CI/CD pipeline rather than ordinary app deployment.

The pieces the outline expects:

  • Infrastructure as code — Bicep, ARM or Terraform for the resource, projects, deployments and connections. Deployments can be created with the Azure CLI or Bicep.
  • Agent definitions in code — define prompt agents with the SDK or REST in the pipeline rather than clicking in the portal, so they get version control, code review and automated rollout.
  • Automated evaluation as a gate — run evaluators against a golden dataset on every PR and fail the build on regression. This is the distinctive part.
  • Agent versioning and rollback — versions are snapshotted automatically; you can roll back or compare.
  • Environment promotion — separate dev/test/prod projects, promote by publishing the tested agent version.
  • azd for scaffolding and deploying hosted agents from the command line.

Why portal-built agents lose marks

If a scenario asks how to make agent changes reviewable, repeatable and promotable across environments, the answer is define the agent in code and create the version from the pipeline — not "export from the portal" and not "recreate it manually in prod".

1.3 Manage, monitor and secure AI systems

Quota, rate limits, scaling and cost

Quota is assigned to your subscription, per region, per model, per deployment type, in units of tokens per minute (TPM). You spend that quota by assigning capacity to deployments; a proportional requests per minute (RPM) limit comes with it (the ratio varies by model).

ConceptWhat it actually means
QuotaThe ceiling of TPM you may allocate across all deployments of a model in a region and deployment type
TPM rate limitEnforced per deployment, per minute, on an estimate made when the request arrives — prompt + max_tokens — not on billed tokens
RPM rate limitDerived from TPM. Evaluated over short windows (1–10 seconds), so bursts throttle even when the per-minute total is fine
429 Too Many RequestsRate limit exceeded, capacity throttling, or a temporary protective reduction of your effective limit
403 ForbiddenA total token quota (hourly/daily/monthly) configured through the AI Gateway has been exhausted — a different mechanism from TPM

429s: four causes, four different fixes

  1. "Rate limit is exceeded" → genuinely over TPM/RPM. Raise the deployment's capacity, rebalance quota across deployments, or request a quota increase.
  2. "Service is temporarily unable to process your request" → backend capacity pressure. Retry with retry-after-ms; if persistent, move to provisioned throughput.
  3. Temporary rate-limit adjustment → x-ratelimit-limit-tokens in the response headers is lower than your configured TPM. Standard deployments share a pool; the reduction is protective and usually clears within hours. Back off, do not request quota.
  4. Usage metrics look low but you still get 429s → max_tokens is inflating the estimate. Lower it to match the response you actually expect.
Python · backoff
import time
import random
from openai import RateLimitError

def call_with_backoff(openai, *, max_attempts=5, **kwargs):
    """Exponential backoff with jitter.

    A 429 is not always a quota problem: it can be capacity throttling or a
    temporary rate-limit adjustment. Honour retry-after-ms when the service
    sends it, and only request more quota when the message really says the
    deployment's rate limit was exceeded.
    """
    for attempt in range(max_attempts):
        try:
            return openai.responses.create(**kwargs)
        except RateLimitError as err:
            if attempt == max_attempts - 1:
                raise
            retry_after_ms = getattr(err, "response", None) and err.response.headers.get("retry-after-ms")
            delay = int(retry_after_ms) / 1000 if retry_after_ms else (2**attempt) + random.random()
            time.sleep(delay)

Cost levers, cheapest first

  • Right-size the model — an SLM or a mini tier for routing, extraction and classification; the big model only where it earns its cost.
  • Batch deployment types for asynchronous work — roughly 50% cheaper.
  • Prompt caching and shorter system prompts — input tokens are the silent majority of spend in RAG.
  • Trim retrieval — fewer, better chunks beats stuffing the context window; it also improves groundedness.
  • Tool search in a toolbox — stops every tool definition being sent on every request once you have dozens of tools.
  • Provisioned throughput — for steady high volume it is cheaper and more predictable than standard at scale.
  • Token limits via the AI Gateway — per-project, per-deployment TPM caps and total token quotas to stop one team consuming everything.

Monitoring performance, drift, safety and grounding

Foundry observability has three legs, and the exam expects you to name the right one: tracing (what happened), evaluation (was it any good), monitoring (is it still good in production).

You need to…UseNotes
See every model call, tool invocation and agent decision in one timelineTracingBuilt on OpenTelemetry, flows into Azure Monitor Application Insights. Supports LangChain, LangGraph, OpenAI Agents SDK and Microsoft Agent Framework
Measure quality, safety and task successEvaluatorsBuilt-in and custom; run locally, in the cloud, or from CI
Track token consumption, latency and error rates liveMonitoring dashboardsFoundry observability dashboard + Application Insights
Detect quality decay over timeScheduled evaluation against a fixed test datasetThis is how "drift" is detected in practice — the model or the data moved, the score dropped
Sample real production traffic for qualityContinuous evaluationEvaluates a sampled rate of live traffic
Probe for safety and security vulnerabilitiesAI red teaming agentUses Microsoft's PyRIT framework; best with a human in the loop. Can be scheduled
Be alerted when outputs breach a threshold or turn harmfulAzure Monitor alertsWired to evaluation metrics and safety signals

Ingestion quality, index health and relevance

A separate bullet in the outline, and easy to overlook because it is search operations rather than model operations:

  • Indexer execution history in Azure AI Search — success/failure counts, per-document errors and warnings, and the item-level failure thresholds that decide whether an indexer run fails.
  • Index size, document count and storage/vector quota against the service tier — a silently full index stops accepting documents.
  • Freshness — change-detection policy and indexer schedule; stale grounding data produces confidently wrong answers.
  • Relevance — measure it, do not assume it. Evaluate retrieval separately from generation with document retrieval and relevance evaluators; hybrid + semantic ranking is the benchmark-backed baseline.
  • Grounding quality — the groundedness evaluator tells you whether answers are supported by the retrieved context. A groundedness drop with a healthy model usually means the retrieval broke, not the model.

Diagnosing a RAG quality complaint

Split the pipeline before you tune anything. Bad retrieval shows up as low retrieval/relevance scores and can be fixed with chunking, hybrid search, semantic ranking or filters. Bad generation shows up as low groundedness or coherence with good retrieval, and is fixed with prompt changes, a better model or tighter instructions. Answering "improve the prompt" to a retrieval problem is the classic wrong answer.

Security: identity, networking and credentials

ControlWhat to configureWhy the exam cares
Keyless credentials Entra ID tokens via DefaultAzureCredential; disable local key auth on the resource No secret to leak or rotate; access revoked by removing a role assignment
Managed identity System- or user-assigned identity on the Foundry resource/project; grant it roles on connected resources The step people forget — the connection exists but the identity is unauthorised
Agent identity A dedicated Entra identity per agent; hosted agents get one automatically Scoped, auditable access to external APIs and MCP servers without shared credentials
Private networking Private endpoints, VNet integration, public access disabled. Prompt agents support private networking; hosted agents support BYO VNet with VM-isolated sessions Data exfiltration and residency scenarios
Role policies Least-privilege Foundry roles, custom roles where built-ins over-grant, Entra security groups rather than individuals See the role table on the Foundations page
Egress controls preview Allow-list of outbound destinations for hosted agents, set in the guardrail Stops a compromised or manipulated agent calling out to anywhere
Customer-managed keys Encryption with your own keys in Key Vault Regulated-industry scenarios

1.4 Implement responsible AI

Guardrails and controls

A guardrail is a named collection of controls. Each control pairs three things: a risk to detect, an intervention point to scan, and an action to take. The classification models come from Azure AI Content Safety.

flowchart LR
  U["User input"] -->|"Control: user prompt attacks,<br/>hate, violence, PII…"| M["Model / agent"]
  M -->|"Control: tool call<br/>(agents, preview)"| TOOL["Tool"]
  TOOL -->|"Control: tool response<br/>(agents, preview)"| M
  M -->|"Control: output<br/>groundedness, protected material…"| OUT["Response to user"]
Four intervention points. Tool call and tool response exist only for agents, and are in preview.
RiskModelsAgents (preview)Notes
Hate · Sexual · Self-harm · Violence✔✔Severity threshold: Off / Low / Medium / High. Low is the most restrictive (it flags low severity and above)
User prompt attacks (jailbreak)✔✔Prompt Shields — direct attacks in the user prompt
Indirect attacks (XPIA)✔✔Injection hidden in retrieved documents, tool output, web pages or images
Spotlighting preview✔✘Marks untrusted content so the model treats it as data, not instructions
Protected material for text / for code✔✔Known copyrighted text and public-repository code
Groundedness preview✔✘Detects ungrounded output against supplied source content
PII preview✔✔Personal data in prompts or completions
Task adherence preview✔✔Is the agent still doing the job it was given?

Guardrail rules that get tested verbatim

  • Actions: models support annotate and annotate and block; agents support annotate and block only.
  • Inheritance: an agent uses the guardrail assigned to it. If none is assigned it inherits its model deployment's guardrail — not the service default. An agentic guardrail fully overrides the model's.
  • Default: models get Microsoft.DefaultV2.
  • Turning filters off requires approval through the Limited Access modified guardrails review — you cannot simply disable them.
  • Guardrails apply to Foundry Models sold by Azure, except audio transcription models; and to agents built in Foundry Agent Service, not to every agent registered in the control plane.
  • Severity direction trips people up: High = most permissive (only the worst is blocked), Low = most restrictive.

Responsible AI instrumentation

Guardrails are a runtime control. Evaluators are the measurement layer, and the outline names them explicitly under responsible AI.

CategoryExamplesAnswers the question
General qualityCoherence, fluencyIs it well-formed language?
RAG-specificGroundedness, relevance, retrievalIs it supported by the sources, and did we retrieve the right ones?
Safety and securityHate and unfairness, violence, sexual, self-harm, protected material, indirect attackIs it harmful, or was it manipulated?
Agent-specificIntent resolution, tool call accuracy, task adherence, task completionDid the agent understand, pick the right tool, stay on task and finish?
CustomYour domain rules, as code or as an LLM judgeWhatever "correct" means in your business

"Detecting fabrications" in the outline maps to groundedness. Evaluations run at three lifecycle stages: base model selection (benchmarks and leaderboards), pre-production (your dataset, plus red teaming), and post-production (continuous, scheduled and alerted). Cluster analysis groups evaluation failures so you can see the pattern instead of reading individual rows.

Playground evaluations are billed by default

Evaluations in the agents playground are enabled by default for every Foundry project and billed by consumption. If a scenario complains about unexpected observability cost, one legitimate answer is to deselect the evaluators in the playground's metrics panel.

Auditing, provenance and approvals

  • Trace logging — OpenTelemetry traces in Application Insights are the audit trail of what the agent decided and which tools it called. Retain them to match your compliance requirement.
  • Provenance metadata — citations from retrieval tools, source grounding and confidence scores from Content Understanding, and content credentials (C2PA) on generated media. "Where did this answer come from?" must have an answer.
  • Approval workflows — human-in-the-loop gates before sensitive tool calls. In Agent Framework this is an approval-required tool that pauses the workflow and emits a request for a decision; in Foundry workflows it is the human in the loop pattern.
  • Azure Policy at resource scope for organisation-wide rules, and Azure Monitor alerts on safety signals.

Governing agent behaviour

LeverWhat it constrains
Oversight modeHow autonomous the agent is: fully interactive, autonomous with a turn limit, or approval-gated per action
Tool-access controlsWhich tools the agent may call at all — curated centrally in a toolbox, with per-tool auth and policy
Approval-required toolsSpecific irreversible actions (refunds, purchases, deletions) that pause for a human decision
Turn and iteration limitsStops an autonomous loop running indefinitely without human involvement
Guardrails on tool call / tool responseScans what the agent sends to a tool and what comes back — the XPIA surface
Network egress controlsWhere a hosted agent may connect
Scoped agent identityWhat the agent can authenticate to, and as whom (its own identity, or the user via OBO)

Skill 1 rapid-fire review

  • Quota is per subscription, per region, per model, per deployment type, measured in TPM.
  • TPM is estimated from prompt + max_tokens at request time, not from billed tokens.
  • 429 = rate limit or capacity. 403 = AI Gateway total token quota exhausted.
  • Global Standard is the default; Data Zone for US/EU/APAC residency; Provisioned for predictable latency; Batch for ~50% off asynchronous work.
  • Azure Owner/Contributor grant no data-plane access; developers need Foundry User.
  • Guardrail severity: Low is the most restrictive. Agents can only annotate and block.
  • An agent inherits its model deployment's guardrail unless one is assigned directly.
  • "Fabrications" → the groundedness evaluator. "Did it pick the right tool?" → tool call accuracy.
  • Red teaming uses PyRIT; tracing uses OpenTelemetry into Application Insights.