🤖

🔷 Microsoft Azure

Free Developing AI Apps and Agents on Azure (AI-103) Study Resources

Microsoft's AI developer exam, rebuilt around Microsoft Foundry — agents, retrieval-augmented generation, and multimodal work in Python. Cover all five skill areas as Microsoft weights them today: planning and managing a solution (25–30%), generative AI and agentic solutions (30–35%), then computer vision, text analysis, and information extraction at 10–15% each. With an AI tutor, three blueprint-weighted mock exams, and 640 flashcards written against current Microsoft Learn documentation — every one carrying a quotation verified against the live page. Expects Python and familiarity with Azure.

591
Practice Questions
7
Mock Exams
68
Study Notes
640
Flashcard Decks

Developing AI Apps and Agents on Azure (AI-103) Study Notes & Guides

68 AI-generated study notes covering the full Developing AI Apps and Agents on Azure (AI-103) curriculum. Showing 10 complete guides below.

Lesson2,778 words

Choose an appropriate method for retrieval and indexing

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose an appropriate method for retrieval and indexing

Read full article

Choose an appropriate method for retrieval and indexing

Retrieval is where most grounded solutions actually fail, and it fails quietly. The model produces a fluent answer from the wrong material, and nothing in the response signals that search returned the wrong documents. This lesson covers the decisions that determine whether the right content reaches the model at all: how content gets in, how it is enriched, how it is queried, and who plans the query.

Why This Matters

Three properties make retrieval design consequential.

Retrieval failures are invisible downstream. If search returns the wrong three documents, a good model summarizes them faithfully. Groundedness scores well. The answer is wrong. Only a measurement aimed at the retrieval step — not the response — reveals it.

Ingestion decisions are expensive to reverse. Enrichment runs at indexing time: skillsets "chunk text, generate vectors, and apply other transformations" as content flows through. Adding chunking or vectorization later is not a configuration change; the documents already in the index were written without it, so the corpus must be reprocessed.

The access-control model is chosen here. Whether a user sees only what they are entitled to is decided by the knowledge source, not by anything downstream. Once a restricted document is in the context window, every later control is a mitigation rather than a boundary.

The exam tests this as a set of paired decisions — push or pull, vectors or not, classic or agentic, indexed or remote — each turning on one stated property.

Prerequisites

  • What an index, a query, and a ranked result set are.
  • That an embedding is a dense vector and vector search finds near neighbours in that space.
  • The distinction between lexical matching (tokens) and semantic matching (meaning).
  • That Azure AI Search is the retrieval engine underpinning Foundry IQ knowledge bases.

Learning Objectives

By the end of this lesson you will be able to:

  1. Choose push or pull ingestion from the two documented conditions.
  2. Decide whether a workload needs vectors at all, and configure integrated vectorization when it does.
  3. Select among full-text, vector, hybrid, and multimodal queries, and add the semantic ranker appropriately.
  4. Distinguish classic search from agentic retrieval, including their differing region support.
  5. Choose indexed or remote knowledge sources, and identify which supports user-permission inheritance.

Building Blocks

The two workloads. Indexing "loads content into an index and makes it searchable. Internally, inbound text is tokenized and stored in inverted indexes, while inbound vectors are stored in vector indexes." Querying targets that populated index. The diagram separates them for clarity, but "in Azure AI Search, they're the same component operating in read-write and read-only modes."

The one format rule. "Azure AI Search can only index JSON documents." Push uploads JSON directly; pull "retrieve[s] and serialize[s] data into JSON."

Push and pull. Pull uses an indexer over a supported data source — Azure Blob Storage, Azure Cosmos DB, Microsoft SharePoint, Microsoft OneLake, and others. Push uploads from your own code. The rule: "If you don't have a supported data source, or if your content and index must be synchronized in real time, the push method is your only option."

Skillsets and enrichment. AI enrichment applies "custom or built-in skills for text, images, and layout", chunking, vectorizing, and transforming content during indexing. A custom skill calls your own endpoint from inside the skillset. Index projections control where enriched output is written.

Query types. Full-text, vector, hybrid, and multimodal — the last querying "content containing both text and images in a single multimodal pipeline". Integrated vectorization generates the embeddings so the application does not.

Relevance tuning. The semantic ranker, synonym maps, scoring configuration, filters, faceted navigation, and autocomplete — all aimed at "improv[ing] intent matching and result quality".

Classic search and agentic retrieval. Two engines on one service, differing in who plans the query.

Classic search against agentic retrieval

Search corpus

A search index

Knowledge sources

Search target

One index defined by a schema

A knowledge base over one or more sources

Query plan

No plan, just a request

LLM-assisted or user-provided

Response

Flattened results by schema

Answer or raw data, activity log, references

Region restrictions

No

Yes

Deep Dive

Getting content in

The push/pull decision has a default and two exceptions, and both exceptions push you the same way.

Use pull when the content lives in a supported data source and some staleness is acceptable. The indexer handles retrieval, change detection, serialization to JSON, and scheduling — work you would otherwise write and operate.

Use push when either exception applies: the source is not supported, or the index must track the source in real time. A line-of-business system with no indexer and a no-staleness requirement triggers both at once.

The operational consequence of pull is a monitoring obligation. An indexer run reporting Success with 0 documents has done exactly what it was told: change detection surfaced nothing. That is a statement about what the indexer saw, not about the index being correct — and it reaches users as omitted content, which nobody reports as an error. Ingestion health therefore needs the document count and item-level errors beside the status, not the status alone.

Two questions decide ingestion

  1. Is the source supported?

    No → push. There is no indexer to configure.

Do you need vectors?

The guidance here is deliberately sceptical, and it is worth quoting because the default assumption runs the other way: "Do you need vectors? LLMs and agents don't require vectors. Only use them if you need similarity search or if you have content that can be homogenized into vectors."

Vectors cost an embedding stage at ingest, storage for the vector index, and embedding of every query. They buy paraphrase matching. If your queries are identifiers, part numbers, codes, and exact phrases, that purchase returns very little — and vector search is actively weak there, because an identifier is a token to match rather than a meaning to approximate.

When you do adopt them, integrated vectorization means the service generates embeddings in-pipeline rather than the application embedding content before ingest and queries before search.

Choosing the query type

Full-text for lexical precision — identifiers, codes, exact phrases. Vector for similarity and paraphrase. Hybrid to "combine full-text search with vector search to balance precision and recall", which is the answer whenever a scenario names both query styles. Multimodal when text and images must be queried together.

Then separate retrieval from ranking. Hybrid decides what is retrieved; the semantic ranker decides what comes first. Relevance complaints frequently need the second even when the right document was already in the candidate set — so a stem complaining about ordering rather than absence is pointing at ranking.

Classic or agentic

Classic search is "an index-first retrieval model for predictable, low-latency queries. Each query targets a single, predefined search index and returns ranked documents in one request–response cycle. No LLM-assisted planning, iteration, or synthesis occurs during retrieval." Your application composes and merges.

Agentic retrieval targets a knowledge base representing a domain: "one or more knowledge sources, an optional LLM for query planning and answer synthesis, and parameters that govern retrieval behavior." Each query "undergoes planning, decomposition into focused subqueries, parallel retrieval from knowledge sources, semantic reranking, and results merging", returning an answer or raw data plus an activity log and references.

Two practical differences decide real designs. First, who writes the planning code — the service, or you. Second, regional support: the comparison table marks region restrictions No for classic and Yes for agentic, and the getting-started checklist tells you to choose a supported region when using agentic retrieval.

Indexed or remote, and the access-control question

Knowledge sources come in two kinds: "indexed sources use the same indexing and query engines as classic search, while remote sources bypass indexing and are queried live." Remote costs a live query and is never stale; indexed is fast and as current as the last run.

That choice is also the access-control decision. The design checklist asks "Do you need user-based permission inheritance?" and answers: "Remote SharePoint is designed for this scenario, but you can also inherit user permissions attached to content in Azure Blob Storage or ADLS Gen2. For all other scenarios, you can use the security filter workaround."

This matters because trimming has to happen at retrieval. Once a restricted document is in the context window, the model has it, and filtering the generated answer is a mitigation applied after the boundary was crossed.

Worked Examples

Example 1 — an engineering catalogue. Users search exact part identifiers such as BRG-6204 and also ask descriptive questions about tolerances.

Two query styles in one requirement names hybrid search. Vector alone fails on the identifier — it returns conceptually similar bearings rather than the one asked for — and a synonym map cannot match a paraphrase that shares no terms with the document. If users then complain that the right document appears fourth rather than first, that is a ranking problem: add the semantic ranker.

Example 2 — two sources, two ingestion methods. Standards live in Blob Storage and may lag by an hour; live pricing lives in a system with no indexer and must never be stale.

Blob Storage is supported and an hour of lag is acceptable, so pull. The pricing system triggers both push exceptions — unsupported source, real-time synchronization — so push is the only option. One index, two ingestion paths, chosen per source rather than per system.

Example 3 — a scanned corpus with an enrichment bug. OCR then entity recognition; entities come back empty for scanned pages but work for digital PDFs.

The asymmetry localizes it. A digital PDF carries a text layer, so the entity skill finds content in the document's own text field. A scanned page has no text until OCR produces it, and OCR writes to its own output. If the entity skill still reads the original field it receives nothing — and returns nothing, with a Success status. Skills form a chain, and the chain is expressed by wiring each skill's input to the previous skill's output.

Visual Explanations

The ingestion and query pipeline:

Loading Diagram...
Figure 1 — Mermaid diagram

Classic against agentic, and where knowledge sources sit:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Adopting vectors by default. They are for similarity search. On identifier-heavy corpora they cost more than they return and match worse.

Answering a ranking complaint with re-indexing. Freshness and relevance are different problems with different fixes.

Reading indexer Success as "content arrived". Success with zero documents means change detection found nothing — check the count and item errors.

Adding enrichment after the first full ingest. Skillsets run at indexing time, so the change requires reprocessing.

Trimming permissions after retrieval. Once the document is in context, the boundary has already been crossed.

Using classic search then writing the merge logic yourself when the requirement explicitly says the retrieval layer should plan — that is what agentic retrieval is.

Forgetting agentic retrieval's regional restrictions. Classic search has none; agentic does, and the design must choose a supported region.

Practice Exercises

  1. Content is in Cosmos DB (supported) and may lag 30 minutes; a second source has no indexer and must never be stale. Which ingestion method for each, and which rule decides?
  2. Users search exact SKUs and ask paraphrased questions. Which query type, and why does vector-only fail?
  3. An indexer reports Success with 0 documents while new files are missing from answers. What is the most consistent explanation?
  4. A requirement says the retrieval layer, not the application, should plan across four collections. Which engine, and what does the response carry beyond the answer?
  5. Which knowledge-source kind supports per-user permission inheritance, and what is the fallback elsewhere?
Answers
  1. Pull for Cosmos DB (supported source, staleness acceptable); push for the second (unsupported source and real-time synchronization — either exception alone would force push).
  2. Hybrid search, to "balance precision and recall". Vector-only fails because a SKU is a token to match exactly, not a meaning to approximate; raising k returns more near neighbours, not the exact hit.
  3. Change detection surfaced nothing, so the run legitimately did no work — the new files were not visible to the indexer when it ran. Investigate commit timing, scope, and the indexer identity's access.
  4. Agentic retrieval against a knowledge base. The response carries an activity log and references alongside an LLM-formulated answer or raw source data.
  5. Remote sources — remote SharePoint is designed for it, and Blob Storage / ADLS Gen2 can also inherit permissions. Elsewhere the fallback is the security filter.

Summary & Concept Map

Retrieval design is four paired decisions. Push or pull: pull for supported sources, push when the source is unsupported or the index must be real-time. Vectors or not: only for similarity search, because they cost a stage and match poorly on identifiers. Which query: full-text for tokens, vector for meaning, hybrid for both, with the semantic ranker deciding order rather than membership. Classic or agentic: who plans the query, at the cost of regional restrictions. Underneath all four sits the access-control choice, made when you pick indexed or remote sources — and enrichment, which runs at indexing time and is therefore expensive to add late.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

LO Quick Note888 words

Quick Note — Choose an appropriate method for retrieval and indexing

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose an appropriate method for retrieval and indexing

Read full article

Quick Note — Choose an appropriate method for retrieval and indexing

A team indexes an engineering catalogue with vector search alone because vectors sound modern. Then a user searches BRG-6204 — an exact part number — and gets a list of conceptually similar bearings, none of them the one asked for. Vectors approximate meaning; an identifier is a token to match. The fix is not a better embedding model, it is hybrid search: run both and fuse the results.

Retrieval target

Choose an appropriate method for retrieval and indexing
Closed-book recall
5 minutes
Open Microsoft Learn after a miss

Decision anchors

PromptCompact answer
Classic search vs agentic retrievalClassic search — index-first, one query against one index, one request-response cycle, no LLM-assisted planning. Agentic retrieval — a query against a knowledge base of one or more knowledge sources, with planning, decomposition into subqueries, parallel retrieval, semantic reranking, and merging. Classic has no region restrictions; agentic does.
Hybrid searchCombines full-text with vector search to balance precision and recall. Lexical handles identifiers, codes, and exact phrases; vector handles paraphrase. Any stem naming both query styles is asking for hybrid.
Do you need vectors at all?"LLMs and agents don't require vectors. Only use them if you need similarity search or if you have content that can be homogenized into vectors." Vectors add an embedding stage, storage, and pipeline cost — adopt them for a reason, not by default.
Push vs pullPull (indexer) when the content is in a supported data source. Push is your only option if the source is unsupported or if index and source must be synchronized in real time. Either way, Azure AI Search can only index JSON documents.
Integrated vectorizationThe service generates the embeddings in-pipeline, so the application does not embed content at index time or queries at search time.
Indexed vs remote knowledge sourcesIndexed sources use the same engines as classic search. Remote sources bypass indexing and are queried live — current without an ingestion run, and the route for user-permission inheritance (remote SharePoint is designed for it; a security filter is the fallback elsewhere).
Enrichment runs at indexing timeSkillsets chunk, vectorize, and transform during indexing. Changing a skillset means re-running ingestion, not patching the index — plan enrichment before the first full ingest.

Read the answers once, then cover the right-hand column and reconstruct each one from the prompt. A useful answer names the requirement, the capability that satisfies it, and the nearest alternative it rejects. If you can only recognize the answer after seeing it, retrieval is not yet secure.

Ninety-second explanation

Without notes, explain:

  1. When is push the only permitted ingestion method?
  2. Why does vector search alone fail on part numbers?
  3. What does a knowledge base do that a single index query does not?
  4. Why is adding chunking to an existing pipeline more expensive than it looks?
  5. Which retrieval choice is also an access-control decision?

Then check yourself against current Microsoft Learn. Record the missing decision rule, not merely the missed product name, in your error log.

Loading flashcards…

When to go deeper

Go deeper when the design turns on permission inheritance or on agentic retrieval's regional support — both are documented per-source and per-region. Start from Introduction to Azure AI Search.

Source and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026). Reviewed 2026-08-20. Microsoft Learn controls changing product contracts — availability, limits, preview status, naming, and retirement dates move, and this note is deliberately compact.

Lesson3,097 words

Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

Read full article

Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

Model selection is the first architectural decision in a Foundry solution and the one most often made backwards. Teams reach for the most capable model available, discover the bill, and then tune prompts to claw back cost that a different model would never have incurred. This lesson builds a repeatable selection method: eliminate cheaply, measure late, and let the requirement — not the leaderboard — name the model.

Why This Matters

A model choice sets your cost curve, your latency floor, and your failure modes for the life of the workload. Three properties make it unusually unforgiving.

Cost scales with volume, and reasoning is invisible. Reasoning models generate reasoning tokens in addition to the tokens you can see. Those tokens "never appear in the message content, but they occupy space in the context window and are billed as output tokens." A summarization endpoint returning 200 visible words can be billed for thousands of tokens. At ten million requests a day, choosing a frontier reasoning model for a six-way classification is not a small inefficiency — it is the entire budget.

Capability you do not use is capability you still pay for. A model that can plan a multi-step research task brings that machinery to every request, including the ones that need a single label. The extra depth does not make a fixed-label classification more correct; the answer space was six options either way.

Some constraints cannot be bought off. Data residency, egress prohibitions, and genuinely offline operation are absolute. No amount of model quality satisfies a rule that says the audio must not leave the device. These constraints eliminate whole deployment families in one move, which is why they belong early in the decision rather than late.

The exam tests this as a reading skill. A well-written scenario names the deciding property in one sentence — ten million messages a day, no connectivity at the site, values feed a pricing engine — and the rest is context. Learning to find that sentence is most of the objective.

Prerequisites

Before this lesson you should be comfortable with:

  • The distinction between a model and a deployment — you deploy a model and address it by the deployment name you chose, which need not match the underlying model name.
  • What an embedding is: a dense vector representing meaning, used for similarity search rather than for generating an answer.
  • The basic shape of a Foundry project and the fact that models are reached through a project endpoint.
  • That Foundry Tools are prebuilt capabilities — Document Intelligence, Speech, Language, Vision, Content Safety, AI Search — distinct from the generative models in the catalogue.

Learning Objectives

By the end of this lesson you will be able to:

  1. Apply a four-step elimination order — modality, complexity and envelope, placement, evaluation — to any selection scenario.
  2. Distinguish when a small language model outperforms a frontier model on the criteria that matter.
  3. Explain how reasoning tokens and reasoning_effort change the cost calculus of reasoning models.
  4. Decide when model-router earns its dispatch step and when it is overhead.
  5. Choose between a Foundry Tool and a generative model for a well-defined task.

