找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2143

积分

0

好友

283

主题
发表于 2 小时前 | 查看: 1| 回复: 0

Semantic Kernel 完全解析:微软开源的 AI 智能体编排框架

随着大语言模型的普及,如何高效地构建、编排和部署 AI 应用成为开发者面临的核心挑战。微软开源的 Semantic Kernel 正是为此而生的 SDK——它是一个模型无关的编排框架,支持开发者构建从简单聊天机器人到复杂多智能体系统的各类 AI 应用,并具备企业级所需的可靠性、可观测性和灵活性。

Semantic Kernel 的设计哲学是 将 AI 能力无缝集成到现有代码中。它允许你通过插件(Plugins)将原生函数、提示词模板、OpenAPI 规范甚至 Model Context Protocol(MCP)服务包装起来,让 AI 智能体能够调用它们。同时,它提供了规划器(Planner)、记忆(Memory)和多智能体协作等高级功能,让复杂任务的自动化变得简单。

Microsoft Copilot 系统架构图,展示 Semantic Kernel 在 AI 编排层的核心地位

核心特性:企业级 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/




上一篇:钉钉「悟空」AI助手初体验:从安装到项目开发的实战测评
下一篇:三星三折叠手机Galaxy Z TriFold上市仅三月停产,华为苹果谁能引领折叠屏未来?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-3-19 06:32 , Processed in 0.475997 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表