Agent智能体框架大对决:微软Agent Framework与LangGraph的深度技术剖析——谁是你的最佳生产力伙伴?

Agent智能体框架大对决:微软Agent Framework与LangGraph的深度技术剖析——谁是你的最佳生产力伙伴?

一篇万字长文,带你看清两大顶级Agent框架的技术内核、架构哲学与实战选型

开篇:为什么这篇文章值得你耐心读完?

如果你是以下任何一种角色,这篇文章会给你实实在在的价值:

  • AI应用架构师:正在为团队选型Agent框架,需要全面对比两大主流方案的优劣势
  • 企业开发者:想知道哪个框架更适合生产环境,更能满足合规、可观测、稳定性要求
  • Python AI工程师:对LangGraph很熟悉,想了解微软新推出的Agent Framework有何独特之处
  • .NET生态开发者:好奇微软的Agent Framework是否值得投入,与现有技术栈如何融合
  • 技术决策者:需要一份清晰的对比清单,帮助团队做出明智的技术选型决策

这篇文章将提供:

  1. 全景式架构剖析:从源码结构到设计哲学的系统性对比
  2. 核心能力解构:工作流编排、多智能体协作、状态管理、人机协同等关键能力的深度对比
  3. 实战选型指南:基于真实场景的技术选型建议与最佳实践
  4. 趋势洞察:两大框架的发展方向与生态演进分析
  5. 代码级细节:不是空谈,所有观点都基于真实代码结构与接口设计

全文超过8000字,但我保证每一段都有信息量,没有废话。准备好了吗?让我们开始这场技术盛宴!


1. 时代背景:为什么Agent框架成为必争之地?

1.1 从简单API调用到复杂智能体系统的演进

还记得2022年底ChatGPT刚出现时,我们怎么用的吗?一个简单的API调用,拼接几行prompt,就能让AI回答问题。但随着应用深入,痛点逐渐暴露:

演进阶段
典型做法
面临的核心挑战
阶段一:原始调用
直接调用OpenAI API
模型切换麻烦、速率限制难管理、上下文丢失
阶段二:工具增强
手写Function Calling逻辑
多工具并发困难、错误处理复杂、调用链追踪缺失
阶段三:多轮对话
手动管理消息历史
Token成本失控、上下文窗口管理困难、敏感信息难脱敏
阶段四:工作流编排
自建状态机
分支逻辑复杂、异常补偿困难、缺乏可视化与回放能力
阶段五:多Agent协作
各种Hack方案
角色协调混乱、消息路由困难、跨服务通信复杂
阶段六:生产治理
打日志到文本文件
缺乏分布式追踪、性能分析困难、合规审计难度大

到了2025年,行业共识已经形成:企业级AI应用需要一套完整的Agent框架。这个框架要解决:

  • ✅ 抽象统一性:屏蔽不同LLM提供商的差异,提供一致的编程接口
  • ✅ 状态管理:持久化对话历史,支持长时间运行的工作流
  • ✅ 工具生态:标准化的工具调用协议,支持动态注册与权限控制
  • ✅ 可观测性:完整的调用链追踪、性能指标采集、异常监控
  • ✅ 可靠性:错误重试、状态恢复、幂等性保证
  • ✅ 协作能力:多Agent之间的消息传递、角色协调、任务分发
  • ✅ 人机协同:支持审批流程、人工介入、反馈收集

在这个背景下,两大技术巨头各自推出了他们的解决方案:

  • 微软Agent Framework:背靠.NET与Python双语言生态,强调企业级稳定性与合规性
  • LangGraph:LangChain生态的核心组件,主打灵活性与开发者体验

那么,谁更胜一筹?让我们深入剖析。


2. 技术定位:两种不同的设计哲学

2.1 微软Agent Framework:企业级全栈解决方案

核心理念:构建一个可组合、可治理、跨语言一致的Agent开发框架。

微软Agent Framework(以下简称MAF)不是要"重新发明轮子",而是要把Agent的核心语义(消息、线程、运行、工具、工作流、上下文)提炼为稳定的架构脊柱,同时在外围保持演化能力。

关键特点:

  • 🏢 双语言战略:.NET和Python两套完整实现,API语义保持一致
  • 🔒 企业级基因:内置OpenTelemetry、中间件、审批流程、合规支持
  • 🏗️ 清晰分层:抽象层、执行层、集成层分离,便于渐进式采用
  • 🌐 云原生设计:天然支持分布式执行、Azure AI Foundry集成

设计哲学:"契约优先、可观测优先、稳定性优先"

2.2 LangGraph:灵活可控的状态机编排引擎

核心理念:为任何长时运行、有状态的工作流或Agent提供底层基础设施。

LangGraph不抽象prompts或架构,而是提供:

  • 📊 图原语:将Agent工作流建模为有向图(节点+边)
  • 💾 持久化层:自动保存检查点,支持暂停与恢复
  • 🔄 灵活控制:细粒度的状态管理与条件路由
  • 🚀 快速迭代:Python/JS双实现,开发体验优先

设计哲学:"低层次、可扩展、不做过度抽象"

2.3 定位对比速览

维度
Microsoft Agent Framework
LangGraph
核心差异
目标用户
企业开发者、.NET生态
Python AI研究者、快速原型开发
企业 vs 灵活
抽象层次
高层Agent抽象 + 工作流编排
图原语 + 状态机
更易用 vs 更灵活
语言支持
.NET + Python(一等公民)
Python + JavaScript
企业栈 vs Web栈
核心能力
Agent + Workflow + 工具生态
图执行 + 检查点 + 流式
全栈 vs 聚焦
生态集成
Azure AI、Semantic Kernel、MCP
LangChain、LangSmith
微软 vs AI社区
学习曲线
中等(需理解分层架构)
较陡(需理解图编程)
结构化 vs 灵活性

一个形象的比喻:

  • MAF 像一座"现代化工厂":流水线清晰、质检严格、可追溯、适合大规模生产
  • LangGraph 像一个"高级工作坊":工具齐全、自由度高、适合定制化创作

3. 架构剖析:源码结构的"城市规划"对比

3.1 MAF的分层架构:模块化的严谨设计

查看.NET侧的核心项目结构:

