当Semantic Kernel 遇上MCP......

随着基于智能体(Agent)的系统日益复杂,开发者们开始借助新的框架和工具来更高效地管理任务编排、数据访问以及实时交互。在这一背景下,MCP 和 Semantic Kernel作为两种重要的技术都受到了关注。那么,它们之间究竟有何区别呢?

如果希望零基础快速入门基于MCP的AI 应用开发,感谢大家阅读一个本人写的入门读物:

1.简单的概念回顾

模型上下文协议(MCP,Model Context Protocol)是由 Anthropic 提出的一种标准化通信协议,旨在为 AI 工具、智能体(Agent)和模型之间的信息交换提供统一、结构化的接口。它有助于实现不同组件间的互操作性,并支持跨平台的任务调度与状态同步。关于MCP的更多内容可以参考《大模型应用系列:两万字解读MCP》一文。

Semantic Kernel(语义内核,简称 SK)则是由微软开发并开源的一套软件开发工具包(SDK),专注于帮助开发者构建具备高级功能的 AI 智能体(Agent)系统。它集成了插件机制、内存管理、规划器(planner)和函数调用等功能,允许开发者灵活组合逻辑并驱动智能体(Agent)完成复杂任务。关于Semantic Kernel 的更多信息可以参考《大模型应用框架之Semantic Kernel》一文。

 两者都致力于提升智能体(Agent)系统的开发效率和能力,但在设计目标、使用场景和实现方式上各有侧重。接下来的内容将进一步分析它们的核心差异及适用场景。

2.架构对比

模型上下文协议(MCP)是一种用于协调 AI 模型、智能体(Agent)和工具之间交互的结构化通信机制。在 MCP 架构中,MCP 客户端通过服务器发送事件(SSE, Server-Sent Events)的方式连接到一个或多个 MCP 服务器。这种设计支持实时、流式的通信,使客户端能够持续接收来自服务器的更新和响应。

每个 MCP 服务器可以访问本地或远程的数据源,并作为中间层为客户端提供模型推理、工具调用以及上下文管理等能力。MCP 的一大优势在于它抽象了执行环境,隔离了工具的调用,使得模型可以在不同的运行时环境中运行,例如容器、无服务器架构(Serverless)或本地进程,从而提升了部署灵活性与跨平台兼容性。

在 Semantic Kernel(SK) 的典型架构中,前端组件(如 Web 应用、各种对话式机器人或其他用户界面)直接与基于SK 的智能体进行交互。整个流程围绕一个嵌入式的运行时展开,其中插件被直接集成到 SK 的执行环境中。

SK Agent 利用大型语言模型(LLM)进行推理判断,通常使用如 Azure OpenAI 这样的云端服务。在此基础上,智能体(Agent)可动态调用各种插件来完成具体任务,这些插件通常包括:

  • 文件系统操作

    读写本地或网络文件;

  • API 调用

    对接外部服务接口;

  • 云功能

    触发云端函数或服务,实现扩展能力。

这种设计使得开发者可以将自然语言逻辑与实际业务功能无缝结合,构建出具备高级推理与执行能力的智能体(Agent)。

MCP 更侧重于标准化模型与工具之间的通信与编排,适合需要多模型协作、分布式执行的场景;而 Semantic Kernel 更聚焦于快速构建嵌入式智能体(Agent)系统,强调本地集成与插件驱动的功能扩展。两者各有优势,适用于不同层级和规模的人工智能应用开发需求。

3. 应用场景

选择适合您项目的工具或框架取决于具体的需求和目标。以下是关于何时选择 MCP 或 Semantic Kernel的一些体会:

一般地,在下列情况下使用 MCP:

  • 跨环境或工具的标准化:当您的项目需要跨越多个不同的环境或工具,并且您希望有一个统一、标准化的协议层来协调这些组件时,MCP 是理想的选择。它允许您在不同的系统之间建立一致的通信标准。

  • 推理与执行分离:如果您希望将大型语言模型(LLM)的推理过程与具体的工具执行逻辑完全分开,以便于维护或扩展,那么 MCP 提供了必要的抽象层次来实现这种分离。

  • 跨 LLM 或多智能体(Agent)编排:对于涉及多个大型语言模型或多智能体(Agent)系统的复杂场景,MCP 可以帮助您有效地管理和协调各个组件之间的交互,确保整个系统的协同工作。

