微软SemanticKernel:AI开发神器
微软SemanticKernel:AI开发神器
·
Semantic Kernel(语义内核) 是由 微软开发的开源 AI 开发工具包(SDK),旨在帮助开发者将大语言模型(LLM)能力无缝集成到 C#、Python 和 Java 应用中,快速构建企业级 AI 智能体(Agent)、RAG(检索增强生成)系统等高级应用。
🧠 一、核心定位
Semantic Kernel 不是一个 LLM,而是一个 “AI 中间件” —— 它抽象了与大模型交互的复杂性,提供统一接口,让开发者专注于业务逻辑而非底层调用细节。
✅ 目标:让传统代码 + 大模型 = 智能应用
🔑 二、五大核心概念
1. Kernel(内核)
- 是整个系统的“容器”或“中枢”。
- 负责管理:
- AI 服务(如 OpenAI、Azure OpenAI、Ollama、Google AI 等)
- 插件(Plugins)
- 提示词模板(Prompt Templates)
- 向量存储(Vector Stores)
- 支持依赖注入、中间件(如日志、安全过滤器)。
2. Plugins(插件)
插件是扩展 LLM 能力的关键,分为两类:
| 类型 | 实现方式 | 特点 | 适用场景 |
|---|---|---|---|
| 语义插件(Semantic Plugin) | 基于 skprompt.txt + config.json 的提示词模板 |
无需写代码,靠 Prompt 控制输出 | 文本生成、翻译、摘要等创意任务 |
| 本地插件(Native Plugin) | 用 C#/Python/Java 编写的类和方法 | 可执行确定性逻辑(如调 API、查数据库) | 获取实时数据、执行业务操作 |
示例:
[KernelFunction, Description("获取当前时间")] public string GetCurrentTime() => DateTime.Now.ToString("yyyy-MM-dd");
3. Prompt Engineering(提示工程)
- 支持变量插值(如
{{$input}}) - 支持角色设定(system/user/assistant)
- 可通过模板文件管理,便于版本控制和团队协作。
4. AI Services(AI 服务集成)
支持多后端:
- OpenAI / Azure OpenAI
- Google Gemini
- Amazon Bedrock
- Ollama(本地模型,如 Llama 3、Qwen)
- Hugging Face(需自定义 HTTP Client)
💡 即使官方未直接支持某模型(如 ChatGLM),也可通过 自定义 HttpClient 接入。
5. Vector Stores(向量存储)
用于 RAG 场景,支持:
- Azure AI Search
- Qdrant
- Redis
- Weaviate
- Pinecone(社区支持)
⚙️ 三、典型工作流程(函数调用)
当用户提问 “杭州今天天气如何?”:
- Kernel 将所有可用插件函数序列化为 JSON Schema;
- 将聊天历史 + 函数描述发送给 LLM;
- LLM 决定是否调用函数(如
GetCityId("杭州")→GetWeather(cityId)); - Kernel 自动解析函数调用请求,执行本地代码;
- 将结果回填到对话上下文,再次送入 LLM 生成最终回答;
- 循环直到 LLM 返回纯文本响应。
✅ 全过程自动完成,无需手动解析 function_call。
📦 四、快速上手(C# 示例)
using Microsoft.SemanticKernel;
var builder = Kernel.CreateBuilder();
builder.Services.AddAzureOpenAIChatCompletion(
deploymentName: "gpt-4",
endpoint: "https://your-resource.openai.azure.com/",
apiKey: "your-key"
);
var kernel = builder.Build();
// 添加本地插件
kernel.Plugins.AddFromType<WeatherPlugin>("weather");
// 发起请求(启用自动函数调用)
var result = await kernel.InvokePromptAsync("杭州今天天气怎么样?");
Console.WriteLine(result);
🌐 五、企业级特性
- 安全性:支持输入/输出过滤器(防止越狱、敏感信息泄露)
- 可观测性:记录 Token 使用、函数耗时、LLM 输入输出
- 可扩展:支持自定义内存、日志、认证等组件
- 多语言:C#(最成熟)、Python(活跃)、Java(Beta)
📚 学习资源
- GitHub: https://github.com/microsoft/semantic-kernel
- 官方文档: https://learn.microsoft.com/en-us/semantic-kernel/
- 示例项目:
/samples目录含 RAG、Agent、插件等完整 Demo
如果你有具体目标(比如“想用本地 Qwen 模型 + 自定义插件”),我可以提供详细代码模板!欢迎继续提问。
更多推荐



所有评论(0)