dotnet/src/
├── Microsoft.Agents.AI.Abstractions/        # 核心抽象层
│   ├── AIAgent.cs                           # Agent基类
│   ├── AgentThread.cs                       # 线程抽象
│   ├── AgentRunResponse.cs                  # 响应模型
│   └── Message models/                      # 消息体系
├── Microsoft.Agents.AI/                     # 核心实现
│   ├── ChatClientAgent.cs                   # 聊天型Agent
│   ├── OpenTelemetryAgent.cs               # 遥测包装
│   └── Middleware/                          # 中间件系统
├── Microsoft.Agents.AI.Workflows/           # 工作流引擎
│   ├── Executor.cs                          # 执行器抽象
│   ├── Workflow.cs                          # 工作流定义
│   ├── InProcessRunner.cs                   # 进程内运行器
│   └── Checkpointing/                       # 检查点系统
├── Microsoft.Agents.AI.Workflows.Declarative/ # 声明式工作流
└── Integration layers/                      # Azure、OpenAI等集成

设计亮点

  1. 明确的抽象契约Abstractions层定义接口,具体实现可替换
  2. 执行器模式:工作流基于Executor构建,消息路由清晰
  3. 中间件架构:借鉴ASP.NET Core,支持拦截、过滤、审批
  4. 检查点内置:工作流原生支持状态持久化与恢复

Python侧结构:

python/packages/
├── core/                                    # 核心包
│   ├── _agents.py                          # Agent协议与实现
│   ├── _threads.py                         # 线程与存储
│   ├── _workflows.py                       # 工作流集成
│   ├── _middleware.py                      # 中间件支持
│   └── _observability.py                   # 可观测性
└── Vendor integrations/                    # Azure、OpenAI等扩展

Python版本更"聚合":核心能力集中在core包,通过扩展包提供供应商集成。

3.2 LangGraph的图原语架构:简洁而强大

核心文件结构:

libs/langgraph/langgraph/
├── graph/                                   # 图抽象
│   ├── state.py                            # 状态图
│   ├── message.py                          # 消息图
│   └── graph.py                            # 基础图类
├── pregel/                                  # Pregel执行引擎
│   ├── main.py                             # 主执行逻辑
│   ├── retry.py                            # 重试策略
│   └── remote.py                           # 远程图
├── checkpoint/                              # 检查点系统
│   ├── base.py                             # 检查点接口
│   ├── memory.py                           # 内存实现
│   ├── sqlite/                             # SQLite持久化
│   └── postgres/                           # PostgreSQL持久化
├── prebuilt/                                # 预构建组件
│   ├── chat_agent_executor.py             # ReAct Agent
│   └── tool_node.py                        # 工具节点
└── constants.py                             # 全局常量

设计亮点

  1. 图中心模型:一切都是节点和边,统一的心智模型
  2. Pregel启发:受Google Pregel论文启发的超步执行模型
  3. 检查点解耦:检查点作为独立的持久化层,可替换
  4. 预构建加速:提供create_react_agent等快速启动函数

3.3 架构风格对比

架构维度
MAF (.NET)
LangGraph
适用场景
组织方式
分层明确(抽象-实现-集成)
扁平化(核心原语+扩展)
大型项目 vs 快速迭代
扩展机制
依赖注入 + 接口替换
协议(Protocol) + 组合
编译时安全 vs 运行时灵活
职责分离
执行器、路由器、检查点各司其职
节点函数包含所有逻辑
团队协作 vs 个人掌控
类型安全
强类型 + 泛型
运行时类型检查
大规模 vs 快速试错

4. 核心能力深度对比

4.1 Agent抽象:同一概念的不同实现

MAF的Agent模型

.NET中的AIAgent核心接口:

public abstract class AIAgent
{
    public string? Name { get; }
    public string Id { get; }
    
    // 多种运行方式
    public virtual Task<AgentRunResponse> RunAsync(string input, AgentThread thread, ...);
    public virtual Task<AgentRunResponse> RunAsync(ChatMessage message, AgentThread thread, ...);
    public virtual IAsyncEnumerable<AgentRunResponseUpdate> RunStreamingAsync(...);
    
    // 线程管理
    public abstract AgentThread GetNewThread();
    public abstract AgentThread DeserializeThread(JsonElement serializedThread, ...);
    
    // 可选的通知钩子
    protected virtual Task NotifyThreadOfNewMessagesAsync(...);
}

设计特点

  • ✅ 强类型约束:编译期保证接口契约
  • ✅ 显式线程管理:序列化/反序列化强制实现
  • ✅ 流式双通道:同时支持非流式和流式API
  • ✅ 响应聚合AgentRunResponse封装多消息、Token用量、元数据

Python中的AgentProtocol

class AgentProtocol(Protocol):
    name: str
    
    async def run(
        self,
        messages: str | ChatMessage | list[ChatMessage],
        thread: AgentThread,
        ...
    ) -> AgentRunResponse: ...
    
    async def run_stream(
        self, ...
    ) -> AsyncIterable[AgentRunResponseUpdate]: ...
    
    def get_new_thread(self) -> AgentThread: ...

设计特点

  • ✅ 鸭子类型:通过Protocol实现结构化子类型
  • ✅ 输入灵活:接受字符串、单消息、消息列表
  • ✅ 快速上手:无需显式继承,符合接口即可
  • ✅ Pydantic验证:运行时自动校验与转换

LangGraph的Agent模型

LangGraph不直接提供"Agent"类,而是通过预构建函数:

from langgraph.prebuilt import create_react_agent

agent = create_react_agent(
    model="anthropic:claude-3-7-sonnet-latest",
    tools=[get_weather],
    prompt="You are a helpful assistant"
)

# agent本质是一个CompiledStateGraph
result = agent.invoke(
    {"messages": [{"role": "user", "content": "..."}]}
)

设计特点

  • ✅ 函数式构建:通过工厂函数快速创建
  • ✅ 图即Agent:Agent是图的特例
  • ✅ 状态字典:输入输出都是字典,灵活但需约定
  • ✅ 预构建模式:内置ReAct、Plan-and-Execute等模式

对比总结

维度
MAF
LangGraph
评价
抽象层次
高(专门的Agent类)
低(图的特例)
显式 vs 隐式
类型安全
编译期强约束
运行期字典
安全 vs 灵活
学习曲线
需理解类层次
理解图即可
初学友好度
扩展性
继承+组合
自定义节点
结构化 vs 自由
适合场景
团队协作、长期维护
快速原型、研究探索
企业 vs 实验

4.2 工作流编排:两种执行模型的哲学差异

MAF的Executor模式:消息驱动的工作流

核心概念:

public abstract class Executor
{
    protected abstract RouteBuilder ConfigureRoutes(RouteBuilder routeBuilder);
    
