SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
AI-103 practice

Free AI-103 practice questions

Drill exam-realistic Microsoft Certified: Azure AI Apps and Agents Developer Associate questions by domain, with an explanation on every option — not just the right one. 5 fully worked examples are further down this page, answers included.

Question bank
558
across 5 domains
Free, no account
5/day
a free account allows 30 a day
Real exam
50 Qs
120 min · pass 700 / 1000
Explanations
Every option
right and wrong

Build a practice session

5 free questions left today.

Domains

How many?

Mode

Ready when you are

10 fresh questions drawn across all domains, in Learn mode.

Focused review

Every question you answer incorrectly, and every question you flag while practising, is saved here automatically. Finish a session and you can come back to re-drill just those.

5 sample AI-103 questions, fully explained

Real questions from the AI-103 bank, with the answer key and the reasoning behind every option. Read them, then go back up the page and try the rest.

Question 1Plan and manage an Azure AI solution

A retailer routes incoming customer messages into one of six support queues. The messages are short, the volume is several million per day, and a pilot showed that a compact model labels them accurately. The company wants the lowest cost per request and fast responses. Which type of model should the developer deploy in Microsoft Foundry?

Choose one.

  • a
    A reasoning model such as o4-mini with high effort

    Reasoning models spend extra tokens thinking through multistep problems. Routing a short message into one of six queues gains nothing from that and costs more per request.

  • b
    A small language model such as Phi-4-mini Correct

    A small language model handles a narrow, well-defined classification task at a fraction of the cost and latency of a large model, and the pilot already showed its accuracy is sufficient.

  • c
    A large multimodal model such as gpt-4.1

    A large multimodal model would classify the messages well, but it is priced and sized for complex or image-based work, so it breaks the lowest-cost requirement.

  • d
    An embedding model such as text-embedding-3-large

    Embeddings could feed a separate similarity classifier, but that adds a second component to build and tune. On its own an embedding model returns vectors, not a queue label.

The concept

Model choice starts from the task: small language models (SLMs) suit narrow, high-volume tasks where cost and latency matter more than broad reasoning.

Why that’s the answer

The task is simple, high volume and already proven to work with a compact model, and the deciding constraints are cost per request and speed. An SLM such as Phi-4-mini meets both. A large multimodal or reasoning model would also produce correct labels, but each costs more per call without improving a six-way routing decision. An embedding model does not produce a label by itself.

How to reason it out
  1. Identify the task: short-text classification into a fixed set of labels.
  2. Note the evidence that a compact model is accurate enough, and the cost and latency constraints.
  3. Pick the smallest model class that meets the quality bar; reject larger or specialised models that add cost.

Exam tip: Narrow, high-volume task with proven small-model accuracy: deploy a small language model.

AI-103: Choose Foundry Models, Retrieval Methods and Agent Tools — the lesson that teaches this.

Question 2Implement generative AI and agentic solutions

A developer is writing a Python service that uses AIProjectClient from azure-ai-projects 2.x to call models and agents in a Foundry project named claims-dev. The project belongs to a Foundry resource named contoso-ai. Which value should the developer pass as the client's endpoint?

Choose one.

  • a
    https://contoso-ai.openai.azure.com/openai/v1/

    This is the resource-level v1 base URL for the OpenAI() client. It has no project segment, so AIProjectClient cannot reach the project's agents, connections or evaluations through it.

  • b
    https://claims-dev.services.ai.azure.com/api/projects/contoso-ai

    The format is right but the names are swapped: the host name carries the Foundry resource and the path carries the project.

  • c
    https://contoso-ai.services.ai.azure.com/openai/v1/

    This is the v1 OpenAI-compatible base URL on the services domain. It addresses model inference on the resource, not the project API that AIProjectClient calls.

  • d
    https://contoso-ai.services.ai.azure.com/api/projects/claims-dev Correct

    This is the Foundry project endpoint format, https://<resource-name>.services.ai.azure.com/api/projects/<project-name>, which AIProjectClient expects.

The concept

A Foundry project has its own endpoint, and project-scoped SDK clients connect to it rather than to a resource-level inference URL.

Why that’s the answer

AIProjectClient takes the project endpoint, https://<resource-name>.services.ai.azure.com/api/projects/<project-name>, shown on the project's home page. The two /openai/v1/ URLs are real endpoints, but they are base URLs for the OpenAI() client and stop at the resource. The swapped variant uses the right shape with the resource and project names in the wrong places.

