微软 AI Agents for Beginners 完全指南:18 节课程从入门到精通
posts posts 2026-04-22T11:30:00+08:00微软官方 AI Agents for Beginners 课程完整解析,涵盖 18 节核心课程、Microsoft Agent Framework 与 Microsoft Foundry Agent Service V2 架构详解,以及从工具调用、多 Agent 协作到生产级部署的完整学习路径。技术笔记AI Agent, Microsoft微软 AI Agents for Beginners 完全指南:18 节课程从入门到精通
2025 年 AI Agent 概念泛滥,多数开发者卡在同一个地方:能跑通 demo,却说不清 Agent 和带 function calling 的 LLM 应用到底差在哪。微软的 ai-agents-for-beginners 试图填这个坑——一份从设计模式到生产部署的工程地图,共 18 节课,MIT 许可证,以 Jupyter Notebook + Python 为载体,基于 Microsoft Agent Framework 与 Microsoft Foundry Agent Service V2。
本文拆解这套课程的核心内容、架构设计和上手路径,帮你判断它是否值得投入时间。
目录
- 一、课程总览地图
- 二、AI Agent 核心概念:与传统 LLM 应用的根本区别
- 三、18 节课程内容详解
- 四、核心架构:Microsoft Agent Framework 与 Microsoft Foundry Agent Service V2
- 五、快速上手:环境配置与第一个 Agent
- 六、开发扩展:基于课程的项目实践
- 七、与微软其他 AI 课程的协同
- 八、采用顺序与适用边界
- 九、自测题
- 十、动手练习
- 十一、进阶路径
- 十二、FAQ
- 十三、结语
一、课程总览地图
18 节课按主题分为四组,每组解决一个工程问题:
| 主题组 | 节次 | 解决的问题 | 核心产出 |
|---|---|---|---|
| 概念与框架 | 第 1-3 节 | Agent 是什么?该用哪个框架? | 框架选型对照表、设计模式总览 |
| 核心模式 | 第 4-9 节 | Agent 该怎么组织? | 主要设计模式代码模板 |
| 生产化能力 | 第 10-13 节 | 怎么让 Agent 安全可控、可观测? | 生产、协议、上下文与记忆方案 |
| 进阶与部署 | 第 14-18 节 | 怎么落地到具体平台与生产? | 框架实战、浏览器、容器与安全 |
课程按"从概念到生产"的逻辑组织:设计模式是核心,生产化是过渡,协议与部署是扩展。读者按角色选起点(见第八节)。
二、AI Agent 核心概念:与传统 LLM 应用的根本区别
课程开篇给了一个定义:AI Agent 是能够自主感知环境、做出决策并执行行动的智能系统。这个定义本身不复杂,关键在于它和传统 LLM 应用的三点区别。
2.1 自主行动能力(Autonomy)
传统 LLM 应用是响应式的:用户输入文本,模型输出文本,交互到此结束。Agent 多了一层——它能调用外部工具、读写文件、操作数据库、发送网络请求。
区别不在"能不能调函数",而在"谁来决定调不调"。传统 function calling 是模型建议、代码执行;Agent 系统里,模型自己判断该不该调、调哪个、调完之后下一步做什么。
2.2 目标导向行为(Goal-Directed)
Agent 能将复杂目标拆解为多个子任务,并动态规划执行路径,区别于按固定指令执行单一步骤的传统程序。
举个例子,“帮我分析这份财报"不是一个单步任务。Agent 需要拆成:读取文档 → 提取关键数据 → 查询行业基准 → 生成对比分析 → 输出报告。每一步的执行结果会影响下一步怎么走。
2.3 记忆与上下文管理(Memory & Context)
Agent 具备长期记忆能力,能在多轮交互中保持上下文一致性,并利用历史经验优化后续决策。课程把记忆拆成两层:短期记忆对应当前任务的上下文窗口,长期记忆对应跨会话的知识存储,两层各有对应的实现方式,远超对话历史的简单拼接。
下面这段代码展示了一个最小可用的 Agent 闭环。理解它的关键是看清楚四步演进:第一步是最简 chat completion,只传 messages,模型直接返回文本;第二步加上 tools 参数,模型有机会建议调用工具;第三步是工具执行,代码层把模型建议的函数真正跑一遍;第四步是结果回传,把工具输出塞回 messages 再请求一次,模型据此生成最终回答。差别就在中间那层"工具调用决策”。
import json
from openai import OpenAI
client = OpenAI()
def get_weather(location: str) -> str:
"""获取指定城市的天气信息"""
weather_data = {
"北京": "晴,25°C",
"上海": "多云,28°C",
"广州": "雨,30°C",
}
return weather_data.get(location, "暂无天气数据")
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称,如北京、上海",
},
},
"required": ["location"],
},
},
}
]
def run_agent(user_input: str) -> str:
"""运行一个最小可用的 Agent:感知 → 规划 → 行动 → 返回"""
messages = [{"role": "user", "content": user_input}]
# 第 1 步:模型决定是否调用工具(最简 chat completion 只到这一步就返回)
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=tools,
)
message = response.choices[0].message
# 第 2 步:如果模型决定调用工具,执行工具并把结果回传
if message.tool_calls:
messages.append(message)
for tool_call in message.tool_calls:
args = json.loads(tool_call.function.arguments)
result = get_weather(**args)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result,
})
# 第 3 步:模型根据工具结果生成最终回答
final_response = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=tools,
)
return final_response.choices[0].message.content
return message.content
if __name__ == "__main__":
print(run_agent("北京今天天气怎么样?"))三、18 节课程内容详解
3.1 第 1-3 节:基础概念与框架
第 1 节回答"Agent 是什么",介绍 Agent 及其典型用例;第 2 节回答"该用哪个框架",给出 Microsoft Agent Framework、LangChain、AutoGen、CrewAI 等方案的对照;第 3 节总览 Agentic 设计模式,为后续逐项展开作铺垫。框架对比是这门课的第一次工程判断:不同框架各有适用场景,没有放之四海皆准的答案。
3.2 第 4-9 节:核心设计模式
这是课程的主体。主要模式覆盖 Tool Use、Agentic RAG、Planning、Multi-Agent 与 Metacognition,另加第 6 节从信任与安全角度约束 Agent 的行为边界。Tool Use(第 4 节)是最基础的一个——没有工具调用,规划和多 Agent 协作都无从谈起:
| 设计模式 | 解决的问题 | 典型场景 |
|---|---|---|
| Tool Use | Agent 需要外部能力 | 查数据库、调 API、执行代码 |
| Agentic RAG | 从知识库检索并推理 | 私有文档问答、检索增强生成 |
| Planning | 任务需要多步分解 | 写报告、做分析、修 Bug |
| Multi-Agent | 单 Agent 能力不足 | 复杂工作流、角色分工 |
| Metacognition | 输出质量需要验证 | 代码审查、自我反思、文档校对 |
Tool Use(第 4 节)讲工具定义、调用与错误处理,是后续所有模式的地基。Agentic RAG(第 5 节)把检索能力接进 Agent,让它能依据私有知识作答。第 6 节(Building Trustworthy Agents)讲怎么防止危险操作:工具调用前的权限校验、输出内容过滤、对敏感操作的二次确认。第 7 节(Planning)讲任务拆解,涵盖 ReAct、Plan-and-Execute 等策略。第 8 节(Multi-Agent)讲多个 Agent 怎么分工、通信、避免死循环。第 9 节(Metacognition,即自我反思)让 Agent 检查自己的输出并迭代改进。
3.3 第 10-13 节:生产化能力
这几节是从 demo 到生产的分水岭。第 10 节(AI Agents in Production)讲上线要补齐的工程能力。第 11 节(Agentic Protocols)讲 MCP、A2A、NLWeb 等协议:MCP 解决工具定义的标准化,不同框架(Microsoft Agent Framework、LangChain、Claude)都能接入同一套工具定义,避免锁定;A2A 解决多个 Agent 的互操作,让不同厂商的 Agent 能协同工作。第 12 节(Context Engineering)讲如何为模型组织更有效的上下文。第 13 节(Managing Agentic Memory)讲短期记忆与长期记忆的取舍和持久化策略。
3.4 第 14-18 节:进阶与部署
最后五节落到具体平台与生产。第 14 节深入 Microsoft Agent Framework 的实际用法。第 15 节讲基于浏览器操作的 Agent(Computer Use,CUA)。第 16 节讲可扩展 Agent 的部署。第 17 节讲如何在本地创建 Agent。第 18 节讲 Agent 的安全加固。对多数读者,第 14-15 节优先级最高——平台实战和浏览器场景最快见到产出。
从第 4 节开始,课程还会在具体示例中穿插 Function Calling 的工程细节(参数校验、错误重试、并发调用)和 Human-in-the-loop(关键节点插入人工审核),它们是协议落地时配套的工程能力。
四、核心架构:Microsoft Agent Framework 与 Microsoft Foundry Agent Service V2
4.1 Microsoft Agent Framework
Microsoft Agent Framework 是课程的主要载体。它基于 Semantic Kernel 构建,2025 年重组后统一到 Agent Framework 名下,Semantic Kernel 仍作为独立库维护,两者共享底层抽象。
框架解决的第一个工程问题是工具定义标准化:开发者用装饰器或类声明定义工具,框架自动处理参数校验和序列化,省掉手写 JSON Schema 的工作量。第二个是执行流程编排,内置 Tool Use、Planning 等模式的实现,避免从零写控制流。第三个是状态管理,框架维护对话历史、工具调用记录和中间结果,开发者不用自己拼消息列表。
4.2 Microsoft Foundry Agent Service V2
Microsoft Foundry Agent Service V2 是课程的云端运行时。它把 Agent 部署、扩展、监控打包成托管服务:
- 托管运行时:不用自己管服务器,Agent 在 Azure 上运行
- 内置模型路由:支持 GPT-4o、o3 等多种模型,按需切换
- 企业级安全:Azure AD 集成、数据加密、合规审计
4.3 任务流案例:一次工具调用如何流过系统
用一个具体任务把架构串起来。用户问"北京今天天气怎么样?",Agent 的处理流程:
这个流程里有三个关键决策点。模型决策环节,LLM 收到用户消息后判断需要调用工具还是直接回答。工具执行环节,Agent Service 接收模型的工具调用请求,执行对应函数。结果整合环节,LLM 拿到工具结果后决定是否再调一次工具,还是生成最终回答。
整个流程里,Agent Service 承担"调度器"角色,负责把模型、工具、状态串起来,内容生成交给 LLM。这层独立的调度逻辑,正是 Agent 区别于"LLM + function calling"的关键所在。
五、快速上手:环境配置与第一个 Agent
5.1 环境准备
课程仓库支持完整克隆和稀疏克隆两种方式。完整克隆包含所有翻译和图片资源;稀疏克隆只拉取课程代码和英文文档,节省带宽。
# 方式 1:完整克隆
git clone https://github.com/microsoft/ai-agents-for-beginners.git
cd ai-agents-for-beginners
# 方式 2:稀疏克隆(跳过翻译目录,节省带宽)
git clone --filter=blob:none --sparse https://github.com/microsoft/ai-agents-for-beginners.git
cd ai-agents-for-beginners
git sparse-checkout set --no-cone '/*' '!translations' '!translated_images'进入 00-course-setup 目录,按 README 配置 API 密钥和模型参数。课程同时支持 Azure OpenAI 和 OpenAI 两种后端,二选一即可。
5.2 第一个可运行 Agent
如果不想配置 Azure,可以用 OpenAI API 直接跑一个最小 Agent。把第三节的代码保存为 agent_demo.py,然后运行:
# 安装依赖
pip install openai
# 设置 API Key
export OPENAI_API_KEY="sk-your-api-key"
# 运行
python agent_demo.py预期输出:
北京今天晴,气温 25°C。如果想用 Microsoft Foundry Agent Service,课程提供了对应的 Notebook 示例。核心代码如下,需要 Azure 订阅和 AI Project 资源:
import asyncio
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import FunctionTool, ToolSet
from azure.identity import DefaultAzureCredential
async def main() -> None:
project_client = AIProjectClient(
endpoint="https://your-project.services.ai.azure.com/api/projects/your-project",
credential=DefaultAzureCredential(),
)
def get_weather(location: str) -> str:
"""获取指定城市的天气信息"""
return f"{location} 今天晴,25°C"
agent = await project_client.agents.create_agent(
model="gpt-4o-mini",
name="weather-agent",
instructions="你是天气助手,使用 get_weather 工具回答问题。",
toolset=ToolSet([FunctionTool(get_weather)]),
)
thread = await project_client.agents.create_thread()
await project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="北京今天天气怎么样?",
)
await project_client.agents.create_and_process_run(
thread_id=thread.id,
assistant_id=agent.id,
)
messages = await project_client.agents.list_messages(thread_id=thread.id)
print(messages["data"][0]["content"][0]["text"]["value"])
asyncio.run(main())两种方式的区别:OpenAI 版本自己管理对话状态和工具调用循环;Azure 版本把状态管理和调度交给 Agent Service,代码更短,但依赖 Azure 订阅。
没有 Azure 订阅时怎么验证 Azure 路径:Microsoft Foundry Agent Service 的 API 形态(AIProjectClient、create_agent、create_thread、create_and_process_run)和 OpenAI Assistants API 高度一致。可以用 OpenAI Assistants API 做等价验证——把 AIProjectClient 换成 OpenAI().beta.assistants,调用链路几乎一一对应。这样能跑通"托管运行时"的调度逻辑,等有 Azure 订阅后再切回 Agent Service,代码改动集中在 client 初始化和少量字段名。课程 Notebook 里也标注了哪些步骤是 Azure 专属、哪些可以平替。
5.3 学习路径建议
- 零基础开发者:从第 1 节开始,按顺序学习,重点关注第 3、4、7 节的设计模式
- 有 LLM 开发经验:从第 2 节框架对比开始,重点学习 Agent 特有的架构思路
- 产品/架构人员:重点阅读第 2 节框架对比、第 6 节可信 Agent、第 10 节生产、第 11 节协议(MCP)
5.4 学习资源
- 视频教程:每节课配有配套视频,可在课程页面直接观看
- Discord 社区:微软 Foundry Discord 频道有专门的 Agent 学习讨论区
- 关联课程:Generative AI for Beginners(21 节)、MCP for Beginners
六、开发扩展:基于课程的项目实践
6.1 从课程示例到生产系统
课程 code_samples 目录提供了可直接运行的示例代码。以 Tool Use 为例,可以扩展为三类生产场景:
- 企业内部知识问答 Agent:基于私有文档库构建,支持自然语言查询、自动摘要和相关文档推荐。核心是 Tool Use + RAG 的组合。
- 自动化测试 Agent:理解测试需求 → 编写测试代码 → 执行测试用例 → 生成测试报告。核心是 Planning + Tool Use 的组合。
- 代码审查 Agent:集成代码分析工具,自动进行代码质量检查、安全漏洞扫描和性能优化建议。核心是 Multi-Agent + Metacognition 的组合。
以企业内部知识问答 Agent 为例,最小实现骨架如下,工具层接 RAG 检索:
from openai import OpenAI
client = OpenAI()
def search_knowledge_base(query: str, top_k: int = 3) -> str:
"""从私有文档库检索相关片段,生产环境替换为向量数据库查询"""
# 这里用 mock 数据演示,生产环境接 Milvus / Qdrant / Azure AI Search
docs = {
"报销流程": "员工报销需在 OA 系统提交发票,经直属上级审批后转财务。",
"年假政策": "入职满一年享 5 天年假,满三年 10 天,满五年 15 天。",
}
hits = [v for k, v in docs.items() if k in query]
return "\n".join(hits[:top_k]) if hits else "未检索到相关文档"
tools = [
{
"type": "function",
"function": {
"name": "search_knowledge_base",
"description": "从企业内部知识库检索文档片段",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "检索关键词"},
"top_k": {"type": "integer", "description": "返回片段数量,默认 3"},
},
"required": ["query"],
},
},
}
]
def run_kb_agent(user_input: str) -> str:
"""知识问答 Agent:检索 → 整合 → 回答"""
messages = [
{"role": "system", "content": "你是企业知识助手,基于检索到的文档片段回答问题。"},
{"role": "user", "content": user_input},
]
response = client.chat.completions.create(
model="gpt-4o-mini", messages=messages, tools=tools
)
msg = response.choices[0].message
if msg.tool_calls:
messages.append(msg)
for tc in msg.tool_calls:
args = __import__("json").loads(tc.function.arguments)
result = search_knowledge_base(**args)
messages.append({"role": "tool", "tool_call_id": tc.id, "content": result})
final = client.chat.completions.create(
model="gpt-4o-mini", messages=messages, tools=tools
)
return final.choices[0].message.content
return msg.content这个骨架和第三节的 get_weather 结构一致,区别在于工具层从"查天气"换成了"查知识库",生产环境把 mock 数据替换成向量数据库查询即可。
6.2 与 MCP 协议的结合
课程第 11 节详细介绍 MCP(Model Context Protocol)。基于课程学到的 Agent 设计理念,可以快速迁移到 MCP 架构:
- 将工具定义迁移到 MCP Resource 和 Tool 格式
- 使用 MCP 协议进行跨服务通信
- 利用 MCP 的服务发现机制构建动态 Agent 工具链
MCP 的价值在于标准化:不同框架(Microsoft Agent Framework、LangChain、Claude)都能接入同一套工具定义,避免锁定。
6.3 社区贡献
课程仓库接受社区贡献,包括新增代码示例、改进文档翻译、修复 Bug、提出新章节建议。所有贡献需要签署 CLA(Contributor License Agreement),流程见仓库 CONTRIBUTING 文档。
七、与微软其他 AI 课程的协同
微软构建了一套 AI 学习课程体系,AI Agents for Beginners 是其中一环:
| 课程 | 定位 | 难度 |
|---|---|---|
| Generative AI for Beginners | GenAI 基础概念 | ⭐ |
| AI for Beginners | AI 核心概念 | ⭐ |
| AI Agents for Beginners | Agent 系统开发 | ⭐⭐ |
| MCP for Beginners | Agent 协议标准 | ⭐⭐ |
| LangChain for Beginners | Agent 开发框架 | ⭐⭐ |
| AZD for Beginners | Azure 开发部署 | ⭐⭐⭐ |
从 GenAI 基础到 Agent 进阶,再到生产部署,这套体系覆盖了 AI 开发者从入门到精通的路径。建议先学 Generative AI for Beginners 建立基础,再进入本课程。
八、采用顺序与适用边界
谁应该现在就学
- 有 Azure 订阅的团队:课程直接对接 Microsoft Foundry,学完能立刻上手
- 想系统理解 Agent 架构的开发者:课程的设计模式部分是同类资源里最完整的
- 正在选型 Agent 框架的技术负责人:第 2 节框架对比能省掉大量调研时间
谁可以等等
- 只用 LangChain 且不打算换的团队:课程的框架对比仍有参考价值,但代码示例需要自己迁移
- 没有 Azure 订阅的个人开发者:可以用 OpenAI API 跑通大部分示例,但 Microsoft Foundry 相关章节无法实操
- 刚接触 LLM 的新手:建议先学 Generative AI for Beginners,再进入本课程
从哪里开始
- 先读第 1-3 节,建立 Agent 概念、框架与设计模式总览认知
- 跑通第 4 节的 Tool Use 示例,确认环境没问题
- 按需跳到第 4-9 节的设计模式,选一个和当前工作相关的深入
- 上生产前必读第 10-13 节的生产、协议、上下文工程与记忆管理
- 第 11 节(协议)优先级最高,14-18 节按需选学
九、自测题
先想再对答案,每题折叠了参考答案。
- Agent 和带 function calling 的 LLM 应用,本质区别是什么?
参考答案
在于"谁来决定调不调"。function calling 是模型建议、代码执行;Agent 系统里,模型自己判断该不该调、调哪个、调完之后下一步做什么,存在独立的调度层。
- 课程的主要设计模式分别解决什么问题?
参考答案
Tool Use 解决外部能力调用,Agentic RAG 解决知识检索推理,Planning 解决多步任务分解,Multi-Agent 解决单 Agent 能力不足,Metacognition 解决输出质量验证。
- Microsoft Agent Framework 和 Microsoft Foundry Agent Service V2 的分工是什么?
参考答案
Framework 是 SDK,负责工具定义和执行流程编排;Agent Service 是托管运行时,负责部署、扩展、监控。
- MCP 协议解决什么问题?
参考答案
工具定义的标准化。不同框架都能接入同一套工具定义,避免锁定。
- 课程里哪一节是生产化的分水岭?
参考答案
第 10-13 节。生产、协议、上下文工程与记忆管理这一组,决定了 Agent 能不能从 demo 走到生产。
十、动手练习
把第三节的 get_weather 工具改造一下,验证你是否真的理解了工具调用闭环。
练习目标:给 get_weather 增加 humidity 参数(湿度),并让 Agent 在用户问"北京天气和湿度"时同时返回两个信息。
改造步骤:
- 修改
get_weather函数签名,增加humidity参数,返回值里同时包含天气和湿度 - 更新
tools列表里的 JSON Schema,把humidity加进properties,并在description里说明用途 - 运行
run_agent("北京今天天气和湿度怎么样?"),观察模型是否同时传入了location和humidity
验证标准:
- 模型返回的消息里同时包含天气和湿度信息
tool_call.function.arguments解析后能看到humidity字段- 如果模型只传了
location没传humidity,检查description是否写清楚了参数含义
参考实现
def get_weather(location: str, humidity: bool = False) -> str:
"""获取指定城市的天气信息,humidity 为 True 时同时返回湿度"""
weather_data = {
"北京": "晴,25°C",
"上海": "多云,28°C",
"广州": "雨,30°C",
}
humidity_data = {
"北京": "湿度 40%",
"上海": "湿度 65%",
"广州": "湿度 85%",
}
result = weather_data.get(location, "暂无天气数据")
if humidity:
result += "," + humidity_data.get(location, "暂无湿度数据")
return result
tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气信息,可通过 humidity 参数控制是否返回湿度",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "城市名称,如北京、上海",
},
"humidity": {
"type": "boolean",
"description": "是否返回湿度信息,True 返回,False 不返回",
},
},
"required": ["location"],
},
},
}
]十一、进阶路径
- 想深入 MCP 协议:学 MCP for Beginners
- 想深入多 Agent 系统:研究 AutoGen 和 CrewAI 的官方文档
- 想深入 Agent 评估:读 Microsoft Foundry 的 evaluation 文档
- 想深入生产部署:学 AZD for Beginners,掌握 Azure 开发部署流程
十二、FAQ
Q:课程需要 Azure 订阅吗? A:不是必须的。大部分示例可以用 OpenAI API 跑通,但 Microsoft Foundry Agent Service 相关的章节需要 Azure 订阅才能实操。
Q:课程用什么编程语言? A:Python,以 Jupyter Notebook 为载体。需要基本的 Python 语法和 pip 包管理能力。
Q:课程会讲 LangChain 吗? A:第 2 节会对比 LangChain 和 Microsoft Agent Framework,但代码示例以 Microsoft Agent Framework 为主。想深入 LangChain 可以看 LangChain for Beginners。
Q:课程更新频率如何? A:课程仍在演进,框架与服务的命名会随微软产品更新。具体内容以仓库当前 README 为准,这里介绍的是课程的一贯主线。
Q:学完课程能直接上生产吗? A:不能。课程覆盖了从概念到生产的关键知识点,但生产部署还需要自己补日志、监控、容错、成本控制等工程能力。课程第 10-13 节是切入点。
十三、结语
microsoft/ai-agents-for-beginners 的核心价值在于把 Agent 系统的工程问题拆得足够清楚:设计模式、生产化、协议标准,每一层都有对应的章节和代码。18 节课只是载体,工程判断力才是收获。如果你正在学习 AI Agent,或者计划将 Agent 能力引入产品,这份课程值得投入时间。
课程仓库:microsoft/ai-agents-for-beginners | 许可证:MIT
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。