Semantic Kernel 全面介绍
Semantic Kernel 全面中文介绍
📌 什么是 Semantic Kernel?
Semantic Kernel(语义内核) 是微软于 2023 年推出的开源 AI 编排框架。
它的诞生解决了一个核心问题:
💡 如何让 AI 大模型真正融入企业现有的软件系统,而不仅仅是一个聊天窗口?
简单来说:
传统软件 + 大语言模型 = Semantic Kernel 负责连接两者
🌟 为什么需要 Semantic Kernel?
没有 SK 之前的困境
开发者面临的问题:
├── LLM 只会"聊天",无法直接操作系统
├── AI 没有记忆,每次对话从零开始
├── 无法自动拆解复杂任务
├── 难以与数据库、API 等集成
└── 企业级安全和可靠性难以保障
有了 SK 之后
Semantic Kernel 提供:
├── ✅ 让 AI 调用真实代码和工具
├── ✅ 向量记忆,实现长期上下文
├── ✅ 自动规划,拆解复杂目标
├── ✅ 标准化连接各种外部服务
└── ✅ 企业级稳定性和安全性
🏛️ 核心架构
┌─────────────────────────────────────────────────┐
│ 你的应用程序 │
└─────────────────────┬───────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ Semantic Kernel 核心 │
│ │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ AI 服务层 │ │ 插件系统 │ │
│ │ ───────── │ │ ───────────── │ │
│ │ OpenAI │ │ 原生函数 │ │
│ │ Azure OAI │ │ 提示函数 │ │
│ │ Gemini │ │ 外部API插件 │ │
│ │ 本地模型 │ │ │ │
│ └─────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────┐ ┌─────────────────┐ │
│ │ 规划器 │ │ 记忆系统 │ │
│ │ ───────── │ │ ───────────── │ │
│ │ 任务拆解 │ │ 向量存储 │ │
│ │ 步骤编排 │ │ 语义检索 │ │
│ │ 自动执行 │ │ 知识库管理 │ │
│ └─────────────┘ └─────────────────┘ │
│ │
└─────────────────────┬───────────────────────────┘
↓
┌─────────────────────────────────────────────────┐
│ 外部世界 │
│ 数据库 | REST API | 文件系统 | 企业系统 │
└─────────────────────────────────────────────────┘
🔑 五大核心组件
1️⃣ Kernel(内核)
框架的中枢大脑,所有组件的协调者。
from semantic_kernel import Kernel
# 创建内核实例
kernel = Kernel()
# 所有服务、插件都注册到这里
职责:
管理 AI 模型连接
注册和调用插件
维护运行时上下文
依赖注入容器
2️⃣ Plugin(插件系统)
插件是 SK 的能力扩展单元,赋予 AI 真实的行动能力。
两种插件类型:
① 提示函数(Prompt Function)
# 用自然语言定义功能
翻译函数 = kernel.add_function(
plugin_name="语言插件",
function_name="翻译",
prompt="""
将以下文字翻译成{{$目标语言}}:
{{$输入文本}}
"""
)
② 原生函数(Native Function)
from semantic_kernel.functions import kernel_function
class 数据库插件:
@kernel_function(description="查询用户信息")
def 查询用户(self, 用户ID: str) -> str:
# 真实的数据库查询逻辑
return db.query(f"SELECT * FROM users WHERE id={用户ID}")
@kernel_function(description="发送通知邮件")
def 发送邮件(self, 收件人: str, 内容: str) -> str:
email_service.send(收件人, 内容)
return "邮件发送成功"
3️⃣ Memory(记忆系统)
解决 AI 没有长期记忆的问题,核心是向量嵌入技术。
工作原理:
原始文本
↓ 向量化(Embedding)
[0.23, -0.87, 0.45, ...] ← 高维向量
↓ 存入向量数据库
用户提问
↓ 同样向量化
计算相似度
↓
找出最相关的内容片段
↓
作为上下文喂给 LLM
代码示例:
# 存储知识
await memory.save_information(
collection="产品文档",
id="faq_001",
text="退款政策:购买后7天内可无理由退款"
)
await memory.save_information(
collection="产品文档",
id="faq_002",
text="会员权益:黄金会员享受9折优惠"
)
# 语义检索(不需要精确关键词)
结果 = await memory.search(
collection="产品文档",
query="我买了东西想退货" # 自动匹配退款政策
)
print(结果[0].text)
# 输出:退款政策:购买后7天内可无理由退款
支持的向量数据库:
4️⃣ Planner(规划器)
让 AI 具备自主完成复杂任务的能力。
工作流程:
用户说:"帮我整理本周销售数据,生成报告,发给销售总监"
↓
规划器分析目标
↓
自动生成执行计划:
┌────────────────────────┐
│ 步骤1:查询本周销售数据 │
│ 步骤2:数据清洗整理 │
│ 步骤3:AI 生成分析报告 │
│ 步骤4:查找销售总监邮箱 │
│ 步骤5:发送邮件 │
└────────────────────────┘
↓
自动依次执行
↓
任务完成,汇报结果
5️⃣ Agent(智能体)
最高级的抽象层,具备自主推理和决策能力。
from semantic_kernel.agents import ChatCompletionAgent
# 创建专业智能体
销售助手 = ChatCompletionAgent(
kernel=kernel,
name="销售助手小明",
instructions="""
你是一名专业的销售数据分析师。
你可以:
- 查询销售数据库
- 生成数据可视化报告
- 分析销售趋势
- 提供业务建议
遇到不确定的情况,主动向用户确认。
"""
)
# 多智能体协作
from semantic_kernel.agents import AgentGroupChat
团队 = AgentGroupChat(
agents=[销售助手, 财务助手, HR助手],
# 自动协调多个 Agent 协同完成任务
)
💻 完整实战示例
场景:构建智能客服系统
import asyncio
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
from semantic_kernel.functions import kernel_function
# ==================== 第一步:初始化 ====================
kernel = Kernel()
kernel.add_service(
OpenAIChatCompletion(
service_id="gpt4",
ai_model_id="gpt-4o",
api_key="your-api-key"
)
)
# ==================== 第二步:定义插件 ====================
class 客服插件:
@kernel_function(description="查询订单状态")
def 查询订单(self, 订单号: str) -> str:
# 模拟数据库查询
订单数据 = {
"ORD001": "已发货,预计明天到达",
"ORD002": "处理中,预计3天内发货",
}
return 订单数据.get(订单号, "订单号不存在")
@kernel_function(description="申请退款")
def 申请退款(self, 订单号: str, 原因: str) -> str:
return f"退款申请已提交,订单{订单号}将在3-5个工作日内退款"
# 注册插件
kernel.add_plugin(客服插件(), plugin_name="客服工具")
# ==================== 第三步:添加知识库 ====================
知识库内容 = [
("policy_001", "退货政策:收到商品7天内可申请退货"),
("policy_002", "配送时间:普通快递3-5天,加急快递次日达"),
("policy_003", "客服时间:工作日9:00-18:00,节假日10:00-16:00"),
]
for doc_id, 内容 in 知识库内容:
await kernel.memory.save_information(
collection="客服知识库",
id=doc_id,
text=内容
)
# ==================== 第四步:创建智能体 ====================
from semantic_kernel.agents import ChatCompletionAgent
客服机器人 = ChatCompletionAgent(
kernel=kernel,
name="客服小助手",
instructions="""
你是一名友善专业的客服助手。
- 优先从知识库中搜索答案
- 需要时调用工具查询订单或处理退款
- 回答简洁清晰,态度友好
- 无法解决的问题,引导转人工客服
"""
)
# ==================== 第五步:运行 ====================
async def 对话():
print("客服小助手:您好!有什么可以帮助您的?")
while True:
用户输入 = input("用户:")
if 用户输入 == "退出":
break
回复 = await 客服机器人.get_response(用户输入)
print(f"客服小助手:{回复}")
asyncio.run(对话())
🎯 典型应用场景
企业 AI 应用
├── 🤖 智能客服
│ └── 自动回答问题 + 查询系统 + 处理业务
│
├── 📊 数据分析助手
│ └── 自然语言查询数据库 + 生成报告
│
├── 📝 内容创作平台
│ └── 自动写作 + 多语言翻译 + SEO优化
│
├── 🏢 企业知识库
│ └── 文档检索 + 智能问答 + 知识管理
│
├── 🔄 业务流程自动化
│ └── 多步骤任务编排 + 系统集成
│
└── 👨💼 个人 Copilot
└── 集成到 Office / Teams / 自有系统
📊 与其他框架横向对比
🚀 快速上手路线图
第1周:基础入门
├── 安装 SDK:pip install semantic-kernel
├── 连接 OpenAI / Azure OpenAI
├── 编写第一个提示函数
└── 理解 Kernel 基本用法
第2周:核心功能
├── 开发自定义插件
├── 搭建向量记忆系统
├── 实现 RAG 检索增强
└── 使用规划器编排任务
第3周:进阶开发
├── 构建 Agent 智能体
├── 多 Agent 协作
├── 流式输出处理
└── 错误处理和日志
第4周:生产部署
├── 性能优化
├── 安全配置
├── 与企业系统集成
└── 监控和维护
📦 安装与配置
# 安装核心包
pip install semantic-kernel
# 安装向量数据库支持
pip install semantic-kernel[azure] # Azure 生态
pip install semantic-kernel[chroma] # Chroma 向量库
pip install semantic-kernel[qdrant] # Qdrant 向量库
# 基础配置 (.env 文件)
OPENAI_API_KEY=你的密钥
OPENAI_CHAT_MODEL_ID=gpt-4o
AZURE_OPENAI_ENDPOINT=你的Azure端点
AZURE_OPENAI_API_KEY=你的Azure密钥
🔗 学习资源
🎯 总结一句话:
Semantic Kernel 是微软打造的企业级 AI 编排框架,它让开发者能够轻松地将 AI 大模型的"智慧"与传统软件的"执行力"完美结合,构建真正有价值的智能应用。
你想进一步了解哪个方向?
🔍 RAG 知识库实战搭建
🤖 多智能体系统设计
🏢 与企业现有系统集成
📊 具体行业应用案例