微软生成式 AI 入门课专题
本专题共 50 篇。内容依据 microsoft/generative-ai-for-beginners 仓库的公开内容整理。凡仓库里没有写明的地方,文中一律照实写 「仓库里没有找到相关说明」,不做推断。
本地跑通微软生成式 AI 入门课:Python 版本、依赖与 .env 字段
搭 generative-ai-for-beginners 的本地环境,卡人的从来不是概念,是 Python 版本对不对、依赖装哪一份 requirements、`.env` 放哪一层、字段名叫什么。本文以仓库 `00-course-setup` 下两份 setup 文档为主,并核对根目录 `.env.copy`、`.gitignore` 与 `.devcontainer/` 配置,把前置条件、四条安装路径与 `.env` 字段逐条落到文件上。
环境与三条 provider 路线
这门课最劝退的一段不在知识点,在配置。仓库里同一课常有 `oai-`、`aoai-`、`githubmodels-` 三套示例,选错路线就会报模型不存在。这一组把云端与本地两种环境、三条接入路线的环境变量差异,以及认证报错、endpoint 与部署名对不上这几个高频问题一次讲清。
不想装环境:用 Codespaces 跑微软生成式 AI 入门课的完整步骤
generative-ai-for-beginners 提供了一条浏览器里的云端启动路径。本文按仓库 00-course-setup 下的三个文件把步骤拆开:fork 之后容器里到底跑了哪几条命令、密钥用 Codespaces secret 还是 .env、云端与本地在取值方式上差在哪一行代码,以及哪些说明仓库里其实没有给。
微软生成式 AI 入门课的 githubmodels-app.py 连的是 Foundry Models
generative-ai-for-beginners 同一节课常有 oai、aoai、githubmodels 三份示例。本文只盯 githubmodels 这一条:要填哪两个环境变量、client 怎么初始化、它和 OpenAI 那份代码差在哪几行,以及为什么这个前缀现在名不副实。全部依据仓库内的文件,未运行过代码。
微软生成式 AI 入门课接 Azure OpenAI:endpoint、部署名、版本
把 generative-ai-for-beginners 的课程示例从 OpenAI 切到 Azure OpenAI,卡住的往往不是代码而是四个环境变量的语义。本文按仓库里的 .env.copy、aoai-app.py 与 shared/python/api_utils.py,逐个讲清 endpoint 要拼成什么、部署名为什么不等于模型名、API 版本字段在新旧两条路线里各是什么处境,以及怎么验证配对了。
OpenAI、Azure OpenAI、Foundry Models:微软生成式 AI 入门课三条路线
generative-ai-for-beginners 的同一课下常有 oai-、aoai-、githubmodels- 三份代码。这篇把三套代码在客户端类、认证变量、模型标识、调用方法与取结果上的差异逐项对齐,说清各自的前置门槛,并给出从你手头账号倒推该配哪一套的决策路径。
跑微软生成式 AI 入门课报模型不存在:多半是 provider 选串了
generative-ai-for-beginners 的同一课往往有 oai-、aoai-、githubmodels- 三套示例,凭据变量、客户端类和 model 的取值来源都不一样。本文按仓库文件把这三条线拆开,给出判定动作、处置方式和验证办法,并说明哪些报错其实不属于这一类。
Azure OpenAI 报 404:微软生成式 AI 入门课的 endpoint 与部署名
跑 generative-ai-for-beginners 的 Azure OpenAI 示例时,最常卡住的不是代码而是三个环境变量。本文顺着仓库里 aoai-app.py 的 base_url 拼接、.env.copy 的 endpoint 形态注释、以及 api_version 字段在两种客户端之间的错位,给出一套能自己走一遍的判定动作。
微软生成式 AI 入门课报认证错误:三条 provider 路线密钥字段不同
generative-ai-for-beginners 的同一课往往备有 oai、aoai、githubmodels 三个版本的示例,它们读的环境变量名不是一套,报错形态也不一样。本文按仓库里的 .env.copy、03-providers.md、shared/python/env_utils.py 与三个示例脚本,把「报错文本 → 该配哪个字段」这条映射理清楚。
跟着课程把六类应用写出来
文本生成、多轮聊天、搜索与 embedding、图像生成、函数调用、RAG 与向量库。每篇都逐段拆具体的那个 `.py` 或 `.ipynb`,说清客户端怎么初始化、消息结构长什么样、参数各是什么意思、结果从哪个字段取。
跟微软生成式 AI 入门课写第一个文本生成应用:oai-app.py 逐段拆开
generative-ai-for-beginners 第 06 课的 python 目录里同时躺着 oai、aoai、githubmodels 三套示例,选错一套就会在配置上卡住。本文只走 OpenAI 那一条线,把 oai-app.py 这二十来行从客户端初始化、input 的消息结构、参数含义一直拆到 output_text 的取值路径,并交代仓库里写明的边界。
聊天应用的多轮历史在哪一层拼:微软生成式 AI 入门课第 7 课
照着 generative-ai-for-beginners 第 7 课跑完第一个聊天示例,多半会发现模型"记不住"上一轮。这篇沿着仓库里的 notebook 逐行看清楚:历史列表到底在哪一层拼、系统消息为什么必须排第一条、简版与完整版差在哪几行,以及 store=False 与 previous_response_id 之间那条被课程绕开的岔路。
微软生成式 AI 入门课第 8 课:从 transcript 到 embedding
generative-ai-for-beginners 第 8 课把「一堆视频字幕」变成能用自然语言检索的索引,中间隔着五个 enrich 脚本。本文按仓库里的代码把这条链路走一遍:每个脚本改了哪个字段、索引最终存成什么结构、检索时相似度到底怎么算,以及这套脚本里有哪些会静默吞数据的地方。
第 9 课的图像生成应用:微软生成式 AI 入门课里请求怎么发、结果怎么取
generative-ai-for-beginners 第 9 课给了 Azure OpenAI 与 OpenAI 两份图像生成示例,同一个接口在两份代码里的写法并不一样。本文对着 09-building-image-applications 目录下的 aoai-app.py 与 oai-app.py,把请求参数、返回结构、结果落盘这条链路拆开,并标出仓库里几处容易踩的不一致。
函数调用的完整往返:微软生成式 AI 入门课第 11 课的工具定义与回传
顺着 generative-ai-for-beginners 第 11 课的 python 笔记本,把一次函数调用拆成三段:工具 schema 里每个字段是什么、模型返回的 function_call 项长什么样、结果怎么以 function_call_output 回传给模型。同时指出课程正文与代码不一致的几处,以及照抄示例代码会踩的两个坑。
微软生成式 AI 入门课第 15 课 RAG:向量库那段 notebook 逐块读
逐块拆 generative-ai-for-beginners 第 15 课的 RAG notebook,看清 split_text 的切块条件、写进 DataFrame 的字段到底有哪些、Cosmos DB 客户端连上之后发生了什么,以及检索到的片段在 chatbot 函数里被拼到提示词的哪个位置。含 README 与 notebook 两处写法不一致的对照,以及跑之前要先核对的前置条件。
跑不通时的排查
notebook 内核与虚拟环境没对上、被限流时仓库自带的重试封装做了什么、换了模型 embedding 维度就对不上、图像请求被内容策略挡下、函数定义了却不被调用、Phi 加载失败、`.env` 明明写了却读不到、课程自带的测试跑不过。
微软生成式 AI 入门课的 notebook 跑不起来:内核、依赖、环境三层排查
打开 generative-ai-for-beginners 的 .ipynb,第一个单元就 ModuleNotFoundError,或者内核干脆连不上。这篇按依赖清单在哪、内核选到了谁、虚拟环境和内核有没有绑上三层顺序排查,每一层都给可执行的判定动作,并说明什么情况下说明问题根本不在环境上。
跑微软生成式 AI 入门课示例被限流:仓库自带的重试封装做了什么
generative-ai-for-beginners 的 shared/python/api_utils.py 里有个 make_safe_request,很多人以为它会替课程示例兜住限流。本文按排查顺序读一遍这个函数:它捕获哪些异常、退避有没有实现、中间几次失败去哪了,以及课程示例其实根本没走它,你该在哪一层自己补。
embedding 维度对不上导致检索报错:微软生成式 AI 入门课从写入端查起
语义检索突然报向量维度不匹配,或者查什么都返回空,多半不是查询代码写错了,而是写入索引时用的 embedding 模型和查询时用的不是同一个。本文沿着 generative-ai-for-beginners 第八课的写入脚本与查询 notebook,讲清楚这条链路上哪几处把模型名写死了、换模型后为什么必须重建基线。
图像生成请求被内容策略挡下:微软生成式 AI 入门课示例怎么处理
跑 generative-ai-for-beginners 第 09 课的图像生成示例时,请求被挡下往往看不到任何报错,控制台只留一行 completed。本文顺着仓库里 aoai-solution.py 的 try/finally、notebook 里的 except 分支、README 的 metaprompt 小节,把判定动作、处置方式与验证方法逐条对上,并说明哪些症状其实不是内容策略造成的。
微软生成式 AI 入门课里函数定义了却不调用:schema 与消息结构两头查
工具定义写完了,模型却当没看见,或者调了一次之后第二轮接不上。本文照着 generative-ai-for-beginners 第 11 课的 Python notebook 与 README,把 tool schema 的顶层形状、必填字段、描述写法,以及工具结果在消息里的摆放位置逐处对一遍,并指出仓库里几处正文与代码不一致的地方。
微软生成式 AI 入门课的 Phi 加载失败:依赖、权重、设备三层排查
照着 generative-ai-for-beginners 的 19-slm 课跑 Phi 系列 notebook,最常卡住的地方是 from_pretrained 那一行。本文按依赖、权重来源、设备三层拆开,逐层给出可执行的判定动作,并把仓库里 19-slm/python 下几个 notebook 的原始写法、requirements.txt 的实际覆盖范围以及 device_map 的三种写法一一对上号。
.env 写了却读不到:读一遍微软生成式 AI 入门课的 env 加载逻辑
generative-ai-for-beginners 的示例脚本报「缺少环境变量」,多数时候不是 .env 写错了,而是这一段代码根本没加载它。本文顺着 shared/python/env_utils.py、tests/test_env_utils.py 和 00-course-setup 的三份配置文档,把加载顺序、文件查找位置、测试覆盖到与没覆盖到的边界情况理一遍,并给出可执行的判定动作。
拦住了什么、没拦住什么:微软生成式 AI 入门课自带的输入校验
generative-ai-for-beginners 的 shared/python/input_validation.py 提供了一组输入校验与清洗函数,很多人接进自己的应用就当成了防注入。本文逐条读它的规则、看 tests 覆盖了哪些输入形态,指出从正则字面语义就能读出的几处绕过口,并给出仓库文档自己写明的处置顺序。
微软生成式 AI 入门课的测试跑不过:先看 conftest 与 fixture
generative-ai-for-beginners 仓库根目录下有一个 tests/ 目录,CI 里跑 pytest tests/,但按课程的本地安装步骤装完依赖后不一定能顺利收集。本文只依据仓库文件本身,梳理 conftest.py 到底注册了什么、这套测试对环境变量的依赖到底有多少、以及它在断网环境下的结构,并给出逐步的判定动作与排除条件。
概念地基与提示工程
课程怎么给生成式 AI 划范围、用哪几个维度给模型分类,以及第 4 课与第 5 课的提示技法各自落到哪段代码上。最后一篇讲两课的技法边界:什么时候该从基础技法升级到高级技法。
第 1 课怎么划生成式 AI 的范围:微软生成式 AI 入门课的概念地基
generative-ai-for-beginners 的第 1 课没有一行代码,却把整门课的定义边界、教学案例和术语口径全定死了。这篇沿着 01-introduction-to-genai/README.md 走一遍它划的四条线,并指出其中的 temperature 一说到了第 6 课要打折扣。
微软生成式 AI 入门课第 2 课怎么给大模型分类:五个维度对到选型问题
generative-ai-for-beginners 第 2 课在「理解不同类型的 LLM」下挂了五个并列小节,很多人当成一份分类学背下来。这篇不复述课程,只做一件事:把这几个维度还原成选型时各自回答的那个问题,并顺着仓库里的 .env 变量、embeddings 调用和 provider 标签,指出维度在代码里长什么样。
微软生成式 AI 入门课第 4 课:提示工程的地基是哪几件事
generative-ai-for-beginners 第 4 课配了三份 notebook,练习内容完全一样,只换客户端接线。本文顺着这三份文件走一遍,看课程是怎么把「验证配置」「验证编造」「验证技法」拆成三个可判定的探针的,以及采样参数那条已经变过的分界线。
七种高级技法只有一种落进 aoai-solution.py:微软生成式 AI 入门课第 5 课
generative-ai-for-beginners 第 5 课列了 zero-shot、few-shot、chain-of-thought、self-refine 等一串提示技法,但这一课的 python 目录下只有 assignment 与 solution 两个文件。本文顺着 05-advanced-prompts/python/aoai-solution.py 逐处对,看看哪条技法真的落到了代码里、落在哪一行,以及 temperature 那一节现在已经和第 6 课的说明对不上了。
基础提示和高级提示:微软生成式 AI 入门课第 4、5 课的边界
generative-ai-for-beginners 的第 4 课与第 5 课都在讲提示工程,技法清单还有重叠。这篇从两课的代码目录结构入手,说清它们各自把边界划在哪、什么样的场景该从第 4 课那套升级到第 5 课,以及采样参数这条最容易踩空的分岔。
工程化:负责任 AI、安全、生命周期与 UX
这几课最容易被当成务虚内容跳过,但它们给的其实是可执行动作:风险类型对应哪些缓解动作、攻击面怎么分类、从原型到上线中间少了哪几步、交互上哪些是必答题。低代码路线单列,并对照写代码的能力边界在哪里断掉。
微软生成式 AI 入门课第 3 课的负责任 AI:不是口号,是可执行动作
generative-ai-for-beginners 第 3 课整章没有一行代码,但它列的风险类型与缓解层,在这个仓库里都能找到对应的落点。本文沿着「风险 → 缓解层 → 具体文件」走一遍,指出各层缓解分别落在哪个文件的哪个函数上,哪一层在仓库里根本没有代码,以及同一课两条 provider 路线里同名校验函数的行为差异。
微软生成式 AI 入门课第 13 课的应用安全:重点盯的是哪几类攻击面
generative-ai-for-beginners 第 13 课通篇没有代码,只给了攻击面分类;真正的防护动作散在 shared/python/input_validation.py 和 docs/SECURITY_GUIDELINES.md 里。这篇沿着仓库文件走一遍,说清课程把攻击面切成哪几类、代码里到底拦了什么、哪些其实是通用 Web 安全。
微软生成式 AI 入门课第 14 课的应用生命周期:从原型到上线中间少了哪几步
generative-ai-for-beginners 第 14 课把生成式 AI 应用的生命周期切成三大步加一个贯穿环。本文沿课程正文把每一步的产出物、评估环节落在哪个位置捋一遍,并对照仓库里 shared/python 与 tests 目录真正给了代码的部分,指出哪几项在这个课程仓里只有概念、没有可执行的评估脚本。
微软生成式 AI 入门课第 12 课的应用 UX:哪些交互问题是必答题
generative-ai-for-beginners 的 12-designing-ux-for-ai-applications 只有一篇 README、没有代码,很容易被当成鸡汤跳过。这篇把它列的信任、解释性、控制权、反馈四条原则,逐条对到仓库里真实存在的文件上——shared/python 的校验函数、06 课的 persona prompt、07 课的 UX 小节,看它们在界面前一层各自管了什么。
微软生成式 AI 入门课第 10 课低代码:不写代码能走到哪一步
generative-ai-for-beginners 第 10 课整节没有代码目录,也是全课唯一带 assignment.md 的一节——而这个文件是空的。这篇沿着 10-building-low-code-ai-applications/README.md 走一遍它给的两条流程,说清 Copilot 生成之后还要手工补哪些步骤、AI Builder 的能力分在哪几个产品里,以及这一课的边界到底划在哪。
低代码还是写代码:微软生成式 AI 入门课第 10 课的边界断在哪
generative-ai-for-beginners 第 10 课走低代码路线,第 6、11 课走写代码路线。这篇把两条路线在同一个仓库里各自写明的边界摆出来,给出「什么时候低代码够用、什么时候必须落到代码」的判断依据,不做优劣排名。
模型选择:开源、小模型与微调
开源模型怎么评估、微调的数据格式与提交流程、Phi 三个 demo notebook 的差别,以及三组选型对照:小模型与大模型、开源模型与闭源 API、RAG 与微调。末尾两篇是课程里 Mistral 与 Meta 模型的调用路径。★这一组一律不写模型清单、参数量与跑分。
微软生成式 AI 入门课第 16 课的开源模型:给的是尺子不是清单
generative-ai-for-beginners 第 16 课讲开源模型,很多人翻完只记住了几个模型名字。这篇沿着 16-open-source-models/README.md 走一遍课程真正给出的东西:术语怎么被换掉、判断一个模型算不算开源的那几条信息、选型时课程让你从哪几个入口看,以及跟着 00-course-setup/03-providers.md 把模型真正接进来的三条路径与 Windows 侧的写法。
JSONL 数据格式、提交与轮询:微软生成式 AI 入门课第 18 课微调
拆开 generative-ai-for-beginners 第 18 课的微调作业:训练文件的 JSONL 每行长什么样、files.create 与 fine_tuning.jobs 这条提交与轮询链路怎么写、README 的格式要求和仓库自带样本文件在哪一点上对不上,以及 RESOURCES.md 该按什么顺序翻。
Phi-3.5 三个 demo notebook 差在哪:微软生成式 AI 入门课第 19 课
generative-ai-for-beginners 第 19 课的 19-slm/python/ 下挂着三个 Phi 演示 notebook,看着像同一份代码换了个模型名,实际加载的类、输入形态和依赖都不一样。本文逐字对读这三份文件,说清各自从哪个路径加载、prompt 怎么拼、哪些依赖仓库根本没有写进 requirements,以及照抄时最容易踩到的几处不一致。
小模型和大模型怎么选:微软生成式 AI 入门课第 19 课的判断维度
generative-ai-for-beginners 把选型拆在第 02 课和第 19 课两处:一处给判断维度,一处给部署形态。本文顺着这两个 README 与 19-slm/python 下的示例代码,把云端 API、第三方推理服务、本地 Transformers、Ollama、Foundry Local、ONNX Runtime for GenAI 几条路线的边界摆出来,并指出采样参数在这几条路线上不通用这个容易咬人的地方。
开源模型和闭源 API:微软生成式 AI 入门课第 16 课把差异落在哪几处
generative-ai-for-beginners 第 16 课讲开放模型时没给选型答案。本文顺着仓库里的 .env.copy、19 课的本地运行命令和 18 课的微调 notebook,把开源模型与闭源 API 的差别落到获取方式、部署责任、可控性三处可查证的地方,并给出从处境倒推的判断顺序。
RAG 还是微调:微软生成式 AI 入门课第 15、18 课摊开对看
手上有一批自己的资料想让模型答得准,generative-ai-for-beginners 给了两条路——第 15 课的 RAG 和第 18 课的微调。本文只对照两课白纸黑字写明的东西:各自解决什么问题、数据要准备成什么样、资料变了要付出什么代价,并指出示例代码里两处容易照抄踩坑的地方。
githubmodels- 前缀连的其实是 Foundry:微软生成式 AI 入门课第 20 课
generative-ai-for-beginners 第 20 课只留了一份 githubmodels-assignment.ipynb,但文件名里的前缀和它实际读的环境变量已经对不上了。本文沿着这个 notebook 的三段代码走一遍调用链,并把它和第 04、06、07、21 课的同名前缀文件逐处比对,说清哪些写法是这一课独有的、哪些不能往前面的课上套。
微软生成式 AI 入门课第 21 课 Meta 模型:调用路径与作业设计
generative-ai-for-beginners 第 21 课的练习文件叫 githubmodels-assignment.ipynb,代码里却一个 GitHub Models 的变量都没有。这篇沿着这个文件从环境变量、两段 client.complete 调用一路读到「这一课到底怎么算做完」,把仓库里写明的验收依据和仓库里根本没写的部分分开讲。
仓库工程细节
课程仓自己的工程部分同样值得读:`api_utils.py` 替你挡了哪些麻烦、第 8 课那六个 transcript 脚本构成的数据流水线怎么拆、仓库自带的 Responses API 迁移 skill 怎么用,以及同一课既有 notebook 又有 `.py` 时两种形态各适合什么阶段。
微软生成式 AI 入门课的 api_utils.py:它替你挡了哪些麻烦
generative-ai-for-beginners 的 shared/python/api_utils.py 只有四个函数,却把超时、重试、缺 key 的报错和 Azure v1 端点拼接都收进去了。本文沿着函数签名、异常分支和 tests/test_api_utils.py 的断言走一遍,说清它挡了什么、没挡什么,以及哪些分支根本没被测到。
六个 transcript 脚本串成一条流水线:微软生成式 AI 入门课第 8 课
generative-ai-for-beginners 第 8 课直接给了一份现成的 embedding 索引,但真要换成自己的数据,就得看懂 scripts 目录下那六个 Python 脚本的先后顺序、各自读写哪个文件、以及中间那份 JSON 在每一步被加了什么字段。本文沿着仓库里的编排脚本走一遍这条流水线,把每一步的产出、字段变化和几处代码与文档对不上的地方标出来。
Azure OpenAI 迁到 Responses API:微软生成式 AI 入门课的迁移 skill
generative-ai-for-beginners 仓库里藏着一个专门做 API 迁移的 skill,把 Chat Completions 换成 Responses API 的每一处改动都列成了对应表。本文拆解它的触发方式、cheat-sheet 里的新旧写法映射、以及仓库自身没有被这套规则覆盖的那两课。
同一课的 .ipynb 与 .py 差在哪:微软生成式 AI 入门课第 6 课
generative-ai-for-beginners 的第 06 课在同一个目录里同时放了 .ipynb 和一组 .py,两者内容并不重合。本文逐一核对这一课里两种形态的实际差别、它们各自停在哪一步,以及照着 notebook 的参数去改 .py 会撞上什么,最后给一条从你的处境倒推的选择路径。
Agent 与课程选择
这门课的第 17 课讲 Agent,讲到什么深度、和另一门 Agent 专门课差在哪。加上两组边界对照:函数调用到 Agent 之间跨了什么、搜索应用与 RAG 应用的数据流差异。最后一篇给出两门 beginners 课的学习顺序建议。
微软生成式 AI 入门课第 17 课:Agent 怎么讲给刚入门的人
把 generative-ai-for-beginners 第 17 课拆开看:它给 Agent 下的定义只有「LLM + state + tools」三件,然后拿这把尺子去量几个框架。本文沿着 17-ai-agents/README.md 走一遍,标出各框架承载 state 与 tools 的具体对象,指出这一课与仓库其它部分对不上的地方,以及它和另一门 Agent 课的定位差别。
函数调用和 Agent:微软生成式 AI 入门课第 11 到 17 课跨了什么
generative-ai-for-beginners 的第 11 课教 function calling,第 17 课讲 AI Agent 框架,中间还隔着好几课,却没人说清这两者的分界在哪。本文只对照三件仓库里写死了的事:谁决定下一步、有没有循环、状态存在谁手里,并给出什么时候该从前者换到后者的判断依据。
搜索应用和 RAG 的边界:微软生成式 AI 入门课第 8 课与第 15 课
generative-ai-for-beginners 里第 8 课做搜索、第 15 课做 RAG,两课都在算余弦相似度,很多人分不清区别。本文按仓库里的代码走一遍两条链路,落在数据流的终点和检索结果的用法这两处差异上,并给出该照哪一课抄的判断顺序。
微软生成式 AI 入门课 vs 微软 AI Agent 入门课:先学哪一门
generative-ai-for-beginners 与 ai-agents-for-beginners 名字挨着、主题重叠,但环境前置和代码抽象层完全不同。本文只对照两个仓库里白纸黑字写明的部分——章节覆盖怎么错位、各自要什么前置条件、同一件"函数调用"在两边被写成什么样,然后按你手上已有的东西倒推该先开哪一门。
学完这门课,接下来该往哪走?
从 AI 编程实践到 Agent 工程落地,站内有成体系的教程与学习路线。