微软的 AI 编排答卷

Semantic Kernel(SK)是微软在 2023 年初推出的 AI 编排框架,定位类似于"AI 版的 .NET CLR"。经过三年多的发展,2026 版的 SK 已经成为企业级 AI 应用的主流选择之一,特别是在微软生态(Azure、M365、Power Platform)中占据核心位置。

2026 核心架构

分层设计

┌──────────────────────────────────────────────────┐
│              Application Layer                    │
│   Copilot Apps │ Plugins │ Agent Workflows       │
├──────────────────────────────────────────────────┤
│              Semantic Kernel Core                 │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ Kernel   │ │ Planner  │ │ Agent Framework  │ │
│  │ (上下文)  │ │ (规划器) │ │ (多Agent编排)    │ │
│  └──────────┘ └──────────┘ └──────────────────┘ │
│  ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│  │ Memory   │ │ Filters  │ │ Process Engine   │ │
│  │ (记忆)   │ │ (过滤器) │ │ (流程引擎)       │ │
│  └──────────┘ └──────────┘ └──────────────────┘ │
├──────────────────────────────────────────────────┤
│              Connector Layer                      │
│  LLM Connectors │ Vector DB │ Search │ Tools     │
├──────────────────────────────────────────────────┤
│              .NET / Python / Java                 │
└──────────────────────────────────────────────────┘

多语言支持

2026 年 SK 的语言支持矩阵:

语言SDK 版本功能完备度推荐场景
C#/.NET8.0100%企业应用
Python3.095%数据/AI 团队
Java2.085%企业遗留系统
TypeScript1.0 (Beta)70%Web 应用

核心组件

1. Plugin 系统

SK 2026 的 Plugin 系统是其核心竞争力。与 LangChain 的工具集成不同,SK Plugin 使用语义描述来自动编排:

// C# Plugin 定义
public class WeatherPlugin
{
    [KernelFunction("get_weather")]
    [Description("获取指定城市的当前天气信息")]
    [KernelParameter("city", "城市名称", typeof(string))]
    [KernelParameter("units", "温度单位", typeof(string), "celsius")]
    public async Task<WeatherResult> GetWeatherAsync(
        string city, 
        string units = "celsius")
    {
        var response = await _httpClient.GetAsync(
            $"https://api.weather.com/v1/{city}?units={units}");
        return await response.Content.ReadFromJsonAsync<WeatherResult>();
    }
}

// 注册 Plugin
var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
    .AddPlugin<WeatherPlugin>()
    .AddPlugin<EmailPlugin>()
    .AddPlugin<CalendarPlugin>()
    .Build();

// SK 自动根据语义描述选择和调用 Plugin
var response = await kernel.InvokePromptAsync(
    "今天北京天气怎么样?适合户外运动吗?",
    new KernelArguments { ["temperature"] = 0.7 }
);

Python 版本同样简洁:

from semantic_kernel import Kernel
from semantic_kernel.functions import kernel_function

class ResearchPlugin:
    @kernel_function(description="搜索学术论文", name="search_papers")
    async def search_papers(self, query: str, max_results: int = 10) -> list:
        results = await academic_search_api.search(query, limit=max_results)
        return results

    @kernel_function(description="总结论文摘要", name="summarize_paper")
    async def summarize(self, paper_id: str) -> str:
        paper = await self.get_paper(paper_id)
        summary = await self.llm.summarize(paper.content)
        return summary

kernel = Kernel()
kernel.add_plugin(ResearchPlugin(), "research")
kernel.add_service(OpenAIChatCompletion(service_id="gpt-4o"))

# 自动编排:搜索 → 筛选 → 总结
result = await kernel.invoke_prompt(
    "搜索关于 AGI 安全的最新论文,选出前3篇并总结要点",
    plugins=["research"]
)

2. Process Engine(流程引擎)

2026 版新增的 Process Engine 是一个重大升级,提供了类似 LangGraph 的状态机能力:

// C# Process 定义
var process = Process
    .StartWith<ResearchState>(state => 
    {
        state.Query = "AGI 安全研究";
        state.Step = "init";
    })
    .Then<ResearchState>(async (state, kernel) =>
    {
        var results = await kernel.InvokeAsync("research", "search_papers",
            new() { ["query"] = state.Query });
        state.Papers = results.GetValue<List<Paper>>();
        state.Step = "searched";
    })
    .If<ResearchState>(state => state.Papers.Count > 0)
        .Then<ResearchState>(async (state, kernel) =>
        {
            // 分析论文
            state.Analysis = await AnalyzePapers(state.Papers, kernel);
            state.Step = "analyzed";
        })
        .Then<ResearchState>(async (state, kernel) =>
        {
            // 生成报告
            state.Report = await GenerateReport(state.Analysis, kernel);
            state.Step = "completed";
        })
    .Else<ResearchState>(state =>
    {
        state.Step = "no_results";
        state.Error = "未找到相关论文";
    })
    .Build();

// 执行流程,支持检查点和恢复
var result = await process.ExecuteAsync(
    checkpointer: new SqlServerCheckpointer(),
    cancellationToken: ct
);

3. Agent Framework

// 多 Agent 协作
var researcher = new ChatCompletionAgent
{
    Name = "Researcher",
    Instructions = "你是一名研究分析师,擅长收集和分析数据。",
    Kernel = kernel,
    Arguments = new KernelArguments { ["temperature"] = 0.3 }
};

