跳转至

Agent 框架生态与 MCP 协议(2025)

面试高频考点

  • LangGraph 和 LangChain 的核心区别是什么?什么时候用图状态机?
  • MCP 协议是什么?为什么说它是 AI 的"USB-C"?
  • AutoGen 的 GroupChat 和 LangGraph 的多 Agent 有什么设计哲学差异?
  • OpenAI Agents SDK 的 Handoffs 机制是如何实现 Agent 间控制转移的?
  • 生产级 Agent 系统的核心工程挑战有哪些?

一、LangGraph

细化理解: LangGraph 把 Agent 流程显式建成图,节点表示模型调用、工具调用或业务逻辑,边表示状态转移。它适合需要循环、分支、人工介入和可恢复状态的复杂 Agent,而不是简单问答链。面试中可以强调它的优势是可控性和状态管理,而不是“比 LangChain 更高级”。

LangGraph 是 LangChain 团队开发的有状态多 Agent 编排框架,将 Agent 工作流建模为有向图(可含环),是目前生产环境中最成熟的 Agent 框架。

GitHubgithub.com/langchain-ai/langgraph

核心概念

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

# 定义状态结构
class AgentState(TypedDict):
    messages: list
    next_action: str
    iteration: int

# 构建图
graph = StateGraph(AgentState)

# 添加节点(每个节点是一个函数)
graph.add_node("researcher", research_agent)
graph.add_node("writer", writing_agent)
graph.add_node("reviewer", review_agent)

# 添加条件边(决定下一步)
graph.add_conditional_edges(
    "reviewer",
    lambda state: "writer" if state["needs_revision"] else END,
    {"writer": "writer", END: END}
)

# 编译并运行
app = graph.compile(checkpointer=MemorySaver())  # 启用持久化
result = app.invoke({"messages": [...]}, config={"thread_id": "session_1"})

关键特性

Checkpointing(持久化):每个节点执行后自动保存状态,支持断点续跑和 Human-in-the-loop(暂停等待人工审核):

# 在需要人工审核的节点插入中断
graph.add_node("human_review", interrupt_before=["approve"])

# 外部恢复执行
app.invoke(None, config={"thread_id": "session_1"})  # 从断点继续

适用场景:复杂多步骤工作流、需要条件分支和循环的任务、需要持久化状态跨会话的应用。


二、AutoGen(Microsoft)

AutoGen 是微软开发的多智能体对话框架,核心模式是让多个 Agent 通过对话协作完成任务。

GitHubgithub.com/microsoft/autogen

GroupChat 机制

from autogen import AssistantAgent, UserProxyAgent, GroupChat, GroupChatManager

# 定义多个专业 Agent
coder = AssistantAgent("Coder", system_message="你是一个编程专家")
reviewer = AssistantAgent("Reviewer", system_message="你负责代码审查")
user = UserProxyAgent("User", human_input_mode="NEVER")

# 组建群聊
groupchat = GroupChat(
    agents=[user, coder, reviewer],
    messages=[],
    max_round=10,
    speaker_selection_method="auto"  # LLM 自动决定下一个发言者
)
manager = GroupChatManager(groupchat=groupchat)

# 启动对话
user.initiate_chat(manager, message="帮我写一个二分搜索并测试")

Magentic-One(2024):AutoGen 的多 Agent 系统,包含 Orchestrator + WebSurfer + FileSurfer + Coder + ComputerTerminal 五个专业 Agent,可以完成复杂的网页操作和文件处理任务。

AutoGen v0.4(AG2)架构重构: - 异步优先(async-first) - Actor 模型并发 - 更好的模块化和可测试性


三、OpenAI Agents SDK

OpenAI Agents SDK(2025年初发布,从实验性 Swarm 项目演进)是 OpenAI 官方的轻量级 Agent 框架。

GitHubgithub.com/openai/openai-agents-python

Handoffs 机制

Agent 间控制转移的核心机制,当前 Agent 判断需要专业化处理时,将对话控制权"交接"给另一个 Agent:

from agents import Agent, handoff, Runner