    public async ValueTask<object?> ExecuteAsync(
        object message,
        TypeId messageType,
        IWorkflowContext context
    ) {
        // 1. 路由消息到处理器
        // 2. 记录OpenTelemetry事件
        // 3. 自动发送/产出结果
        // 4. 触发检查点
    }
}

工作流构建示例(顺序执行):

var workflow = AgentWorkflowBuilder.BuildSequential(
    researchAgent,      // 先调研
    writerAgent,        // 再写作
    reviewerAgent       // 最后审核
);

await workflow.RunAsync("Write about AI agents");

并发执行

var workflow = AgentWorkflowBuilder.BuildConcurrent(
    agents: new[] { agent1, agent2, agent3 },
    aggregator: (results) => /* 合并结果 */
);

声明式YAML工作流

name: ContentCreation
executors:
  - id: researcher
    type: agent
    agent: ResearchAgent
  - id: writer
    type: agent
    agent: WriterAgent

edges:
  - from: researcher
    to: writer
    condition: research_complete

特点

  • 🔄 消息路由器:通过RouteBuilder声明式定义消息处理
  • 📊 超步执行:受Pregel启发,分阶段并发执行
  • 💾 内置检查点:执行器钩子自动触发状态保存
  • 📈 完整遥测:每个执行器自动生成Trace和Metrics

LangGraph的图编程模型:节点与边的艺术

核心概念:

from langgraph.graph import StateGraph, START, END

class State(TypedDict):
    messages: list
    next_step: str

def node_a(state: State):
    # 执行逻辑
    return {"messages": [...], "next_step": "b"}

def node_b(state: State):
    return {"messages": [...]}

# 构建图
graph = StateGraph(State)
graph.add_node("a", node_a)
graph.add_node("b", node_b)
graph.add_edge(START, "a")
graph.add_conditional_edges("a", route_decision)
graph.add_edge("b", END)

app = graph.compile(checkpointer=MemorySaver())

特点

  • 🎯 显式图结构:节点和边的关系一目了然
  • ⚡ 并行执行:同一超步的节点自动并发
  • 🔀 条件路由:通过函数动态决定下一步
  • 🚦 Send原语:支持动态fan-out到多个节点

Map-Reduce模式

def continue_to_process(state):
    return [Send("process", {"item": item}) for item in state["items"]]

graph.add_conditional_edges("分发", continue_to_process)
graph.add_node("process", process_item)  # 并行处理
graph.add_edge("process", "汇总")

工作流能力对比

能力维度
MAF Workflows
LangGraph
优势场景
编程范式
声明式+执行器
命令式图构建
配置化 vs 代码化
可视化
通过YAML生成
LangGraph Studio
低代码 vs IDE集成
检查点粒度
执行器级别
节点级别
粗粒度 vs 细粒度
错误处理
执行器异常事件
节点重试策略
集中 vs 分散
调试能力
OTel完整trace
Debug模式+时间旅行
生产监控 vs 开发调试
学习曲线
需理解消息路由
需理解图算法
企业开发 vs 学术背景

4.3 状态管理与持久化:两种存储哲学

MAF的线程持久化模型

.NET AgentThread 抽象

public abstract class AgentThread
{
    public string Id { get; }
    public List<ChatMessage> Messages { get; }
    
    // 强制子类实现反序列化
    protected AgentThread(JsonElement serializedThread) { }
    
    // 可选的消息接收钩子
    protected virtual Task MessagesReceivedAsync(
        IEnumerable<ChatMessage> messages
    ) { }
}

特点

  • 🔐 强约束:序列化/反序列化路径明确
  • 📝 审计友好MessagesReceivedAsync可记录所有消息
  • 🏢 企业级:适合接入数据库、事件溯源、合规脱敏

Python AgentThreadState 模型

class AgentThreadState(BaseModel):
    service_thread_id: str | None = None
    chat_message_store_state: bytes | None = None
    
    @model_validator(mode='after')
    def check_exclusive(self):
        # 确保二选一:云端托管 或 本地存储
        assert (self.service_thread_id is None) != (
            self.chat_message_store_state is None
        )

特点

  • 🔄 双模式:支持外部托管(Azure AI)或本地存储
  • 🎯 Pydantic验证:自动校验数据一致性
  • 🚀 快速集成:默认内存实现,生产换PostgreSQL

LangGraph的检查点系统

检查点接口

class BaseCheckpointSaver:
    def put(self, config, checkpoint, metadata): ...
    def get_tuple(self, config): ...
    def list(self, config, filter): ...

三种持久化模式

  1. MemorySaver:内存实现,用于开发测试
  2. SqliteSaver:SQLite持久化,单机应用
  3. PostgresSaver:PostgreSQL持久化,生产级

使用方式

from langgraph.checkpoint.postgres import PostgresSaver

checkpointer = PostgresSaver.from_conn_string(DB_URI)
app = graph.compile(checkpointer=checkpointer)

# 每个thread_id独立的状态流
app.invoke(input, config={"configurable": {"thread_id": "user-123"}})

持久化策略

策略
说明
适用场景
"exit"
仅完成时持久化
短流程、高性能要求
"async"
异步持久化(边执行边保存)
平衡性能与可靠性
"sync"
同步持久化(每步确认)
关键任务、强一致性

状态管理对比

维度
MAF
LangGraph
适用场景
状态模型
线程+消息列表
状态快照+配置
聊天 vs 通用工作流
持久化粒度
消息级
超步级
审计 vs 恢复
时间旅行
通过线程版本
内置checkpoint_id
手动 vs 自动
跨会话记忆
需自行实现Store
Store接口支持
DIY vs 开箱即用
状态查询
通过Thread API
get_state()
详细
简单 vs 功能丰富

4.4 工具调用与扩展机制:从函数到生态

MAF的工具系统

工具注册(.NET)

[Description("Get current weather")]
public async Task<string> GetWeather(
    [Description("City name")] string city
) {
    return $"Sunny in {city}";
}

var agent = new AzureOpenAIResponsesClient(...)
    .CreateAgent(
        name: "WeatherBot",
        instructions: "You help with weather",
        tools: new[] { AIFunctionFactory.Create(GetWeather) }
    );

工具注册(Python)

from typing import Annotated
from agent_framework import ai_function

@ai_function(description="Get current weather")
async def get_weather(
    location: Annotated[str, "The city name"]
) -> str:
    return f"Sunny in {location}"

agent = ChatAgent(
    model_client=OpenAIChatClient(),
    tools=[get_weather]
)

