当前位置: 首页 > news >正文

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 给了你一套精良的工具箱,剩下的就看你的创造力了!🚀

http://www.jsqmd.com/news/1263089/

相关文章:

  • 如何3分钟快速安装GitHub中文插件:让GitHub说中文的完整实战指南
  • 【CTF-MISC-dmp】使用WinDbg分析Windows蓝屏崩溃转储文件dmp
  • 深度解析UE编译MSB3073错误:构建后事件失败的原因与解决方案
  • G-Helper终极指南:免费开源工具彻底释放华硕笔记本性能潜力
  • PHP+MySQL员工管理系统:从零部署到功能扩展的完整实践指南
  • 中国战略咨询公司前三推荐,撬动战略咨询实力上榜
  • Tiktokenizer:重新定义AI成本控制的认知边界,从黑盒估算到精确预测的技术革命
  • SpringBoot+Vue3+DeepSeek构建健身管理系统:从零到一的全栈实战
  • 微软文字转语音免费和付费怎么选 - 2026实测整理给你靠谱参考
  • 在openEuler 22.03 LTS SP1上使用docker搭建kubeedge
  • AI工具助力学术写作:从文献检索到论文降重全攻略
  • 2026年湘潭地道湘菜私房宴哪家好:5家本地优质湘菜馆选择指南 - 海棠依旧大
  • 北京黄金回收哪家无套路?2026 变现防坑指南,一文看懂正规回收流程 - 奢侈品回收实体店
  • 【CarbonData】CarbonData 的文件格式(`.carbondata`)内部结构是怎样的?包含哪些关键部分?
  • 三步轻松下载网页视频:猫抓浏览器插件的免费资源嗅探方案
  • SnapCameraPreservation:让已下线的Snap Camera重获新生的终极解决方案
  • 终极指南:如何用ROS2控制Unitree GO2机器人(完整实战教程)
  • 《大话文渊慧典》:四
  • AM62L调试子系统:CTF_CFG与ROM表寄存器深度解析与实战
  • AI Agent能力扩展:从函数调用到多步骤协作规划
  • 2026老卫生间不想大规模砸砖,南京微创防水补漏 - 伶鹿到家
  • MySQL实战进阶:从安装配置到性能优化的系统化学习路径
  • 高校注册场景钓鱼风险防控与学生 IAM 韧性体系构建 —— 基于巴塞罗那大学安全注册公告实证
  • koboldcpp-rocm性能优化技巧:让你的AMD显卡发挥最大AI算力
  • .NET适配HarmonyOS进展
  • 148、EIS电子防抖算法:特征匹配、陀螺仪融合与裁剪优化的实战调优
  • U盘故障修复工具全解析:从硬件检测到数据恢复
  • 贵阳黄金回收怎么选更靠谱?正规资质门店实测避坑指南 - 每日生活报
  • Windows屏幕标注终极指南:ppInk开源工具完全教程
  • 部队考试系统怎么选?说句实话,不解决这几个问题,系统根本进不了内网