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

Semantic Kernel实现调用Kernel Memory

1、背景

目前Semantic Kernel是C#调用大模型的主流操作,因此如何将Semantic KernelKernel Memory结合起来,就可以试试了。

2、具体实现

Kernel Memory就是上一篇的所述内容,在上一篇中,也是可以直接声明Kernel Memory进行调用。这次SK调用KM如下:

// See https://aka.ms/new-console-template for more information
using Microsoft.KernelMemory;
using Microsoft.SemanticKernel;
using System.ComponentModel;var modelName = "llama3.2:3b";
var ollamaEndpoint = "http://localhost:11434";
var ollamaUri = new Uri(ollamaEndpoint);var kernelBuilder = Kernel.CreateBuilder().AddOllamaChatClient(modelName, ollamaUri);var kernel= kernelBuilder.Build();var memoryUrl = "http://127.0.0.1:9001/";
var memoryPlugin = new MemoryPlugin(memoryUrl,"",true);kernel.ImportPluginFromObject(memoryPlugin,"memory");var text = "北京动物园有10只猴子, 8只老虎, 6头大象, 4匹马, 100头狼,以及99头骆驼.\n\n" +"门票价格如下:\n\n" +"成人: 100元/人\n" +"儿童: 50元/人\n" +"联系方式: 13813818188\n" +"地址: 北京市海淀区西直门附近";await memoryPlugin.SaveAsync(text);var skprompt = """
提问:{{$input}}
回答:{{memory.ask $input}}
""";var myfunction= kernel.CreateFunctionFromPrompt(skprompt);var answer =await myfunction.InvokeAsync(kernel, "北京动物园有多少只动物?");Console.WriteLine(answer);Console.ReadLine();

2.1 实现效果

在这里插入图片描述

3、总结

个人理解:Semantic Kernel和Kernel Memory是并列的关系。上述的代码实际上给kernel Memory创建了一个实例,然后注册到Semantic kernel中,然后再调用,有点脱裤子放屁。为啥不直接调用呢?
另外,在之前的文章中,我们可以将方法注册到Semantic kernel中,然后通过kernel的实例,通过InvokePromptAsync实现大模型的处理,但上面的例子是通过这句var answer =await myfunction.InvokeAsync(kernel, "北京动物园有多少只动物?");来调用的,而myfunction又是从kernel Memory中提取出来的,所以感觉有点乱。
再弄弄Agent试试,看看Agent能不能直接调用kernel Memory

http://www.lryc.cn/news/596855.html

相关文章:

  • 多模态Embedding技术
  • 视觉BPE统一多模态理解-北大
  • 动态路由协议基础:从原理到应用场景全解析
  • 使用LLaMA-Factory对大模型进行微调
  • 希尔排序cc
  • js面试题 高频(1-11题)
  • 初识opencv02——图像预处理1
  • 论文笔记:On the Biology of a Large Language Model
  • 如何使用内部逻辑分析仪来验证通用边缘图像处理应用程序
  • 渗透测试实战 | docker复杂环境下的内网打点
  • 【图像处理基石】如何实现一个车辆检测算法?
  • opencv学习(图像处理)
  • Go 语言学习之 reflect
  • Spring--事务传播行为(REQUIRED / REQUIRES_NEW / NESTED)
  • 【图像处理基石】如何对遥感图像进行目标检测?
  • 【Linux | 网络】应用层(HTTPS)
  • 【数据结构初阶】--树和二叉树先导篇
  • 床上肢体康复机器人的机械结构设计cad【7张】三维图+设计说明书
  • #Linux内存管理# 在一个播放系统中同时打开几十个不同的高清视频文件,发现播放有些卡顿,打开视频文件是用mmap函数,请简单分析原因。
  • GEMINUS 和 Move to Understand a 3D Scene
  • 基于 XGBoost 与 SHAP 的医疗自动化办公与可视化系统(下)
  • 【计算机三级网络】——选择题高频考点(第一篇)
  • SQL基础⑧ | 表格篇
  • Python设计模式 - 桥接模式
  • 腾讯iOA:企业软件合规与安全的免费守护者
  • 炬森精密:缓冲滑轨的创新力量,重塑家居静音与安全新体验
  • LeetCode二叉树的公共祖先
  • 亚远景-传统功能安全VS AI安全:ISO 8800填补的标准空白与实施难点
  • 漏洞生命周期管理:从发现到防护的全流程方案
  • 基于Python(Django)+MongoDB实现的(Web)新闻采集和订阅系统