generative-ai-for-beginners ships three manifests with three different openai specs
GitHub describes it as 21 Lessons, Get Started Building with Generative AI. The repository metadata lists Jupyter Notebook as its primary language. The metadata lists the MIT license. This article stays within the project description and details documented in the GitHub repository README.
At a glance
- What is it?
- microsoft/generative-ai-for-beginners is an MIT licensed 21-lesson curriculum from Microsoft Cloud Advocates, offered in 50-plus translations with four possible model backends, one of which the readme says is retiring. The install story is messier than the lesson list: three manifests, two disjoint package lists, and a misspelled lesson directory.
- Who is it for?
- generative-ai-for-beginners suits a self-learner with a GitHub account who wants a structured path with runnable examples in Python or TypeScript and who can pick one of four backends. Read the backend table before you start, because the readme itself marks GitHub Models as retiring at the end of July 2026 and routes those lessons to Microsoft Foundry Models, while the repository was still pushed on 24 September 2026.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 6 days ago.
- What is it written in?
- Mainly Jupyter Notebook, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 29, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The lesson 05 directory is spelled with two m's
Every lesson has its own numbered top-level directory, from 00-course-setup/ through 21-meta/. One of them does not match its title. Lesson five is 05-advanced-prompts/, with the second syllable spelled with a double m, while the lesson it teaches is advanced prompt engineering and lesson four is 04-prompt-engineering-fundamentals/. Consequence for a reader automating against this repository: a directory path built from the lesson title, 05-advanced-prompts, does not exist, so a script that enumerates lessons, a link in your own notes, or a cross-reference written from the course outline all fail on that one entry. It is also the kind of error that survives for years precisely because a human reading the list does not notice it, and because the curriculum has no releases, so there is no version where the path was different.
Three manifests, three openai version specifications
The same package is specified three different ways across the repository. The JavaScript manifest declares `openai` at `^7.15.0`. The Python project file declares it as:
openai>=1.12.0That line comes from requirements.txt, while pyproject.toml asks for `openai>=1.0.0`, a lower floor for the same package. Consequence for a learner: the JavaScript and Python SDKs sit on unrelated major lines, which is expected, but the two Python files disagree with each other, so an environment built from requirements.txt is not the environment pyproject describes and a reader who trusts the project file can end up on an older SDK than the pinned file would have given them. Since the lesson code is Python, requirements.txt is the file that governs what you actually run, and it is the one with no counterpart in the project metadata.
The two Python files list almost disjoint packages
pyproject.toml declares five runtime dependencies: openai, python-dotenv, requests at a 2.31 floor, azure-ai-inference at a 1.0.0b1 floor, and tiktoken. requirements.txt lists ten names, and only four of them overlap. requests appears in the project file and not in the pinned file. ipywidgets, numpy, matplotlib, pandas, tqdm, and scikit-learn appear in the pinned file and not in the project file. Consequence for a learner: the notebook stack that the lessons actually execute, numpy and pandas and matplotlib and ipywidgets, is declared only in the file with no discipline, while the file with strict metadata omits it entirely, so neither file is a complete description of the course environment. The discipline is also mixed inside the pinned file itself, since six entries are exact while tiktoken, azure-ai-inference, and scikit-learn carry no version at all.
The readme tags lessons to a service it says is retiring
The readme maps four backends to lesson tags, and the mapping is how you know which lessons to skip. Azure OpenAI Service covers lessons tagged aoai-assignment, the OpenAI API covers oai-assignment, Foundry Local runs models fully offline on your own device with no cloud subscription required, and Microsoft Foundry Models covers githubmodels, with a parenthetical in the same line saying that GitHub Models is retiring at the end of July 2026 and pointing you at Microsoft Foundry Models instead. The last push to main is dated 24 September 2026, two months after that stated end date. Consequence for a learner: a whole tag's worth of lessons still points at a backend with an expiry, so the tag is a filter you have to know about, and the retirement is recorded only as a parenthetical inside a link, not as a changelog entry you would find by looking.
The JavaScript side exists to produce a PDF and nothing else
The root package.json has exactly one script:
"convert": "node_modules/.bin/docsify-to-pdf"Its main field points at index.js, and docsifytopdf.js sits at the repository root. The dependencies are `@azure-rest/ai-inference` at a 1.0.0-beta.2 floor, which is a beta, plus `@azure/core-auth` and the JavaScript openai, and the dev dependencies are `@types/node` and docsify-to-pdf pinned to 0.0.5. Consequence for a reader: the Node toolchain in this repository is a document converter, not part of the course, so npm install is not a prerequisite for working through a lesson even though the manifest carries runtime dependencies for an Azure inference SDK. If you do run it to get the PDF, you install a beta of the Azure inference package, which is a strange thing to inherit from a document conversion task.
Fifty translations is why the readme tells you not to clone
The readme is blunt about it, warning that the repository includes 50-plus language translations which significantly increases the download size, and giving a sparse checkout instead. On bash, macOS, and Linux:
git clone --filter=blob:none --sparse https://github.com/microsoft/generative-ai-for-beginners.git
cd generative-ai-for-beginners
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'The Windows block is identical apart from using double quotes instead of single ones. Consequence for a reader: the two exclusions matter, because translated_images/ is a top-level directory of its own, so excluding only translations still pulls a second full set of image assets per language. And the quote characters are the only difference between the two blocks, so pasting the bash form into cmd.exe is a live failure mode that a reader will hit on Windows.
The Python ceiling is open while the tooling targets 3.10 to 3.12
pyproject.toml sets requires-python to a floor with no ceiling, at 3.10. The classifiers list Python 3, 3.10, 3.11, and 3.12, and the development status classifier is 4 - Beta. The Black configuration sets line-length to 100 and target-version to py310, py311, and py312, and the mypy configuration pins python_version to 3.10. Consequence for a contributor: a newer interpreter installs without complaint, but the formatter is not configured to target it and the type checker is anchored to the floor rather than to the interpreter in use, so code written on 3.13 or later is still formatted toward an older target and checked against 3.10 semantics. One more detail sits in the same file, since isort sets known_first_party to generative_ai while the distribution is named generative-ai-for-beginners, so import classification assumes a package name the project does not publish.
Editorial conclusion
generative-ai-for-beginners suits a self-learner with a GitHub account who wants a structured path with runnable examples in Python or TypeScript and who can pick one of four backends. Read the backend table before you start, because the readme itself marks GitHub Models as retiring at the end of July 2026 and routes those lessons to Microsoft Foundry Models, while the repository was still pushed on 24 September 2026. Clone it sparsely, excluding translations and translated_images, because 50-plus translations is why the readme tells you not to take a plain clone. Do not trust the manifests to agree: package.json, pyproject.toml, and requirements.txt each give a different openai version, and requests appears in only one of the two Python files while scikit-learn appears in only the other. Note there are no GitHub releases, so there is no tag to pin, and the classifier list stops at Python 3.12 while requires-python has no ceiling.
Frequently asked questions
what is generative ai for beginners, the microsoft course?
It is a 21-lesson curriculum from Microsoft Cloud Advocates. The readme labels each lesson either Learn, for a concept, or Build, for a concept plus code examples in Python and TypeScript when possible, and each lesson also carries a Keep Learning section.
Does generative-ai-for-beginners need a cloud subscription?
The readme names four ways to run the code: Azure OpenAI Service, Microsoft Foundry Models, the OpenAI API, and Foundry Local, which it describes as running models fully offline on your own device with no cloud subscription required.
Is there a PDF of generative-ai-for-beginners?
The root package.json carries a single script, convert, which runs node_modules/.bin/docsify-to-pdf, and docsifytopdf.js sits at the repository root. The readme itself does not mention a PDF.
How do I clone generative-ai-for-beginners without all 50 languages?
The readme gives a sparse checkout that clones with --filter=blob:none --sparse and then sets the sparse-checkout pattern to exclude both translations and translated_images, in a bash variant and a CMD variant.
Which Python versions does generative-ai-for-beginners support?
requires-python is set to a floor of 3.10 with no ceiling, the classifiers list 3.10, 3.11, and 3.12, and the Black target-version is set to py310 through py312. The development status classifier is 4 - Beta.
What is in the later lessons of generative-ai-for-beginners?
The top level holds one directory per lesson, including 17-ai-agents, 18-fine-tuning, 19-slm, 20-mistral, and 21-meta, with 00-course-setup holding the environment setup lesson the readme points new readers to.