Building Blocks

Frontier reasoning models. The most capable tier — multi-step reasoning, planning, and tool-calling orchestration. They deliberate internally, producing reasoning tokens that are billed as output. The reasoning_effort parameter governs how much they think, with supported values including none, minimal, low, medium, high, xhigh, and max. Crucially, effort is a request parameter, not a property of the deployment: one deployment can serve a none-effort routing call and a high-effort analysis call in the same pipeline.

Small language models (SLMs). Compact models sized for narrow, high-volume, latency-sensitive work — classification, routing, extraction against a fixed label set. The Phi-4 family is the reference example. They are not "worse" models; they are correctly sized ones.

Multimodal models. Accept images alongside text in a single request and reason over both — scenes, diagrams, charts. The right choice when the questions asked of an image are open-ended and unpredictable.

Embedding models. Return dense vectors. text-embedding-3-large is the reference. They enable similarity search and RAG grounding, and they never return a label or an answer on their own.

Image and video generation models. gpt-image-2 is generally available and supports arbitrary resolutions — both edges a multiple of 16 px, long edge up to 3,840 px (4K), aspect ratio up to 3:1. The gpt-image-1 series — gpt-image-1, gpt-image-1.5, gpt-image-1-mini — is in limited access preview and restricted to the fixed sizes 1024x1024, 1024x1536, and 1536x1024. Video generation is served by Sora 2 through an asynchronous jobs API.

Foundry Tools. Prebuilt capabilities with maintained schemas and classifiers. Document Intelligence returns extracted fields as strongly typed dataInvoiceDate as a date, SubTotal as a currency — so "normalization happens automatically without any configuration." Content Safety classifies harm categories and detects injection. AI Search performs hybrid retrieval with a semantic ranker.

model-router. A deployable model that assesses each incoming request and forwards it to a suitable model in its pool, behind a single endpoint.

Foundry Local. Runs a model on the device, for scenarios where connectivity is absent or data must not leave the hardware boundary.

What each family is for

Frontier reasoning

Multi-step reasoning, planning, orchestration

The answer space is small and fixed

Small language model

Narrow task, high volume, tight latency

The task genuinely needs deliberation

Multimodal

Open-ended questions about an image

The same fields are needed every time

Embedding

Similarity search, RAG grounding

You need a label or an answer

Foundry Tool

A maintained schema already covers it

The task is open-ended or novel

Deep Dive

The elimination order

Selection is a filter, and the order matters because each step is cheaper than the next.

1. Modality. Absolute, and it eliminates whole families in one move. An embedding model cannot generate an image; an image model cannot classify text. No capability argument survives a modality mismatch, so this test costs nothing and removes the most candidates.

2. Complexity and the envelope. Now narrow within the surviving family. Ask what the task actually requires: does it need multi-step deliberation, or is it a single judgement against a small answer space? Then apply the envelope — throughput, latency target, cost per request. A narrow task at high volume with a tight latency target names a small language model without further argument.

3. Placement. Where is the model permitted to run? Data residency, egress prohibitions, sovereignty, and offline operation are constraints that can eliminate every cloud-hosted candidate regardless of tier. This step comes third because it is still free to apply and can invalidate everything above it — but it is written third because it is scenario-specific rather than universal.

4. Evaluate on your own data. Only now is there a short list worth measuring. Evaluation is the expensive step — it needs datasets, evaluator runs, and interpretation — so it goes last, against candidates that have already survived the free filters. Benchmarks comparing models on public datasets help at this stage; they do not replace measurement on your own task.

Eliminate cheaply, measure late

  1. Modality

    Absolute. Rules out entire families at zero cost.

Reasoning models and the cost of thinking

The economics of reasoning models are unintuitive because the expensive part is invisible. Reasoning tokens are billed as output tokens and consume the context window, and a single request "can spend anywhere from a few hundred to tens of thousands of reasoning tokens depending on how hard the problem is."

Two consequences follow. First, token analytics that count only visible output will understate the bill; read completion_tokens_details.reasoning_tokens on a Chat Completions response, or output_tokens_details.reasoning_tokens on a Responses API response, to see what was actually spent.

Second, the output cap covers reasoning too. max_completion_tokens (Chat Completions) and max_output_tokens (Responses) both cover "reasoning tokens, visible output tokens, and formatting tokens." A cap sized for the visible answer can therefore be exhausted before any visible output is produced — and the documented result is that "you pay for input and reasoning tokens but receive no answer." Applications must check status on every response rather than treating an empty body as an empty answer. The guidance suggests reserving around 25,000 tokens for reasoning plus output while learning a workload's appetite, then tuning down.

The lever that controls the spend is reasoning_effort. Because it is a request parameter, a pipeline can set it per step — none or low on mechanical routing and classification, higher only where deliberation earns its cost.

When routing helps, and when it does not

model-router is deployed like any other model and dispatches each request to a suitable model in its pool. It earns its place when request complexity genuinely varies — the classic shape being a large majority of simple lookups and a small minority needing depth. Cost then tracks complexity without the team building and maintaining a classifier.

It stops being worth the dispatch step when traffic is homogeneous. Ten million instances of the same simple classification have no complexity variance to exploit; the router adds a hop and still forwards to a small model. Choosing the small model directly is simpler and cheaper.

Routing also interacts with governance. Because the serving model becomes a per-request property, any requirement to state which model produced a given output means capturing that from the response and storing it with the output. Reconstructing it later fails, because the pool's contents and the router's behaviour change over time.

Tool or model?

The sharpest recurring decision is not which model but whether a model at all. Reach for a Foundry Tool when the task is well-defined, a schema or classifier already exists, and you want typed, consistent output with a maintained contract. Reach for a model when the task is open-ended, the output is prose, or nothing prebuilt covers it.

The trap is that a well-prompted frontier model will often produce the right values for a task a tool was built for. What it cannot supply is the guarantee: a maintained schema, automatic type normalization, and stability when the input layout changes. A prompt shifts that maintenance onto you, and the failure mode — a renamed field that parses cleanly and feeds a wrong number downstream — is silent.

Worked Examples

Example 1 — high-volume intent classification. Ten million short customer messages a day must be sorted into six fixed categories at the lowest cost per message.

Modality: text in, label out — every text model survives. Complexity and envelope: the answer space is six options and volume dominates cost, which names a small language model. Placement: unconstrained. Evaluate: measure candidate SLMs on a labelled sample of real messages. A frontier reasoning model would spend reasoning tokens on a six-way choice ten million times; model-router would add a dispatch step to homogeneous traffic and still route to a small model.

Example 2 — invoice field extraction feeding a pricing engine. Standard supplier invoices; the downstream service rejects anything not matching its schema.

The phrase standard plus typed values moves this out of model selection entirely. Document Intelligence with prebuilt-invoice returns fields whose schemas are "defined and maintained by Microsoft," with InvoiceDate as a date and SubTotal as a currency. A generative model would often produce the right values and would offer no guarantee of the right shape.

Example 3 — offline field inspection. Inspectors dictate findings at remote sites with no connectivity, and policy forbids audio leaving the device.

Placement decides this before anything else. Both constraints eliminate every cloud-hosted candidate regardless of capability or price, so the answer is an on-device deployment. Choosing a cheaper cloud model would satisfy neither constraint — the audio still leaves the device.

Visual Explanations

The selection filter, in order:

Loading Diagram...
Figure 1 — Mermaid diagram

Where a Tool short-circuits the whole tree:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Choosing by capability instead of by requirement. The most capable model is the right answer only when the task needs that capability. A stem describing a narrow, high-volume task is not asking which model is best.

Treating reasoning models as having one cost per call. Effort is per request. A pipeline that leaves every step at the default effort pays frontier deliberation prices on its routing decisions.

Sizing the output cap for the visible answer. The cap covers reasoning tokens too, so a tight cap on a reasoning model produces billed requests with empty bodies.

Reaching for model-router on uniform traffic. Routing exploits variance. With none, it is a hop.

Assuming a prompt can replace a schema. A prompt asks; a tool guarantees. When the consumer is another system rather than a person, the guarantee is the requirement.

Applying placement constraints last. Discovering after benchmarking that no cloud model is permitted wastes the benchmark. Residency and egress are free to check and eliminate the most candidates.

Confusing GA with preview when a stem says "generally available". Among image models, only gpt-image-2 is GA; the gpt-image-1 series is limited access preview on fixed sizes.

Practice Exercises

  1. A workload classifies 8 million short messages daily into six categories, lowest cost per message. Which family, and which two properties decided it?
  2. A team migrates a prompt-tuned workload to a reasoning model and many requests return empty bodies while still being billed. Diagnose it and name the two parameters involved.
  3. Traffic is 90% simple FAQ lookups and 10% multi-step tax reasoning, on one interactive endpoint. What do you deploy, and what would provisioned throughput solve instead?
  4. Extraction of vendor, date, and total from standard invoices, output consumed by a pricing service. Tool or model, and what property makes it decisive?
  5. A regulated service routes through model-router and an auditor must name the model behind any archived output. What must the design do, and why does a later lookup fail?
Answers
  1. A small language model. Decided by the small fixed answer space (no deliberation required) and volume dominating cost.
  2. Reasoning tokens are generated before the visible answer and count against the same limit. Raise max_completion_tokens (or max_output_tokens) to leave headroom, and lower reasoning_effort where depth is unnecessary. Confirm consumption in completion_tokens_details.reasoning_tokens.
  3. model-router — complexity varies per request and the team wants no classifier. Provisioned throughput solves predictable latency and guaranteed rate limits, a different problem.
  4. A Foundry Tool — Document Intelligence with a prebuilt model. Decisive property: strongly typed output against a maintained schema, because the consumer is a system that rejects anything off-shape.
  5. Capture the serving model from each response and store it with the output. A later lookup fails because the router's pool and behaviour change over time, so current state cannot reconstruct a past request.

Summary & Concept Map

Model selection is elimination, not comparison. Modality is absolute and free to check; complexity and the cost envelope pick the tier; placement can invalidate everything above it; evaluation on your own data comes last because it is the expensive step. Reasoning models are powerful and their cost is invisible — reasoning tokens are billed as output, share the output cap, and are governed per request by reasoning_effort. model-router converts complexity variance into cost savings and adds nothing to uniform traffic. And before choosing any model, ask whether a Foundry Tool already owns the task with a maintained schema.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

LO Quick Note1,041 words

Quick Note — Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

Read full article

Quick Note — Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools

A retail team routes 10 million short support messages a day into six fixed intent categories, and puts a frontier reasoning model behind it because "accuracy matters". The bill arrives: the model spent reasoning tokens deliberating over a six-way choice, ten million times, and reasoning tokens are billed as output tokens. A small language model answers the same question at a fraction of the cost, because the task was never hard — it was just frequent. The selection error was not picking a weak model; it was never asking what the task actually required.

Retrieval target

Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools
Closed-book recall
5 minutes
Open Microsoft Learn after a miss

Decision anchors

PromptCompact answer
Order of eliminationModality first — it rules out whole families and no capability argument overrides it. Then complexity and the cost/latency envelope, which picks the tier. Then placement — residency, egress, offline operation — which can eliminate every cloud-hosted candidate at once. Evaluate on your own data last, because measurement is the expensive step.
Small language model (SLM)For narrow, high-volume, latency-sensitive work: classification, routing, extraction with a fixed label set. The Phi-4 family is the reference example. Reach for it when the task has a small answer space and volume dominates cost.
Frontier reasoning modelFor multi-step reasoning, planning, and tool-calling orchestration. Generates reasoning tokens that never appear in the message content but occupy the context window and are billed as output tokens — so it is the most expensive way to answer an easy question.
model-routerA deployable model that assesses each request and forwards it to a suitable model in its pool. Earns its place on mixed traffic (simple majority, hard minority). On a homogeneous stream of one simple task it adds a dispatch step and still routes to a small model.
Embedding modelReturns a dense vector, not an answer or a label. text-embedding-3-large supports similarity search and RAG grounding. If a stem asks for a category, an embedding alone is never the answer — a classifier still has to sit on top.
Foundry Tool vs Foundry ModelA Tool is a prebuilt capability with a maintained schema or classifier — Document Intelligence, Speech, Content Safety, Vision, AI Search. Choose a tool when the task is well-defined and the schema already exists; choose a model when the task is open-ended or nothing prebuilt covers it.
Placement: on-deviceData-egress rules, sovereignty, or genuinely offline sites are answered by running the model on the device (Foundry Local), not by picking a smaller cloud model. A small model in the cloud still sends the data off the device.

Read the answers once, then cover the right-hand column and reconstruct each one from the prompt. A useful answer names the requirement, the capability that satisfies it, and the nearest alternative it rejects. If you can only recognize the answer after seeing it, retrieval is not yet secure.

Ninety-second explanation

Without notes, explain:

  1. Which property of a task makes a small language model the right choice rather than a cheap frontier model?
  2. Why are reasoning tokens a cost concern even when the visible answer is short?
  3. When does model-router stop being worth its dispatch step?
  4. What kind of requirement overrides every capability argument?
  5. Give a task where a Foundry Tool beats a well-prompted frontier model, and say why.

Then check yourself against current Microsoft Learn. Record the missing decision rule, not merely the missed product name, in your error log.

Choose an appropriate model for each task, including LLMs, small language models, multimodal models, and Foundry Tools — quick retrieval

When to go deeper

Go deeper when a scenario turns on a specific limit, SKU capability, or preview status — those move, and a compact note cannot track them. Start from Foundry Models sold by Azure for the catalogue and availability, then the individual model's page for parameters.

Source and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026). Reviewed 2026-08-20. Microsoft Learn controls changing product contracts — availability, limits, preview status, naming, and retirement dates move, and this note is deliberately compact.

Lesson2,815 words

Choose appropriate memory, tool, and knowledge integration services for agent solutions

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose appropriate memory, tool, and knowledge integration services for agent solutions

Read full article

Choose appropriate memory, tool, and knowledge integration services for agent solutions

An agent is a model, a set of instructions, and a set of tools. This objective is about the third part and the stores behind it: how an agent reaches knowledge, how it remembers, and how it acts. The recurring error is collapsing several distinct mechanisms into one — usually "memory" — and discovering later that none of the requirements was actually met.

Why This Matters

Agent scenarios routinely bundle three or four requirements that sound like the same thing: recall what the user told us, answer from the corporate corpus, keep a record for audit, and call the ticketing API. Each is a different mechanism with different durability, scope, and governance.

Choosing wrongly is expensive in a specific way: the design appears to work. An agent given a knowledge base instead of memory will still answer questions — it simply will not remember the user's stated preference next month. An agent whose transcripts live only in telemetry will still be observable — it simply cannot satisfy a seven-year audit. These failures surface long after the design review.

There is also a governance dimension. The tool integration you choose decides who executes the code, whose identity the downstream system sees, and who can change the tool underneath you. Those are security decisions wearing the costume of an implementation detail.

Prerequisites

  • What an agent is: a model, instructions, and tools.
  • That the Responses API is the single entry point behind every agent type.
  • The difference between prompt agents (configuration only) and hosted agents (your code, run by Foundry).
  • Basic familiarity with vector search as a grounding mechanism.

Learning Objectives

By the end of this lesson you will be able to:

  1. Distinguish memory, conversation state, and knowledge and select each for its own requirement.
  2. Choose among File Search, the Azure AI Search tool, and a knowledge base for grounding.
  3. Select the correct tool type by asking who executes the call.
  4. Explain what a toolbox provides and why its versioning matters.
  5. Choose an authentication approach for a tool, including when On-Behalf-Of is required.

Building Blocks

Memory (preview). Durable recall of facts about the user across sessions. It is explicitly a preview capability — "some tools, including memory and web search, are in preview" — which means no SLA and not recommended for production. A readiness review must record that.

Conversation state. The record of what was said. store=false prevents service-side persistence; bring your own resources puts it in infrastructure you control, with "Azure Cosmos DB for conversation state" named for compliance and operational needs. Hosted agents additionally get session-level state persistence from the platform.

File Search. Augments an agent "with knowledge from uploaded files or proprietary documents by using vector search." For documents supplied to the agent, not for a governed corpus.

Azure AI Search tool. Grounds agents "with data from an existing Azure AI Search index." No re-ingestion; the owning team's tuning continues to apply.

Knowledge base (Foundry IQ). One or more knowledge sources with optional planning and synthesis, reusable across agents and permission-aware.

Tool types by executor. Built-in tools are executed by the service — web search, Code Interpreter, File Search, Azure AI Search, Azure Functions, function calling, plus preview entries such as Custom Code Interpreter, Image Generation, Browser Automation, Computer Use, Microsoft Fabric, and SharePoint. OpenAPI tools connect "to external HTTP APIs by using an OpenAPI 3.0 or 3.1 specification". Function calling defines functions where "your application executes the function and returns the result". MCP connects "to tools hosted on an MCP server endpoint… best for tools shared across multiple agents or maintained by a different team". A2A (preview) connects agents to other agents.

Toolbox. "Define a curated set of tools once, manage them centrally… and expose them through a single MCP-compatible endpoint. Any MCP-compatible agent runtime or client can consume a toolbox." It is the recommended way to give agents tools, and it is versioned: "create a new version, test it, and promote it to default when you're ready."

Structured inputs. Tool configuration such as vector_store_ids, container IDs, and MCP endpoints is fixed at agent creation by default; structured inputs "allow you to override these values at runtime without creating a new agent version".

Four stores, four jobs