var writer = new ChatCompletionAgent
{
    Name = "Writer",
    Instructions = "你是一名技术写手,擅长将复杂概念转化为易懂的文章。",
    Kernel = kernel,
    Arguments = new KernelArguments { ["temperature"] = 0.7 }
};

var reviewer = new ChatCompletionAgent
{
    Name = "Reviewer",
    Instructions = "你是内容审查员,检查准确性和完整性。回复 APPROVED 或需要修改的内容。",
    Kernel = kernel,
    Arguments = new KernelArguments { ["temperature"] = 0.2 }
};

// Agent 群聊
var groupChat = new AgentGroupChat(researcher, writer, reviewer)
{
    ExecutionSettings = new()
    {
        MaxIterations = 10,
        SelectionStrategy = new SequentialSelectionStrategy(),
        TerminationStrategy = new ApprovalTerminationStrategy()
    }
};

// 添加初始消息并执行
groupChat.AddChatMessage(new ChatMessageContent(
    AuthorRole.User, "撰写一篇关于 AGI 安全的科普文章"));

await foreach (var message in groupChat.InvokeAsync())
{
    Console.WriteLine($"[{message.AuthorName}]: {message.Content}");
}

4. 过滤器系统

SK 的过滤器系统提供了 AOP 式的切面编程能力:

public class AuditFilter : IFunctionFilter
{
    public async Task OnFunctionInvocationAsync(
        FunctionInvocationContext context, 
        Func<FunctionInvocationContext, Task> next)
    {
        // 前置处理
        var functionName = context.Function.Name;
        var logger = context.Services.GetRequiredService<ILogger<AuditFilter>>();
        logger.LogInformation("调用函数: {Function}, 参数: {Args}", 
            functionName, context.Arguments);

        var stopwatch = Stopwatch.StartNew();

        try
        {
            await next(context);
            
            // 后置处理
            stopwatch.Stop();
            logger.LogInformation(
                "函数 {Function} 执行完成, 耗时 {Elapsed}ms", 
                functionName, stopwatch.ElapsedMilliseconds);
        }
        catch (Exception ex)
        {
            logger.LogError(ex, "函数 {Function} 执行失败", functionName);
            throw;
        }
    }
}

// 注册过滤器
var kernel = Kernel.CreateBuilder()
    .AddFilter<AuditFilter>()
    .AddFilter<RateLimitFilter>(options => 
    {
        options.MaxCallsPerMinute = 60;
        options.MaxTokensPerMinute = 10000;
    })
    .AddFilter<SafetyFilter>()
    .Build();

Azure 深度集成

SK 2026 与 Azure AI 服务的深度集成是其核心优势:

Azure 服务SK 集成功能
Azure OpenAI原生GPT-4o, GPT-4o-mini 部署
Azure AI Search原生向量搜索 + 全文搜索
Azure AI Content Safety内置内容安全过滤
Azure Monitor内置应用洞察 + 日志分析
Azure Key Vault内置密钥管理
Azure Container Apps模板一键部署
// Azure 原生集成
var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(
        deploymentName: "gpt-4o",
        endpoint: azureEndpoint,
        credential: new DefaultAzureCredential())  // 无需硬编码密钥
    .AddAzureAISearchVectorStore("knowledge-base-index")
    .AddAzureAIContentSafety(contentSafetyEndpoint)
    .Build();

性能基准

指标Semantic KernelLangChainDify
简单调用延迟0.8s1.2s1.8s
插件调用延迟1.1s1.5s2.1s
多 Agent 编排3.1s3.4s4.2s
内存占用128MB256MB512MB
吞吐量 (req/s)856035
冷启动0.3s0.8s2.5s

适用场景

最适合

  1. 微软生态企业:已使用 Azure、M365 的团队
  2. C#/.NET 技术栈:SK 的 C# SDK 最成熟
  3. 企业级应用:需要审计、合规、安全过滤的场景
  4. Power Platform 集成:与低代码平台结合

不太适合

  1. Python 原生团队:Python SDK 功能略滞后
  2. 快速原型:配置较多,不如 CrewAI 快速
  3. 开源模型优先:对非 Azure 模型支持不如 LangChain 全面

生态数据

截至 2026 年 6 月:

  • GitHub Stars:28.5k(C# 版 16.2k,Python 版 12.3k)
  • NuGet 下载量:450 万/月
  • PyPI 下载量:180 万/月
  • 注册 Plugin:1200+
  • 企业客户:包括 70% 的财富 500 强企业

总结

Semantic Kernel 2026 是一个"成熟但不性感"的框架。它没有 LangChain 的社区热度,没有 CrewAI 的极简体验,但在微软生态的企业场景中,它是最可靠、最高性能的选择。

如果你的团队在微软技术栈上,SK 几乎是不二之选。即使是跨技术栈的团队,SK 的过滤器系统、Process Engine 和 Azure 集成也值得认真评估。2026 版的 Process Engine 证明了 SK 在追赶 Agent 编排能力方面的决心和执行力。

唯一需要注意的是:SK 的设计哲学偏"工程化"而非"研究型",对于需要快速实验新 Agent 架构的研究团队,可能不如 LangChain 灵活。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。