rag_agent = Agent(
    name="KnowledgeBase",
    instructions="处理企业知识库检索、文档引用和答案溯源问题"
)

tech_agent = Agent(
    name="ModelOps",
    instructions="处理模型 API 超时、调用失败、限流和部署排障问题"
)

triage_agent = Agent(
    name="Triage",
    instructions="判断用户问题类型并转接给对应专家",
    handoffs=[rag_agent, tech_agent]  # 声明可交接的目标
)

result = Runner.run_sync(triage_agent, "模型 API 最近经常超时,怎么排查?")

Guardrails(输入/输出验证)

from agents import Agent, InputGuardrail, GuardrailFunctionOutput

async def check_safe_input(ctx, agent, input):
    # 检测有害输入
    if "恶意关键词" in input:
        return GuardrailFunctionOutput(
            output_info="检测到不安全内容",
            tripwire_triggered=True  # 阻断执行
        )
    return GuardrailFunctionOutput(tripwire_triggered=False)

agent = Agent(
    name="Safe Agent",
    input_guardrails=[InputGuardrail(guardrail_function=check_safe_input)]
)

四、MCP 协议(Model Context Protocol)

细化理解: MCP 的价值在于把模型应用和外部工具/数据源之间的连接标准化。Client 不必为每个数据源写一套私有协议,Server 暴露 tools、resources、prompts 等能力,模型侧通过统一接口发现和调用。安全上仍要做权限、审计和参数校验;MCP 只是接口标准,不自动保证工具调用安全。

MCP 是 Anthropic 主导开发(2024年11月发布)的开放标准,定义了 AI 模型与外部工具/数据源的通信规范。2025 年已被 OpenAI、Google、Microsoft、Cursor 等广泛采纳。

规范仓库github.com/modelcontextprotocol/modelcontextprotocol

为什么叫"AI 的 USB-C"?

在 MCP 之前,每个 AI 应用需要为每个工具写独立集成代码(N×M 问题):

Claude ←→ 自定义代码 ←→ GitHub
Claude ←→ 自定义代码 ←→ Notion
GPT-4 ←→ 自定义代码 ←→ GitHub(另一套)
GPT-4 ←→ 自定义代码 ←→ Notion(另一套)

MCP 统一标准后(N+M 问题):

Claude ←→ MCP Client ←→ MCP 协议 ←→ MCP Server(GitHub)
GPT-4  ←→ MCP Client ←→ MCP 协议 ←→ MCP Server(Notion)
任何AI  ←→              ↑同一套标准

三层架构

┌─────────────────────────────────────────────┐
│  MCP Host(宿主应用)                         │
│  Claude Desktop / Cursor / IDE / 自定义 App  │
│                    ↕                         │
│  MCP Client(协议处理层,内嵌在 Host 中)       │
└─────────────────────────────────────────────┘
                      ↕  MCP 协议(JSON-RPC 2.0)
┌─────────────────────────────────────────────┐
│  MCP Server(工具/数据提供方)                 │
│  GitHub Server / Notion Server / DB Server  │
└─────────────────────────────────────────────┘

四大原语

原语 方向 描述 示例
Tools Server→Client→Model 模型可调用的函数 搜索代码、发 PR
Resources Server→Client 暴露给模型的数据 文件内容、数据库记录
Prompts Server→Client 预定义的提示模板 代码审查模板
Sampling Client→Server Server 请求 LLM 补全 让工具内部调用 LLM

最小 MCP Server 实现

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("my-server")

@mcp.tool()
def search_code(query: str, repo: str) -> str:
    """在指定仓库中搜索代码"""
    # 实际搜索逻辑
    return f"在 {repo} 中找到关于 {query} 的 3 个结果..."

@mcp.resource("file://{path}")
def read_file(path: str) -> str:
    """读取文件内容"""
    with open(path) as f:
        return f.read()

if __name__ == "__main__":
    mcp.run(transport="stdio")  # 或 "sse" 用于 HTTP

传输层

传输方式 适用场景 特点
stdio 本地工具(Claude Desktop、CLI) 子进程通信,最简单
HTTP+SSE 远程服务、Web 应用 服务端推送事件,支持并发

