Nordlicht Reisen GmbH in Hamburg is a made-up tour operator (R-01). It is having a travel assistant built that answers in the booking portal and on the phone. This course builds it lesson by lesson as a design, as translated code and as sketches, and it follows the skills list of the AI-103 exam while doing so. This first lesson is the map: It says what is tested, what the AI track already teaches, what is added here and how the case is built.
Prior knowledge. The course assumes the AI track, at least modules T1 to T7 and T10, or equivalent experience with Microsoft.Extensions.AI, RAG, agents and evaluation; in addition C# and Blazor from K2 and the Azure basics from K3 (Bicep, managed identity). If you don't have the AI track, read the lesson named in each lesson first: This course does not repeat it.
The requirement
Requirements for this lesson, all numbers are assumptions of the task.
| No. | Requirement | Type | Measure | Weight | Source |
|---|---|---|---|---|---|
| 0.1-01 | For every skill of the exam it is known where it is taught. | F | 5 of 5 areas assigned | Must | Exam list |
| 0.1-02 | The learning path fits the prior knowledge. | Q | 1 chosen path with a reason | Must | Learners |
| 0.1-03 | The tools for the exercises are in place. | R | 3 of 3 tools checked | Should | Exercises |
| 0.1-04 | It is clear what the course does not promise. | R | 0 open questions about exam, example language, account | Must | Scope of the course |
The exam
The page "Study guide for Exam AI-103: Developing AI Apps and Agents on Azure" describes the exam. The certification is called "Microsoft Certified: Azure AI Apps and Agents Developer Associate". The page names a "Skills measured" list with a date; it announces two versions but shows only one. If Microsoft changes the list, the assignment in this course changes; the state of the list is read again before the course goes on sale. The list has five areas:
| Area of the exam | Share | AI track (selection) | This course |
|---|---|---|---|
| Plan and manage an Azure AI solution | 25–30 % | T1 (models, costs), T6 (protection), T9 (evaluation), T10 (operations) | Module I1, lessons 1.1 to 1.5 |
| Implement generative AI and agentic solutions | 30–35 % | T2 to T5, T7 to T9 (core) | Module I2, lessons 2.1 to 2.8 |
| Implement computer vision solutions | 10–15 % | protection only (T6.1, T6.2) | Module I3, lessons 3.1 to 3.5 |
| Implement text analysis solutions | 10–15 % | structured responses (T2.3) | Module I4, lessons 4.1 to 4.4 |
| Implement information extraction solutions | 10–15 % | ingestion and search (T4, T5), tools (T8) | Module I5, lessons 5.1 to 5.5 |
The page says two things explicitly. First: Anyone taking the exam should have experience developing apps with Python. This course teaches .NET, our stack; lesson 0.3 shows how to read the Python of the exam and of the Microsoft examples. Anyone who wants to take the exam practices Python on their own in addition; a bridge course is not planned. Second: Most questions concern generally available features; preview features may appear if they are used often. This course says "preview" at every preview feature and builds no must requirement on it.
The hours of the course follow not the shares of the exam but the gap to the AI track: The track does not teach image and video, speech, translation and extraction, so they get a lot of room here, even though each of these areas makes up only part of the exam.
The modules
The course has 32 lessons in seven modules, 47 hours in total.
| Module | Hours | Lessons |
|---|---|---|
| I0 Orientation | 3 | 0.1 Map; 0.2 Practice account; 0.3 Reading examples |
| I1 Plan and manage | 8 | 1.1 Services and models; 1.2 Infrastructure and CI/CD; 1.3 Quotas and monitoring; 1.4 Security; 1.5 Responsible AI |
| I2 Generative and agentic solutions | 12 | 2.1 Foundry SDK; 2.2 RAG; 2.3 Agents; 2.4 Tools; 2.5 Multiple agents and approvals; 2.6 Evaluating; 2.7 Tuning; 2.8 Observability |
| I3 Images and video | 7 | 3.1 Generating images; 3.2 Video; 3.3 Understanding images; 3.4 Content Understanding; 3.5 Responsible AI for images |
| I4 Text and speech | 6 | 4.1 Text analysis; 4.2 Translating; 4.3 Speech to text and back; 4.4 Speech on the agent |
| I5 Information extraction | 7 | 5.1 Ingesting and indexing; 5.2 Search; 5.3 Enrichment; 5.4 Content Understanding for documents; 5.5 Retrieval connected to agents |
| I6 Capstone | 4 | 6.1 Capstone project; 6.2 Defending the design |
The case
All lessons are stages of one story. Its starting point is called R-01 to R-12 and never changes silently; if a lesson deliberately decides otherwise, it writes "changes R-xx" and gives the reason. Numbers in requirements sheets are assumptions of the task.
- R-01, R-02: The customers speak German, English and Danish. The travel assistant answers in the portal and on the phone, promises nothing binding, and refunds, legal questions and blocked accounts always go to a person (a rule in the code).
- R-03, R-04, R-05: Knowledge is 120 documents as PDF; inputs are receipts, hotel photos, voice messages and calls; outputs are answers with sources, destination images, alt texts, Danish translations and a phone variant.
- R-06, R-07: Data stays in the EU, preferably
germanywestcentral; whether a model is available there is checked by each lesson on Learn, which otherwise writes "open". Sign-in happens without keys, with a managed identity; the role on the project is called Foundry User. - R-08: Fixed names: resource
ai-nordlicht, projectreiseassistent, groupsrg-ai103-<exercise>; deployments are named after the task (chat,chat-klein,embed,bild), and the model behind them is in the configuration. - R-09 to R-12: There is a monthly cap for the AI costs (no amount in the course), a test set per AI feature, the house rules of the AI track (foreign text fenced in, hard rules in code, no model call without a counter) and made-up data only.
In addition there are eight decisions so that the lessons do not contradict each other. E-01: The assistant is a prompt agent reiseassistent in the Agent Service. E-02: The knowledge store is Azure AI Search with hybrid search. E-03: Multi-agent flows run in code with Microsoft Agent Framework, the agents live in the service. E-04: The .NET package is Azure.AI.Projects in the 2.x series; every example names its version. E-05: Images come from the deployment bild. E-06: The phone variant is a voice-based prompt agent (preview). E-07: Content Understanding reads receipts, the terms of travel go through an indexer. E-08: The exercises run with a public endpoint; a private network is a design topic.
How each lesson works
Each lesson starts with the case, names its prior knowledge, introduces requirements as a table and makes decisions with the limits that flip them. The section "State of the checks" says what was translated and what was not run against Azure: C# examples are built with the named package version, Bicep is compiled, and both prove only syntax and types. If something is open, "open" appears with the question. There are no amounts, only cost drivers with a pointer to the pricing pages.
No exam training. This course has no practice exam, no test with points and does not promise a pass. Microsoft itself offers a practice assessment; it is on the exam page. The course does not replace it and names no exam price and no date.
Decision: the learning path
| Who you are | Path | Limit that flips the choice |
|---|---|---|
| AI track done (T1 to T7, T10) | Module I0, then I1 to I6 in order | If you lack Azure experience, AZ-104 lesson 0.1 and K3 first |
| AI track not done | read the AI track lesson named in each lesson first | If the prior knowledge is missing across the board, the track first |
| Goal: the exam | as above, plus your own practice of the example language (0.3 shows the reading) | If the exam list changes, read the map again |
| only one area (for example speech) | Module I0, then the module of the area | I4 and I5 build on 1.4 and 2.1: these two first |
Decision (ADR). Context: You know the AI track and want to learn the Foundry side. Decision: The path in order, with I0 first. Consequences: 47 hours; lesson 0.2 creates the account that later exercises build on. Alternatives: reading single modules only, rejected because in every lesson the case builds on the earlier ones.
State of the checks
This lesson contains no code for Azure. What was read: the page "Study guide for Exam AI-103" and the planning of the course; exercise 2 is a PowerShell script that reads only local versions and ran locally. Everything else in this lesson was not run against Azure, because there is nothing to run. Open: whether and when Microsoft changes the list and which version applies at the time of your exam (the page names two versions and shows one).
Exercise 1
Without looking at the table, write down where these six skills are taught (AI track lesson, lesson of this course, or both): (a) choosing a model per task; (b) generating an image from text; (c) RAG in an application; (d) speech to text; (e) quotas and rate limits; (f) creating an analyzer with Markdown output. Afterwards compare with the solution.
Solution 1
(a) AI track T1.3 and lesson 1.1. (b) only this course, lesson 3.1: The track does not teach image generation. (c) AI track T5.1 to T5.4 and lesson 2.2 (the Foundry variant). (d) only this course, lesson 4.3. (e) AI track T1.2, T10.1 and T10.3, plus lesson 1.3 (Foundry side). (f) only this course, lesson 5.4. Rule of thumb: What the track teaches with local models gets the Foundry variant here; what it does not teach appears only here.
Exercise 2
Write a PowerShell script werkzeuge-pruefen.ps1 that checks three tools: the .NET SDK (at least 10.0), the Azure CLI (at least 2.80.0, as Learn requires for the commands that create projects in lesson 0.2) and Bicep. It writes one line per tool and ends with exit code 1 if something is missing or too old. It reads only local versions and signs in nowhere.
Solution 2
$probleme = 0
function Pruefe([string]$name, [version]$mindestens, [scriptblock]$liesVersion) {
try { $gefunden = [version](& $liesVersion) } catch { $gefunden = $null }
if ($null -eq $gefunden -or $gefunden -lt $mindestens) {
Write-Host "MISSING or too old: $name (at least $mindestens)"
$script:probleme++
} else {
Write-Host "ok: $name $gefunden"
}
}
Pruefe '.NET SDK' '10.0' { dotnet --version }
Pruefe 'Azure CLI' '2.80.0' {
(az version --output json | ConvertFrom-Json).'azure-cli'
}
Pruefe 'Bicep' '0.1' {
(az bicep version | Select-String 'version ([\d.]+)').Matches[0].Groups[1].Value
}
exit ($probleme -gt 0 ? 1 : 0)
A preview version of the SDK (for example 10.0.100-preview.1) cannot be read as a version and counts as "missing" here: That is a deliberate simplification. The script checks only what is installed, not whether your account is entitled to the exercises.
Typical mistakes
- "Anyone who has the AI track has the exam under control." It does not cover image, speech, translation and extraction; the map shows it.
- "The course prepares for the exam, so it is enough on its own." It promises no pass; the exam expects experience with the example language, and anyone who wants to take it practices that in addition.
- "Preview belongs because it appears in the exam." Preview features carry no must requirement here; the lesson says so explicitly.
- "The numbers in the case are requirements from Microsoft." They are assumptions of the task; each lesson names limits and quotas with a source.
Further reading
- https://learn.microsoft.com/credentials/certifications/resources/study-guides/ai-103
- https://learn.microsoft.com/credentials/certifications/exams/ai-103
- https://learn.microsoft.com/azure/foundry/what-is-foundry
- https://learn.microsoft.com/azure/foundry/how-to/create-projects