扩展标准

  • ✅ 原生函数:Python函数、C#方法直接注册
  • ✅ MCP协议:Model Context Protocol支持
  • ✅ OpenAPI:通过schema自动生成工具
  • ✅ A2A:Agent-to-Agent通信协议

LangGraph的工具系统

工具定义

from langchain_core.tools import tool

@tool
def search(query: str) -> str:
    """Search the web for information."""
    return "Search results..."

# 方式1:预构建Agent
agent = create_react_agent(
    model="anthropic:claude-3-7-sonnet-latest",
    tools=[search]
)

# 方式2:自定义ToolNode
from langgraph.prebuilt import ToolNode

tool_node = ToolNode([search])
graph.add_node("tools", tool_node)

错误处理

tool_node = ToolNode(
    tools=[risky_tool],
    handle_tool_errors=True  # 自动捕获异常
)

# 或自定义处理器
def handle_error(error: Exception) -> str:
    return f"Tool failed: {str(error)}"

tool_node = ToolNode(tools, handle_tool_errors=handle_error)

工具生态对比

维度
MAF
LangGraph
评价
工具来源
函数+MCP+OpenAPI
LangChain工具生态
标准化 vs 生态丰富
类型安全
C# Attribute + Python注解
运行时schema
编译 vs 运行
审批流程
内置ApprovalRequest
需自建或用interrupt
企业级 vs 灵活
并发调用
执行器自动并行
Send原语手动控制
自动 vs 显式
工具监控
OTel自动追踪
需手动埋点
开箱 vs DIY

4.5 人机协同(HITL):审批与交互机制

MAF的审批流程

设计思路:通过ApprovalRequestContentApprovalResponseContent实现:

var response = await agent.RunAsync("Book a flight to Paris");

if (response.UserInputRequests.Any())
{
    foreach (var request in response.UserInputRequests)
    {
        if (request is FunctionApprovalRequestContent approval)
        {
            // 展示给用户:approval.FunctionCall
            bool userApproved = ShowApprovalUI(approval);
            
            var reply = userApproved 
                ? approval.CreateApproval()
                : approval.CreateRejection("User declined");
            
            // 继续执行
            response = await agent.RunAsync(
                new ChatMessage(ChatRole.User, reply),
                thread
            );
        }
    }
}

特点

  • ⏸️ 异步审批:Agent可暂停数小时/天,等待审批
  • 🔒 工具级控制:每个工具可单独标记需审批
  • 📋 结构化请求:包含函数名、参数、说明
  • ♻️ 状态恢复:审批后精确恢复执行上下文

LangGraph的Interrupt机制

使用方式

from langgraph.types import interrupt

def sensitive_operation(state):
    # 动态暂停执行
    human_input = interrupt(
        value="Should we proceed with deletion?"
    )
    
    if human_input == "yes":
        # 执行删除
        pass
    else:
        return {"status": "cancelled"}

恢复执行

# 查看当前状态
snapshot = app.get_state(config)
print(snapshot.next)  # 显示等待的节点

# 提供输入并恢复
app.invoke(
    Command(resume="yes"),
    config=config
)

预定义中断点

app = graph.compile(
    checkpointer=checkpointer,
    interrupt_before=["敏感操作"],  # 执行前暂停
    interrupt_after=["数据修改"]     # 执行后暂停
)

HITL能力对比

能力
MAF
LangGraph
优势场景
暂停机制
返回特殊Content
interrupt()函数
类型安全 vs 简洁
审批粒度
工具调用级
任意节点
细粒度 vs 灵活
状态检查
通过Thread
get_state()详细
简单 vs 丰富
分支修改
更新Thread消息
update_state()
审计友好 vs 强大
超时处理
需自行实现
需自行实现
两者都需加强

4.6 可观测性与遥测:生产级监控

MAF的OpenTelemetry集成

内置遥测

var agent = new AzureOpenAIResponsesClient(...)
    .CreateAgent(...)
    .WithOpenTelemetry();  // 包装遥测

// 自动采集:
// - Traces: agent.run, agent.run_streaming
// - Metrics: duration, token_usage, request_count
// - Logs: structured logging with correlation

采集的指标

类型
指标
说明
Trace agent.operation.name
操作类型(run/streaming)
Span agent.request.id
请求唯一标识
Attribute agent.request.message_count
输入消息数量
Attribute agent.usage.input_tokens
输入Token数
Metric agent.duration
执行时长直方图
Metric agent.tokens
Token使用量直方图

工作流遥测

public class MyExecutor : Executor
{
    // 自动生成:
    // - ExecutorInvokedEvent
    // - ExecutorCompletedEvent
    // - ExecutorFailedEvent
}

LangGraph的调试与追踪

LangSmith集成

import os
os.environ["LANGSMITH_API_KEY"] = "..."
os.environ["LANGSMITH_TRACING"] = "true"

# 自动追踪所有LLM调用、工具执行、状态转换
app.invoke(input, config)

Debug模式

for event in app.stream(
    input,
    config,
    stream_mode="debug"  # 详细调试信息
):
    print(event)
    # 输出:节点输入输出、状态变化、检查点信息

性能分析

# 时间旅行调试
history = app.get_state_history(config)
for state in history:
    print(f"Step {state.metadata['step']}")
    print(f"Next: {state.next}")
    print(f"State: {state.values}")

可观测性对比

维度
MAF
LangGraph
适用场景
追踪协议
OpenTelemetry
LangSmith(私有)
标准化 vs 深度集成
无代码接入
✅ Wrapper模式
✅ 环境变量
两者都简单
指标丰富度
Traces+Metrics+Logs
Traces为主
全面 vs 聚焦
可视化
Jaeger/Zipkin/APIM
LangSmith UI
通用 vs 专用
成本
开源工具(免费)
LangSmith付费
预算考量
企业集成
无缝对接APM
需导出数据
企业级 vs 小团队

4.7 流式处理:实时响应能力

MAF的流式API

await foreach (var update in agent.RunStreamingAsync("Query", thread))
{
    if (update.TextUpdate is { } text)
        Console.Write(text);  // 逐token打印
    
    if (update.FunctionCallUpdates.Any())
        // 工具调用进度
    
    if (update.Usage is { } usage)
        // Token统计
}

Python流式

async for update in agent.run_stream("Query", thread):
    if update.text_delta:
        print(update.text_delta, end="")
    
    if update.function_calls:
        # 工具调用

LangGraph的多模式流式

五种流式模式

模式
输出内容
适用场景
values
每步完整状态
UI显示当前状态
updates
每步状态增量
仅展示变化
messages
LLM token流
打字机效果
custom
自定义数据
进度条、中间结果
debug
详细调试信息
开发调试

