All notable changes to the Generative AI for Beginners curriculum are documented in this file.
The format is based on Keep a Changelog. Because this is a learning curriculum rather than a versioned software package, entries are grouped by date.
- Lesson 10 (low-code AI apps): updated two retired
docs.microsoft.com/powerapps/...Dataverse links to the currentlearn.microsoft.com/power-apps/maker/data-platform/data-platform-intro(verified live). - Lesson 17 (AI agents): modernized a dated model example (
GPT-3.5, GPT-4, Llama-2→GPT-5, GPT-4o, and Llama 3.3) and a placeholder deployment name in the Agent Framework sample (my-gpt-4o-deployment→my-gpt-5-mini-deployment). - Root
README.md: added the missing?WT.mc_id=academic-105485-koreysttracking ID to the Microsoft for Startups link. - Lesson 09 image assets regenerated with the
gpt-imagemodel:images/generated-image.png,images/sunlit_lounge.png,images/mask.png,images/sunlit_lounge_result.png, andimages/startup.png(the editing example's before/after pair was produced via a realclient.images.editcall with a generated mask).
- Audited the READMEs for lessons 01, 03, 05, 12, 14, and 16 — all current (correct Microsoft Foundry naming and links); no changes required.
- Ran a full markdown validation across all 41 in-repo markdown files (translations excluded) for
deprecated doc paths,
/en-us/Microsoft locales, outdated product/model names, missing tracking IDs, and broken relative links/images. Only the single Microsoft for Startups tracking-ID gap was actionable; all other flags were confirmed false positives (auto-generated translation links, commented-out placeholders, and third-party/en/structural URLs).
- Rewrote lesson 09 "Building Image Generation Applications" around the current
gpt-imagemodel family (defaultgpt-image-2;gpt-image-1.5/gpt-image-1-minialso GA), replacing the legacy DALL·E 2/3 content. Key corrections:gpt-imagemodels return the image as base64 (b64_json), not a URL. Updated all samples tobase64.b64decode(...)instead of downloading aurlwithrequests.- Bumped the image API version to
2025-04-01-preview. - Replaced the fabricated "temperature" section (image models don't take
temperature) and the DALL·E-2-only image variations content with an image editing (mask/inpainting) section. - Updated
README.md,python/aoai-app.py,python/oai-app.py,python/aoai-solution.py, both assignment notebooks (aoai-assignment.ipynb,oai-assignment.ipynb),typescript/image-generation-app(main.ts,.env-sample), and the .NET.dibnotebook.
- Deleted the obsolete
python/aoai-app-variation.pyandpython/oai-app-variation.pysamples (images.create_variationis DALL·E-2-only and unsupported bygpt-image). - Deleted 4 orphaned image assets tied to the removed temperature-comparison section
(
v1-generated-image.png,v2-generated-image.png,v1-temp-generated-image.png,v2-temp-generated-image.png). - Dropped the unnecessary
requestsdependency from the lesson's Python samples and requirements.
- Ran
aoai-app.pyend-to-end against a deployedgpt-image-1.5model and confirmed the base64 decode/save flow produces a PNG. Notebooks confirmed to be valid JSON.
- Default chat model
gpt-4o-mini→gpt-5-miniacross the curriculum's runnable samples, docs, and configuration. This was driven by model lifecycle status: on Microsoft Foundry,gpt-4o-mini(retires 2026-10-01) and the entiregpt-4.1family (gpt-4.1,gpt-4.1-mini,gpt-4.1-nano, retire 2026-10-14) are Deprecating, whereas the GPT-5 family (gpt-5-mini,gpt-5,gpt-5-nano) is Generally Available (retires 2027-02-06). Updated:.env.copy,00-course-setup/03-providers.md(recommended deployment andaz cognitiveservicesdeploy commands), and the READMEs for lessons 04, 06, 07, and 15.- Python samples in lesson 06 (
oai-app.py,oai-app-recipe.py,oai-history-bot.py,oai-study-buddy.py,githubmodels-app.py) and lesson 08 scripts. - TypeScript / JavaScript samples in lessons 06, 07, and 11, and the
.dib.NET notebooks for lessons 06 and 07. - Assignment notebooks in lessons 04, 06, 07, and 11 (code cells), plus
shared/python/api_utils.pydocstring examples.
- Reasoning-model parameter guidance (new).
gpt-5-miniis a reasoning model: it does not supporttemperature/top_p, and usesmax_completion_tokens(chat completions) /max_output_tokens(Responses API) instead ofmax_tokens. Accordingly:- Removed
temperature/top_p/max_tokensfrom samples that now default togpt-5-mini(githubmodels-app.py,aoai-app-recipe.py,oai-app-recipe.py, lesson 15 RAG README). - Added a "Reasoning models don't use
temperature" note to lesson 06, explaining that reasoning models are steered with prompt engineering + reasoning controls rather than sampling knobs, whiletemperature/top_premain valid on non-reasoning models (GPT-4.x, Mistral, Llama, Phi, open models).
- Removed
gpt-5-miniis not used for the fine-tuning tutorial (lesson 18). GPT-5 only supports reinforcement fine-tuning (RFT); the lesson 18 supervised fine-tuning (SFT) walkthrough keepsgpt-4.1-mini, which supports SFT/DPO.- Temperature demos use a Llama model. To keep teaching
temperature(which reasoning models reject), aLlama-3.3-70B-Instructmodel is used via the Foundry Models endpoint. Added a newAZURE_INFERENCE_CHAT_MODELvariable to.env.copy; the lesson 04/06githubmodelsnotebooks and the06js-githubmodelssample read it (falling back toLlama-3.3-70B-Instruct) and keep theirtemperature/top_p/max_tokensdemos. - JS / .NET samples updated for GPT-5. Removed
temperature/top_p/max_tokensfrom the GPT-5 samples (06recipe-appTypeScript,06.dib.NET - which also raisesMaxOutputTokenCountso reasoning output isn't truncated). The06js-githubmodelssample now uses Llama to keep its temperature demo. The.dibnotes thatAzure.AI.Inference+ a Llama model is the way to demonstrateTemperaturein .NET. - Left
gpt-4o-mini/gpt-5-miniin place where they remain accurate:tiktokentoken-encoding references, model-catalog availability lists, and lesson 02 speech models (gpt-4o-transcribe). - The lesson 20 (Mistral) and 21 (Meta) samples keep
temperature/max_tokensbecause they target Mistral/Llama models, which support those parameters.
A broad refresh to keep the curriculum accurate for 2026: modern APIs, current product names and model names, updated provider guidance, and new developer-experience tooling.
- Microsoft Agent Framework section in lesson
17-ai-agentscovering single chat agents, tools/function calling, Azure OpenAI (Microsoft Foundry) configuration, and multi-agent workflow orchestration (SequentialBuilder/ConcurrentBuilder). - Foundry Local documented as an offline / on-device provider (alongside Ollama) in
00-course-setup/03-providers.mdand lesson19-slm. - Continuous integration workflows:
.github/workflows/code-quality.yml— Ruff + Black (enforced on the maintainedshared/module, advisory across the rest of the curriculum), an advisory ESLint pass, and a pytest job..github/workflows/security.yml— CodeQL analysis (Python + JavaScript/TypeScript) and dependency review on pull requests.
- Test suite under
tests/— 41 pytest tests covering the shared utility module. - Azure OpenAI → Responses API migration skill under
.github/skills/azure-openai-to-responses/used to guide the API migration.
- Chat Completions API → Responses API across all Python and TypeScript chat samples
(
client.responses.create(...)→response.output_text), including lessons 04, 06, 07, 11, 15, and 18, plus their READMEs. - GitHub Models → Microsoft Foundry Models throughout prose, links, and samples. GitHub Models
retires at the end of July 2026; samples now point to the Microsoft Foundry model catalog and use
the
AZURE_INFERENCE_ENDPOINT/AZURE_INFERENCE_CREDENTIALenvironment variables. .env.copy,AGENTS.md, and provider docs updated to reflect that Azure OpenAI is now part of Microsoft Foundry, and the default API version bumped to2024-10-21.- TypeScript samples (lessons 06, 07, 08, 11) migrated off the deprecated
@azure/openaibeta SDK to theopenaipackage (chat apps use the Responses API; the search app uses the embeddings client). - .NET notebooks (
dotnet/*.dib) standardized onAzure.AI.OpenAI2.1.0: lessons 06 and 07 use theChatClientAPI, lesson 08 usesEmbeddingClient(GenerateEmbedding/ToFloats), and lesson 09 usesImageClient(GenerateImage) withgpt-image-1, replacing the legacyOpenAIClient/GetEmbeddingsAsync/GetImageGenerationsAsyncfrom1.0.0-beta.9. - Product-name modernization: "Azure AI Studio" / "Azure AI Foundry" → Microsoft Foundry (lessons 14, 16, 17) and "Bing" → Microsoft Copilot (lesson 12), where those referred to the current products.
- DevContainer (
.devcontainer/) now ships Pylance, Black, Ruff, ESLint, Prettier, and Copilot extensions, enables format-on-save, and installsruff,black,mypy, andpytestso the CI checks can be reproduced locally. - Image generation (lesson 09) recommends
gpt-image-1for Azure (the Azure catalog droppeddall-e-3). docs/ENHANCED_FEATURES_ROADMAP.mdupdated to reflect completed work (API migration, CI, DevContainer, tests) and current facts (translations are produced automatically by the Azure Co-op Translator; the Assistants API is superseded by the Responses API).
shared/python/input_validation.py—validate_text_input(allow_empty=True)now returns an empty string for whitespace-only input instead of raising a "too short" error (consistent with theNonecase). Found and covered by the new test suite.- Lesson 09 image samples — corrected real bugs:
InvalidRequestError→BadRequestError,images.create→images.generate,Image.create_variation→client.images.create_variation, and a variable that shadowed theopenaimodule. - Lesson 15 RAG notebook — repaired the client setup, replaced the removed
DataFrame.appendwithpd.concat, and modernized the legacy SDK usage. - Deprecated / retired model names (
gpt-3.5-turbo,gpt-35-turbo) replaced withgpt-4o-miniin active samples; historical fine-tuning outputs in lesson 18 were preserved and annotated rather than rewritten.
- Microsoft Foundry Models samples that use the
azure-ai-inference/@azure-rest/ai-inferenceSDK (client.complete()) — thegithubmodels-*andjs-githubmodelssamples and lessons 19, 20, and 21 — remain on the Model Inference API, which does not support the Responses API. These are intentionally left on that SDK. AzureOpenAI()is intentionally retained where still appropriate (embeddings and image generation), as those workflows are not part of the Responses API migration.text-embedding-ada-002references are kept where a precomputed embedding index depends on them.