Memory (preview)

Facts about the user

Recall must survive across sessions

Conversation state

The record of what was said

Retention, audit, or resuming matters

File Search

Files uploaded to the agent

A user hands the agent documents

Knowledge base

Governed collections

Several sources, planned and merged by the service

Deep Dive

Memory is not conversation state

These are the two most-confused mechanisms, and the distinction is about purpose, not storage.

Memory answers what should the agent recall and use? It is selective and durable — a user's stated dietary restriction told once in March should shape an answer in June. It is a preview capability.

Conversation state answers what was said? It is a complete record, and it exists for retention, audit, and resumption. Its governance question is where it lives: store=false for no service-side persistence, or bring-your-own Cosmos DB when the organization must own it.

The practical test: if the requirement mentions personalization, it is memory. If it mentions retention, audit, or regulators, it is conversation state. If it mentions both, you need both.

Three questions about state

  1. Don't persist it

    store=false — no service-side persistence of the conversation.

Grounding: match the shape of the corpus

Three mechanisms, distinguished by who owns the content and how many sources.

File Search is for content the agent is handed. It builds a vector store from uploaded files with no pipeline to run. The tell in a stem is a user uploading something during a conversation.

The Azure AI Search tool is for an index that already exists. The tell is language about existing investment — maintained, tuned, already indexed by the platform team. Re-uploading such a corpus through File Search duplicates it and discards the enrichment and relevance tuning that went into it.

A knowledge base is for several governed collections that must be planned and merged by the service. The tell is multiple sources plus an explicit statement that the application should not contain the planning logic.

A common wrong answer attaches several index tools to one agent for a multi-source requirement. That makes source selection a per-question tool choice by the model, so nothing merges or ranks across collections — the agent picks one source and answers from it.

Multi-tenancy without multiple agents

A recurring design problem: one agent definition, several tenants, each grounded in its own store. The naive answers are an agent version per tenant (multiplying maintenance) or a tenant name in the prompt (which cannot restrict what the retrieval tool searches).

Structured inputs solve it. Tool properties that support runtime override include file_search.vector_store_ids, code_interpreter.container and container.file_ids, and mcp.server_label, server_url, and headers. The documented use case is exactly this: "Different users need different vector stores or files based on their context."

Tool type follows the executor

The cleanest way to choose a tool type is to ask who runs the code.

  • The service runs it → a built-in tool.
  • An external HTTP API, already described by a specification → an OpenAPI tool. Rewriting the spec as hand-maintained wrappers throws away documentation someone else maintains.
  • Your own application runs itfunction calling.
  • Another team owns it, or several agents share itMCP.

Then toolbox sits above all of them as the recommended packaging: one curated set, one MCP endpoint, consumable by any MCP-compatible runtime regardless of framework. Its versioning is the operational payoff — a breaking change becomes a new version you test and then promote, rather than an edit that takes effect the moment it is saved.

Authentication decides whose permissions apply

Supported options are "key-based access, Microsoft Entra (using the agent's managed identity or the project's managed identity), OAuth identity passthrough (On-Behalf-Of), and unauthenticated access, where appropriate."

The decisive question is whose identity the downstream system sees. With a managed identity it is the agent or project — identical for every user, so a junior employee's query can return documents they are not entitled to, with nothing in the response revealing it. With OBO, the calling user's identity flows through and their own entitlements apply at the source.

Each agent can also hold a dedicated Microsoft Entra identity, "enabling secure, scoped access to resources and APIs without sharing credentials" — and for hosted agents this is "automatic, dedicated per agent."

Worked Examples

Example 1 — three requirements, three mechanisms. An agent must recall a user's stated preferences months later, answer from a 400,000-document corpus the company already indexes, and keep a durable conversation record for audit.

Memory for the preferences. The Azure AI Search tool for the existing index — no re-ingestion, tuning preserved. Bring-your-own Cosmos DB for conversation state. The tempting wrong answer uses tracing for the audit record; traces are telemetry, sampled and retained for diagnostics, and treating an observability sink as a system of record is how a retention obligation fails.

Example 2 — one agent, three tenants. Identical behaviour, per-tenant document stores, and no appetite for three agent definitions.

Structured inputs on file_search.vector_store_ids, supplied per request. An agent version per tenant triples the maintenance; three toolboxes attached simultaneously would give the agent access to all three stores at once, which is worse than the original problem.

Example 3 — two integrations, two tool types. The agent calls a partner REST API described by an OpenAPI 3.1 specification, and separately raises tickets through code the team owns and runs.

OpenAPI tool for the partner API — the specification already exists. Function calling for ticket creation, because "your application executes the function and returns the result." MCP would be right if the ticketing tool were shared across agents or owned by another team; here it is neither.

Visual Explanations

Choosing the integration:

Loading Diagram...
Figure 1 — Mermaid diagram

Packaging and identity around the tools:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Using memory as a grounding corpus. It holds facts about the user, not a document collection.

Using conversation state for personalization, or memory for audit. Retention is not recall, and recall is not a record.

Re-uploading an already-indexed corpus through File Search. It duplicates content and discards tuning.

Attaching several index tools for a multi-source requirement. Cross-source ranking never happens.

Creating an agent version per tenant. Structured inputs exist precisely to avoid this.

Choosing MCP by default. It is best for tools shared across agents or owned by another team; for one external API with a spec, an OpenAPI tool is simpler.

Using a managed identity where the user's own permissions must apply. That returns the same results to everyone — use OBO.

Treating a preview tool as production-ready. Memory and web search are preview: no SLA.

Practice Exercises

  1. Distinguish memory from conversation state in one sentence each, and give the requirement wording that selects each.
  2. An agent must ground on four governed collections and the firm does not want planning logic in application code. What do you use, and what is wrong with attaching four index tools?
  3. One agent definition, three tenants, per-tenant vector stores. What mechanism, and which property does it override?
  4. An agent calls a partner API described by OpenAPI 3.1, and separately runs ticket-creation code the team owns. Name both tool types and the rule that decides.
  5. SharePoint answers must respect each signed-in user's permissions. Which authentication option, and what fails with a managed identity?
Answers
  1. Memory — durable recall of facts about the user across sessions; selected by wording about personalization or remembering a stated preference. Conversation state — the record of what was said; selected by wording about retention, audit, or regulators.
  2. A knowledge base, which plans, decomposes, retrieves in parallel, reranks, and merges. Four index tools push source selection into the model's per-question tool choice, so nothing merges or ranks across collections.
  3. Structured inputs, overriding file_search.vector_store_ids at runtime "without creating a new agent version".
  4. OpenAPI tool for the partner API (an external HTTP API already described by a specification) and function calling for tickets ("your application executes the function"). The rule: ask who runs the code.
  5. OAuth identity passthrough (On-Behalf-Of). A managed identity means the downstream system sees the agent or project, identical for every user — so results reflect the service's access, not the user's, and nothing in the response reveals it.

Summary & Concept Map

Agent integration is a set of small, sharp distinctions. Memory recalls facts about the user and is in preview. Conversation state is the record, and its governance question is where it lives. Grounding splits three ways by corpus ownership: files handed to the agent, an index that already exists, or several governed collections planned by the service. Tool type follows the executor — service, external API with a spec, your application, or another team — with toolbox as the recommended packaging and its versioning as the operational safeguard. And authentication is not plumbing: it decides whose permissions apply at the far end.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

LO Quick Note949 words

Quick Note — Choose appropriate memory, tool, and knowledge integration services for agent solutions

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose appropriate memory, tool, and knowledge integration services for agent solutions

Read full article

Quick Note — Choose appropriate memory, tool, and knowledge integration services for agent solutions

An agent is asked to do three things: recall a user's stated preferences months later, answer from a corpus the platform team already indexes, and keep a durable record of every conversation for audit. A team that reaches for one mechanism — usually memory — satisfies none of them properly. These are three different stores with three different jobs, and the exam rewards telling them apart.

Retrieval target

Choose appropriate memory, tool, and knowledge integration services for agent solutions
Closed-book recall
5 minutes
Open Microsoft Learn after a miss

Decision anchors

PromptCompact answer
Memory toolDurable recall of facts about the user across sessions. In preview — no SLA, not recommended for production. Not a grounding corpus and not an audit record.
File SearchGrounds an agent in files uploaded to it, using vector search. Right for documents a user hands the agent; wrong for a governed enterprise corpus that already has a pipeline.
Azure AI Search toolGrounds agents "with data from an existing Azure AI Search index" — no re-ingestion, and the owning team's enrichment and relevance tuning keep applying. The answer whenever a stem says an index is already maintained.
Foundry IQ knowledge baseOne or more knowledge sources, an optional LLM for planning and synthesis, and retrieval parameters. Use it when several collections must be planned and merged by the service, and when grounding must be permission-aware.
Conversation stateThe record of what was said. Use bring your own resources — your own Azure Cosmos DB — when retention and control must sit with your organization. store=false is the different requirement: do not persist at all.
ToolboxA curated set of tools defined once and exposed through a single MCP-compatible endpoint, consumable by any MCP-compatible runtime. The recommended way to give agents tools. Versioned: create a version, test it, promote it to default.
Which tool typeBuilt-in — the service executes (web search, code interpreter, file search, Azure AI Search). OpenAPI tool — an external HTTP API with a specification. Function callingyour application executes and returns the result. MCP — tools shared across agents or owned by another team.

Read the answers once, then cover the right-hand column and reconstruct each one from the prompt. A useful answer names the requirement, the capability that satisfies it, and the nearest alternative it rejects. If you can only recognize the answer after seeing it, retrieval is not yet secure.

Ninety-second explanation

Without notes, explain:

  1. Distinguish memory from conversation state in one sentence each.
  2. A corpus is already indexed and tuned by another team — what do you attach, and why not File Search?
  3. What preview status must a readiness review record, and what follows from it?
  4. What does toolbox versioning let you do that editing a tool in place does not?
  5. Which knowledge-source kind supports per-user permission inheritance?

Then check yourself against current Microsoft Learn. Record the missing decision rule, not merely the missed product name, in your error log.

Loading flashcards…

When to go deeper

Go deeper when the design depends on agent identity and authentication for a tool — key-based, Microsoft Entra via managed identity, or OAuth On-Behalf-Of passthrough, which is what makes retrieval respect the calling user's own permissions.

Source and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026). Reviewed 2026-08-20. Microsoft Learn controls changing product contracts — availability, limits, preview status, naming, and retirement dates move, and this note is deliberately compact.

Lesson2,733 words

Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

Read full article

Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

The previous objective asked which model. This one asks a broader question: which service owns each part of the solution. Most real builds decompose into three or four capabilities, and the architectural error is consolidation — pushing extraction, safety, and retrieval into one long prompt and accepting approximations where guarantees were available.

Why This Matters

A generative build is rarely one call. An expense-approval pipeline needs fields out of scanned receipts, a screen against injection attempts, and answers grounded in policy documents. Each of those has a service built for it, with a maintained contract behind it.

Consolidating them into a single prompted model produces three approximations. The extraction returns strings you must parse and normalize. The safety screen is an instruction competing for attention with everything else in the context. The grounding is whatever the model remembers. All three work in demos and degrade in ways that are hard to detect, because none of them fails loudly.

The reverse error is also real: reaching for an agent runtime, a knowledge base, and a toolbox when the requirement is one prompt and one answer. Every service you add is configuration, identity, cost, and a failure mode. Selection is about matching the requirement to the smallest set of services that carries the necessary guarantees.

The exam frames this as decomposition. A scenario lists three or four requirements in separate sentences, and the answer is the combination that satisfies each one with the service designed for it.

Prerequisites

  • The model families and the elimination order from the previous objective.
  • That Foundry Tools are prebuilt capabilities distinct from catalogue models.
  • Basic familiarity with retrieval as a concept: an index, a query, and ranked results.
  • The idea that an agent differs from a model call by deciding actions at runtime.

Learning Objectives

By the end of this lesson you will be able to:

  1. Map each common requirement — extraction, safety, retrieval, multimodal understanding, tool-calling — to the service that owns it.
  2. Distinguish Azure AI Search from Foundry IQ and explain how they relate.
  3. Decide when a workload needs Foundry Agent Service rather than a direct model call.
  4. Explain why the resource type you provision constrains which services are reachable.
  5. Choose between Document Intelligence and Content Understanding for a given extraction task.

Building Blocks

Azure AI Search. The retrieval and grounding engine. It supports "full-text, vector, hybrid, and multimodal queries over local (indexed) and remote content", provides AI enrichment to "chunk, vectorize, and otherwise make raw content searchable", and offers relevance tuning including the semantic ranker, synonym maps, filters, and faceted navigation. It ships two engines: classic search for single-index request-response queries, and agentic retrieval for multi-query, LLM-assisted planning.

Foundry IQ. Not a separate search product but "the managed knowledge layer that transforms enterprise content into reusable, permission-aware knowledge bases for agents", underpinned by Azure AI Search. An agent references a knowledge base for what to ground on; the knowledge base decides how.

Azure Document Intelligence in Foundry Tools. OCR and intelligent document processing — prebuilt models with schemas "defined and maintained by Microsoft", custom extraction and classification models, and layout analysis that returns tables, selection marks, and paragraph roles.

Azure Content Understanding. Processes "unstructured data of any type (image, documents, audio, video) and extracting structured insights based on pre-defined or user-defined formats". Its breadth across modalities is what distinguishes it.

Azure AI Content Safety. Four harm categories with severity ratings, Prompt Shields for direct and indirect attacks, protected material detection for text and code, and custom blocklists.

Azure Language and Azure Speech. Text analysis — PII detection, NER, language detection, text analytics for health as core capabilities — and the speech surface: real-time, fast, and batch transcription, text to speech, speech translation, and Voice Live.

Foundry Agent Service. The runtime for agents. "An agent can call tools, access external data, and make decisions across multiple steps to complete a task", and the Agent Runtime "manages conversations, tool calls, and agent lifecycle." Two agent types: prompt agents (configuration only, no code or compute to maintain) and hosted agents (your code, run by Foundry).

Which service owns which requirement

Retrieval and ranking

Azure AI Search

Full-text, vector, hybrid, multimodal queries; relevance tuning

Reusable grounding for agents

Foundry IQ

Permission-aware knowledge bases over one or more sources

Documents with a known schema

Document Intelligence

Typed field extraction, layout, OCR

Any modality into your shape

Content Understanding

Image, documents, audio, video → structured insight

Safety and injection

Content Safety

Harm categories, Prompt Shields, protected material, blocklists

Runtime decisions

Foundry Agent Service

Tool calls and multi-step action

Deep Dive

Grounding: three shapes, three answers

Grounding questions look alike and split on how many sources and who plans the search.

One index you already maintain. Attach the Azure AI Search tool, which grounds agents "with data from an existing Azure AI Search index." Nothing is copied or re-ingested, and the owning team's enrichment and relevance tuning keep applying. Any stem describing existing, tuned investment is testing whether you point at it rather than rebuild.

Files handed to the agent. Use File Search, which augments agents "with knowledge from uploaded files or proprietary documents by using vector search." This is for documents a user supplies during a conversation, not for a governed enterprise corpus.

Several governed collections, planned by the service. Use a knowledge base. Each query "undergoes planning, decomposition into focused subqueries, parallel retrieval from knowledge sources, semantic reranking, and results merging", and the response carries "an activity log and references" alongside the answer. The distinguishing property is that planning and merging happen in the service rather than in your application code.

The trap in this area is answering a multi-source requirement with several index tools attached to one agent. That pushes source selection into the model's per-question tool choice, so nothing ever merges or ranks across collections — the agent picks one and answers from it.

Reading a grounding requirement

  1. How many sources?

    One → index tool or File Search. Several → knowledge base.

Extraction: Document Intelligence or Content Understanding

Both extract structure from unstructured input, and they split on modality breadth and schema ownership.

Document Intelligence is documents and images, with a deep model family: prebuilt-read for text and searchable PDF, prebuilt-layout for tables, selection marks, and paragraph roles, and per-document-type prebuilt models whose field schemas Microsoft maintains. Its output is strongly typed — dates as dates, amounts as currency — which is why it fits pipelines feeding another system.

Content Understanding is broader: any modality, into "pre-defined or user-defined formats". It also offers standard and pro modes, where pro "is designed for advanced use cases that require multi-step reasoning and complex decision-making" and can reason over input content and reference data together.

Choose Document Intelligence when the input is documents and a maintained schema exists. Choose Content Understanding when the input spans modalities, or when the output shape is one you are defining, or when the task is a judgement rather than an extraction.

Agent or model call?

The line is definitional. "Unlike a simple chatbot that only generates text, an agent can call tools, access external data, and make decisions across multiple steps to complete a task." If nothing must be decided after the request arrives — one prompt, one answer — a direct model call is simpler, cheaper, and easier to reason about.

Requirements that genuinely indicate an agent: choosing among tools at runtime, acting and then reacting to the result, maintaining conversation state across turns, or coordinating other agents. Requirements that do not: schema-valid output (that is structured outputs on a plain call), safety screening (that is content filtering on the deployment), or low cost at volume (which argues against agent overhead).

The resource type constrains everything

A subtle but decisive planning point. "A Foundry resource provides unified access to models, agents, and tools" through a project endpoint of the form https://<resource-name>.services.ai.azure.com/api/projects/<project-name>. By contrast, "an Azure OpenAI resource provides only the /openai/v1 endpoint."

That means a team who provisioned an Azure OpenAI resource and later wants file search, code interpreter, or agents cannot get there by configuration — the surface is absent, not disabled. No client version, API version, or setting reaches an endpoint the resource does not have. Service selection therefore includes a provisioning decision made early and awkward to reverse.