How to reason it out
  1. Identify the client: AIProjectClient works at project scope.
  2. Recall the project endpoint shape: resource name in the host, project name after /api/projects/.
  3. Reject the /openai/v1/ base URLs, which belong to the OpenAI() client.
  4. Check that the host and path names are not swapped.

Exam tip: Project clients use https://<resource>.services.ai.azure.com/api/projects/<project>; /openai/v1/ is for the OpenAI client.

AI-103: Build Generative Apps with Foundry — Models, RAG, Tools and Evaluation — the lesson that teaches this.

Question 3Implement computer vision solutions

A media company built a campaign-image generator on a dall-e-3 deployment in its Foundry resource in 2025. Since March 2026 every images.generate call to that deployment fails. The company wants to keep generating images from text prompts in the same resource with the fewest changes to its code. What should the company do?

Choose one.

  • a
    Redeploy dall-e-3 with the newest model version and send the calls to it

    dall-e-3 can no longer be deployed at any version; the retirement covers new deployments as well as existing ones.

  • b
    Change the dall-e-3 deployment type to Global Standard and retry the calls

    The failure is a model retirement, not a capacity or data-residency issue, so changing the deployment type does not bring the model back.

  • c
    Deploy a GPT-image series model and send the existing calls to the new deployment Correct

    dall-e-3 was retired on 4 March 2026 and Microsoft directs users to the GPT-image series, which is called through the same images API; only the deployment name and the response handling (base64 instead of a URL) change.

  • d
    Deploy a FLUX.2-pro model and send the existing calls to the new deployment

    FLUX.2-pro is reached only through the BFL provider-specific API in Foundry, so the existing images.generate calls cannot use it without a rewrite.

The concept

Image generation in Foundry uses the GPT-image model series; dall-e-3 is retired.

Why that’s the answer

Microsoft retired dall-e-3 on 4 March 2026: it is no longer available for new deployments and existing deployments are non-functional. The guidance is to use a GPT-image series model, which is called through the same images API, so the app points at a new deployment name; the one code change is that GPT-image models return the image as b64_json rather than a URL. Changing the version or deployment type leaves the app on a model that no longer serves requests, and FLUX.2-pro would need the separate BFL provider API rather than the existing calls.

How to reason it out
  1. Notice the date: every call fails after March 2026, which points to a lifecycle change, not a transient error.
  2. Recall that dall-e-3 was retired and its deployments stopped working.
  3. Pick the replacement Microsoft names: a GPT-image series deployment.
  4. Reject fixes that keep dall-e-3 in place or that need a different API.

Exam tip: dall-e-3 is retired; new and existing image apps use a GPT-image series deployment.

AI-103: Image and Video Generation and Editing in Foundry — GPT-image, FLUX and Sora 2 — the lesson that teaches this.

Question 4Implement text analysis solutions

A logistics company wants to copy the people, organizations and dates mentioned in inbound shipping emails into its CRM. These are standard entity types, the company has no labelled training data, and the team wants to minimize development effort. What should you use?

Choose one.

  • a
    A custom named entity recognition project in Azure Language

    Custom NER is for categories you define, and it needs labelled examples to train. That is extra work the standard entity types don't call for.

  • b
    A custom text classification project with one class per entity

    Classification assigns labels to a whole document. It doesn't find and return individual entity mentions inside the text.

  • c
    The prebuilt named entity recognition feature of Azure Language Correct

    Prebuilt NER already recognizes standard categories such as Person, Organization and DateTime. It needs no training data and no model to build.

  • d
    A fine-tuned GPT model trained on samples of the shipping emails

    Fine-tuning needs a labelled training set and a training job. The company has neither, and standard entities don't need a custom model.

The concept

Azure Language offers prebuilt NER for standard entity categories and custom NER for categories you define.

Why that’s the answer

Prebuilt NER is a core Azure Language feature that returns standard categories (Person, Organization, DateTime and others) with no setup. Custom NER and fine-tuning both need labelled data the company doesn't have, and text classification labels whole documents instead of finding entity mentions.

How to reason it out
  1. List the entities: people, organizations and dates are standard categories.
  2. Note the constraints: no labelled data, least development effort.
  3. Pick the preconfigured feature that already knows those categories.
  4. Reject options that need training data or that work at document level.