示例

# Token级流式
async for chunk in app.astream(
    input,
    stream_mode="messages"
):
    if isinstance(chunk, tuple):
        message, metadata = chunk
        print(message.content, end="")

# 自定义流式(节点内发送)
def my_node(state):
    for i in range(10):
        # 发送进度
        yield {"progress": i/10}
    return {"result": "done"}

流式能力对比

维度
MAF
LangGraph
评价
粒度
Token + 工具调用
Token + 状态 + 自定义
标准 vs 灵活
多路复用
单一Update对象
多种stream_mode
统一 vs 专用
子图流式
支持
支持
两者都完善
取消机制
CancellationToken
asyncio取消
语言原生
背压处理
Channel缓冲
需手动Queue
.NET更完善

5. 性能与可扩展性:生产环境考量

5.1 并发模型

维度
MAF (.NET)
LangGraph (Python)
基础模型
async/await + 线程池
asyncio协程
并行执行
Task.WhenAll自动并行
asyncio.gather
CPU密集
线程池 + Parallel
multiprocessing
内存管理
GC自动管理
需注意循环引用
高并发
10k+ 连接无压力
需要uvloop加速

5.2 扩展性设计

MAF扩展点

  • 🔌 自定义Executor:实现新的工作流模式
  • 🔌 中间件注入:请求/响应拦截
  • 🔌 检查点存储:替换默认持久化
  • 🔌 遥测导出器:自定义指标采集

LangGraph扩展点

  • 🔌 自定义节点:任意Python函数
  • 🔌 检查点Saver:实现BaseCheckpointSaver
  • 🔌 状态Channels:自定义状态合并逻辑
  • 🔌 工具集成:LangChain工具生态

5.3 部署模式

模式
MAF
LangGraph
最佳实践
单机部署
✅ Console/Web App
✅ FastAPI服务
小型应用
容器化
✅ Docker + K8s
✅ Docker + K8s
标准方案
无服务器
✅ Azure Functions
⚠️ 冷启动慢
MAF更合适
分布式
✅ A2A协议
⚠️ 需自建
企业级用MAF
托管平台
✅ Azure AI Foundry
✅ LangGraph Cloud
各有平台

6. 实战应用场景对位

6.1 场景分析矩阵

场景类型
MAF优势
LangGraph优势
推荐策略
企业知识库助手
AD集成、审计链、合规
快速RAG原型
Python PoC → .NET生产
多Agent工作流
稳定工作流、完整遥测
灵活图编排
复杂流程用MAF
客户服务机器人
高并发、状态恢复
快速迭代对话逻辑
MAF后端 + LangGraph原型
数据分析Agent
类型安全、错误处理
Pandas/NumPy生态
LangGraph更合适
自动化测试
CI/CD集成、.NET栈
脚本化测试
看现有技术栈
研究原型
-
快速试错、发论文
LangGraph首选
金融合规
强类型、审计、监管
-
MAF必选

6.2 典型案例对比

案例一:内容创作工作流

MAF实现

// 声明式工作流
var workflow = AgentWorkflowBuilder.BuildSequential(
    researchAgent,      // 调研
    outlineAgent,       // 大纲
    writerAgent,        // 写作
    editorAgent,        // 编辑
    reviewerAgent       // 审核
);

// 内置审批
var result = await workflow.RunAsync(
    "Write about AI safety",
    approvalCallback: async (request) => {
        // 人工审核大纲
        return await ShowToHuman(request);
    }
);

LangGraph实现

graph = StateGraph(State)

graph.add_node("research", research_node)
graph.add_node("outline", outline_node)
graph.add_node("write", write_node)
graph.add_node("edit", edit_node)
graph.add_node("review", review_node)

graph.add_edge("research", "outline")
graph.add_edge("outline", "write")
graph.add_edge("write", "edit")
graph.add_conditional_edges(
    "review",
    decide_revision,
    {"edit": "edit", END: END}
)

app = graph.compile(
    checkpointer=checkpointer,
    interrupt_before=["outline"]  # 大纲审批
)

对比

  • MAF:代码简洁,审批内置,遥测完整
  • LangGraph:修订循环更灵活,可视化更好

案例二:客服工单处理

MAF优势场景

  • 🏢 需要与企业CRM、工单系统集成
  • 🔐 需要严格权限控制(某些操作需审批)
  • 📊 需要SLA监控、性能分析
  • 🌐 分布式部署(多数据中心)

LangGraph优势场景

  • 🚀 快速迭代对话策略
  • 🤖 实验新的多Agent协作模式
  • 🔬 A/B测试不同的路由逻辑
  • 📚 与LangChain工具生态无缝集成

7. 生态与社区:长期投资考量

7.1 生态对比

维度
MAF
LangGraph
核心团队
Microsoft(Azure AI团队)
LangChain AI
开源协议
MIT
MIT
GitHub Stars
🆕 新项目(2025年)
10k+
更新频率
高(月度大版本)
极高(周更新)
文档质量
⭐⭐⭐⭐ 完善
⭐⭐⭐⭐⭐ 优秀
示例丰富度
⭐⭐⭐ 覆盖主流场景
⭐⭐⭐⭐⭐ 60+示例
商业支持
Azure支持计划
LangChain Plus

7.2 学习资源

MAF

  • 📚 官方文档:learn.microsoft.com/agent-framework
  • 🎥 YouTube教程:Agent Framework系列
  • 💬 Discord社区:活跃
  • 📦 NuGet包:定期更新
  • 🔗 与Semantic Kernel一脉相承

LangGraph

  • 📚 官方文档:langchain-ai.github.io/langgraph
  • 🎓 LangChain Academy:结构化课程
  • 🎨 LangGraph Studio:可视化IDE
  • 💬 论坛:超活跃
  • 📦 PyPI/npm:每周更新

7.3 未来发展趋势

预测
MAF
LangGraph
可能性
企业采用率
增长快(.NET企业多)
已成主流
两者都会增长
多模态支持
必然(微软战略)
必然(社区需求)
工具生态
MCP主导
LangChain主导
各有侧重
跨语言一致性
会加强(.NET/Python对齐)
JS/Python已对齐
AI原生IDE
VS/VSCode集成
LangGraph Studio
标准化协议
推动MCP/A2A
参与OpenAI标准

8. 迁移与混合策略:不是二选一

8.1 从其他框架迁移

从Semantic Kernel迁移到MAF

