微软生成式 AI 入门课 vs 微软 AI Agent 入门课:先学哪一门

2026-08-18

两门课的名字挨得太近了。一个叫 generative-ai-for-beginners,一个叫 ai-agents-for-beginners,都是 beginners,主题看着还重叠——都有 RAG、都有工具/函数调用、都有安全那一章。于是问题就变成:手上时间有限,先开哪一门。

这个问题其实不该按”哪门更基础”来答,因为两门课把边界划在了不同的地方。下面只对照两个仓库里能翻到原文的部分,翻不到的我会直接说不比。

先看官方自己给的顺序

ai-agents-for-beginners 的 README 在 Getting Started 一节里写了一句话:如果这是你第一次用生成式 AI 模型做开发,去看 Generative AI For Beginners 那门课。仓库根目录的 STUDY_GUIDE.md 里也给了一张 Choose Your Learning Path 表,把”理解 agent 是什么”落到 01、02、03 三课,把”做一个会用工具的 agent”落到 04 课起步。

反过来,generative-ai-for-beginners 的 README 里没有对应的前置指路——它只在相关课程的徽章列表里挂了 ai-agents-for-beginners 的链接,正文则把 Agent 作为自己的一课收在 17-ai-agents/。这是仓库自述的顺序关系,不是我的推断。

但光看这句话不够,因为真正决定你能不能开工的是环境。

章节覆盖:不是深浅之分,是抽象层不同

把两边目录名摆一起,重叠的主题大致是这几组:

主题generative-ai-for-beginnersai-agents-for-beginners
函数调用 / 工具11-integrating-with-function-calling/04-tool-use/
检索增强08-building-search-applications/15-rag-and-vector-databases/05-agentic-rag/
安全13-securing-ai-applications/18-securing-ai-agents/
负责任 / 可信03-using-generative-ai-responsibly/06-building-trustworthy-agents/
上线14-the-generative-ai-application-lifecycle/10-ai-agents-production/16-deploying-scalable-agents/
Agent 本身17-ai-agents/整门课

看起来像是后者把前者的几章展开了。但真正的差别在代码里,把两边讲”让模型调函数”的文件打开对比一下就清楚了。

generative-ai-for-beginners 的 11-integrating-with-function-calling/README.md 里,工具是你自己手写的一段 JSON:

functions = [
   {
      "type":"function",
      "name":"search_courses",
      "description":"Retrieves courses from the search index based on the parameters provided",
      "parameters":{
         "type":"object",
         "properties":{
            "role":{
               "type":"string",
               "description":"The role of the learner (i.e. developer, data scientist, student, etc.)"
            }
         },
         "required":[
            "role"
         ]
      }
   }
]

上面是课程文件里的示例内容(原文的 properties 下还有另外两个参数,这里只摘了第一个),search_courses 这个名字和字段都是该课的示例值。写完 schema 之后,这一课还要你自己做后面几步:调用时带上 tools=functionstool_choice="auto",从返回里筛出 item.type == "function_call" 的条目,用一张 available_functions 字典把名字映射到真正的 Python 函数,执行,再把结果拼进第二次 client.responses.create 调用。整个回路是你手工接的。

ai-agents-for-beginners 的 04-tool-use/code_samples/04-python-agent-framework.ipynb 里,同一件事长这样:

from agent_framework import tool

@tool(approval_mode="never_require")
def check_availability(
    destination: Annotated[str, "The destination to check"],
) -> str:
    """Check booking availability for a destination."""

然后把函数对象直接交出去:

travel_tools = [get_destinations, check_availability, get_flight_info]

agent = client.as_agent(
    name="TravelToolAgent",
    instructions="You are a travel agent. Use the available tools to answer questions about destinations, availability, and flights.",
    tools=travel_tools,
)

schema 从函数签名和 Annotated 注解里来,dispatch 那一层不再出现在你的代码里。这一课还额外给了 approval_mode 这个参数,notebook 里的表格写明两个取值:"never_require" 是工具直接执行不需要确认,"always_require" 是每次调用都要用户批准,并建议有副作用的工具用后者。

所以两门课不是”入门”和”进阶”的关系,而是同一件事的两个高度:一边教你把回路拆开自己接,一边教你把回路交给框架、然后管住它。以上代码均照抄自各自仓库文件,我们没有跑过,以仓库最新内容为准。

