Semantic Kernel 完全解析:微软开源的 AI 智能体编排框架
随着大语言模型的普及,如何高效地构建、编排和部署 AI 应用成为开发者面临的核心挑战。微软开源的 Semantic Kernel 正是为此而生的 SDK——它是一个模型无关的编排框架,支持开发者构建从简单聊天机器人到复杂多智能体系统的各类 AI 应用,并具备企业级所需的可靠性、可观测性和灵活性。
Semantic Kernel 的设计哲学是 将 AI 能力无缝集成到现有代码中。它允许你通过插件(Plugins)将原生函数、提示词模板、OpenAPI 规范甚至 Model Context Protocol(MCP)服务包装起来,让 AI 智能体能够调用它们。同时,它提供了规划器(Planner)、记忆(Memory)和多智能体协作等高级功能,让复杂任务的自动化变得简单。

核心特性:企业级 AI 编排的瑞士军刀
插件生态:一切皆可调用
Semantic Kernel 的核心抽象是 插件(Plugin)。你可以将任何功能包装成插件供 AI 智能体调用:
- 原生代码函数:用
@kernel_function 装饰器将 Python/C# 函数暴露给 AI。
- 提示词模板:将复杂的提示词封装成可复用的语义函数。
- OpenAPI 规范:一键导入现有 REST API。
- MCP 协议:支持 Model Context Protocol,连接更多工具。
多模型支持,灵活切换
内置支持 OpenAI、Azure OpenAI、 Hugging Face、NVIDIA 等多种 LLM 提供商,且可以轻松切换。同时支持本地模型部署(Ollama、LMStudio、ONNX),满足数据隐私和离线需求。
智能体框架
- 单智能体:基于指令和插件构建对话助手。
- 多智能体系统:多个专业智能体协同工作,自动路由任务。
- 规划器:自动将复杂任务分解为多步计划,调用合适插件执行。
记忆与向量检索
与主流向量数据库无缝集成(Azure AI Search、Elasticsearch、Chroma 等),为智能体提供长期记忆和知识库增强。
企业级特性
- 可观测性:内置日志、指标和追踪,便于监控和调试。
- 稳定 API:遵循语义化版本,保障生产环境平滑升级。
- 多语言支持:Python、.NET(C#)、Java,满足不同技术栈需求。
- 进程框架:支持建模复杂业务流程,提供结构化工作流编排。
快速开始:5分钟上手 Semantic Kernel
安装
Python:
pip install semantic-kernel
export OPENAI_API_KEY=sk-... # 或 AZURE_OPENAI_API_KEY
.NET:
dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Agents.Core
基础智能体(Python)
import asyncio
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
async def main():
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="SK-Assistant",
instructions="You are a helpful assistant.",
)
response = await agent.get_response(messages="Write a haiku about Semantic Kernel.")
print(response.content)
asyncio.run(main())
带插件的智能体(Python)
from typing import Annotated
from semantic_kernel.functions import kernel_function
class MenuPlugin:
@kernel_function(description="Provides a list of specials from the menu.")
def get_specials(self) -> Annotated[str, "Returns the specials from the menu."]:
return "Special Soup: Clam Chowder\nSpecial Salad: Cobb Salad"
@kernel_function(description="Provides the price of the requested menu item.")
def get_item_price(
self, menu_item: Annotated[str, "The name of the menu item."]
) -> Annotated[str, "Returns the price."]:
return "$9.99"
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="SK-Assistant",
instructions="You are a helpful assistant.",
plugins=[MenuPlugin()],
)
response = await agent.get_response("What is the price of the soup special?")
print(response.content)
# 输出:The price of the Clam Chowder, which is the soup special, is $9.99.
.NET 版本示例
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(deployment, endpoint, apiKey);
var kernel = builder.Build();
kernel.Plugins.Add(KernelPluginFactory.CreateFromType<MenuPlugin>());
var agent = new ChatCompletionAgent
{
Name = "SK-Assistant",
Instructions = "You are a helpful assistant.",
Kernel = kernel,
Arguments = new KernelArguments(new PromptExecutionSettings { FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() })
};
await foreach (var response in agent.InvokeAsync(“What is the price of the soup special?”))
{
Console.WriteLine(response.Message);
}
多智能体系统(Python)
billing_agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="BillingAgent",
instructions="Handle billing issues like charges, payment methods, cycles."
)
refund_agent = ChatCompletionAgent(
service=AzureChatCompletion(),
name="RefundAgent",
instructions="Assist users with refund inquiries, including eligibility, policies."
)
triage_agent = ChatCompletionAgent(
service=OpenAIChatCompletion(),
name="TriageAgent",
instructions="Evaluate user requests and forward them to BillingAgent or RefundAgent.",
plugins=[billing_agent, refund_agent],
)
# 用户输入会被 TriageAgent 自动分派给合适的专业智能体
response = await triage_agent.get_response(“I was charged twice last month.”)
优势对比:Semantic Kernel 与其他框架
| 对比维度 |
Semantic Kernel |
LangChain |
AutoGen |
原生 LLM API |
| 核心语言 |
Python/.NET/Java |
Python |
Python |
任意 |
| 插件系统 |
原生函数、OpenAPI、MCP |
工具链 |
函数调用 |
需手动实现 |
| 多智能体 |
✅ 内置框架,专业智能体协作 |
❌ 需自定义 |
✅ 对话式多智能体 |
❌ |
| 规划器 |
✅ 内置 |
✅ Agent 模式 |
✅ 需定义 |
❌ |
| 记忆/向量 |
✅ 集成多种 DB |
✅ 丰富 |
✅ 基础 |
❌ |
| 企业特性 |
可观测性、稳定 API、多语言 |
社区驱动 |
研究导向 |
厂商提供 |
| 学习曲线 |
中等(概念清晰) |
中等(链式思维) |
中等 |
简单但功能有限 |
| 开源协议 |
MIT |
MIT |
MIT |
- |
核心优势:
- 企业级设计:从一开始就考虑了可观测性、API 稳定性和生产环境需求。
- 多语言原生:尤其对 .NET 生态 友好,Python 和 Java 同样完善。
- 插件即概念:统一抽象让扩展 AI 能力变得极其简单,无需改变代码结构。
- 多智能体原生支持:不是事后补丁,而是框架核心能力。
总结:构建可靠 AI 应用的首选框架
Semantic Kernel 不仅是一个 LLM 编排工具,更是一个将 AI 深度融入软件系统的架构框架。它强调与现有代码的融合,而非另起炉灶,让开发者可以用熟悉的编程范式构建智能应用。其企业级特性、多语言支持和强大的多智能体能力,使其在生产环境中尤其具有优势。相较于社区驱动、更偏向 Python 生态的 LangChain,它在企业级特性和多语言支持上展现了不同的优势。
无论你是刚开始探索 AI 应用开发,还是需要为大型系统集成 AI 能力,Semantic Kernel 都值得深入研究。现在就通过 pip install semantic-kernel 开始,让 AI 无缝融入你的代码!如果你想了解更多 人工智能 领域的开发实践与前沿动态,欢迎关注 云栈社区 的讨论。
项目地址:https://github.com/microsoft/semantic-kernel
官方文档:https://learn.microsoft.com/en-us/semantic-kernel/