跳到正文

目录

微软 AI Agents for Beginners 完全指南:18 节课程从入门到精通

微软 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。

本文拆解这套课程的核心内容、架构设计和上手路径,帮你判断它是否值得投入时间。

目录


一、课程总览地图

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 UseAgent 需要外部能力查数据库、调 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 形态(AIProjectClientcreate_agentcreate_threadcreate_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 BeginnersGenAI 基础概念
AI for BeginnersAI 核心概念
AI Agents for BeginnersAgent 系统开发⭐⭐
MCP for BeginnersAgent 协议标准⭐⭐
LangChain for BeginnersAgent 开发框架⭐⭐
AZD for BeginnersAzure 开发部署⭐⭐⭐

从 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. 先读第 1-3 节,建立 Agent 概念、框架与设计模式总览认知
  2. 跑通第 4 节的 Tool Use 示例,确认环境没问题
  3. 按需跳到第 4-9 节的设计模式,选一个和当前工作相关的深入
  4. 上生产前必读第 10-13 节的生产、协议、上下文工程与记忆管理
  5. 第 11 节(协议)优先级最高,14-18 节按需选学

九、自测题

先想再对答案,每题折叠了参考答案。

  1. Agent 和带 function calling 的 LLM 应用,本质区别是什么?
参考答案

在于"谁来决定调不调"。function calling 是模型建议、代码执行;Agent 系统里,模型自己判断该不该调、调哪个、调完之后下一步做什么,存在独立的调度层。

  1. 课程的主要设计模式分别解决什么问题?
参考答案

Tool Use 解决外部能力调用,Agentic RAG 解决知识检索推理,Planning 解决多步任务分解,Multi-Agent 解决单 Agent 能力不足,Metacognition 解决输出质量验证。

  1. Microsoft Agent Framework 和 Microsoft Foundry Agent Service V2 的分工是什么?
参考答案

Framework 是 SDK,负责工具定义和执行流程编排;Agent Service 是托管运行时,负责部署、扩展、监控。

  1. MCP 协议解决什么问题?
参考答案

工具定义的标准化。不同框架都能接入同一套工具定义,避免锁定。

  1. 课程里哪一节是生产化的分水岭?
参考答案

第 10-13 节。生产、协议、上下文工程与记忆管理这一组,决定了 Agent 能不能从 demo 走到生产。


十、动手练习

把第三节的 get_weather 工具改造一下,验证你是否真的理解了工具调用闭环。

练习目标:给 get_weather 增加 humidity 参数(湿度),并让 Agent 在用户问"北京天气和湿度"时同时返回两个信息。

改造步骤

  1. 修改 get_weather 函数签名,增加 humidity 参数,返回值里同时包含天气和湿度
  2. 更新 tools 列表里的 JSON Schema,把 humidity 加进 properties,并在 description 里说明用途
  3. 运行 run_agent("北京今天天气和湿度怎么样?"),观察模型是否同时传入了 locationhumidity

验证标准

  • 模型返回的消息里同时包含天气和湿度信息
  • 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 登录。欢迎补充事实、异议与实践。