前置依赖:这才是最容易卡住的地方

这一段的差距比章节表大得多。

generative-ai-for-beginners00-course-setup/03-providers.md 里把 provider 做成了可选项:作业文件名带标签,aoai 要 Azure OpenAI 的 endpoint 和 key,oai 要 OpenAI 的,hf 要 Hugging Face token,githubmodels 要 Microsoft Foundry Models 的 endpoint 和 key——四个标签,文档原文写明”你可以配一个、全配、或者一个都不配”,缺凭据的作业会直接报错,不影响其它章。配置方式是把根目录的 .env.copy 复制成 .env 再填值。

这里有个坑必须说清楚:githubmodels- 这个前缀今天已经名不副实了。仓库多处写明 GitHub Models 将于 2026 年 7 月底退役、直接替代者是 Microsoft Foundry Models——00-course-setup/README.md00-course-setup/02-setup-local.md 里的提示连 GITHUB_TOKEN 这个变量一起点了名,00-course-setup/03-providers.md 和根目录的 .env.copy 里也各写了一句退役说明。这个时间点已经过去了。所以你在 06-text-generation-apps/python/githubmodels-app.py 这类文件名里看到的 githubmodels,实际要配的是 AZURE_INFERENCE_ENDPOINTAZURE_INFERENCE_CREDENTIAL 这两个 Microsoft Foundry Models 的变量,别再照着旧教程去找 GITHUB_TOKEN

ai-agents-for-beginners00-course-setup/README.md 有一节明确的 Requirements,门槛是硬的:Python 3.12+(文档专门提醒用 3.12 建 venv,否则 requirements.txt 里的版本装不对)、跑 .cs 样例还要 .NET 10 SDK 或更高、Azure CLI、一个 Azure 订阅、以及一个部署了模型的 Microsoft Foundry 项目。认证走的不是 key 而是 az login:文档说明大多数 notebook 用 azure-identity 里的 AzureCliCredentialDefaultAzureCredential 读你的 CLI 登录态。.env.example 复制成 .env 之后,大多数课只需要填两个变量——项目 endpoint 和模型部署名(示例里写的是 gpt-5-mini,那只是仓库里的示例值)。

一句话:前者可以只有一个 OpenAI key 就开始跑一部分章节,后者的主线路径需要 Azure 订阅。仓库写明的替代 provider 有两条——MiniMax(OpenAI 兼容)和 Foundry Local(本机跑),但设置文档也写清了适用范围:它们对用 OpenAIChatClient 的样例生效,主线 notebook 走的是 FoundryChatClient

还有个细节值得单拎出来。ai-agents-for-beginners 的 requirements.txtagent-framework-core 钉成了精确版本,注释里逐条列了下一个次版本引入的破坏性变更:移除了 ChatMessageHostedWebSearchTool、改了 Message 的构造方式、去掉了 Agent.run()model= 参数;还专门说明为什么直接钉 core 包而不是走 agent-framework meta 包——[all] extras 会拉进没钉版本的集成子包,导致 pip 冲突。对比之下 generative-ai-for-beginners 的根 requirements.txt 用的是 openai>=1.12.0 这种下界写法。这个差异什么时候咬你:如果你把两门课装进同一个环境,或者在一个装过别的 agent 库的 venv 里 pip install -r requirements.txt,出问题的概率在 agent 课这边更高。给它单开一个干净 venv。这些钉法随仓库更新,以最新内容为准。

Windows 侧两边都给了对应写法,别照抄 Linux 那行:建 .env 时前者的文档给的是 echo . > .env(Unix 是 touch .env);后者激活虚拟环境用 venv\Scripts\activate,复制配置文件的 PowerShell 写法是 Copy-Item .env.example .env

顺带说一下:两边找文件的方式不一样

这条不影响选型,但会影响你翻仓库的效率。

generative-ai-for-beginners 用 provider 前缀区分同一课的多个版本。以 06-text-generation-apps/python/ 为例,同一个示例应用会出现 aoai-app.pyoai-app.pygithubmodels-app.py 三份,作业则是 aoai-assignment.ipynboai-assigment.ipynbgithubmodels-assignment.ipynb。也就是说,你先决定走哪条 provider 路线,再挑对应前缀的那个文件,三份之间不要混着看配置——它们读的环境变量不是同一套。同一课下面还会有 typescript/js-githubmodels/dotnet/ 这些按语言分的目录。

