Semantic Kernel Kernel Memory 入门系列 ❤️‍

📅 2026/7/25 20:44:26 👁️ 阅读次数 📝 编程学习
Semantic Kernel  Kernel Memory 入门系列 ❤️‍

Semantic Kernel & Kernel Memory 入门系列 ❤️‍

一、从基础概念说起:什么是 Semantic Kernel?在人工智能快速发展的今天,开发者需要一种高效的方式来集成大语言模型(LLM)到应用中。Semantic Kernel 是微软推出的一个轻量级 SDK,它像一座桥梁,连接了你的代码与 AI 模型。它的核心思想是:让 AI 成为你代码中的“协作者”,而不是一个黑盒。### 核心要素:-Kernel:核心对象,负责管理 AI 服务、内存和插件。-Plugins:插件,可以是原生代码或语义函数,用于扩展 AI 能力。-Memory:记忆系统,用于存储和检索上下文信息。### 安装环境首先,确保你已经安装了 Python 3.8+,然后运行:bashpip install semantic-kernel## 二、第一个示例:创建一个简单的对话 Kernel让我们从最基础的开始——初始化一个 Kernel 并让它回答简单问题。python# 导入 Semantic Kernel 库import semantic_kernel as skfrom semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, OpenAIChatCompletion# 1. 创建 Kernel 实例kernel = sk.Kernel()# 2. 配置 AI 服务(以 OpenAI 为例)# 请将下面的 API_KEY 替换为你的实际密钥api_key = "your-api-key-here"service_id = "gpt-3.5-turbo"kernel.add_chat_service( service_id, OpenAIChatCompletion(service_id, api_key))# 3. 定义语义函数(让 AI 执行任务)prompt = "请用一句话解释什么是 Semantic Kernel?"response = await kernel.run_function( prompt, service_id=service_id)# 4. 输出结果print(f"AI 回答:{response.result}")运行结果示例AI 回答:Semantic Kernel 是一个轻量级框架,帮助开发者将大语言模型集成到应用中,实现智能编排。这个例子展示了最基本的流程:初始化 → 配置服务 → 调用函数。注意,这里我们使用了await关键字,因为 AI 调用是异步的。## 三、进阶概念:Kernel Memory 的力量Kernel Memory 是 Semantic Kernel 的“记忆系统”。它允许你的应用记住过去的对话、文档知识或用户偏好,从而实现更智能的交互。想象一下,如果你让 AI 记住你上次聊天的内容,它就能给出更连贯的回答。### Memory 的核心组件:-Memory Store:存储记忆的数据库(如向量数据库)。-Memory Plugin:将记忆集成到 Kernel 中的插件。-Embedding:将文本转化为向量,用于相似度搜索。## 四、第二个示例:带有记忆的问答系统这个示例将展示如何让 Kernel 记住一段文本,并在后续对话中引用它。pythonimport semantic_kernel as skfrom semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletionfrom semantic_kernel.memory import SemanticTextMemory, VolatileMemoryStorefrom semantic_kernel.connectors.memory.volatile import VolatileMemoryStore# 1. 初始化 Kernel 和记忆系统kernel = sk.Kernel()api_key = "your-api-key-here"service_id = "gpt-3.5-turbo"kernel.add_chat_service(service_id, OpenAIChatCompletion(service_id, api_key))# 2. 创建记忆存储(使用内存中的易失性存储,适合测试)memory_store = VolatileMemoryStore()memory = SemanticTextMemory(storage=memory_store, embeddings_kwargs={"service_id": service_id})kernel.import_memory(memory)# 3. 向记忆中添加知识knowledge_text = "Alice 最喜欢的编程语言是 Python,她每天写代码 3 小时。"await memory.save_information_async( collection="user_profiles", text=knowledge_text, id="alice_info")# 4. 创建带记忆的语义函数prompt = "根据记忆,Alice 有什么特点?"context_variables = sk.ContextVariables()context_variables["memory_query"] = "Alice 的编程习惯"response = await kernel.run_function( prompt, service_id=service_id, input_context=context_variables)# 5. 输出结果print(f"AI 回答:{response.result}")# 输出示例:Alice 最喜欢的编程语言是 Python,她每天写代码 3 小时。关键点解释:-VolatileMemoryStore是内存中的存储,重启后会丢失。生产环境建议使用AzureCognitiveSearchMemoryStore等持久化方案。-save_information_async将知识以向量形式存储,后续可以通过相似度搜索检索。- 记忆查询是隐式的——Kernel 会自动将memory_query转化为向量搜索,找到最相关的记忆片段。## 五、高级用法:自定义插件与记忆融合当你的应用需要处理复杂业务逻辑时,可以创建自定义插件。例如,一个“客户支持机器人”插件可以同时访问记忆和 API。python# 自定义插件示例(简化版)from semantic_kernel.skill_definition import sk_functionclass CustomerSupportPlugin: @sk_function( description="根据用户问题,从记忆中检索相关知识并生成回答" ) async def answer_question(self, context: sk.SKContext) -> str: # 从上下文中获取记忆 memory = context.memory query = context["user_question"] # 在记忆库中搜索 results = await memory.search_async( collection="knowledge_base", query=query, limit=3 ) # 将检索到的知识拼接到提示中 context["knowledge"] = "\n".join([r.text for r in results]) prompt = f"基于以下知识回答问题:\n{context['knowledge']}\n\n问题:{query}" # 调用 AI 生成回答 return await kernel.run_function(prompt, service_id="gpt-3.5-turbo")# 注册插件kernel.import_skill(CustomerSupportPlugin(), skill_name="support")## 六、总结:从入门到实战的旅程通过本系列,我们完成了从零基础中级应用的跨越:1.基础概念:理解了 Kernel 作为 AI 编排核心,以及插件和记忆如何扩展功能。2.第一个示例:学会了如何用 5 行代码让 AI 回答问题。3.记忆系统:掌握了SemanticTextMemory的用法,让应用具备上下文感知能力。4.进阶实战:看到了如何将记忆与自定义插件结合,构建智能业务系统。Semantic Kernel 的魅力在于它的模块化设计——你可以像搭积木一样组合不同组件。下一步,建议你尝试:- 使用AzureCognitiveSearch实现持久化记忆。- 结合Planner实现多步任务自动规划。- 将记忆与Chain of Thought技术结合,提升推理质量。记住,AI 不是魔法,而是工具。Semantic Kernel 给了你一套精良的工具箱,剩下的就看你的创造力了!🚀