Worked Examples

Example 1 — expense approval. Three requirements: key-value pairs from scanned receipts; screening for jailbreak and injection attempts; answers grounded in procurement policy with hybrid retrieval and semantic ranking.

Three requirements, three services: Document Intelligence (prebuilt-receipt, prebuilt-invoice), Content Safety (Prompt Shields plus harm filters), Azure AI Search (hybrid retrieval, semantic ranker). Options offering networking components, storage and analytics services, or perception tools mismatched to the tasks are testing whether you recognise the Foundry Tools surface at all.

Example 2 — a claims assistant. The team needs similarity search over product descriptions, and separately an assistant that decides which of several tools to call across a multi-step task.

Similarity search is Azure AI Search with vector queries — remembering that vectors are adopted for a reason: "LLMs and agents don't require vectors. Only use them if you need similarity search." The multi-step tool decision is Foundry Agent Service, because something must be decided at runtime. Neither service substitutes for the other: an agent uses retrieval, it does not provide it.

Example 3 — supplier evidence packs. Certificates, photographs of installed equipment, and recorded site interviews must be reduced to something an assistant can reason over, with specific values also going to a register.

The modality span decides it: Content Understanding, which handles image, documents, audio, and video. Document Intelligence would cover the certificates and photographs and not the interviews. And because two consumers need two shapes, the analyzer should emit both a readable representation for the assistant and typed fields for the register — from one analysis, not two.

Visual Explanations

Requirement to service:

Loading Diagram...
Figure 1 — Mermaid diagram

How the grounding pieces stack:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Consolidating three requirements into one prompt. A prompt asks; a service guarantees. The failure is silent and shows up downstream.

Adding an agent runtime for a single-turn task. If nothing is decided after the request arrives, the runtime is overhead.

Attaching several index tools instead of a knowledge base. Source selection becomes a per-question tool choice, so cross-source ranking never happens.

Re-uploading a corpus that is already indexed. File Search is for files handed to the agent; an existing tuned index is reached with the Azure AI Search tool.

Assuming vectors are mandatory for grounding. They are adopted when you need similarity search, and they cost an embedding stage, storage, and pipeline.

Treating Content Understanding and Document Intelligence as interchangeable. They overlap on documents and diverge sharply on audio, video, and judgement tasks.

Provisioning an Azure OpenAI resource for a build that will need agents. Only /openai/v1 is served; agents and platform tools are unreachable by construction.

Practice Exercises

  1. A build needs invoice fields, injection screening, and hybrid retrieval over policy manuals. Name the three services and the property that selects each.
  2. A team already runs a tuned 400,000-document Azure AI Search index. An agent must use it. What do you attach, and why not File Search?
  3. Which requirement in a stem tells you an agent runtime is needed rather than a direct model call?
  4. An evidence pack contains PDFs, photographs, and recorded interviews. Which extraction service, and what rules out the alternative?
  5. A workload on an Azure OpenAI resource cannot attach code interpreter. Diagnose it.
Answers
  1. Document Intelligence (standard document types with maintained schemas and typed output), Content Safety (Prompt Shields for direct and indirect attacks), Azure AI Search (hybrid retrieval with a semantic ranker).
  2. The Azure AI Search tool, which grounds on an existing index — no re-ingestion, and the team's enrichment and tuning keep applying. File Search is for files uploaded to the agent and would duplicate a governed corpus.
  3. Something must be decided at runtime across multiple steps — choose a tool, act, read the result, decide again. Schema-valid output, safety screening, and low cost at volume do not indicate an agent.
  4. Content Understanding, because it processes "any type (image, documents, audio, video)". Document Intelligence covers the PDFs and photographs but not the recorded interviews.
  5. An Azure OpenAI resource provides only the /openai/v1 endpoint — agents and platform tools are absent, not disabled. Move to a Foundry resource and call the project endpoint.

Summary & Concept Map

Service selection is decomposition. Count the distinct requirements in the scenario, then name the service that owns each with a real guarantee behind it: Azure AI Search for retrieval and ranking, Foundry IQ for reusable permission-aware grounding, Document Intelligence for typed fields from documents, Content Understanding for any modality into a shape you define, Content Safety for harm and injection, and Foundry Agent Service when actions are decided at runtime. Resist both consolidation and sprawl — and remember that the resource type you provision decides which of these are reachable at all.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

LO Quick Note901 words

Quick Note — Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

AI-103 › Unit 1: Plan and manage an Azure AI solution › Choose the appropriate Foundry services for generative AI and agents › Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

Read full article

Quick Note — Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing

An expense-approval build needs three things: fields out of scanned receipts, a screen for jailbreak attempts, and answers grounded in procurement policy. A team that reaches for one frontier model and a long prompt gets all three approximately. The same build assembled from Document Intelligence, Content Safety, and AI Search gets typed fields with a maintained schema, a purpose-built injection detector, and hybrid retrieval with a semantic ranker — three guarantees instead of three hopes.

Retrieval target

Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing
Closed-book recall
5 minutes
Open Microsoft Learn after a miss

Decision anchors

PromptCompact answer
Grounding and vector searchAzure AI Search — full-text, vector, hybrid, and multimodal queries; integrated vectorization generates embeddings in-pipeline; semantic ranker reorders by meaning. It also underpins Foundry IQ, the managed knowledge layer that turns enterprise content into reusable, permission-aware knowledge bases.
Structured extraction from documentsAzure Document Intelligence in Foundry Tools — prebuilt models (prebuilt-invoice, prebuilt-receipt, prebuilt-layout, prebuilt-read) with schemas defined and maintained by Microsoft, returning strongly typed values.
Any modality into a shape you defineAzure Content Understanding — processes "unstructured data of any type (image, documents, audio, video)" and extracts structured insights against pre-defined or user-defined formats.
Safety screeningAzure AI Content Safety — four harm categories, Prompt Shields for direct and indirect attacks, protected material detection, custom blocklists.
Agent workflowsFoundry Agent Service — the runtime that "manages conversations, tool calls, and agent lifecycle". Choose it when something must be decided at runtime: pick a tool, act, read the result, decide again. One prompt and one answer does not need it.
Resource type mattersA Foundry resource provides unified access to models, agents, and tools through a project endpoint. An Azure OpenAI resource provides only the /openai/v1 endpoint — no agents, no platform tools. Choosing the wrong resource type makes tools unreachable by configuration, not by setting.

Read the answers once, then cover the right-hand column and reconstruct each one from the prompt. A useful answer names the requirement, the capability that satisfies it, and the nearest alternative it rejects. If you can only recognize the answer after seeing it, retrieval is not yet secure.

Ninety-second explanation

Without notes, explain:

  1. Which service provides hybrid retrieval, and what does the semantic ranker add on top?
  2. What distinguishes Content Understanding from Document Intelligence?
  3. Which requirement in a stem tells you an agent runtime is needed rather than a model call?
  4. Why can a build on an Azure OpenAI resource fail to attach file search or code interpreter?
  5. What is Foundry IQ, and what does permission-aware buy you?

Then check yourself against current Microsoft Learn. Record the missing decision rule, not merely the missed product name, in your error log.

Choose the appropriate Foundry services for generative tasks, grounding, vector search, agent workflows, or multimodal processing — quick retrieval

When to go deeper

Go deeper when the choice depends on a service's current preview status or regional availability — agentic retrieval carries region restrictions that classic search does not. Start from Introduction to Azure AI Search and the Foundry Tools overviews.

Source and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026). Reviewed 2026-08-20. Microsoft Learn controls changing product contracts — availability, limits, preview status, naming, and retirement dates move, and this note is deliberately compact.

Lesson2,891 words

Apply responsible AI instrumentation, including evaluators, safety evaluations, and explanation tooling

AI-103 › Unit 1: Plan and manage an Azure AI solution › Implement responsible AI across generative AI and agentic systems › Apply responsible AI instrumentation, including evaluators, safety evaluations, and explanation tooling

Read full article

Apply responsible AI instrumentation, including evaluators, safety evaluations, and explanation tooling

Filters block content at runtime. Evaluation tells you whether the system was going to produce that content in the first place — and whether it still behaves the way it did last month. This objective is about the measurement side of responsible AI: which evaluator answers which question, when in the lifecycle you run it, and what an adversarial probe adds that a scored dataset cannot.

Why This Matters

Three ideas separate people who pass this objective from people who guess.

Evaluators are not interchangeable. Each answers one specific question, and the giveaway is what it needs as input. An evaluator that requires ground truth cannot be used where no reference answer exists. One that compares response to retrieved context is not measuring correctness against the world.

Safety measurement is not the same as safety filtering. A filter blocks the output that already exists. A safety evaluation or a red-team run tells you the propensity — how often, under what provocation, and in which category — before real users find out.

Instrumentation is lifecycle-shaped. The same evaluator means different things at model selection, in pre-production, and against live traffic. Post-production adds two modes people confuse constantly: continuous evaluation on sampled production traffic, and scheduled evaluation against a fixed dataset.

Prerequisites

  • What an evaluator is: a scorer that takes a query, response, and possibly context or ground truth.
  • The difference between an AI-assisted evaluator (a judge model) and a computed metric.
  • That groundedness means supported by supplied context, not true in general.
  • Basic familiarity with tracing and Application Insights from the observability objective.

Learning Objectives

By the end of this lesson you will be able to:

  1. Select an evaluator from a stated requirement, using its required inputs as the discriminator.
  2. Distinguish Groundedness from Groundedness Pro, and know which needs no model deployment.
  3. Apply the agent evaluators to tool-using systems.
  4. Set evaluation_level correctly and respect the no-mixing rule.
  5. Choose between continuous and scheduled evaluation, and say when red teaming is the right instrument.

Building Blocks

The three lifecycle stages. Evaluation runs at base model selection (benchmarks and leaderboards to shortlist), pre-production (your own datasets, adversarial simulation, red teaming before release), and post-production (operational metrics, continuous evaluation, scheduled evaluation, scheduled red teaming, alerts).

Evaluator families.

FamilyAnswersNotable members
General purposeIs the response well-formed and on point?Coherence, Fluency, Relevance, Response Completeness
Textual similarityHow close to a reference?F1, BLEU, ROUGE, METEOR, GLEU, Similarity
RAGDid retrieval and grounding work?Retrieval, Document Retrieval, Groundedness, Groundedness Pro
Risk and safetyCould this cause harm?Violence, Sexual, Self-harm, Hate and unfairness, Indirect attack, Protected material, Code vulnerability, Ungrounded attributes
AgentDid the agent act correctly?Intent Resolution, Task Adherence, Task Completion, Task Navigation Efficiency, Tool Call Accuracy, Tool Selection, Tool Input Accuracy, Tool Output Utilization, Tool Call Success
Rubric (preview)Does it meet my written criteria?Rubric-based scoring
Azure OpenAI gradersCustom judging primitivesModel Labeler, String Checker, Text Similarity, Model Scorer

The two groundedness evaluators. Groundedness is AI-assisted, scores 1–5, and "requires a model deployment to act as a judge". Groundedness Pro (preview) is "powered by Azure AI Content Safety", returns a binary pass/fail with reasoning, and — the exam-relevant point — does not require a model deployment.

Document Retrieval versus Retrieval. Document Retrieval measures retrieval quality using ground truth labels — it needs a labelled reference set. Retrieval assesses "how well the retrieved chunks address the query" without one.

Evaluation level. evaluation_level accepts "turn" (the default — each exchange scored separately) or "conversation" (the thread as a whole). You cannot mix levels in a single run; a run is one level or the other.

AI Red Teaming Agent. Built on PyRIT, it "runs automated scans for content safety risks", "simulates adversarial probing", and produces scorecards over risk categories and attack strategies, so teams can measure risk before deployment. It can also be scheduled post-production.

Cluster analysis. Groups failing cases so you see the pattern rather than a list of individual low scores — the difference between "score fell 4%" and "this class of query fails".

Continuous, scheduled, and red teaming

Input

Sampled production traffic

A fixed test dataset

Generated adversarial probes

Answers

How is the live system doing right now?

Has behaviour drifted?

What can be provoked out of it?

Controls the variable

No — traffic changes

Yes — inputs are held constant

By category and strategy

Built on

Evaluators over traces

Evaluators over a dataset

PyRIT

Deep Dive

Picking an evaluator by its inputs

The reliable way to choose is to ask what the evaluator must be handed.

Nothing but the response — Coherence, Fluency. Useful for form, silent about truth.

Response plus the query — Relevance, Response Completeness, Intent Resolution.

Response plus retrieved context — Groundedness, Groundedness Pro, Retrieval. These answer "is this supported by what we gave it", which is the only question a RAG stack can honestly ask without a reference set.

A reference answer — the similarity family, and Document Retrieval. If the scenario says no labelled data exists, these are eliminated immediately.

Tool definitions and the call trace — the agent family.

That last family repays a closer look, because its members are more finely divided than most people expect. Tool Selection asks whether the right tool was chosen; Tool Input Accuracy asks whether the arguments passed to it were correct; Tool Output Utilization asks whether the agent actually used what came back; Tool Call Success asks whether the call succeeded. An agent that picks the right tool, passes a malformed argument, and then ignores the error is failing three distinct evaluators — and a scenario describing exactly that behaviour is naming one of them.

Choosing an evaluator from a requirement

  1. Name the failure being described

    Wrong tool? Unsupported claim? Repetitive text? Ignored instruction?

Groundedness, Groundedness Pro, and the deployment constraint

Both evaluate the same property — is the response supported by the supplied context — and differ in mechanism and output.

Groundedness is AI-assisted. A judge model scores 1–5, giving a graded signal that suits tracking a number over time. It requires a model deployment.

Groundedness Pro is preview, powered by Azure AI Content Safety, returns binary pass/fail with reasoning, and requires no model deployment. That last point is the discriminator: a scenario that rules out deploying a judge — cost, region, governance — is pointing at Pro. A scenario that wants a graded trend line is pointing at the 1–5 evaluator.

The common error is treating groundedness as factuality. It is not. A response perfectly grounded in a wrong document scores well. Groundedness measures fidelity to the context; correctness of the context is a retrieval and content problem.

Turn against conversation, and the rule you cannot break

evaluation_level defaults to "turn", scoring each exchange independently. "conversation" scores the thread as a whole, which is what you need for properties that only exist across turns — did the agent stay on task, did it carry constraints forward, did it resolve the intent by the end.

The rule to remember: you cannot mix evaluation levels in a single run. A requirement to score both per-turn quality and whole-conversation adherence means two runs, not one run with mixed settings. Answer options offering a single run with both are testing exactly this.

What red teaming adds that datasets cannot

A dataset measures behaviour on inputs you thought of. Red teaming measures behaviour on inputs an adversary thinks of.

The AI Red Teaming Agent is built on PyRIT and automates the probing: it generates adversarial prompts across risk categories, applies attack strategies, and returns a scorecard so results are comparable between runs and across model versions. Because it is scriptable it belongs in the pre-production gate, and because risk can reappear with a model or prompt change it also belongs on a schedule in production.

Note what it is not. It does not replace filters — it tells you what the filters and system prompt are letting through. And it does not replace safety evaluators on ordinary traffic: an application can be adversarially robust and still produce harmful output on innocuous prompts.

Explanation tooling: from a score to a cause

A quality number tells you something changed; it does not tell you what. Three instruments turn scores into causes.

Traces show the actual path — which tool ran, with what input, what came back, how long each span took. When an evaluator flags a response, the trace is where you find out whether the model reasoned badly or the retrieval returned nothing.

Cluster analysis groups similar failures so a pattern emerges. Fifty scattered low scores are noise; fifty low scores that all involve a date range are a defect with an address.

Evaluator reasoning — Groundedness Pro's pass/fail carries reasoning, and the AI-assisted evaluators explain their score. That text is often the fastest route to the cause.

Used together, the loop is: an alert or a scheduled run flags a drop, cluster analysis names the failing class, traces expose the mechanism, and a targeted dataset confirms the fix.

Worked Examples

Example 1 — no reference answers. A support assistant must be measured for whether answers are supported by the retrieved knowledge base. No labelled answer set exists, and governance forbids deploying an extra judge model.

Groundedness Pro — it evaluates support against context, returns binary pass/fail with reasoning, and requires no model deployment. Plain Groundedness needs a judge; the similarity family and Document Retrieval need ground truth that does not exist.

Example 2 — the agent that ignores its own tool. An agent calls the correct pricing tool, passes a malformed date range, and then answers as if the error had not happened.

Three agent evaluators name three distinct faults: Tool Selection passes, Tool Input Accuracy fails on the malformed argument, Tool Output Utilization fails because the returned error was ignored. Tool Call Success captures whether the call itself succeeded. Naming the specific evaluator matters more than concluding "the agent is wrong".

Example 3 — drift after a model upgrade. A team must detect behaviour change after a version change, and separately watch live quality.

Scheduled evaluation against a fixed dataset isolates the model as the variable — the inputs are held constant, so a score change is attributable. Continuous evaluation on sampled production traffic covers live quality but cannot separate model change from traffic change. Both, for different questions.

Visual Explanations

Evaluator choice as a function of available inputs:

Loading Diagram...
Figure 1 — Mermaid diagram

The post-production loop:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Treating groundedness as factual correctness. It measures support by the supplied context.

Choosing Groundedness when a judge deployment is excluded. Pro requires none.

Choosing Document Retrieval without ground truth. It needs labels; Retrieval does not.