ai-agents-for-beginners 用的是语言后缀。设置文档里写明所有 Python notebook 都叫 *-python-agent-framework.ipynb,实际目录里就是 04-tool-use/code_samples/04-python-agent-framework.ipynb04-dotnet-agent-framework.cs 成对出现。provider 不体现在文件名里,因为主线只有一条,换 provider 是改 .env

这个差异的实际影响:在前者的仓库里搜文件名要带上你的 provider 前缀,在后者的仓库里搜要带上课号加语言。

一个会咬人的参数差异

如果你按 generative-ai-for-beginners 的提示工程章去调 temperature,注意 06-text-generation-apps/README.md 里的提醒:Microsoft Foundry 上当前未废弃的是 reasoning 模型(GPT-5 家族、o 系列),它们不支持 temperaturetop_p,也不支持 max_tokens(改用 max_output_tokens),传了会得到参数不支持的错误。文档给的做法是把 temperature 示例指向仍支持采样控制的模型。这一层在 agent 课那边不太会遇到,因为你面对的是 as_agent()instructions,不是原始采样参数。

不比的那几项

  • 哪门”更难”、学完各要多久:两个仓库里我们都没有找到关于难度分级或课时的说明,不比。
  • 视频、翻译语种、课程规模:两边都有自动翻译工作流和视频链接,但这些是会变的规模信息,不作为选型依据。
  • 内容质量:我们没有跑过任何一门课的代码,不做评价。

按你手上的东西倒推

  • 只有一个 OpenAI key,没有 Azure 订阅:先开 generative-ai-for-beginners,走 oai- 标签的那批作业。agent 课的 Requirements 明写要 Azure 订阅。
  • 本机离线、不想连云:两边都写明支持 Foundry Local,前者在 00-course-setup/03-providers.md19-slm/ 里,后者在设置文档的 Foundry Local 一节和 17-creating-local-ai-agents/
  • 手上任务就是”给模型接几个工具、还得有人工审批”:直接进 ai-agents-for-beginners 的 04 课,approval_mode 那张表就是你要的。但建议先花半小时读一遍 genai 那边的 11 课,把 tool_choice="auto"function_call 的手工回路看明白——之后你在框架里看到的就不是黑盒。
  • 要补 embedding 检索基本功:generative-ai-for-beginners 的 08-building-search-applications/python/ 下有 oai-solution.ipynb 这类完整 notebook;agent 课这边,00-course-setup/README.md 的 Optional Setup: Azure AI Search 一节写明第 5 课的 notebook 默认跑内存知识库、不需要额外的 Azure 资源,接真实的 Azure AI Search 索引是可选项。
  • 只想搞清 Agent 是什么,暂时不写代码17-ai-agents/ 目录下只有 README 和 images,没有 python/typescript/ 代码目录——读完概念要动手,还是得去 agent 课。
  • 你是 .NET 开发者:ai-agents-for-beginners 的 code_samples/ 里有 NN-dotnet-agent-framework.cs 与 Python notebook 成对出现,但不是每课都有——目前带 .cs 的是 01 到 05 加 07、08 这几课,其余课只有 Python 版,翻之前先确认;generative-ai-for-beginners 部分章节有 dotnet/ 目录,同时它的 README 指了一个独立的 .NET 版课程仓库。

真要给一句话:两门课不是替代关系,卡住你的通常不是概念顺序,而是环境那一关——先看你能不能拿到 Azure 订阅,答案基本就定了。


本文依据 github.com/microsoft/generative-ai-for-beginners 仓库于 2026-08-18 的公开内容整理, 事实来自仓库内的课程正文与代码示例。我们没有跑过文中涉及的代码, 因此不涉及运行结果、耗时与生成质量的任何描述。 该课程持续更新,文中涉及的文件路径、依赖与接口写法随版本变动,请以仓库最新内容为准。 文中涉及的云端服务调用会产生费用并可能上传数据,请自行评估密钥与数据边界。

本文涉及的另一方内容依据其公开仓库整理(github.com/microsoft/ai-agents-for-beginners)。 本文只对照各方公开写明的机制,不推断未公开的实现,也不对项目做优劣排名

安全与合规相关做法请结合自身环境评估,本文不构成安全方案建议。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。