Exam tip: Standard entity types with no training data point to prebuilt NER; your own categories point to custom NER.

AI-103: Text Analysis, PII, Content Safety and Translation with Foundry — the lesson that teaches this.

Question 5Implement information extraction solutions

An insurer stores policy PDFs in an Azure Blob Storage container that grounds a claims assistant. New and edited files must appear in the Azure AI Search index within about an hour, and the team doesn't want to write or host any upload code. What should you configure?

Choose one.

  • a
    An indexer over a blob data source that runs on an hourly schedule Correct

    A blob indexer pulls content itself, and blob change detection is built in through the LastModified timestamp, so an hourly schedule picks up new and edited files with no custom code.

  • b
    An Azure Function on a blob trigger that pushes files to the index

    Pushing documents through the index API works, but it is exactly the upload code the team wants to avoid writing and hosting.

  • c
    A blob data source with a native blob soft delete detection policy

    A deletion detection policy only removes documents for deleted blobs. Without an indexer schedule nothing runs, so new and edited files are still not picked up.

  • d
    A Logic App that calls the documents API with each new file's text

    This is a push model again: something outside the search service has to extract text and send documents, which is the integration work the team ruled out.

The concept

Indexers pull from supported data sources on a schedule; Azure Storage change detection is automatic.

Why that’s the answer

An indexer is the pull-based ingestion path in Azure AI Search. It connects to a data source such as a blob container, and for Azure Storage it tracks changes automatically by using each blob's LastModified timestamp. Giving the indexer a schedule makes it re-run and process only new or changed files. The push-based options all work, but they require the custom upload code the team wants to avoid, and a deletion policy on its own doesn't make anything run.

How to reason it out
  1. Notice the source is a supported indexer data source (Blob Storage).
  2. Notice the requirement for no upload code, which favors pull over push.
  3. Recall that blob change detection uses LastModified automatically.
  4. Add a schedule so the indexer re-runs every hour.

Exam tip: Supported source + no upload code = an indexer on a schedule; blob change detection is built in.

AI-103: Build Retrieval and Grounding Pipelines with Azure AI Search — the lesson that teaches this.

The AI-103 question bank, by domain

The bank is built to the exam's own weighting, so the practice you get reflects the marks that are actually on offer — not whichever domain was easiest to write questions for.

Published AI-103 practice questions per exam domain
DomainExam weightTopicsQuestions
Plan and manage an Azure AI solution28%4156
Implement generative AI and agentic solutions33%3186
Implement computer vision solutions13%372
Implement text analysis solutions13%272
Implement information extraction solutions13%272
Total100%14558

Practise AI-103 one domain at a time

How AI-103 questions are worded

Most AI-103 questions are not asking whether you can recall a definition. They describe a situation and ask which option satisfies it — so the skill being tested is reading the requirement precisely and eliminating options that fail it.

Single-response vs multiple-response

A single-response question has exactly one right answer. A multiple-response question tells you how many to pick ("Choose TWO") and there is no partial credit — getting one of the two right scores nothing. Read that instruction before you read the options.

Read the last line first

The final sentence is the actual question; everything before it is scenario. Read it first, then read the scenario knowing what you are looking for. It stops you from building an answer in your head that the question never asked for.

Hunt for the qualifier

Most scenarios turn on one word — MOST cost-effective, LEAST operational overhead, with the LEAST latency, without changing application code. Two options are frequently both technically correct, and the qualifier is the only thing separating them.

Eliminate, then choose

Distractors are almost always real Microsoft Azure services doing a real job — just not this job. Rule out the ones that break a stated constraint before you compare what's left. On a question you truly don't know, eliminating two options turns a guess into a coin flip.

Practise AI-103 from your browser

The SaveMyCert Chrome extension opens a daily drill of 5 AI-103 questions in the side panel, with the full explanation behind every answer. No account needed.

Get the Chrome extension (opens in a new tab)

Beyond AI-103 practice

AI-103 practice questions: your questions

Yes. You can answer 5 questions a day with no account at all, and a free account raises that to 30 a day across the full 558-question AI-103 bank, with an explanation on every option. Pro removes the daily cap entirely.

Source

Exam structure, domain weights and scoring on this page come from the official AI-103 exam guide.