开发框架教程(7):Semantic Kernel —— 连接传统软件的大桥
这也是**微软**出品的框架,但定位和 AutoGen 完全不同。
开发框架教程(7):Semantic Kernel —— 连接传统软件的大桥
1. 什么是 Semantic Kernel (SK)?
这也是微软出品的框架,但定位和 AutoGen 完全不同。
AutoGen 是研究型的、实验性的。 Semantic Kernel 是工程级的、为了集成进 .NET 和 Java 企业级应用而生的。
如果你们公司是微软技术栈(C#, Azure),或者你想把 AI 能力"极其优雅"地嵌入到现有的庞大业务系统里,SK 是不二之选。
核心设计哲学
它把 AI 的能力封装成了 Kernel (内核)。
- 就像操作系统的 Kernel 管理 CPU 和内存一样。
- Semantic Kernel 管理 Models (模型) 和 Plugins (插件)。
Planner (规划器)
SK 也有 Agent 的概念,但它叫 Planner。
你可以直接告诉 Kernel:"帮我订个会议室并通知所有人"。
Planner 会自动去你的 Plugin 库里找:OutlookPlugin, RoomBookingPlugin,然后编排顺序执行。
2. 独特的概念:Semantic Function
在 SK 里,Prompt 居然被当成函数来写!
普通函数 (Native Function):
public int Add(int a, int b) { return a + b; }
语义函数 (Semantic Function):
sk_function_dir/GetStory/skprompt.txt
"请给我讲一个关于 {{$topic}} 的故事,风格要是 {{$style}} 的。"
在代码里调用它们时,完全没有任何区别! Kernel 会自动处理:如果是 Native 就跑 CPU,如果是 Semantic 就跑 LLM API。这种一致性让老派程序员感到如沐春风。
3. C# 代码示例
虽然 SK 也有 Python 版,但 C# 版才是它的灵魂。
using Microsoft.SemanticKernel;
// 1. 创建 Kernel
var builder = Kernel.CreateBuilder();
builder.AddOpenAIChatCompletion("gpt-3.5-turbo", "YOUR_KEY");
var kernel = builder.Build();
// 2. 导入插件
var timePlugin = kernel.ImportPluginFromType<TimePlugin>();
// 3. 定义语义函数 (Inline Prompt)
var prompt = @"
当前时间是: {{TimePlugin.Now}}
请根据时间问候用户。如果是早上就说早安。
";
var func = kernel.CreateFunctionFromPrompt(prompt);
// 4. 运行
var result = await kernel.InvokeAsync(func);
Console.WriteLine(result);
4. 总结
Semantic Kernel 是企业级后端开发(特别是 C#/.NET 开发者)的必修课。它不像 LangChain 那么野蛮生长,它非常规范、稳定,非常适合用来构建那个需要长期维护的大型 AI 应用。