// Semantic Kernel
var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(...)
    .Build();

// MAF(一脉相承)
var agent = new AzureOpenAIResponsesClient(...)
    .CreateAgent(...);

迁移成本:⭐⭐ 低(核心团队相同)

从AutoGen迁移到MAF

AutoGen强在:多Agent对话研究MAF强在:生产级工作流

策略:保留AutoGen研究代码,生产用MAF

从LangChain迁移到LangGraph

# LangChain Agent
from langchain.agents import create_react_agent

agent = create_react_agent(llm, tools, prompt)
agent.invoke({"input": "..."})

# LangGraph(几乎无缝)
from langgraph.prebuilt import create_react_agent

agent = create_react_agent(llm, tools, prompt)
agent.invoke({"messages": [...]})

迁移成本:⭐ 极低(同一团队产品)

8.2 MAF与LangGraph混合使用

架构方案

┌──────────────────────────────────────────┐
│         API Gateway / BFF                │
└──────────────┬─────────────┬─────────────┘
               │             │
       ┌───────▼──────┐  ┌──▼──────────────┐
       │  MAF服务群   │  │  LangGraph实验室│
       │  (.NET Core) │  │  (FastAPI)      │
       │              │  │                 │
       │ - 工单处理   │  │ - RAG策略测试   │
       │ - 审批流程   │  │ - 新工具开发    │
       │ - 合规审计   │  │ - 模型评估     │
       └──────┬───────┘  └────────┬────────┘
              │                   │
              └────────┬──────────┘
                       │
              ┌────────▼────────┐
              │   共享消息总线   │
              │  (Kafka/Redis)  │
              └─────────────────┘

优势

  • ✅ MAF处理关键业务路径(稳定、可审计)
  • ✅ LangGraph快速试错新策略(灵活、迭代快)
  • ✅ 通过标准消息格式互通
  • ✅ 观测性统一汇总到SIEM/APM

8.3 选型决策树

是否是.NET技术栈?
├─ 是 → 首选MAF
│       ├─ 需要快速原型?→ 辅助LangGraph
│       └─ 纯生产?→ 纯MAF
└─ 否 → 是否企业级应用?
        ├─ 是 → 考虑MAF(学习成本可接受)
        │       └─ 合规要求高?→ 必选MAF
        └─ 否 → 首选LangGraph
                ├─ 研究/原型?→ 纯LangGraph
                └─ 需要极致稳定?→ 考虑MAF

9. 深度实战:两个完整示例

9.1 示例一:多Agent内容审核系统

需求

  • 用户提交内容
  • Agent1:敏感词检测
  • Agent2:语义分析(仇恨言论、虚假信息)
  • Agent3:人工审核(可疑内容)
  • Agent4:最终发布决策

MAF实现

// 定义审核工作流
public class ModerationWorkflow
{
    public static Workflow<PublishDecision> Build()
    {
        var workflow = new WorkflowBuilder<PublishDecision>();
        
        // 执行器:敏感词检测
        var keywordCheck = new AgentRunStreamingExecutor(
            new KeywordDetectionAgent()
        );
        
        // 执行器:语义分析
        var semanticCheck = new AgentRunStreamingExecutor(
            new SemanticAnalysisAgent()
        );
        
        // 执行器:人工审核(带审批)
        var humanReview = new HumanApprovalExecutor();
        
        // 执行器:发布决策
        var publisher = new PublishDecisionExecutor();
        
        return workflow
            .Start(keywordCheck)
            .ThenConcurrent(semanticCheck)  // 并行分析
            .Then(humanReview, condition: (state) => 
                state.RiskScore > 0.7)  // 条件执行
            .Then(publisher)
            .Build();
    }
}

// 使用
var decision = await ModerationWorkflow.Build()
    .RunAsync(userContent, config);

MAF优势体现

  • ✅ 并发执行自动优化
  • ✅ 条件路由简洁
  • ✅ 人工审批内置
  • ✅ 完整的审计日志(OpenTelemetry)

LangGraph实现

from langgraph.graph import StateGraph, END
from typing import TypedDict, Literal

class ModerationState(TypedDict):
    content: str
    keyword_result: dict
    semantic_result: dict
    risk_score: float
    human_decision: str | None
    final_decision: Literal["approve", "reject"]

def keyword_check(state):
    result = detect_keywords(state["content"])
    return {"keyword_result": result}

def semantic_check(state):
    result = analyze_sentiment(state["content"])
    risk = calculate_risk(result)
    return {"semantic_result": result, "risk_score": risk}

def human_review(state):
    # 使用interrupt暂停
    decision = interrupt(
        value={
            "content": state["content"],
            "risk": state["risk_score"]
        }
    )
    return {"human_decision": decision}

def decide_next(state) -> str:
    if state["risk_score"] > 0.7:
        return "human_review"
    return "publish"

def publish_decision(state):
    # 最终决策逻辑
    ...

# 构建图
graph = StateGraph(ModerationState)
graph.add_node("keyword", keyword_check)
graph.add_node("semantic", semantic_check)
graph.add_node("human_review", human_review)
graph.add_node("publish", publish_decision)

graph.add_edge(START, "keyword")
graph.add_edge("keyword", "semantic")
graph.add_conditional_edges(
    "semantic",
    decide_next,
    {"human_review": "human_review", "publish": "publish"}
)
graph.add_edge("human_review", "publish")
graph.add_edge("publish", END)

app = graph.compile(checkpointer=checkpointer)

LangGraph优势体现

  • ✅ 图结构一目了然
  • ✅ 状态转换灵活
  • ✅ interrupt机制简洁
  • ✅ 可视化调试(LangGraph Studio)

9.2 示例二:智能客服工单系统

需求

  • 理解用户问题
  • 查询知识库
  • 多轮澄清
  • 生成解决方案
  • 创建工单(需审批)

MAF优势实现(.NET)

public class SupportAgent : AIAgent
{
    private readonly IKnowledgeBase _kb;
    private readonly ITicketSystem _tickets;
    