使用 Semantic Kernel应用框架的情况包括:

  • 集成式 LLM 智能体(Agent)开发:如果您计划构建一个集成了多种工具、记忆功能以及规划能力的智能体(Agent),Semantic Kernel 提供了一套完整的解决方案,使得开发这样的系统变得简单而直接。

  • Azure 部署及服务利用:当您的项目基于 Azure 平台,并打算充分利用 Azure 提供的人工智能服务,或者您需要使用本地插件来增强功能时,Semantic Kernel 的设计与 Azure 生态系统高度兼容,能够最大化地发挥这些资源的优势。

  • 偏好简易开发体验:对于那些寻求通过简洁的 Python 或 C# SDK 进行以智能体(Agent)为中心的应用开发的开发者来说,Semantic Kernel 提供了一个直观且易于上手的开发框架,支持快速原型设计和迭代。

根据上述描述,您可以根据项目的具体需求选择最适合的技术栈,从而高效地达成项目目标。无论是追求跨平台的一致性还是专注于特定云服务的深度整合,正确的工具选择都是成功的关键。

4.集成策略

为了弥合MCP与Semantic Kernel之间的差异,实现两者的有效整合,我们可以设计一个综合性的策略。

一种简单的方式是构建一个MCP消息适配器层,该适配器负责接收来自MCP的消息,并将其转换为能够被Semantic Kernel理解并处理的FunctionCallRequest格式。这一步骤确保了不同协议间的数据能够无缝传输和解析。

我们可以通过创建一个Semantic Kernel插件网关来进一步增强这种整合。这个网关的作用是将Semantic Kernel插件包装成服务形式,比如基于HTTP或WebSocket的服务,使其可以像MCP服务器那样工作。这样一来,不仅增强了系统的互操作性,也为更复杂的交互场景提供了基础。

此外,在SK中添加对服务器发送事件(SSE)或WebSocket流的支持也是很重要的一种集成方法。通过这种方式,可以在Semantic Kernel内部模拟出与MCP相似的基于SSE的响应流机制,从而实现更加实时和动态的数据交换模式。这对于提升用户体验、支持即时反馈具有重要意义。

最后,为了确保所有组件能够正确识别和使用彼此的功能,维护一个函数注册表是必要的。这个注册表充当了一个映射工具,它将MCP工具定义与Semantic Kernel插件签名相对应,确保每次调用都能准确无误地找到正确的执行路径。这种方法不仅简化了开发过程,还提高了系统的灵活性和可扩展性。

通过这些步骤,我们可以有效地整合MCP和Semantic Kernel,创造出一个既强大又灵活的应用环境。

关于MCP:

如果希望了解MCP 的价值,可以参考《拆解OpenAI最大对手的杀手锏:为什么会是MCP?》和《什么可能会定义人工智能的下一个十年?》;

如果想全面而有深度地了解MCP, 可以阅读《大模型应用系列:两万字解读MCP》;

如果想了解MCP 规范的原文, 可以参考我的译稿《MCP规范完整中译稿:2025-3-26版》;

如果想通过工具快速入手,可以使用《让你的服务变成MCP Server?FastAPI MCP 指南》;

如果选择使用 MCP 的开发框架, 可以参考《万字解读:8种常见框架,选择哪一种来开发MCP呢?》;

如果希望在大模型应用的中使用MCP,可以借鉴《在大模型应用中使用长短记忆: OpenMemory MCP》;

如果希望集成多个MCP服务,可以利用《采用LangGraph集成多个MCP服务器的应用

如果希望了解基于MCP的架构模式,有全网首发的文字《全网首发:MCP 的10种架构模式》;

如果想对比 MCP 与其他智能体协议的区别, 🉑参考《智能体间协作的"巴别塔困境"如何破解?解读Agent通信4大协议:MCP/ACP/A2A/ANP》;

如果希望快速入门MCP,请阅读老码农的作品——

【关联阅读】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值