五、A2A 协议(Google,2025)

A2A(Agent-to-Agent Protocol) 是 Google 提出的补充协议,专注于 Agent 之间的通信标准(MCP 主要解决 Agent 与工具的通信):

维度 MCP A2A
解决问题 Agent ↔ 工具/数据源 Agent ↔ Agent
发起方 Anthropic Google
成熟度 已大规模采纳 2025年提出,采纳中
定位 工具接入标准 多 Agent 协作标准

六、四框架对比

维度 LangGraph AutoGen OpenAI Agents SDK MCP
类型 编排框架 多 Agent 对话 轻量 Agent 框架 协议标准
状态管理 ✅ 图状态 有限 有限 N/A
持久化 ✅ Checkpointing N/A
工具集成 ✅(标准化)
多 Agent ✅(核心特性) ✅(Handoffs) N/A
学习曲线 低(标准)
适合场景 复杂有状态工作流 研究/对话协作 简单生产 Agent 工具生态互操作

面试延伸

Q:LangGraph 相比 LangChain 的 AgentExecutor 有什么本质改进?

AgentExecutor 是线性的 Thought→Action→Observation 循环,无法处理条件分支、并行执行和复杂状态。LangGraph 将工作流建模为有向图,支持:① 条件边(根据状态决定下一步);② 循环(人工审核→修改→再审核);③ 持久化状态(跨会话记忆);④ 并行节点执行。本质上是从"固定 ReAct 循环"升级为"可编程状态机"。

Q:MCP 和 Function Calling(工具调用)的区别是什么?

Function Calling 是模型侧的能力(模型输出结构化的函数调用请求),每个 AI 平台有自己的格式(OpenAI/Anthropic/Google 各不同);MCP 是工具侧的标准协议,定义工具如何暴露自己、如何被发现和调用。两者互补:Function Calling 负责"模型决定调用什么",MCP 负责"工具如何统一提供能力"。MCP Server 最终也是通过 Function Calling 被模型调用的。

Q:生产环境中 Agent 最常见的失败模式是什么?

无限循环:Agent 陷入重复动作,需要设置 max_iterations 和循环检测;② 工具调用幂等性:同一个操作被执行多次(如发送了两封邮件),需要工具侧保证幂等;③ 上下文窗口溢出:长任务累积的 messages 超过 context length,需要定期压缩/摘要历史;④ 错误传播:一个子任务失败导致后续全部失败,需要每个节点有 fallback 和错误处理逻辑。


原始论文与资源

资源 链接
LangGraph GitHub github.com/langchain-ai/langgraph
AutoGen GitHub github.com/microsoft/autogen
OpenAI Agents SDK github.com/openai/openai-agents-python
MCP 规范 GitHub github.com/modelcontextprotocol/modelcontextprotocol
MCP 官网 modelcontextprotocol.io
ReAct 原始论文 (Yao et al., 2022) arxiv.org/abs/2210.03629
Magentic-One 论文 (2024) arxiv.org/abs/2411.04468
MCPAgentBench: Benchmark for LLM Agent MCP Tool Use (2025) arxiv.org/abs/2512.24565
Beyond Individual Intelligence: Multi-Agent Survey (2026) arxiv.org/abs/2605.14892
Agentic Reasoning for Large Language Models — Survey (2026) arxiv.org/abs/2601.12538
Orchard: Open-Source Agentic Modeling Framework (ACL 2026) arxiv.org/abs/2605.15040

延伸阅读与视频

平台 标题 说明
📺 B站 挑战19分钟搞定LangGraph快速入门与原理剖析 2万播放,LangGraph核心概念快速上手
📖 LangGraph Docs LangGraph concepts 官方 Agent 图编排文档
📖 MCP Docs Model Context Protocol MCP 官方文档,理解 tools/resources/prompts
📺 B站 LangGraph接入MCP工具:为什么需要?如何接入? 1.2万播放,MCP与LangGraph集成实战
📺 B站 90分钟手撸企业级Agent多智能体(LangGraph+MCP+RAG) 3.7万播放,从0到1的多智能体实战