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(社区支持)

⚙️ 三、典型工作流程(函数调用)

当用户提问 “杭州今天天气如何?”:

  1. Kernel 将所有可用插件函数序列化为 JSON Schema;
  2. 将聊天历史 + 函数描述发送给 LLM;
  3. LLM 决定是否调用函数(如 GetCityId("杭州")GetWeather(cityId));
  4. Kernel 自动解析函数调用请求,执行本地代码;
  5. 将结果回填到对话上下文,再次送入 LLM 生成最终回答;
  6. 循环直到 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)

📚 学习资源


如果你有具体目标(比如“想用本地 Qwen 模型 + 自定义插件”),我可以提供详细代码模板!欢迎继续提问。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