Generative AI for Beginners is Microsoft's free course for developers who want to build with large language models. Its 21 lessons are each a self-contained topic, so you can start wherever you like. Learn lessons explain an idea, such as how LLMs work, comparing models, prompt engineering, responsible AI, UX for AI and security. Build lessons add code: text generation, chat apps, semantic search, image generation, low-code apps, function calling, RAG with vector databases, open-source models, agents and fine-tuning.
Each lesson has a short video, a written README and code samples in Python and TypeScript, mostly in Jupyter notebooks. You can run them with Azure OpenAI, Microsoft Foundry Models, the OpenAI API, or Foundry Local for models on your own computer. The lessons are translated into more than 50 languages, and there is a separate .NET edition.
It is written by Microsoft Cloud Advocates, is now in its third version and is MIT-licensed, with about 123,000 stars and 164 contributors since June 2023. The course naturally leans on Microsoft's own services, though the OpenAI and local options work too.
- Repository: github.com/microsoft/generative-ai-for-beginners
- Licence: MIT (MIT License)
- Language: Jupyter Notebook. Stars: 123.5K. Forks: 66.4K. Last push: Nov 12, 2026.
- Scan: safe, Nov 13, 2026, commit 79a4334
Who it is for
Developers with some Python or TypeScript who want a structured first course in building AI apps, students, and teams getting started with Azure AI. Absolute beginners can read the Learn lessons without writing code.
Getting started
1. Read the lessons on GitHub, starting with course setup
https://github.com/microsoft/generative-ai-for-beginners/tree/main/00-course-setup2. Or clone it without the 50-plus translations, to keep the download small
git clone --filter=blob:none --sparse https://github.com/microsoft/generative-ai-for-beginners.git3. Then, inside the folder, skip the translation folders
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'The README notes that GitHub Models, used by some lessons, is retiring at the end of July 2026; use Microsoft Foundry Models, the OpenAI API or Foundry Local instead. Cloud model calls are billed by the provider you choose.
Safety scan
We cloned microsoft/generative-ai-for-beginners at commit 79a4334 on Nov 13, 2026 and ran the checks described on the GitHub Tools page: credential patterns, decode-and-execute code, install-time scripts, committed binaries, risky CI workflows, every host the code talks to, known vulnerabilities in pinned dependencies, and project hygiene. A person read every hit. This is what we found.
- No secret hits, no pattern hits, no install hooks and no committed binaries across 11,070 files and about 1.3 million lines, most of them translated lessons and notebooks.
- 23 advisories, none critical. 16 are in the root package-lock.json, which holds the course's sample dependencies and docsify-to-pdf, a tool for turning the lessons into a PDF; the high ones there are in packages such as follow-redirects, marked, extract-zip, json5 and semver. The other lockfiles, for the TypeScript sample apps in lessons 6 to 11, hold one high and a few moderate and low ones. The Python requirements have no known advisories.
- The hosts are Microsoft Learn, Azure, OpenAI's platform docs, Hugging Face, YouTube and GitHub. Many links carry a WT.mc_id tracking parameter Microsoft uses to count course traffic; we found no analytics code in the samples.
- Seven workflows, no pull_request_target, and all three third-party actions are pinned to commits. A security policy, Dependabot, CodeQL, contributing guide and code of conduct are present.
What the scanner counted
| Check | Result |
|---|---|
| Secrets | None found. |
| Suspicious code | None found. |
| Install-time code | None: nothing runs at install beyond the package manager itself. |
| Committed binaries | None. |
| CI workflows | 7 workflows. None use pull_request_target. 0 of 3 third-party actions pinned to a tag rather than a commit. |
| Network hosts | 18 distinct hosts referenced from source; most often github.com, learn.microsoft.com, platform.openai.com, ai.azure.com. No URLs to bare IP addresses. |
| Known vulnerabilities | 23 advisories across 412 pinned packages: 0 critical, 12 high, 7 moderate, 4 low. 06-text-generation-apps/js-githubmodels/package-lock.json: 21 packages, 0 advisories; 06-text-generation-apps/python/requirements.txt: 1 packages, 0 advisories; 06-text-generation-apps/typescript/recipe-app/package-lock.json: 127 packages, 3 advisories; 07-building-chat-applications/js-githubmodels/package-lock.json: 21 packages, 0 advisories; 07-building-chat-applications/typescript/chat-completions-app/package-lock.json: 95 packages, 3 advisories; 08-building-search-applications/js-githubmodels/package-lock.json: 21 packages, 0 advisories; 08-building-search-applications/typescript/search-app/package-lock.json: 95 packages, 3 advisories; 09-building-image-applications/typescript/image-generation-app/package-lock.json: 95 packages, 3 advisories; 11-integrating-with-function-calling/js-githubmodels/package-lock.json: 21 packages, 0 advisories; 11-integrating-with-function-calling/typescript/function-app/package-lock.json: 100 packages, 4 advisories; package-lock.json: 295 packages, 16 advisories; requirements.txt: 6 packages, 0 advisories. |
| Project hygiene | Has security policy, automated dependency updates, CodeQL, licence file, contributing guide. |
| OpenSSF Scorecard | Not scored: the project is not in Scorecard's weekly index. |
The raw findings
Every hit the scanner wrote out, with a link to the exact line at the scanned commit. Secrets candidates are redacted.
Worst known vulnerabilities (23 of 23)
| Advisory | Severity | Package | Summary |
|---|---|---|---|
| GHSA-mrwp-f3q8-3g9p | high | follow-redirects@1.16.1 | follow-redirects: Cross-realm sensitiveHeaders arrays are discarded and custom credentials can follow redirects |
| GHSA-93q8-gq69-wqmw | high | ansi-regex@4.1.0 | Inefficient Regular Expression Complexity in chalk/ansi-regex |
| GHSA-7pqw-9j4j-h8q3 | high | extract-zip@1.7.0 | extract-zip allows arbitrary file writes through symlink archive entries |
| GHSA-jmr9-qjv8-65gv | high | extract-zip@1.7.0 | extract-zip unvalidated symlink path traversal |
| GHSA-62ch-8vmq-8xm7 | high | figlet@1.5.0 | figlet is vulnerable to denial of service via unbounded loop when whitespaceBreak is used with a small width |
| GHSA-9c47-m6qq-7p4h | high | json5@0.5.1 | Prototype Pollution in JSON5 via Parse Method |
| GHSA-5v2h-r2cx-5xgj | high | marked@2.1.1 | Inefficient Regular Expression Complexity in marked |
| GHSA-rrrm-qjm4-v8hf | high | marked@2.1.1 | Inefficient Regular Expression Complexity in marked |
| GHSA-5v2h-r2cx-5xgj | high | marked@1.2.9 | Inefficient Regular Expression Complexity in marked |
| GHSA-rrrm-qjm4-v8hf | high | marked@1.2.9 | Inefficient Regular Expression Complexity in marked |
| GHSA-c2qf-rxjj-qqgw | high | semver@6.3.0 | semver vulnerable to Regular Expression Denial of Service |
| GHSA-93q8-gq69-wqmw | high | ansi-regex@5.0.0 | Inefficient Regular Expression Complexity in chalk/ansi-regex |
| GHSA-3g3m-2fjr-6pw4 | moderate | glob@11.1.0 | Glob: AbortSignal cancellation bypass allows post-timeout filesystem traversal |
| GHSA-g3hv-75wg-m249 | moderate | minimatch@10.2.5 | minimatch has potential denial of service via globparts amplification |
| GHSA-3g3m-2fjr-6pw4 | moderate | glob@13.0.6 | Glob: AbortSignal cancellation bypass allows post-timeout filesystem traversal |
| GHSA-g3hv-75wg-m249 | moderate | minimatch@10.2.4 | minimatch has potential denial of service via globparts amplification |
| GHSA-g3hv-75wg-m249 | moderate | minimatch@10.2.6 | minimatch has potential denial of service via globparts amplification |
| GHSA-pfrx-2q88-qq97 | moderate | got@9.6.0 | Got allows a redirect to a UNIX socket |
| GHSA-4r62-v4vq-hr96 | moderate | marked@1.2.9 | Regular Expression Denial of Service (REDoS) in Marked |
| GHSA-73rr-hh4g-fpgx | low | diff@4.0.2 | jsdiff has a Denial of Service vulnerability in parsePatch and applyPatch |
| GHSA-mmh6-m7v9-5956 | low | markdown-link-extractor@1.3.0 | Regular expression denial of service in markdown-link-extractor |
| GHSA-m6fv-jmcg-4jfg | low | send@0.17.1 | send vulnerable to template injection that can lead to XSS |
| GHSA-cm22-4g7w-348p | low | serve-static@1.14.1 | serve-static vulnerable to template injection that can lead to XSS |
By the numbers
| Stars | 123.5K |
|---|---|
| Forks | 66.4K |
| Contributors | 164 |
| Commits | 2,578 |
| Open issues | 0 |
| Open pull requests | 22 |
| Releases | 0 |
| Latest release | none tagged |
| Licence | MIT |
| Main language | Jupyter Notebook |
| Project age | 3 years |
| Last push | Nov 12, 2026 |
| Tracked files | 11,070 |
| Lines of code | 1.3M |
| Checkout size | 771 MB |
Lines by language: Jupyter 798.3K, Markdown 459.5K, JSON 63K, Python 2,652, JavaScript 577, YAML 406.
Questions
Is Generative AI for Beginners free?
Yes. The course is free and MIT-licensed. Running the code samples uses a model provider such as Azure OpenAI or OpenAI, which bills you, or Foundry Local, which runs models on your own computer.
Do I need an Azure account?
No. The lessons also support the OpenAI API, and Foundry Local runs models offline with no cloud subscription. Azure is the default in many samples because Microsoft wrote the course.
Do I need to know how to code?
For the Build lessons, some Python or TypeScript helps; the README links beginner courses for both. The Learn lessons, such as prompt engineering and responsible AI, can be read without coding.
This post is part of GitHub Tools, where every repository is cloned and scanned before it is written up. The scan is a snapshot of one commit on one day; the repository has moved on since, so check it before you install.