Collapsing the agent evaluators into one. Selection, input accuracy, output utilization, and call success are distinct.

Mixing turn and conversation levels in one run. Not permitted — run twice.

Using continuous evaluation to detect drift. Sampled traffic changes underneath you; drift needs a fixed dataset.

Treating red teaming as a substitute for filters or safety evaluators. It measures what they let through.

Scoping safety evaluation to sensitive-sounding applications only.

Practice Exercises

  1. Distinguish Groundedness from Groundedness Pro on three axes, and say which is chosen when deploying a judge is ruled out.
  2. Which evaluators require ground truth?
  3. An agent picks the right tool, sends a bad argument, and ignores the error. Name the evaluator for each fault.
  4. State the evaluation_level values and the rule about combining them.
  5. Why does drift detection require a fixed dataset rather than sampled traffic?
Answers
  1. Mechanism — AI-assisted judge against Azure AI Content Safety. Output1–5 against binary pass/fail with reasoning. Requirement — Groundedness requires a model deployment; Groundedness Pro does not, which is why Pro is the answer when a judge is excluded.
  2. The similarity family (F1, BLEU, ROUGE, METEOR, GLEU, Similarity) and Document Retrieval. Retrieval does not — it assesses how well retrieved chunks address the query.
  3. Tool Selection passes. Tool Input Accuracy fails on the malformed argument. Tool Output Utilization fails because the returned error was not used. Tool Call Success records whether the call itself succeeded.
  4. "turn" (the default, per-exchange) and "conversation" (whole thread). You cannot mix levels in a single run — measuring both means two runs.
  5. Because the inputs must be held constant for a score change to be attributable to the system. Sampled production traffic changes with user behaviour, so a shift cannot be separated from a change in what is being asked.

Summary & Concept Map

Responsible AI instrumentation is evaluator selection plus lifecycle placement. Choose evaluators by required inputs: no ground truth eliminates the similarity family and Document Retrieval; support-by-context is groundedness, where Pro needs no judge deployment and returns binary pass/fail while the AI-assisted evaluator scores 1–5; tool-using systems get the agent family, whose members separate selection, input accuracy, output utilization, and call success. Set evaluation_level to turn or conversation and never mix them in one run. In production, continuous evaluation watches sampled live traffic while scheduled evaluation on a fixed dataset is what detects drift, scheduled red teaming on PyRIT probes what filters let through, and cluster analysis plus traces turn a score into a cause.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

Lesson2,795 words

Configure safety filters, guardrails, risk detection, and content moderation

AI-103 › Unit 1: Plan and manage an Azure AI solution › Implement responsible AI across generative AI and agentic systems › Configure safety filters, guardrails, risk detection, and content moderation

Read full article

Configure safety filters, guardrails, risk detection, and content moderation

Content filtering is one of the few areas of Foundry with meaningful defaults, and most exam questions here turn on knowing exactly what those defaults are. Some protections are on out of the box; one important one is off; and the direction in which you are allowed to weaken them is asymmetric.

Why This Matters

Three properties make the defaults worth memorising rather than reasoning about.

A safe default is not a complete default. Harm-category filtering applies without configuration, but the shield covering instructions hidden in retrieved documents is off unless you enable it. A team running on defaults is protected against the attack that arrives in the user's prompt and exposed to the one that arrives in a supplier's PDF.

Weakening is gated in one direction only. Making filters stricter is self-service; turning them off on completions requires approval. That asymmetry tells you which direction the platform considers risky.

Two severity scales coexist. The content filtering system classifies into four levels — safe, low, medium, high — and you set a threshold there. The Content Safety API returns numeric severities that differ by modality. Questions frequently hinge on which surface is being described.

Prerequisites

  • That a content filter is a configuration object applied to a model deployment.
  • The difference between a prompt (input) and a completion (output).
  • What prompt injection is, and that content can arrive from retrieved documents as well as from a user.
  • That filters are created at the resource level and associated with deployments.

Learning Objectives

By the end of this lesson you will be able to:

  1. State the default filtering configuration and what it covers.
  2. Distinguish direct and indirect Prompt Shields, including their differing defaults.
  3. Configure thresholds, annotate-only, and blocklists, and know which changes need approval.
  4. Distinguish the content filtering severity levels from the Content Safety API scales.
  5. Apply a filter to a deployment, and override it per request.

Building Blocks

The four harm categories. Content Safety "recognizes four distinct categories of objectionable content": Hate and Fairness (Hate), Sexual, Violence, Self-Harm (SelfHarm). "Classification can be multi-labeled" — one sample can be both Sexual and Violence. The harm-categories table also lists Task Adherence, which "helps ensure AI Agents consistently behave in alignment with user instructions and task objectives", identifying "misaligned tool invocations, improper tool input or output relative to user intent".

The default configuration. "The content filtering system… uses an ensemble of multi-class classification models to detect four categories of harmful content (violence, hate, sexual, and self-harm) at four severity levels respectively (safe, low, medium, and high)… The default content filtering configuration is set to filter at the medium severity threshold for all four content harms categories for both prompts and completions."

Configurability. All customers can set thresholds to Low, medium, high (strictest), Medium, high, or High only, separately for prompts and completions. No filters and Annotate only are available for prompts, and for completions "If approved" — "Approval is required for turning the content filters partially or fully off on completions."

The other filters, with their defaults.

FilterStatusDefaultApplies to
Prompt Shields for direct attacks (jailbreak)GAOnUser prompt
Prompt Shields for indirect attacksGAOffUser prompt
Protected material — codeGAOnCompletion
Protected material — textGAOnCompletion
GroundednessPreviewOffCompletion
PIIPreviewOffCompletion

Blocklists. "You can apply a blocklist as either an input or output filter, or both… Select one or more blocklists from the dropdown, or use the built-in profanity blocklist. You can combine multiple blocklists into the same filter."

Scope and application. "Content filters can be configured at the resource level. Once a new configuration is created, it can be associated with one or more deployments." A per-request override exists: the x-policy-id header, where "the request-level content filtering configuration will override the deployment-level configuration, for the specific API call" — though it "is not available for image input (chat with images) scenarios."

The API severity scales. Text — "supports the full 0-7 severity scale… If the user specifies, it can return severities in the trimmed scale of 0, 2, 4, and 6." Image — "supports the trimmed version… The classifier only returns severities 0, 2, 4, and 6." Image with text (multimodal) — "supports the full 0-7 severity scale."

Direct against indirect Prompt Shields

Where the payload arrives

The user's own prompt

Content the system ingests

Who is attacking

The user

A third party

Status

GA

GA

Default

On

Off — you must enable it

Requires

Document embedding and formatting

Deep Dive

The exposure hiding in the defaults

The single most examinable fact in this objective is that indirect-attack Prompt Shields is off by default.

The two shields address different threats. The direct-attack shield "filters / annotates user prompts that might present a Jailbreak Risk" — the user themselves trying to break the system. The indirect-attack shield covers "Indirect Attacks, also referred to as Indirect Prompt Attacks or Cross-Domain Prompt Injection Attacks, a potential vulnerability where third parties place malicious instructions inside of documents that the generative AI system can access and process."

Any RAG or agent system ingests third-party content — supplier PDFs, web pages, email, tool responses. On a default configuration, that entire surface is unprotected while something called "Prompt Shields" is switched on, which is exactly why the misconception survives.

Enabling it has a prerequisite worth knowing: the indirect shield "Requires: Document embedding and formatting", so the documents must be presented in the documented structure for the service to distinguish content from instructions.

Thresholds, and the asymmetry of weakening

Threshold configuration is straightforward: pick which severities are filtered, separately for prompts and completions. "Content detected at the 'safe' severity level is labeled in annotation output but isn't subject to filtering and isn't configurable."

What matters is the governance asymmetry. Tightening — moving from medium, high to low, medium, high — is self-service. Loosening on completions to No filters or Annotate only "requires approval", available through the Limited Access Review for modified content filters.

Annotate only is worth understanding as a distinct mode rather than a synonym for off: it "runs the respective model and returns annotations via API response, but it will not filter content." That makes it the right choice when you need to measure prevalence before enforcing, or when an application wants to make its own decision from the annotation.

Creating and applying a filter

  1. Create at the resource

    Filters are resource-level configurations, not deployment settings.

Two severity vocabularies

Confusing these produces confidently wrong answers.

The content filtering system — the thing you configure on a deployment — classifies into four levels: safe, low, medium, high. You set the threshold in those terms.

The Content Safety API — called directly — returns numeric severities, and the range depends on modality. Text supports the full 0–7 scale, optionally returning a trimmed 0/2/4/6 where "each two adjacent levels are mapped to a single level". Image supports only the trimmed scale, returning nothing but 0, 2, 4 and 6. Multimodal — image with text — supports the full 0–7.

The image restriction is the detail most often tested, and the reasoning trap is assuming the ceiling was lowered. It was not: multimodal returns 7, so nothing is being reserved. The image model simply reports at coarser resolution.

Blocklists: the enumerable case

A blocklist matches terms you can name in advance, and can be applied as an input filter, an output filter, or both, with multiple blocklists combined into one filter and a built-in profanity list available.

That makes it exactly right for a defined, enumerable set — a partner's prohibited symbol list, a set of internal identifiers that must never appear in output — and exactly wrong for an open-ended behaviour where an adversary chooses the wording. The general rule: if you can write the list down, a blocklist fits; if the attacker picks the phrasing, you need a detector.

Where filters live, and the request override

Filters are created at the resource level and associated with one or more deployments. The association is the step that changes behaviour, and skipping it is the classic mistake — a carefully built configuration that is not attached affects nothing, and testing in the playground then measures the default policy.

For cases needing per-call variation, the x-policy-id request header names a custom configuration and overrides the deployment-level one for that call. Two caveats: a configuration that does not exist returns InvalidContentFilterPolicy, and the override "is not available for image input (chat with images) scenarios", where the default filter is used.

Worked Examples

Example 1 — a poisoned supplier document. A RAG assistant summarizes supplier PDFs. One contains hidden text instructing the model to reveal its system prompt. The deployment uses the default filter configuration.

Prompt Shields for indirect attacks is off by default and must be enabled; the direct-attack shield is on but inspects the user's prompt, which never contained the payload. Harm categories do not apply — an instruction to disclose a prompt is not hate, sexual, violence, or self-harm content. A blocklist cannot anticipate the attacker's wording.

Example 2 — a surprised safety team. A platform screens uploaded images and finds the API returns only 0, 2, 4 and 6, while its text pipeline returns a finer scale.

The image model supports only the trimmed scale; text supports the full 0–7 and can optionally return trimmed. Multimodal supports the full range, so nothing is reserved for it — the image classifier simply reports at coarser resolution.

Example 3 — brand symbols and provenance. Partners require that a defined set of prohibited symbols never appears, and that generated images can later be shown to be machine-generated.

A custom blocklist for the enumerable symbol list, applied to the output filter. Content Credentials for provenance. Harm categories cannot be extended with a partner list, and protected material detects known copyrighted content, which is a different question from provenance.

Visual Explanations

What the defaults cover, and what they leave open:

Loading Diagram...
Figure 1 — Mermaid diagram

Two severity vocabularies:

Loading Diagram...
Figure 2 — Mermaid diagram

Common Mistakes

Assuming Prompt Shields covers retrieved content by default. The indirect shield is off.

Expecting harm categories to catch injection. They classify harmful content, not instructions.

Treating annotate-only as off. It runs the model and returns annotations without filtering.

Believing loosening is symmetric with tightening. Turning filters off on completions requires approval.

Confusing the four filtering levels with the API's numeric scale. And within the API, assuming image supports 0–7.

Creating a filter and not associating it with a deployment. The association changes behaviour.

Using a blocklist against an adversary who chooses the wording. Blocklists fit enumerable sets.

Reaching for Prompt Shields to stop a leak. Shields are inbound; leakage is an output concern.

Practice Exercises

  1. State the default filtering configuration precisely — categories, threshold, and which directions.
  2. A supplier PDF carries hidden instructions. Which control, what is its default, and why does the other shield not help?
  3. Which filter changes require approval, and in which direction?
  4. The image API returns only 0, 2, 4, 6. Explain, and say what multimodal returns.
  5. A partner supplies a list of prohibited symbols and separately wants provenance on generated images. Name both controls.
Answers
  1. Four categories (violence, hate, sexual, self-harm) filtered at the medium severity threshold, on both prompts and completions — so content at medium or high is filtered while low and safe are not.
  2. Prompt Shields for indirect attacks, which is GA but Off by default and requires document embedding and formatting. The direct-attack shield is on but inspects the user's prompt; the payload arrived in ingested content it never sees.
  3. Turning content filters partially or fully off on completions — including Annotate only for completions. Making filters stricter is self-service.
  4. The image model supports only the trimmed scale (0, 2, 4, 6). Text supports the full 0–7 with trimming optional, and image with text (multimodal) supports the full 0–7 — so nothing is being reserved for multimodal.
  5. A custom blocklist (enumerable terms, applied to the output filter) and Content Credentials for provenance. Protected material is about known copyrighted content, not provenance.

Summary & Concept Map

Content moderation in Foundry is a defaults question first. Four harm categories are filtered at medium on both prompts and completions without configuration; direct-attack Prompt Shields and protected material for text and code are on; indirect-attack Prompt Shields, groundedness, and PII are off — and the indirect shield is the gap that matters for any system ingesting third-party content. Tightening is self-service and loosening completions needs approval. Filters are resource-level objects that only take effect once associated with a deployment, with x-policy-id for per-request overrides. And keep the two severity vocabularies apart: four named levels where you set thresholds, numeric scales at the API where image returns only the trimmed 0/2/4/6.

Loading Diagram...
Figure 3 — Mermaid diagram
Loading flashcards…

Sources and freshness

Written against current Microsoft Learn documentation for the AI-103 skills measured (16 April 2026), reviewed 2026-08-20. Microsoft Learn controls every changing product contract — availability, preview status, quotas, limits, regional support, naming, and retirement dates all move independently of this lesson. Where a scenario turns on a specific number or a GA/preview boundary, confirm it against the product's own page before relying on it.

More Study Notes (58)

Govern agent behavior with oversight modes, constraints, and tool-access controls

AI-103 › Unit 1: Plan and manage an Azure AI solution › Implement responsible AI across generative AI and agentic systems › Govern agent behavior with oversight modes, constraints, and tool-access controls

2,863 words

Implement auditing through trace logging, provenance metadata, and approval workflows

AI-103 › Unit 1: Plan and manage an Azure AI solution › Implement responsible AI across generative AI and agentic systems › Implement auditing through trace logging, provenance metadata, and approval workflows

2,624 words

Configure security including managed identity, private networking, keyless credentials, and role policies

AI-103 › Unit 1: Plan and manage an Azure AI solution › Manage, monitor, and secure AI systems › Configure security including managed identity, private networking, keyless credentials, and role policies

2,695 words

Manage quotas, scaling, rate limits, and cost footprints for model and agent workloads

AI-103 › Unit 1: Plan and manage an Azure AI solution › Manage, monitor, and secure AI systems › Manage quotas, scaling, rate limits, and cost footprints for model and agent workloads

2,663 words

Monitor data ingestion quality, search index health, and relevance performance

AI-103 › Unit 1: Plan and manage an Azure AI solution › Manage, monitor, and secure AI systems › Monitor data ingestion quality, search index health, and relevance performance

2,552 words

Monitor model performance, drift, safety events, and grounding quality

AI-103 › Unit 1: Plan and manage an Azure AI solution › Manage, monitor, and secure AI systems › Monitor model performance, drift, safety events, and grounding quality

2,601 words

Choose appropriate deployment options

AI-103 › Unit 1: Plan and manage an Azure AI solution › Set up AI solutions in Foundry › Choose appropriate deployment options

2,430 words

Configure model and agent deployments

AI-103 › Unit 1: Plan and manage an Azure AI solution › Set up AI solutions in Foundry › Configure model and agent deployments

2,761 words

Design Azure infrastructure for AI apps and agent-based solutions

AI-103 › Unit 1: Plan and manage an Azure AI solution › Set up AI solutions in Foundry › Design Azure infrastructure for AI apps and agent-based solutions

2,689 words

Integrate Foundry projects with CI/CD pipelines

AI-103 › Unit 1: Plan and manage an Azure AI solution › Set up AI solutions in Foundry › Integrate Foundry projects with CI/CD pipelines

2,637 words

Build agents that integrate retrieval, function-calling, and conversation memory

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Build agents that integrate retrieval, function-calling, and conversation memory

2,865 words

Build autonomous or semiautonomous workflows with safeguards and approval flow controls

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Build autonomous or semiautonomous workflows with safeguards and approval flow controls

2,613 words

Define agent roles, goals, conversation-tracking approach, and tool schemas

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Define agent roles, goals, conversation-tracking approach, and tool schemas

2,862 words

Implement orchestrated multi-agent solutions

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Implement orchestrated multi-agent solutions

2,638 words

Integrate agent tools, including APIs, knowledge stores, search, content understanding, and custom functions

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Integrate agent tools, including APIs, knowledge stores, search, content understanding, and custom functions

2,770 words

Integrate monitoring into deployed agents, evaluate agent behavior, and perform error analysis

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build agents by using Foundry › Integrate monitoring into deployed agents, evaluate agent behavior, and perform error analysis

2,715 words

Configure an application to connect to a Foundry project

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Configure an application to connect to a Foundry project

2,523 words

Deploy and consume LLMs, small models, code models, and multimodal models

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Deploy and consume LLMs, small models, code models, and multimodal models

