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

.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.lryc.cn/news/518780.html

相关文章:

  • 框架部分面试题学习
  • tdengine数据库使用java连接
  • Java 模板变量替换——字符串替换器(思路Mybatis的GenericTokenParser)
  • 跨界融合:人工智能与区块链如何重新定义数据安全?
  • android 自定义SwitchCompat,Radiobutton,SeekBar样式
  • 计算机网络的定义与发展历程
  • 对比学习 (Contrastive Learning) 算法详解与PyTorch实现
  • DBeaver执行本地的sql语句文件避免直接在客户端运行卡顿
  • C++ 的 pair 和 tuple
  • Zookeeper 集群安装
  • git merge与rebase区别以及实际应用
  • kvm虚拟机出现应用程序无法正常启动报0xc0000142错误
  • Redis 安装与 Spring Boot 集成指南
  • Flink集成TDEngine来批处理或流式读取数据进行流批一体化计算(Flink SQL)拿来即用的案例
  • 【STM32】利用SysTick定时器定时1s
  • Python中的format格式化、填充与对齐、数字格式化方式
  • winform第三方界面开源库AntdUI的使用教程保姆级环境设置篇
  • 如何使用Yarn Workspaces实现Monorepo模式在一个仓库中管理多个项目
  • SpringCloud系列教程:微服务的未来(十一)服务注册、服务发现、OpenFeign快速入门
  • 物联网:七天构建一个闭环的物联网DEMO
  • 景联文科技提供高质量多模态数据处理服务,驱动AI新时代
  • c#13新特性
  • LeetCode LCP17速算机器人
  • 杭州铭师堂的云原生升级实践
  • 计算机网络之---MAC协议
  • 微服务面试相关
  • Google发布图像生成新工具Whisk:无需复杂提示词,使用图像和人工智能将想法可视化并重新混合
  • docker pull(拉取镜像)的时候,无法下载或者卡在Waiting的解决方法
  • 51c~Pytorch~合集4
  • windows下,golang+vscode+delve 远程调试