.NET AI 开发人员库 --AI Dev Gallery简单示例--问答机器人

资源及介绍接上篇

nuget引用以下组件

效果展示:

内存和cpu占有:

代码如下:路径换成自己的模型路径 模型请从上篇文尾下载

 internal class Program{private static CancellationTokenSource? cts;private static IChatClient? model;private static List<Message> Messages { get; } = [];static async Task Main(string[] args){bool bRet = SetConsoleCtrlHandler(cancelHandler, true);GenAIModel.InitializeGenAI();model = await GenAIModel.CreateAsync(@"D:\microsoft--Phi-3.5-mini-instruct-onnx\main\cpu_and_mobile\cpu-int4-awq-block-128-acc-level-4", new LlmPromptTemplate{System = "<|system|>\n{{CONTENT}}<|end|>\n",User = "<|user|>\n{{CONTENT}}<|end|>\n",Assistant = "<|assistant|>\n{{CONTENT}}<|end|>\n",Stop = ["<|system|>", "<|user|>", "<|assistant|>", "<|end|>"]});Console.WriteLine("Enter your prompt (Press Shift + Enter to insert a newline)");while (true){var txt = "";txt = Console.ReadLine();if (!string.IsNullOrEmpty(txt))AddMessage(txt);}}private static void AddMessage(string text){if (model == null){return;}Messages.Add(new Message(text.Trim(), DateTime.Now, ChatRole.User));Task.Run(async () =>{var history = Messages.Select(m => new ChatMessage(m.Role, m.Content)).ToList();var responseMessage = new Message(string.Empty, DateTime.Now, ChatRole.Assistant);Messages.Add(responseMessage);cts = new CancellationTokenSource();history.Insert(0, new ChatMessage(ChatRole.System, "You are a helpful assistant"));Console.WriteLine(responseMessage);await foreach (var messagePart in model.CompleteStreamingAsync(history, null, cts.Token)){var part = messagePart;responseMessage.Content += part;Console.Write(part);}Console.WriteLine("***************************END***************************");cts?.Dispose();cts = null;});}#region closepublic delegate bool ControlCtrlDelegate(int CtrlType);[DllImport("kernel32.dll")]private static extern bool SetConsoleCtrlHandler(ControlCtrlDelegate HandlerAppClose, bool Add);private static ControlCtrlDelegate cancelHandler = new ControlCtrlDelegate(HandlerAppClose);/// <summary>/// 关闭窗口时的事件/// </summary>/// <param name="CtrlType"></param>/// <returns></returns>static bool HandlerAppClose(int CtrlType){cts?.Cancel();cts?.Dispose();cts = null;model?.Dispose();return false;}#endregion}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/892061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

特种设备安全管理人员免费题库限时练习(判断题)

56.(判断题)特别重大事故、重大事故、较大事故和一般事故,负责事故调查的人民政府应当自收到事故调查报告之日起15日内做出批复。 A.正确 B.错误 答案:错误 57.(判断题)每一类事故灾难的应急救援措施可能千差万别,因此其基本应急模式是不一致的。 A.正确 B.错误 答案:错…

30分钟学会HTML

HTML 基本语法 HTML&#xff08;HyperText Markup Language&#xff09;是构成网页内容的基础。它使用一系列的标签来描述网页的结构&#xff0c;包括文本、图片、链接等元素。浏览器会解析这些标签并渲染成我们看到的网页。 在线体验一下 CodePen (在线 HTML 编辑器)。 千万不…

在Virtuoso中使用Clisoft SOS

在Virtuoso中使用Clisoft SOS 由于本人也是刚接触&#xff0c;后续用到其他的再进行更新&#xff0c;博客中可能有地方写的不好&#xff0c;欢迎大佬指点。 一、打开virtuoso 创建一个cds.lib&#xff08;不受SOS版本控制&#xff09; [bhlumaster /proj/trinity/work/cds/bh…

CDN防御如何保护我们的网络安全?

在当今数字化时代&#xff0c;网络安全成为了一个至关重要的议题。随着网络攻击的日益频繁和复杂化&#xff0c;企业和个人都面临着前所未有的安全威胁。内容分发网络&#xff08;CDN&#xff09;作为一种分布式网络架构&#xff0c;不仅能够提高网站的访问速度和用户体验&…

Android Audio基础(53)——PCM逻辑设备Write数据

1. 前言 本文,我们将以回放(Playback,播放音频)为例,讲解PCM Data是如何从用户空间到内核空间,最后传递到Codec。 在 ASoC音频框架简介中,我们给出了回放(Playback)PCM数据流示意图。: 对于Linux来说,由于分为 user space 和kernel space,而且两者之间数据不能随便…

算命网站源码PHP框架_附2025新版设计书教程

算命网站源码PHP设计书 1. 项目概述 1.1 项目背景 随着互联网的发展&#xff0c;越来越多的人对命理和占卜产生了兴趣。算命网站可以为用户提供个性化的命理分析、运势预测等服务。本项目旨在设计一个基于PHP的算命网站&#xff0c;方便用户在线获取命理服务。 1.2 项目目标…

【Linux】硬链接和软连接(符号连接)

目录 硬链接 软连接 硬链接和软连接的区别 硬链接 ln根据linux系统分配给文件inode(ls -li)进行建立&#xff0c;没办法跨越文件系统 格式&#xff1a;ln 被链接的文件(源文件) 生成的链接文件(目标文件) 1) 硬链接的属性 - 相当于生成一个副本 起别名 2) 修改内容都变化…

后台管理系统全屏功能实现

后台管理系统中有一个比较常见的功能就是全屏显示&#xff0c;以方便用最大的屏幕查看系统&#xff0c;特别是在小屏模式下。 对于 screenfull 而言&#xff0c;浏览器本身已经提供了对用的 API&#xff0c;点击这里即可查看&#xff0c;这个 API 中&#xff0c;主要提供了两个…

FPGA 20 ,FPGA按键消抖功能解析与实现

目录 前言 一. 具体场景 二. 消抖方法

Ensp基础实验---同网段PC以及网关之间的通信

通过安装ENSP&#xff0c;可以模拟搭建网络仿真环境&#xff0c;初步了解ENSP之后&#xff0c;可以进行一些简单的网络拓扑搭建&#xff0c;通过对相关设备的配置&#xff0c;实现网络畅通的目的 此次模拟的是同一个网段内&#xff0c;两台PC之间的通信情况&#xff0c;同时选用…

C#实现集合分页功能详解:从基础到实践

在C#编程中&#xff0c;分页功能对于处理大量数据集合尤为重要。分页允许我们每次只处理集合中的一部分数据&#xff0c;从而提高应用程序的性能和用户体验。本文将详细介绍如何在C#中实现集合的分页功能。 1. 理解分页的基本概念 分页通常涉及以下几个关键参数&#xff1a; …

No.6十六届蓝桥杯备战|赋值操作符|连续赋值|复合赋值|类型转换|强制|混合|赋值(C++)

赋值操作符 在变量创建的时候给⼀个初始值叫初始化&#xff0c;在变量创建好后&#xff0c;再给⼀个值&#xff0c;这叫赋值。 int a 100; // 初始化 a 200; // 赋值&#xff0c;这⾥使⽤的就是赋值操作符赋值操作符 是⼀个随时可以给变量赋值的操作符&#x…

PID学习资料

TI公司的CONTROLSUITE https://www.ti.com.cn/tool/cn/CONTROLSUITE学点PID专栏-小麦大叔PID控制器算法系列 书籍&#xff1a; Advanced PID Control先进PID控制及其MATLAB仿真Practical PID Control

WinDbg内存泄露追踪

随着win sdk一并安装了&#xff0c;可以在C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 里找到 管理员运行cmd 配置跟踪 cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64 gflags.exe设置待跟踪的应用程序 gflags.exe /i D:\XXXX.exe ust运行应用程序&am…

4.1.3 串

文章目录 串的基本概念串的基本操作串的存储结构 串的基本概念 串&#xff0c;仅由字符构成的有限序列。 串长&#xff1a;串中的字符个数。空串&#xff1a;长度为0的串。空格串&#xff1a;一个或多个空格构成的串。子串&#xff1a;串中任意长度连续字符构成的序列。含有字…

『SQLite』常见函数的使用

摘要&#xff1a;主要讲解SQLite中的常见函数&#xff0c;有聚合函数、数字函数、字符串函数、日期函数、类型转换函数等。 主要函数 聚合函数&#xff1a;count()、sum()、avg()、min()、max()字符串函数&#xff1a;length()、upper()、lower()、substr()、trim()日期和时间…

RK3588+FPGA全国产异步LED显示屏控制卡/屏幕拼接解决方案

RK3588FPGA核心板采用Rockchip RK3588新一代旗舰 级八核64位处理器&#xff0c;支持8K视频编解码&#xff0c;多屏4K输出&#xff0c;可实现12屏联屏拼接、同显、异显&#xff0c;适配多种操作系统&#xff0c;广泛适用于展览展示、广告内容投放、新零售、商超等领域实现各种媒…

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包&#xff0c;并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

百度Android最新150道面试题及参考答案 (中)

Android 中一个 View 的显示渲染过程,自定义 View 的时候需要避免什么操作? 一、View 的显示渲染过程 测量(Measure)阶段 这个阶段是 View 渲染的第一步。父容器会调用子 View 的measure()方法来确定子 View 的大小。measure()方法会传入两个参数,即MeasureSpec(测量规格…

【MyBatis-Plus 注解配置】开发中常用注解整理与介绍

不知道朋友们会不会在SpringBoot中集成MyBatis-Plus的时候&#xff0c;总是这个注解那个注解&#xff0c;都不知道哪些是MyBatis-Plus的了&#xff0c;搞得晕乎乎的&#xff0c;所以我整理了一份MyBatis-Plus开发中常用的注解&#xff0c;相信看完你就知道哪些注解是MyBatis-Pl…