2,635 words

Design workflows, tool-augmented flows, and multistep reasoning pipelines

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Design workflows, tool-augmented flows, and multistep reasoning pipelines

2,571 words

Evaluate models and apps, including detecting fabrications, relevance, quality, and safety

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Evaluate models and apps, including detecting fabrications, relevance, quality, and safety

2,678 words

Implement retrieval-augmented generation (RAG) in an application

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Implement retrieval-augmented generation (RAG) in an application

2,747 words

Integrate generative workflows into applications by using Foundry SDKs and connectors

AI-103 › Unit 2: Implement generative AI and agentic solutions › Build generative applications by using Foundry › Integrate generative workflows into applications by using Foundry SDKs and connectors

2,693 words

Implement model reflection, chain-of-thought evaluations, and self-critique loops

AI-103 › Unit 2: Implement generative AI and agentic solutions › Optimize and operationalize generative AI systems › Implement model reflection, chain-of-thought evaluations, and self-critique loops

2,693 words

Orchestrate multiple models, flows, or hybrid LLM and rules engines

AI-103 › Unit 2: Implement generative AI and agentic solutions › Optimize and operationalize generative AI systems › Orchestrate multiple models, flows, or hybrid LLM and rules engines

2,646 words

Set up observability by implementing tracing, token analytics, safety signals, and latency breakdowns

AI-103 › Unit 2: Implement generative AI and agentic solutions › Optimize and operationalize generative AI systems › Set up observability by implementing tracing, token analytics, safety signals, and latency breakdowns

2,625 words

Tune generation behavior, such as prompt engineering and adjusting model parameters

AI-103 › Unit 2: Implement generative AI and agentic solutions › Optimize and operationalize generative AI systems › Tune generation behavior, such as prompt engineering and adjusting model parameters

2,698 words

Configure image-editing workflows, including inpainting, mask-based edits, and prompt-driven modifications

AI-103 › Unit 3: Implement computer vision solutions › Design and implement image- and video-generation solutions › Configure image-editing workflows, including inpainting, mask-based edits, and prompt-driven modifications

2,607 words

Implement a solution that generates images from text prompts and reference media

AI-103 › Unit 3: Implement computer vision solutions › Design and implement image- and video-generation solutions › Implement a solution that generates images from text prompts and reference media

2,488 words

Implement a solution that generates videos from text prompts and reference media

AI-103 › Unit 3: Implement computer vision solutions › Design and implement image- and video-generation solutions › Implement a solution that generates videos from text prompts and reference media

2,776 words

Implement workflows to edit generated videos

AI-103 › Unit 3: Implement computer vision solutions › Design and implement image- and video-generation solutions › Implement workflows to edit generated videos

2,657 words

Select and apply appropriate generation and editing controls provided by the platform

AI-103 › Unit 3: Implement computer vision solutions › Design and implement image- and video-generation solutions › Select and apply appropriate generation and editing controls provided by the platform

2,596 words

Build a solution that analyzes visual context by using multimodal models

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Build a solution that analyzes visual context by using multimodal models

2,693 words

Configure apps to produce concise or detailed captions for single or multiple images

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Configure apps to produce concise or detailed captions for single or multiple images

2,575 words

Configure generation of alt-text and extended image descriptions aligned to accessibility guidelines

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Configure generation of alt-text and extended image descriptions aligned to accessibility guidelines

2,759 words

Configure single-task and pro-mode Content Understanding pipelines

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Configure single-task and pro-mode Content Understanding pipelines

2,572 words

Implement a solution that enables question-answering grounded in visual evidence

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Implement a solution that enables question-answering grounded in visual evidence

2,722 words

Implement solutions that identify objects, components, or regions within images or video

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Implement solutions that identify objects, components, or regions within images or video

2,784 words

Implement video analysis workflows to process and interpret video segments

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Implement video analysis workflows to process and interpret video segments

2,746 words

Implement visual understanding by configuring Azure Content Understanding in Foundry Tools to extract visual characteristics

AI-103 › Unit 3: Implement computer vision solutions › Design and implement multimodal understanding workflows › Implement visual understanding by configuring Azure Content Understanding in Foundry Tools to extract visual characteristics

2,679 words

Detect and mitigate indirect prompt injection via embedded text in images

AI-103 › Unit 3: Implement computer vision solutions › Implement responsible AI for multimodal content › Detect and mitigate indirect prompt injection via embedded text in images

2,898 words

Enforce visual policy rules such as watermarks, prohibited symbols, brand requirements, and inappropriate content detection

AI-103 › Unit 3: Implement computer vision solutions › Implement responsible AI for multimodal content › Enforce visual policy rules such as watermarks, prohibited symbols, brand requirements, and inappropriate content detection

2,789 words

Implement filters to classify unsafe or disallowed visual content

AI-103 › Unit 3: Implement computer vision solutions › Implement responsible AI for multimodal content › Implement filters to classify unsafe or disallowed visual content

2,760 words

Build solutions that translate text by using Azure Translator in Foundry Tools or LLM-powered translation flows

AI-103 › Unit 4: Implement text analysis solutions › Apply language model text analysis › Build solutions that translate text by using Azure Translator in Foundry Tools or LLM-powered translation flows

2,716 words

Configure detection of sentiment, tone, safety issues, and sensitive content

AI-103 › Unit 4: Implement text analysis solutions › Apply language model text analysis › Configure detection of sentiment, tone, safety issues, and sensitive content

2,727 words

Customize language model outputs for domain tasks, such as compliance summarization and domain extraction

AI-103 › Unit 4: Implement text analysis solutions › Apply language model text analysis › Customize language model outputs for domain tasks, such as compliance summarization and domain extraction

2,713 words

Implement solutions to extract entities, topics, summaries, and structured JSON outputs using generative prompting and Foundry Tools

AI-103 › Unit 4: Implement text analysis solutions › Apply language model text analysis › Implement solutions to extract entities, topics, summaries, and structured JSON outputs using generative prompting and Foundry Tools

2,862 words

Enable multimodal reasoning from audio inputs

AI-103 › Unit 4: Implement text analysis solutions › Implement speech solutions › Enable multimodal reasoning from audio inputs

2,619 words

Implement workflows to convert speech to text and text to speech for agentic interactions

AI-103 › Unit 4: Implement text analysis solutions › Implement speech solutions › Implement workflows to convert speech to text and text to speech for agentic interactions

2,683 words

Integrate speech as an agent modality, including custom speech models

AI-103 › Unit 4: Implement text analysis solutions › Implement speech solutions › Integrate speech as an agent modality, including custom speech models

2,639 words

Translate speech into other languages by using language models and Foundry Tools

AI-103 › Unit 4: Implement text analysis solutions › Implement speech solutions › Translate speech into other languages by using language models and Foundry Tools

2,489 words

Configure RAG ingestion flow including documents and OCR

AI-103 › Unit 5: Implement information extraction solutions › Build retrieval and grounding pipelines › Configure RAG ingestion flow including documents and OCR

2,796 words

Configure semantic search, hybrid search, and vector search for grounding

AI-103 › Unit 5: Implement information extraction solutions › Build retrieval and grounding pipelines › Configure semantic search, hybrid search, and vector search for grounding

2,781 words

Connect retrieval pipelines directly to workflows and agent tools

AI-103 › Unit 5: Implement information extraction solutions › Build retrieval and grounding pipelines › Connect retrieval pipelines directly to workflows and agent tools

2,771 words

Implement enrichment by using custom or built-in skills for text, images, and layout

AI-103 › Unit 5: Implement information extraction solutions › Build retrieval and grounding pipelines › Implement enrichment by using custom or built-in skills for text, images, and layout

3,088 words

Ingest and index content such as documents, images, audio, and video

AI-103 › Unit 5: Implement information extraction solutions › Build retrieval and grounding pipelines › Ingest and index content such as documents, images, audio, and video

2,839 words

Extract information by using multimodal pipelines that combine OCR, layout analysis, and field extraction

AI-103 › Unit 5: Implement information extraction solutions › Extract content from documents › Extract information by using multimodal pipelines that combine OCR, layout analysis, and field extraction

2,807 words

Implement analyzers for generating structured or markdown outputs for downstream reasoning using Content Understanding

AI-103 › Unit 5: Implement information extraction solutions › Extract content from documents › Implement analyzers for generating structured or markdown outputs for downstream reasoning using Content Understanding

2,953 words

Produce clean, grounded representations to use with agents and RAG by using Content Understanding

AI-103 › Unit 5: Implement information extraction solutions › Extract content from documents › Produce clean, grounded representations to use with agents and RAG by using Content Understanding

2,897 words

Ready to practice? Jump straight in — no sign-up needed.

Take practice tests, review flashcards, and read study notes right now.

Take a Practice Test

Developing AI Apps and Agents on Azure (AI-103) Practice Questions

Try 15 sample questions from a bank of 591. Answers and detailed explanations included.

Q1hard

Projects are created by the deployment pipeline. Developers then report that every new project fails at first use with an authorization error. What is the cause?

A.

The pipeline's service principal lacks Contributor on the subscription

B.

Projects created outside the portal are issued a different endpoint format that the clients have not been updated for

C.

Newly created projects require a manual approval before their managed identity is activated

D.

The automatic Foundry User assignment applies only to portal-created projects — it doesn't apply when deploying from the SDK or CLI, so the pipeline must assign roles explicitly

Show answer & explanation

Correct Answer: D

  1. Deductive proof: The convenience is portal-only and documented in the negative. The two automatic assignments — Foundry User on the resource for the user principal and for the project's managed identity — happen "when the project is created through the Microsoft Foundry portal UI", and "this assignment doesn't apply when deploying Foundry from SDK or CLI." A pipeline-provisioned project therefore starts with no role assigned, authenticates successfully, and is denied.
  2. Distractor breakdown:
    • A**: The pipeline evidently has enough rights, since the projects are being created. The gap is what is granted on the new project, not what the pipeline itself holds.
    • B**: The endpoint format is a property of the resource and project, not of how they were provisioned.
    • C**: No such approval step exists. The identity is there; its authorization is not.
  3. undefined

{"v":1,"kind":"exam-tip","title":"Infrastructure-as-code loses portal side effects","body":"Assign roles explicitly in the pipeline, and use the role definition ID rather than the display name — the Foundry roles were renamed from Azure AI User / Owner / Account Owner / Project Manager, and "the role IDs and core permissions are unchanged by the rename.""}