    public override async IAsyncEnumerable<AgentRunResponseUpdate> 
        RunStreamingAsync(
            IEnumerable<ChatMessage> messages,
            AgentThread thread,
            AgentRunOptions? options = null,
            [EnumeratorCancellation] CancellationToken cancellationToken = default
        )
    {
        // 理解问题
        yield return new TextUpdate("分析问题中...");
        var intent = await AnalyzeIntent(messages);
        
        // 查询知识库
        yield return new TextUpdate("查询知识库...");
        var kbResults = await _kb.SearchAsync(intent);
        
        // 多轮澄清
        if (kbResults.NeedsClarification)
        {
            yield return new UserInputRequest("请问您指的是...?");
            // 等待用户输入(下次调用)
            yield break;
        }
        
        // 生成方案
        var solution = await GenerateSolution(kbResults);
        yield return new TextUpdate(solution);
        
        // 创建工单(需审批)
        if (intent.NeedsTicket)
        {
            yield return new ApprovalRequestContent(
                message: "是否创建工单?",
                functionCall: new FunctionCallContent(
                    name: "CreateTicket",
                    arguments: JsonSerializer.Serialize(
                        new { issue = intent.Description }
                    )
                )
            );
        }
    }
}

关键优势

  • 🔄 流式响应(用户体验好)
  • ⏸️ 多轮对话自然暂停
  • 🔒 工单创建需审批(合规)
  • 📊 完整的调用链追踪

LangGraph优势实现(Python)

class SupportState(TypedDict):
    messages: list
    intent: dict | None
    kb_results: list
    solution: str | None
    ticket_id: str | None

async def understand_intent(state):
    intent = await analyze_messages(state["messages"])
    return {"intent": intent}

async def search_kb(state):
    results = await kb.search(state["intent"]["query"])
    return {"kb_results": results}

async def generate_solution(state):
    solution = await llm.generate(
        context=state["kb_results"],
        question=state["intent"]["query"]
    )
    return {"solution": solution}

async def create_ticket(state):
    # 需要审批
    approval = interrupt("是否创建工单?")
    if approval == "yes":
        ticket = await ticket_system.create(state["intent"])
        return {"ticket_id": ticket.id}
    return {}

def route_decision(state) -> str:
    if state["intent"]["needs_ticket"]:
        return "create_ticket"
    return END

# 构建图
graph = StateGraph(SupportState)
graph.add_node("understand", understand_intent)
graph.add_node("search", search_kb)
graph.add_node("generate", generate_solution)
graph.add_node("ticket", create_ticket)

graph.add_edge(START, "understand")
graph.add_edge("understand", "search")
graph.add_edge("search", "generate")
graph.add_conditional_edges(
    "generate",
    route_decision,
    {"create_ticket": "ticket", END: END}
)

app = graph.compile(checkpointer=PostgresSaver(...))

# 流式调用
async for event in app.astream_events(
    {"messages": [{"role": "user", "content": "..."}]},
    version="v2"
):
    if event["event"] == "on_chat_model_stream":
        print(event["data"]["chunk"], end="")

关键优势

  • 🎯 图结构清晰
  • 🔄 状态管理强大
  • 🚀 开发效率高
  • 🔍 调试友好(时间旅行)

10. 性能基准与成本分析

10.1 性能对比(非官方测试)

测试场景
MAF (.NET)
LangGraph (Python)
说明
简单问答
50ms
80ms
.NET启动快
10轮对话
500ms
600ms
差异不大
5工具并发
200ms
350ms
.NET并发优势
复杂工作流
2s
2.2s
瓶颈在LLM
1000并发用户
CPU 30%
CPU 60%
.NET更高效
内存占用
200MB
400MB
Python内存大
冷启动
100ms
1s
无服务器重要

结论

  • 💡 性能差异主要在并发场景
  • 💡 LLM调用是主要瓶颈(框架影响小)
  • 💡 高并发/低延迟需求→选MAF
  • 💡 原型/中小规模→差异不大

10.2 成本分析

成本项
MAF
LangGraph
说明
LLM调用
相同
相同
框架无影响
计算资源
低(.NET高效)
中(Python)
长期运行MAF省
开发时间
中(需学习)
短(快速原型)
看团队背景
维护成本
低(类型安全)
中(需测试覆盖)
长期MAF省
云服务
Azure优惠
LangSmith费用
生态考量

总成本比较(年)

假设100万API调用/月:

  • LLM成本:$5000/月(两者相同)
  • 计算成本(MAF):$100/月(2核4G)
  • 计算成本(LangGraph):$200/月(4核8G)
  • 可观测(MAF):$0(自建)
  • 可观测(LangGraph):$100/月(LangSmith)
  • 开发成本(MAF):2个月(学习+开发)
  • 开发成本(LangGraph):1个月(快速上手)

结论

  • 📊 短期项目(<6月)→LangGraph省时
  • 📊 长期项目(>1年)→MAF省钱
  • 📊 企业级(需审计)→MAF省心

11. 常见问题(FAQ)

Q1:我应该选择哪个框架?

快速决策

  • 你是.NET开发者 → MAF
  • 你在做AI研究 → LangGraph
  • 你需要企业级合规 → MAF
  • 你要快速原型 → LangGraph
  • 你的团队熟悉LangChain → LangGraph
  • 你需要高并发服务 → MAF

Q2:两个框架可以互操作吗?

可以!通过以下方式:

  1. 消息总线:Kafka/Redis传递标准JSON消息
  2. REST API:各自暴露HTTP接口
  3. gRPC:高性能跨服务调用
  4. MCP协议:MAF的工具可被LangGraph调用

Q3:MAF会取代Semantic Kernel吗?

不是取代,是演进

  • Semantic Kernel → 通用AI编排
  • MAF → Agent + Workflow专精
  • 两者共存,MAF吸收SK精华

Q4:LangGraph与LangChain什么关系?

  • LangChain:工具与组件库(Lego积木)
  • LangGraph:执行引擎与编排(积木图纸)
  • 关系:LangGraph使用LangChain组件

Q5:学习曲线如何?

背景
MAF学习时间
LangGraph学习时间
.NET开发者
1周
2周
Python AI工程师
2周
3天
无AI背景的后端
2周
1周
前端开发者
3周
1周(JS版)

Q6:生产环境成熟度?

  • MAF:⭐⭐⭐⭐ 新但稳定(微软品质)
  • LangGraph:⭐⭐⭐⭐⭐ 大量生产案例

Q7:多模态(图像、语音)支持?

  • MAF:✅ 通过Azure AI服务完整支持
  • LangGraph:✅ LangChain多模态集成

Q8:私有化部署难度?

  • MAF:⭐⭐ 简单(独立.NET应用)
  • LangGraph:⭐⭐ 简单(Python应用)
  • 两者都支持完全离线运行

12. 未来展望:Agent框架的星辰大海

12.1 短期趋势(2025)