4. **Reference**: [Role-based access control for Microsoft Foundry](https://learn.microsoft.com/en-us/azure/foundry/concepts/rbac-foundry)
Q2easy

A team must classify unstructured documents into their own categories, and is choosing an Azure Language feature.

Which statement is correct?

A.

Prebuilt NER is the fit, since classification is a form of entity recognition

B.

Key phrase extraction is the fit, since the extracted phrases become the categories

C.

Language detection is the fit, since it assigns each document a label

D.

Custom text classification is the fit, and it is a customizable feature — you train a model on your own labelled data

Show answer & explanation

Correct Answer: D

  1. Deductive proof: The decision table answers this directly — "Classify documents into one or more categories" maps to custom text classification, marked customizable, meaning "you can train an AI model using our tools to fit your data specifically." The feature "enables you to build custom AI models to classify unstructured text documents into custom classes you define."
  2. Distractor breakdown:
    • A**: NER extracts entities within a document — people, places, quantities. It labels spans of text, not the document as a whole.
    • B**: Key phrase extraction "evaluates and returns the main concepts… as a list." Concepts are not a fixed category set, and nothing maps them to your taxonomy.
    • C**: Language detection identifies which language the text is written in. It does assign a label, which is what makes it superficially plausible — and it is not your category.
  3. undefined

{"v":1,"title":"Customizable or preconfigured?","items":[{"key":"Customizable","value":"Custom NER, custom text classification, CLU, orchestration workflow, question answering"},{"key":"Preconfigured","value":"Prebuilt NER, PII detection, key phrase extraction, sentiment, entity linking, language detection"},{"key":"What preconfigured means","value":""The AI models it uses can't be changed. You just send your data.""}]}

4. **Reference**: [What is Azure Language in Foundry Tools](https://learn.microsoft.com/en-us/azure/ai-services/language-service/overview)
Q3easy

Which ingestion methods suit the blob content and the live pricing respectively?

A.

Pull for the blob content, push for the live pricing

B.

Push for both, since one index should have one writer

C.

Pull for both, adding a custom indexer for the pricing system

D.

Push for the blob content, pull for the live pricing

Show answer & explanation

Correct Answer: A

  1. Deductive proof: The rule has a default and two exceptions. "If your content is in a supported data source, use the pull method (indexer or logic app workflow)" — Blob Storage is supported and an hour of lag is acceptable, so pull. "If you don't have a supported data source, or if your content and index must be synchronized in real time, the push method is your only option" — the pricing system triggers both exceptions.
  2. Distractor breakdown:
    • B: Push works for blob content and takes on scheduling, change detection, and retry logic that an indexer already performs.
    • C: There is no indexer for that system — that is the stated premise, and it is what makes push mandatory.
    • D: Exactly inverted, putting the slow path on the real-time requirement and the manual path on the supported source.
  3. undefined

{"v":1,"kind":"exam-tip","title":"Two questions decide push or pull","body":"Is the source supported? No → push. Must the index be current in real time? Yes → push. Anything else → pull, and let the indexer do the work."}

4. **Reference**: [Introduction to Azure AI Search](https://learn.microsoft.com/en-us/azure/search/search-what-is-azure-search)
Q4easy

A team wants their client to throttle itself before it starts receiving HTTP 429 responses, rather than reacting after the fact.

Which response header should the application watch on every call?

A.

x-ratelimit-limit-tokens, the maximum tokens permitted per minute for the deployment

B.

retry-after-ms, the recommended wait before retrying

C.

x-ratelimit-remaining-tokens, the tokens left before the rate limit is hit

D.

x-ratelimit-reset-tokens, the time until the token rate limit resets

Show answer & explanation

Correct Answer: C

  1. Deductive proof: The requirement is to act before the 429, which means the client needs to know how much headroom is left right now. That is what the remaining counters report, and the documented guidance says so directly: "Monitor x-ratelimit-remaining-requests and x-ratelimit-remaining-tokens in your application to detect when you're approaching limits and proactively throttle requests before receiving a 429."
  2. Distractor breakdown:
    • A: A real header, but it reports the ceiling, not the headroom. On its own it never changes as you consume budget, so it cannot tell you when to slow down. (It is genuinely useful for something else — comparing it against your configured TPM reveals a temporary rate-limit adjustment.)
    • B: A real header, but it is included in 429 responses — by the time you can read it, the request has already been rejected. It drives your backoff, not your throttling.
    • D: A real header that tells you when the window resets. Useful for scheduling a retry, but it says nothing about how much budget is left inside the current window.
  3. undefined

{"v":1,"title":"Four headers, four jobs","items":[{"key":"x-ratelimit-limit-*","value":"The ceiling — and a way to spot a temporary reduction"},{"key":"x-ratelimit-remaining-*","value":"Headroom now — the proactive signal"},{"key":"x-ratelimit-reset-*","value":"When the window rolls over"},{"key":"retry-after-ms","value":"Sent with a 429 — how long to back off"}]}

4. **Reference**: [Manage Azure OpenAI quota](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/quota)
Q5hard

A RAG application must return answers with clickable citations back to the source document, and an auditor must be able to confirm that a given sentence was supported by retrieved material rather than invented.

Which combination delivers this?

A.

Return the retrieved chunk identifiers alongside the answer so the application can render citations, and score the response with the groundedness evaluator to confirm claims are supported by the retrieved context

B.

Set the model's temperature to 0 and log the prompt, so the answer is reproducible and therefore verifiable

C.

Enable the semantic ranker, whose @search.rerankerScore doubles as a per-sentence citation confidence value

D.

Fine-tune the model on the source corpus so it can quote passages from memory without a retrieval step

Show answer & explanation

Correct Answer: A

  1. Deductive proof: Two separable requirements, two mechanisms. Citations come from carrying the retrieved chunks' identifiers through to the response so the UI can link back — the index holds "both vector and nonvector fields" precisely because the human-readable fields are what you show a user or pass onward. Verification is what the groundedness evaluator measures: whether the claims in the response are supported by the supplied context. Together they give a link a human can follow and a score an auditor can check.
  2. Distractor breakdown:
    • B: Reproducibility is not groundedness. A deterministic model reproduces the same fabrication every time, and logging the prompt proves what was asked, not whether the answer was supported.
    • C: @search.rerankerScore measures how well a retrieved document matched the query. It says nothing about whether the generated sentence used that document, and it is per-result, not per-sentence.
    • D: Removes retrieval, and with it the citation. Fine-tuning teaches style and format; it does not make a model a reliable verbatim source, and updated documents would require retraining.
  3. undefined

{"v":1,"kind":"exam-tip","title":"Two different failures","body":"Retrieval can fail — the right passage never surfaced, which relevance and retrieval evaluators catch. Generation can fail — the passage surfaced and the model ignored it, which groundedness catches. A question describing invented content with correct sources in the index is a groundedness question."}

4. **Reference**: [Built-in evaluators reference](https://learn.microsoft.com/en-us/azure/foundry/concepts/built-in-evaluators) · [Hybrid search overview](https://learn.microsoft.com/en-us/azure/search/hybrid-search-overview)
Q6easy

A team is designing a support assistant in Foundry Agent Service. Several requests must share the same persona, model, and tool configuration, and later turns must see earlier ones.

Which runtime component supplies the reusable behaviour — the model, instructions, and tools?

A.

The agent — a persisted, versioned definition combining model, instructions, and tools

B.

The conversation, which stores the instructions alongside the message history

C.

The response, which carries the instructions on each individual call

D.

The project connection, which pins the model and tool configuration for all agents in the project

Show answer & explanation

Correct Answer: A

  1. Deductive proof: The runtime model has three components with distinct jobs. The agent "supplies reusable model, instructions, and tools to a response" and is used "when multiple requests need the same behavior or tool configuration." It is "a persisted orchestration definition that combines AI models, instructions, code, tools, parameters, and optional safety or governance controls", stored as a named, versioned asset.
  2. Distractor breakdown:
    • B: The conversation "supplies persisted input and output items to responses" — it holds history, not behaviour. It answers the second requirement in the stem, not the first.
    • C: The response "runs a model or agent against input and produces output items" — one unit of execution. You can pass instructions per response, which is exactly what you stop doing once behaviour is reusable.
    • D: A project connection configures access to an external resource such as a search index or storage account. It does not define agent behaviour.
  3. undefined

{"v":1,"title":"Three runtime components","items":[{"key":"Agent","value":"Reusable behaviour — model, instructions, tools. Versioned."},{"key":"Conversation","value":"Persisted history — input and output items across turns"},{"key":"Response","value":"One unit of execution — runs a model or agent, emits output items"}]}

4. **Reference**: [Build with runtime components in Foundry Agent Service](https://learn.microsoft.com/en-us/azure/foundry/agents/concepts/runtime-components)
Q7hard

A tool-calling application works against an older reasoning model on the Chat Completions API. After the deployment is upgraded to gpt-5.6-sol, every request that includes tools now fails — even though the application has never sent a reasoning_effort parameter.

What is happening, and what is the recommended fix?

A.

These models default reasoning_effort to medium, and function tools with reasoning effort aren't supported on Chat Completions — send tool-calling requests to the Responses API

B.

The upgrade reset the deployment's TPM quota; request a quota increase and retry

C.

Tool definitions must be re-registered after any model upgrade; recreate the agent version

D.

tools and max_completion_tokens are mutually exclusive on reasoning models; remove the token cap

Show answer & explanation

Correct Answer: A

  1. Deductive proof: The documented error is precise — "Function tools with reasoning_effort are not supported for gpt-5.6-sol in /v1/chat/completions." And the trap the stem describes is called out explicitly: "The request fails even when you don't send reasoning_effort, because these models default to medium. Sending tools is enough to trigger the error. An application that calls tools through Chat Completions can start failing after you upgrade its deployment from an earlier reasoning model." The recommendation is to "send tool-calling requests to the Responses API", which "supports the full range of reasoning_effort values, returns reasoning items you can carry across turns, and is the surface where new reasoning features ship first."
  2. Distractor breakdown:
    • B: Quota exhaustion surfaces as 429 Too Many Requests, and it would affect requests without tools too. The stem isolates the failure to tool-bearing calls.
    • C: Tool definitions are sent per request or held on the agent version; a model upgrade does not invalidate them, and re-registering changes nothing about the unsupported combination.
    • D: Invented. max_completion_tokens is not only compatible with tools, it is the parameter that caps reasoning plus visible output on Chat Completions.
  3. undefined

{"v":1,"kind":"pitfall","title":"A default you never set can still break you","body":"If you must stay on Chat Completions, the workaround is to set reasoning_effort to none on every request that sends tools — accepting that "the model then calls tools without reasoning, which loses the planning quality that reasoning provides." That trade-off is why the Responses API is the recommendation rather than the fallback."}

4. **Reference**: [Azure OpenAI reasoning models](https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/reasoning)
Q8easy

A support agent must transcribe an archive of 80,000 pre-recorded call recordings overnight. Nothing is live, and nobody is waiting on any individual result.

Which speech-to-text mode fits?

A.

Batch transcription, for processing large volumes of audio asynchronously

B.

Real-time transcription, for streaming audio

C.

Fast transcription, for pre-recorded audio files

D.

Pronunciation assessment, which evaluates recorded speech and returns feedback

Show answer & explanation

Correct Answer: A

  1. Deductive proof: Speech to text offers three modes with distinct purposes — "Real-time transcription for streaming audio", "Fast transcription for pre-recorded audio files", and "Batch transcription for processing large volumes of audio asynchronously." Eighty thousand files overnight with no waiting caller is the batch case exactly.
  2. Distractor breakdown:
    • B: Real-time is for streaming audio, where a result is needed as the speaker talks. Streaming 80,000 archived files would be slower and more expensive for no benefit.
    • C: Fast transcription also targets pre-recorded files, and it is the right choice for low-latency single-file work — a voicemail a user is waiting on. It is not the large-volume asynchronous mode.
    • D: Pronunciation assessment scores accuracy and fluency for language learners. It is not a transcription mode.
  3. undefined

{"v":1,"title":"Three speech-to-text modes","items":[{"key":"Real-time","value":"Streaming audio — results as the speaker talks"},{"key":"Fast","value":"Pre-recorded files, low latency per file"},{"key":"Batch","value":"Large volumes, asynchronous — nobody is waiting"}]}

4. **Reference**: [What is Azure Speech?](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/overview)
Q9hard

What is the correct order of investigation after the alert fires?

A.

Open traces for every request in the alert window and read them in order

B.

Raise the alert threshold to reduce noise, then watch whether it fires again

C.

Read the evaluation results, use cluster analysis to group failures into patterns, then open traces for representative cases

D.

Reproduce the failure locally until it is understood, then read the agent code

Show answer & explanation

Correct Answer: C

  1. Deductive proof: The documented improvement path runs measurement → pattern → instance: "Analyze evaluation failures with cluster analysis. Optimize agents and re-evaluate." Clustering converts 4,000 individually unreadable failures into a handful of recurring patterns, and tracing then supplies per-request detail for one representative case from each — so the traces you read are chosen rather than sampled by luck.
  2. Distractor breakdown:
    • A: The brute-force version the scenario has already excluded as unworkable, and arrival order finds the common cause last as often as first.
    • B: Silences the signal without touching the cause. The system is then degraded and unmonitored.
    • D: Assumes you already know which input fails. With production drift that is the unknown you are trying to identify.
  3. undefined

{"v":1,"title":"Alert to cause","steps":[{"title":"Evaluate","body":"How much is wrong, on which metric."},{"title":"Cluster","body":"What kinds of wrong."},{"title":"Trace","body":"One representative request per cluster."},{"title":"Fix and re-evaluate","body":"Confirm the score actually moved."}]}

4. **Reference**: [Observability in Generative AI](https://learn.microsoft.com/en-us/azure/foundry/concepts/observability)
Q10easy

Which two speech-to-text modes serve the archive and the on-demand single recordings respectively?

A.

Batch transcription and fast transcription

B.

Fast transcription and real-time transcription

C.

Real-time transcription and batch transcription

D.

Batch transcription and real-time transcription

Show answer & explanation

Correct Answer: A

  1. Deductive proof: Three modes exist, one per input shape. "Batch transcription for processing large volumes of audio asynchronously" matches the 80,000-call archive; "Fast transcription for pre-recorded audio files" matches a supervisor wanting one recording back quickly. The third, "Real-time transcription for streaming audio", applies to neither — both inputs are files.
  2. Distractor breakdown:
    • B, C, D: Each pairs real-time with a file workload. Real-time is built for a live stream, so using it on a file means feeding audio through at playback speed — an hour of recording takes an hour.
  3. undefined

{"v":1,"title":"Pick by input shape","items":[{"key":"Live stream","value":"Real-time"},{"key":"A file, answer now","value":"Fast transcription"},{"key":"Thousands of files","value":"Batch, asynchronous"}]}

4. **Reference**: [What Is Azure Speech?](https://learn.microsoft.com/en-us/azure/ai-services/speech-service/overview)
Q11medium

A team must decide between calling a model directly from their application and building on Foundry Agent Service.

Which requirement most clearly indicates the agent service?

A.

The response must conform to a strict JSON schema for a downstream system

B.

The workload must decide which tools to call across multiple steps to complete a task, rather than producing a single response

C.

The application must minimize cost per request on high-volume, single-turn traffic

D.

The output must be screened for harmful content before it reaches users

Show answer & explanation

Correct Answer: B

  1. Deductive proof: The distinction is definitional. "Unlike a simple chatbot that only generates text, an agent can call tools, access external data, and make decisions across multiple steps to complete a task." Multi-step tool-calling autonomy is what the agent runtime provides — it "manages conversations, tool calls, and agent lifecycle" — and it is the one requirement here that a single model call cannot satisfy.
  2. Distractor breakdown:
    • A: Structured outputs, available on a direct model call. Adding an agent runtime to obtain schema compliance is unnecessary machinery.
    • C: Points the other way. Single-turn, high-volume, cost-sensitive traffic is the case against an agent, since agents add tool orchestration and multi-step overhead the workload does not use.
    • D: Content filtering is applied to model deployments regardless of whether an agent is involved; the default configuration already filters both prompts and completions.
  3. undefined

{"v":1,"kind":"exam-tip","title":"Agent or model call?","body":"Ask whether anything has to be decided at runtime. One prompt, one answer — call the model. Choose tools, act, observe the result, decide again — that is an agent, and the runtime exists so you do not write that loop."}

4. **Reference**: [What is Microsoft Foundry Agent Service?](https://learn.microsoft.com/en-us/azure/foundry/agents/overview)
Q12medium

An agent's traces are arriving in Application Insights, but they stop at the model call — the tool invocations and agent decisions between calls are missing.

What is the most likely cause?

A.

Application Insights samples telemetry, so intermediate spans are always dropped

B.

Tool invocations are never traced, because tools execute outside the model's context

C.

Traces must be enabled per tool in the tool catalog before any tool span is emitted

D.

Only the agent framework's own instrumentation is active; the tool and agent-decision spans require the tracing integration for that framework to be enabled

Show answer & explanation

Correct Answer: D

  1. Deductive proof: The documented scope of tracing includes exactly the spans that are missing — distributed tracing "captures the execution flow of AI applications, providing visibility into LLM calls, tool invocations, agent decisions, and inter-service dependencies" — so their absence is an instrumentation gap, not a limit of the system. Foundry "supports tracing for popular frameworks including LangChain, LangGraph, the OpenAI Agents SDK, and the Microsoft Agent Framework", and it is that per-framework integration that emits the non-model spans.
  2. Distractor breakdown:
    • B**: Contradicted directly — tool invocations are named as one of the things tracing captures, and they are precisely what makes agent traces useful for "debugging complex agent behaviors."
    • A**: Sampling reduces volume; it does not systematically remove one category of span while preserving another. A sampling problem loses whole traces, not the middle of every trace.
    • C**: There is no per-tool tracing switch in the catalog. Tracing is configured on the application, not on each tool entry.
  3. undefined

{"v":1,"kind":"exam-tip","title":"Partial traces are an instrumentation smell","body":"Missing whole traces usually means configuration ran too late or the connection string is wrong. Missing a layer within otherwise healthy traces points at the framework integration — the model client is instrumented and the orchestration layer is not."}

4. **Reference**: [Observability in Generative AI](https://learn.microsoft.com/en-us/azure/foundry/concepts/observability)
Q13easy

How can an Azure subscription administrator request an increase in model TPM quotas for Azure OpenAI in a specific region?

A.

Reboot the Azure subscription

B.

Quota cannot be changed under any circumstance

C.

Edit the Windows Registry on client machines

D.

Submit a Quota Request ticket through Microsoft Foundry Quotas page or Azure Support

Show answer & explanation

Correct Answer: D

  1. Why D is correct: TPM quota is allocated per subscription, per region, per model, and raising the ceiling is an entitlement change only Microsoft can grant. The supported route is a quota request — submitted from the Foundry portal's quota page or through Azure Support — which is reviewed against regional capacity.
  2. Distractor breakdown:
    • A (Reboot the subscription): Azure subscriptions are billing and policy containers; there is nothing to reboot, and quota would be unaffected regardless.
    • B (Quota cannot be changed): Simply untrue — the request process exists precisely for this.
    • C (Edit the Windows Registry on clients): A client-side setting cannot alter a server-side service limit.
  3. undefined

{"v":1,"kind":"exam-tip","title":"The remedy you control yourself","body":"A quota request takes time you may not have. The immediate lever is reallocating TPM from existing deployments of the same model in that region — over-provisioned neighbours are reclaimable capacity, and the change takes effect at once."}

4. **Reference**: [Understanding deployment types](https://learn.microsoft.com/en-us/azure/foundry/foundry-models/concepts/deployment-types) · [Microsoft Foundry architecture](https://learn.microsoft.com/en-us/azure/foundry/concepts/architecture)
Q14medium

A grounding corpus contains scanned PDFs, product photographs, and recorded interviews. The team wants one pipeline that can query text and images together.

Which capability applies?

A.

Multimodal queries, which query content containing both text and images in a single pipeline

B.

Separate indexes per modality, queried in turn and merged in application code

C.

Vector-only search, since embeddings unify all modalities automatically

D.

Classic search over text, with images excluded as unsupported content

Show answer & explanation

Correct Answer: A

  1. Deductive proof: Multimodal is a first-class query type alongside the others — the service supports "full-text, vector, hybrid, and multimodal queries" — and the capability is described in exactly the stem's terms: "Query content containing both text and images in a single multimodal pipeline."
  2. Distractor breakdown:
    • B**: The workaround this capability removes. It also reintroduces the hard part — ranking results from separate indexes against each other in your own code.
    • C**: Overstates what embeddings do. Vectors enable similarity search within a representation; they do not by themselves make a pipeline multimodal, and the guidance is that vectors are optional unless you need similarity search.
    • D**: Contradicted by the multimodal support, and it would discard the photographs entirely.
  3. undefined

{"v":1,"kind":"note","title":"Audio and video need a step first","body":"Multimodal query covers text and images. Recorded interviews reach a text index through transcription — or through Content Understanding, which "supports processing unstructured data of any type (image, documents, audio, video)" and extracts structured insights from it."}

4. **Reference**: [Introduction to Azure AI Search](https://learn.microsoft.com/en-us/azure/search/search-what-is-azure-search)
Q15easy

An application generates short promotional clips with Sora 2. The developer calls the API and gets back a job identifier rather than a video.

What is the correct client behaviour?

A.

Retry the call with a longer client timeout until the video is returned inline

B.

Request the video synchronously by setting a wait parameter on the create call

C.

Reduce n_seconds until the request completes within the synchronous limit

D.

Poll the job status until it reaches succeeded, failed, or cancelled, then retrieve the video from the download URL in generations

Show answer & explanation

Correct Answer: D

  1. Deductive proof: "Video generation is an asynchronous process. You create a job request with your text prompt and video format specifications, and the model processes the request in the background. You check the status of the video generation job and, once it finishes, retrieve the generated video through a download URL." The documented client loop polls /openai/v1/video/generations/jobs/{job_id} until status is one of succeeded, failed, or cancelled, then reads the generations array.
  2. Distractor breakdown:
    • A: A longer timeout does not convert an asynchronous API into a synchronous one — the create call is designed to return a job, not a video.
    • B: No such parameter. The job model is the API's design, not a default that can be overridden.
    • C: Shorter clips finish sooner, and the call is still asynchronous. n_seconds changes duration, not the API shape.
  3. undefined

{"v":1,"title":"Sora 2 job lifecycle","steps":[{"title":"Create","body":"POST the prompt and format; receive a job id."},{"title":"Poll","body":"GET the job until status is succeeded, failed, or cancelled."},{"title":"Retrieve","body":"Read generations and download the video from its URL."}]}

4. **Reference**: [Sora 2 video generation overview (preview)](https://learn.microsoft.com/en-us/azure/foundry/openai/concepts/video-generation)

These are 15 of 591 questions available. Take a practice test →

Developing AI Apps and Agents on Azure (AI-103) Flashcards

640 flashcards for spaced-repetition study. Showing 30 sample cards below.

Agentic retrieval and knowledge sources(10 cards shown)

Question

What is agentic retrieval, and what does it do that one query can't?

Answer

In Azure AI Search, agentic retrieval is a multi-query pipeline designed for complex questions posed by users or agents in chat and copilot apps.
Can use a large language model (LLM) to break down a complex query into smaller, focused subqueries for better coverage over proprietary and external content. Subqueries can include chat history for extra context.
Runs subqueries in parallel. Each subquery is semantically reranked to promote the most relevant matches.
⚠ It buys coverage with time: agentic retrieval adds latency compared to a single-query pipeline, but it handles query complexity that a single query can't. The named cases are questions with multiple asks, questions that depend on earlier context in the conversation, queries needing rewriting, and spelling mistakes.

Question

Walk the four steps of the agentic retrieval workflow.

Answer

  1. Workflow initiationyour application calls a knowledge base with a retrieve action that provides a query and conversation history.
  2. Query planningthe knowledge base sends your query and conversation history to an LLM, which generates focused subqueries.
  3. Query executionthe knowledge base sends the subqueries to your knowledge sources. All subqueries run simultaneously and can be keyword, vector, or hybrid search. Each subquery undergoes semantic reranking to find the most relevant matches. References are extracted and retained for citation purposes.
  4. Result synthesisthe system combines all results into a unified response. ⚠ Note what is guaranteed and what isn't: merged content is always returned. Source references and an execution activity log are optional.
    Your app stays in the loop: the pipeline returns grounding data that you can pass to an LLM for answer generation or use directly in your conversation interface.

Question

retrieval reasoning effort — three levels, and the one that changes the architecture.

Answer

minimal removes the LLM from the pipeline entirely. At low and medium retrieval reasoning effort, the knowledge base sends your query and conversation history to an LLM, which generates focused subqueries. At minimal effort, this step is skipped and queries are issued directly to knowledge sources. Reasoning effort defaults to low and is configured on the knowledge base.
The components table says the same thing from the other side — the LLM is used at low and medium retrieval reasoning effort only. Bypassed at minimal effort.
Put plainly: if simplicity and speed are the priority, minimal bypasses LLM processing; low and medium let the LLM plan and select which knowledge sources to query, and medium adds an iterative pass for deeper results.
⚠ Two consequences of minimal: no Azure OpenAI bill for planning, and no source selection — every knowledge source is queried, because nothing is choosing between them.

Question

Which components does an agentic retrieval pipeline require, and what does each do?

Answer

For all agentic retrieval scenarios, a knowledge base and at least one knowledge source are required. Other components are optional and depend on your configuration.
Knowledge baseOrchestrates the pipeline, managing knowledge sources and query parameters.
Knowledge sourceDefines the content used in the pipeline. Can be indexed (backed by a search index on your service) or remote (content retrieved at query time from an external platform).
Search indexStores searchable content (text and vectors) with a semantic configuration.Required for indexed knowledge sources only.
Semantic rankerUsed internally by the agentic retrieval pipeline to rerank results for relevance (L2 reranking).
LLM (Azure OpenAI) — Plans queries and selects knowledge sources.
⚠ Note the semantic ranker is not optional and not something you switch on — it is used internally, which is why agentic retrieval bills for reranking whatever you configure.

Question

Indexed versus remote knowledge sources — what actually differs?

Answer

Whether your content ever enters Azure AI Search.
IndexedAn indexed knowledge source points to a search index that meets the criteria for agentic retrieval. Content is ingested into the index before query time through one of three paths: Queries run locally on your search service using keyword (full text), vector, or hybrid queries.
Remotea remote knowledge source connects directly to an external platform. Content is never ingested into Azure AI Search. Instead, it's retrieved at query time via each platform's native APIs.
Depending on the platform, remote connections reach content either over the public internet (such as Bing) or within your Microsoft tenant (such as SharePoint and Fabric).
⚠ Whichever you use, ranking is shared: for both indexed and remote knowledge sources, all retrieved content flows through the same ranking pipeline. Results are scored for relevance, merged across queries, and reranked before returning in the retrieval response.

Question

Knowledge source — what is it, and what kinds exist?

Answer

A knowledge source is a top-level resource on your Azure AI Search service that defines the content used in an agentic retrieval pipeline. Each knowledge source is either indexed or remote, which determines how the content is ingested, processed, and queried. Knowledge sources are required components of a knowledge base.
Indexed kinds: Search index (Wraps an existing index), Azure blob, Azure SQL (preview), File (preview) (Uploads files directly to Azure AI Search), OneLake, Indexed SharePoint (preview).
Remote kinds: Remote SharePoint (preview), Fabric Data Agent (preview), Fabric Ontology (preview), MCP server (preview) (Retrieves live, tool-backed results from an external MCP server), Work IQ (preview), Web (Retrieves real-time grounding data from Microsoft Bing).
You can reference multiple knowledge sources in a single knowledge base. The agentic retrieval engine queries all of them in a single request.

Question

⚠ How does agentic retrieval bill, and why can't you forecast it the way you forecast semantic ranker?

Answer

Because the unit changes from queries to tokens, and two services bill.
Azure AI Search bills for retrieval tokens consumed during subquery execution and semantic ranking. Azure OpenAI bills for input and output tokens used in LLM-based query planning and answer synthesis.
The comparison the docs draw against the classic single-query pipeline:
UnitQuery basedToken based
Cost per unitUniform cost per queryVariable cost per token (depends on reasoning effort)
Cost estimationEstimate query countEstimate token usage
Free allowanceMonthly free query allowanceMonthly free token allowance
⚠ So a per-query cost model doesn't convert: the same question costs more with three subqueries than with one, and reranking dominates. In the worked example, reranking is $3.30 against $1.02 for all of query planning.
Levers: reduce the number of knowledge sources (indexes); consolidating content can lower fan-out and token volume, and lower the reasoning effort to reduce LLM usage.

Question

What are the lifecycle rules for knowledge sources and knowledge bases?

Answer

Three, and they constrain the order of every deployment script:
Create a knowledge source before you create a knowledge base. Knowledge bases reference knowledge sources by ID, so the knowledge source must exist first.
To delete a knowledge source, first update or delete any knowledge bases that reference it. You can then delete the knowledge source.
A knowledge source and its knowledge base must exist on the same search service.
⚠ That last one rules out a shared-knowledge-source design across services — content sharing has to happen at the index or storage layer instead.
Permissions: to create a knowledge source, you need Search Service Contributor permissions on your search service. If the knowledge source generates an indexer pipeline, you also need Search Index Data Contributor permissions to load an index.

Question

Your knowledge base has five sources but the LLM keeps ignoring one. What controls source selection?

Answer

Three inputs, and one override. The following factors inform selection at low and medium effort:
The name of the knowledge source.
The description of an index (for indexed knowledge sources).
The retrievalInstructions specified in the knowledge base definition or the retrieve action.
Retrieval instructions guide which knowledge sources the LLM selects or skips. They work like a prompt: you can specify brevity, tone, and formatting.
The override: set alwaysQuery to true on a knowledge source definition to include it in every query, regardless of the retrieval reasoning effort.
⚠ So an unhelpfully-named source with no index description is genuinely invisible to the planner. Naming is configuration here, not documentation.

Question

Where does agentic retrieval plug into an agent, and what stays in preview?

Answer

It is the knowledge layer under Foundry IQ, and the basis for custom pipelines. There are two use cases for agentic retrieval. First, it powers Foundry IQ in the Microsoft Foundry portal by providing the knowledge layer for agent solutions. Second, it's the basis for custom agentic solutions you build using the Azure AI Search APIs.
⚠ The GA line runs through the API, not the portal: some agentic retrieval features are generally available in the 2026-04-01 REST API via programmatic access. The Azure portal and Microsoft Foundry portal continue to provide preview-only access to all agentic retrieval features.
So a feature you configured by clicking is not necessarily one you can run in production — check whether the equivalent call exists in the GA API before committing.
Agentic retrieval is available in select regions, and knowledge sources and knowledge bases also have maximum limits that vary by pricing tier and retrieval reasoning effort.

Alt-text and accessible image descriptions(5 cards shown)

Question

⚠ What do captions assume about people by default?

Answer

Gender. By default, captions contain gender terms ("man", "woman", "boy" and "girl"). You have the option to replace these terms with "person" in your results and receive gender-neutral captions.
This matters for alt-text specifically: a caption is inferring gender from appearance, and publishing that inference as an image description asserts something about a real person that the model guessed.
For accessibility work the neutral form is usually the safer default — it describes what is visible without attributing an identity.

Question

How do you turn on gender-neutral captions?

Answer

You can do so by setting the optional API request parameter gender-neutral-caption to true in the request URL.
Three details worth noting:
• It is a request-URL query parameter, not a body field.
• It is optional, and the default is false — gendered terms are what you get if you do nothing.
• It applies to the caption text itself, so the change is in the words returned, not a post-processing step you write.
For an accessibility pipeline this is a one-line configuration with a real editorial consequence.

Question

⚠ Your Vision resource is in a region without Image Analysis 4.0 captioning. Now what?

Answer

If you need to use a Vision resource outside these regions to generate image captions, please use Image Analysis 3.2 which is available in all Azure Vision regions.
So there is a documented fallback rather than a dead end — but it is a different API version with different models, not the same feature elsewhere.
That makes region a design-time decision for an accessibility pipeline: choose a supported region and get 4.0's Florence-based captions, or accept 3.2's older describe-image behaviour everywhere.

Question

⚠ Which resource type must host Image Analysis 4.0 captioning?

Answer

Image captioning in Image Analysis 4.0 is only available in certain Azure data center regions, and you must use an Azure Vision in Foundry Tools resource located in one of these regions to get results from Caption and Dense Captions features.
Two constraints in one sentence — the right resource type (Azure Vision in Foundry Tools) and the right region.
A resource of the correct type in the wrong region fails just as surely as the wrong type, and neither failure is fixable in code.

Question

What does Content Understanding add for accessible document descriptions?

Answer

Annotation detection captures handwritten notes, underlines, and strikeouts.
Those are exactly the marks a sighted reader picks up instantly and a plain text extraction throws away — a struck-through clause, an underlined total, a margin note.
An accessible or searchable rendering of a scanned document that silently drops a strikethrough is worse than incomplete, it is wrong: it presents deleted text as current.
It sits with figure descriptions and layout analysis as the three things that make an extraction faithful rather than merely textual.

Analysing visual context with multimodal models(6 cards shown)

Question

Which modalities can Content Understanding take as input?

Answer

Supports multiple modalities including Documents, Images, Video, and Audio.
One service, one analyzer contract, four input types — which is the point: Content Understanding standardizes the extraction and classification of content, structure, and insights from various content types into a unified process.
The alternative is a different service per modality with a different output shape each, and glue code between them. Here the schema you define is the same regardless of whether the input is a PDF, a photo, a call recording or a broadcast.

Question

How does Content Understanding improve accuracy over a single model call?

Answer

Content Understanding employs multiple AI models to analyze and cross-validate information simultaneously, resulting in more accurate and reliable results.
Cross-validate is the operative word — several models looking at the same content and their agreement being part of the answer, rather than one model's output taken on trust.
That is also what makes confidence scores meaningful: a reliability estimate from 0 to 1 is only worth something if it comes from more than one opinion.

Question

Contextualization

Answer

The contextualization layer prepares context for generative models and post-processes their output.
It includes output normalization and formatting, source grounding calculation, confidence score computation, and context engineering to optimize model usage.
So confidence and grounding are not something the generative model reports about itself — they are computed by the contextualization layer around it. That is why they are trustworthy enough to gate straight-through processing, and it is also why they are billed (contextualization tokens).

Question

⚠ Your video analysis misses a one-frame flash of a logo. Is that a bug?

Answer

No — it is the documented sampling rate. Frame sampling (~ 1 FPS): The analyzer inspects about one frame per second. Rapid motions or single-frame events might be missed.
So anything shorter than about a second is outside what the analyzer can see, by construction. Subliminal frames, fast cuts, a ball crossing a line — all at risk.
That is a design constraint to plan around, not something to tune: if single-frame detection matters, video analysis is the wrong tool and per-frame image analysis is the right one.

Question

⚠ Why can't video analysis read the small print on screen?

Answer

Frame resolution (512 × 512 px): Sampled frames are resized to 512 pixels square. Small text or distant objects can be lost.
A 4K frame is downsampled to 512², so fine detail is destroyed before the model ever sees it. No prompt can recover it.
Practical consequences: on-screen captions, licence plates, product labels and background signage are unreliable in video analysis. If they matter, extract frames yourself at full resolution and run image analysis or OCR on them.

Question

What makes segment-based analysis better than frame-by-frame?

Answer

Identify actions, events, topics, and themes by analyzing multiple frames from each video segment, rather than individual frames.
The four things listed are all things a single frame cannot show: an action needs motion, an event needs a before and after, a topic and a theme need duration.
This is the key benefit Content Understanding claims over other video analysis approaches — reasoning over a segment rather than classifying stills, which is why the segmentation stage matters as much as the extraction stage.

Analyzers, markdown and schema limits(9 cards shown)

Question

How do you get Markdown out of the layout model?

Answer

The layout API can output the extracted text in Markdown format. Use the outputContentFormat=markdown to specify the output format in Markdown. The Markdown content is output as part of the content section.
Markdown is the natural substrate for downstream reasoning because it carries structure that plain text loses — headings become hierarchy, tables stay tabular, and both survive chunking.
On the Content Understanding side the same idea appears as an extraction mode — its faster text-only setting exists to produce clean Markdown for RAG and document ingestion scenarios.
⚠ It is a single request parameter, not a post-processing step — so nothing is lost in translation between the analyzer's structural understanding and the text you index.

Question

⚠ Your v3.1 Markdown parser breaks on v4.0 output. Name the two changes.

Answer

Tables and checkboxes both changed representation. For v4.0 2024-11-30 (GA), the representation of tables is changed to HTML tables to enable rendering of items like merged cells and multirow headers.
Another related change is to use the Unicode checkbox characters ☒ and ☐ for selection marks instead of :selected: and :unselected:.
⚠ And there is a genuine inconsistency to code around: this update means that the content of selection-mark fields contains :selected: even though their spans refer to Unicode characters in the top-level span.
So the field value still says :selected: while the content string now holds . Code that cross-references a field against its span will disagree with itself unless it expects both forms.
The upside is real: HTML tables are what make merged cells and multirow headers survive the round trip at all — Markdown pipe tables cannot express either.

Question

Which field value types can a Content Understanding schema use?

Answer

Content Understanding supports both basic field value types and nested structures, including lists, groups, tables, and fixed tables.
Basic field value types: string, date, time, number, integer, and boolean.
List field: A sequence of values of the same type, represented as an array of basic fields in the API.
Group field: A set of semantically related fields, represented as an object of basic fields in the API.
Table field: A variable number of items with fixed subfields, represented as an array of objects of basic fields in the API.
Fixed table field: A group of fields with shared subfields, represented as an object of objects of basic fields in the API.
Table versus fixed table is the pairing to keep straight: a variable number of rows with fixed columns (invoice line items) is a table; a fixed set of named rows sharing the same columns (a quarterly summary) is a fixed table.

Question

⚠ Your analyzer is rejected for exceeding 1,000 fields but your schema lists far fewer. How is it counted?

Answer

Every named field counts, including subfields. The Max fields limit includes all named fields. For example, a list of strings counts as one field, while a group with string and number subfields counts as three fields.
So a group is itself plus its children — nesting multiplies rather than encapsulating. A group of three subfields repeated across ten sections is 40 fields, not 10.
The limits themselves are uniform across modalities: Max fields 1,000 and Max classify field categories 300 for document, text, image, audio and video alike.
The Max classify field categories limit is the total number of categories across all fields using the classify generation method — a per-analyzer budget shared across every classify field, not a per-field allowance.

Question

Which generation methods are available per modality?

Answer

Documents get one more than everything else.
Documentextract, generate, classify
Text, Image, Audio, Videogenerate, classify
extract is document-only. That is the constraint that decides several designs: pulling a precise, grounded value out of a source location is a document capability. For audio, video, image and plain text, the equivalent job has to be done by generate — which produces a value rather than locating one.
The practical consequence is grounding. An extracted field points at where it came from; a generated one is the model's assertion. Same field in your schema, different epistemic status.

Question

What are the naming and size limits on analyzers and fields?

Answer

Analyzer ID1-64 characters. Alphanumeric, period, and underscore. Pattern [a-zA-Z0-9._]{1,64}. ⚠ Note: no hyphens.
Field names≤ 64 characters, with a much wider Unicode-aware character class that does include the hyphen.
URL properties≤ 8,192 characters
Description properties≤ 1,024 characters
Tags≤ 10 tags; tag key ≤ 64 characters, tag value ≤ 256 characters. Alphanumeric and + - . : = _ / characters. Can be empty.
⚠ The analyzer-ID rule catches people out precisely because hyphens are legal almost everywhere else in Azure — including in the field names right beside it. invoice-v2 is an invalid analyzer ID; invoice_v2 is fine.

Question

What are the resource limits for a Standard (S0) Content Understanding resource?

Answer

Max analyzers100,000
Max analysis/min1,000 pages/images, Four hours of audio, Four hours of video
Max operations/min3,000
⚠ Note the throughput ceiling is expressed per minute and per modality, not as a single request rate — so a document backlog and a video backlog draw on separate allowances.
And the analyzer count is effectively unbounded for design purposes: at 100,000 there is no reason to overload one analyzer with fields for several document types when a classifier plus several focused analyzers reads better and stays inside the 1,000-field limit.

Question

⚠ You POST a 40-page PDF synchronously and get 5 pages back with no error. Why?

Answer

Sync and async have different ceilings, and the sync path truncates silently.
For .pdf, .tiff and image types:
Async≤ 200 MB, ≤ 300 pages
Sync≤ 10 MB, ≤ 5 pages
⚠ And the behaviour past the sync limit is the trap: if there are more than five pages in the document, the service processes only the first five pages. The request can optionally specify the page range to process.
No error, no warning — just a partial answer that looks complete. Any document workload over five pages belongs on the async path.
Office and text formats are measured differently again: ≤ 10M characters async against ≤ 30K characters sync.

Question

How does Content Understanding count a page for a spreadsheet or an email?

Answer

By page-equivalent rules, one per format. For billing purposes, Content Understanding uses page-equivalent rules:
text files and email files (TXT, HTML, MD, XML, MSG, EML) count 3,000 characters as one page (rounded up)
Spreadsheets (XLSX) count one sheet as one page (including hidden sheets)
Presentations (PPTX) count one slide as one page
Word documents (DOCX) use native pagination
Including hidden sheets is the line that surprises people — a workbook with 40 hidden calculation sheets bills as 40+ pages regardless of what anyone can see. Worth auditing spreadsheets before a bulk ingest.

Showing 30 of 640 flashcards. Study all flashcards →

Ready to ace Developing AI Apps and Agents on Azure (AI-103)?

Access all 591 practice questions, 7 timed mock exams, study notes, and flashcards — no sign-up required.

Start Studying — Free