趋势
MAF
LangGraph
行业影响
多模态Agent
成为标配
超长上下文
优化Token管理
优化检查点
降低成本
Agent安全
内置沙箱
社区方案
合规刚需
工具标准化
MCP主导
兼容MCP
生态统一
低代码编排
YAML工作流
Studio可视化
降低门槛

12.2 中期趋势(2026-2027)

预测

  1. Agent-to-Agent协议标准化

    • 各厂商推动统一协议
    • MAF的A2A协议成为候选
  2. 内置记忆管理

    • 短期/长期/语义记忆分层
    • 自动裁剪与摘要
  3. 工作流市场

    • 可复用的工作流模板
    • 社区共享生态
  4. AI原生IDE

    • VS/VSCode深度集成
    • 可视化调试成标配
  5. 安全与合规

    • PII自动脱敏
    • Prompt注入防护
    • 审计日志标准化

12.3 长期愿景(2028+)

终局猜想

  • 🌐 统一的Agent协议:就像HTTP统一了网络
  • 🧠 自主学习Agent:从交互中持续优化
  • 🏭 Agent即服务:像云函数一样按需调用
  • 🔒 零信任Agent:内置安全与隐私保护
  • 🌍 去中心化Agent网络:跨组织协作

MAF与LangGraph的角色

  • MAF可能成为企业Agent的事实标准(如Spring之于Java)
  • LangGraph可能保持创新实验室地位(如React之于前端)

13. 行动指南:如何开始你的Agent之旅

13.1 7天学习计划

Day 1-2:基础概念

MAF路线

  1. 阅读官方文档概览
  2. 运行QuickStart示例
  3. 理解Agent/Thread/Message模型

LangGraph路线

  1. 完成LangGraph Basics教程
  2. 理解Graph/Node/Edge概念
  3. 运行ReAct Agent示例

Day 3-4:核心能力

MAF

  • 实现自定义工具
  • 尝试工作流编排
  • 配置OpenTelemetry

LangGraph

  • 构建自定义图
  • 实现检查点持久化
  • 尝试人机协同

Day 5-6:高级特性

MAF

  • 中间件开发
  • 多Agent协作
  • 审批流程

LangGraph

  • 条件路由
  • 子图嵌套
  • 流式输出

Day 7:实战项目

选择一个小项目:

  • 📝 知识库问答Bot
  • 🎫 工单处理系统
  • 📊 数据分析助手
  • ✍️ 内容创作工具

13.2 团队采纳路线

阶段一:试点(1个月)

  • 选1个低风险场景
  • 2-3人小团队
  • 快速验证可行性

阶段二:扩展(3个月)

  • 3-5个场景并行
  • 建立最佳实践
  • 培训更多开发者

阶段三:规模化(6个月)

  • 全面推广
  • 建立内部平台
  • 形成组织能力

13.3 避坑指南

常见坑
MAF
LangGraph
如何避免
过度设计
❌ 过早优化
❌ 图过于复杂
从简单开始
忽略成本
❌ 未限制Token
❌ 无限重试
设置预算
安全漏洞
❌ 工具无审批
❌ Prompt注入
安全审查
性能问题
❌ 同步阻塞
❌ 检查点太频繁
性能测试
可观测缺失
❌ 未配置OTel
❌ 无日志
先做监控

14. 总结:没有完美,只有合适

14.1 核心要点回顾

评价维度
Microsoft Agent Framework
LangGraph
关键差异
设计哲学
企业级、可治理、双语言
灵活、可控、图原语
结构 vs 自由
适用场景
生产级应用、合规需求
快速原型、研究探索
稳定 vs 灵活
学习曲线
中等(需理解架构)
较陡(需理解图)
结构化 vs 范式
性能表现
高并发优势明显
中小规模足够
规模化 vs 够用
生态集成
Azure、.NET生态
LangChain、AI社区
企业 vs 开源
可观测性
OpenTelemetry完整
LangSmith专用
标准 vs 深度
长期成本
维护成本低
开发速度快
TCO vs TTM

14.2 最终建议

选择MAF,如果你

  • ✅ 在构建企业级生产应用
  • ✅ 需要严格的合规与审计
  • ✅ 团队是**.NET技术栈**
  • ✅ 重视长期可维护性
  • ✅ 需要高并发、低延迟
  • ✅ 计划与Azure生态深度集成

选择LangGraph,如果你

  • ✅ 在做AI研究或快速原型
  • ✅ 需要极致的灵活性
  • ✅ 团队是Python/JS技术栈
  • ✅ 重视开发速度
  • ✅ 要与LangChain生态集成
  • ✅ 需要可视化调试工具

混合使用,如果你

  • ✅ 有复杂的企业需求
  • ✅ 需要快速试验新策略
  • ✅ 团队技能多样化
  • ✅ 追求最优成本效益

14.3 写在最后

两个框架都是优秀的,没有绝对的优劣,只有场景的适配

  • MAF 是一座"现代化工厂":流程清晰、质检严格、适合规模化生产
  • LangGraph 是一个"创客工坊":工具齐全、自由创作、适合创新探索

最聪明的选择,不是盲目追随热点,而是:

  1. 🎯 明确你的需求(原型 vs 生产?研究 vs 业务?)
  2. 🔍 评估团队能力(现有技术栈?学习意愿?)
  3. 💰 计算长期成本(开发时间?维护成本?云服务费?)
  4. 🧪 小范围试点(用真实场景验证,而非纸上谈兵)
  5. 🔄 保持演进思维(技术栈可以渐进式调整)

记住:工具是为人服务的,不是人为工具服务的。选择让团队最舒服、最高效的那个,而不是看起来最"先进"的那个。


15. 参考资源与延伸阅读

官方文档

  • MAF文档:https://learn.microsoft.com/agent-framework/
  • LangGraph文档:https://langchain-ai.github.io/langgraph/
  • MAF GitHub:https://github.com/microsoft/agent-framework
  • LangGraph GitHub:https://github.com/langchain-ai/langgraph

学习资源

  • LangChain Academy:免费结构化课程
  • Microsoft Learn路径:Agent Framework系列
  • LangGraph Studio:可视化开发工具
  • VS Code扩展:Agent开发插件

社区

  • Discord:MAF官方服务器
  • LangChain论坛:活跃的问答社区
  • GitHub Discussions:两个项目都很活跃
  • Stack Overflow:标签agent-frameworklanggraph

技术博客

  • Microsoft DevBlogs:Semantic Kernel团队博客
  • LangChain Blog:每周技术更新
  • 个人博客:跟随顶级开发者分享
posted @ 2025-12-06 16:21  CharyGao  阅读(27)  评论(0)    收藏  举报