百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

学用大语言模型(6):Microsoft.Extensions.AI与本地模型对话

cac55 2025-03-24 14:17 16 浏览 0 评论

用代码,缓解焦虑,舒张血压,难得的宁静。


继续,借用Microsoft.Extensions.AI,用C#,与本地Ollama模型对话。

一、引用包

包括2个:

二、添加控件

添加webview2

三、输入代码

using System;
using System.Drawing;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Extensions.AI;
using Microsoft.Web.WebView2.Core;
using Microsoft.Web.WebView2.WinForms;

namespace 财务指标分析最终版
{
    public partial class MicrosoftExtensionsAI对话 : Form
    {
        public string strAsk = ""; // 用于存储用户输入的问题

        public string modelName = "qwen2.5:3b";

        public MicrosoftExtensionsAI对话()
        {
            InitializeComponent();
            InitializeWebView2(); 
        }

        private async void MicrosoftExtensionsAI对话_Load(object sender, EventArgs e)
        {
            // 延迟 1 秒后执行 模型对话()
            await Task.Delay(500); // 延迟 1 秒(1000 毫秒)
            this.Text = strAsk;
            模型对话();
        }

        private async void InitializeWebView2()
        {
            try
            {
                // 初始化 WebView2 环境
                await webView21.EnsureCoreWebView2Async(null);

                // 设置初始 HTML 内容
                webView21.CoreWebView2.NavigateToString("
"); // 设置 WebView2 的背景颜色为系统控件颜色 await SetWebView2BackgroundColor(SystemColors.Control); } catch (Exception ex) { MessageBox.Show($"WebView2 初始化失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private async Task SetWebView2BackgroundColor(Color color) { try { // 将 SystemColors.Control 转换为 RGB 格式 string rgbColor = $"rgb({color.R}, {color.G}, {color.B})"; // 设置 WebView2 的背景颜色 string script = $@" document.body.style.backgroundColor = '{rgbColor}'; "; await webView21.CoreWebView2.ExecuteScriptAsync(script); } catch (Exception ex) { MessageBox.Show($"设置 WebView2 背景颜色失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private async void 模型对话() { // 清空之前的输出 await webView21.CoreWebView2.ExecuteScriptAsync("document.getElementById('content').innerHTML = '';"); try { Uri uri = new Uri("http://localhost:11434"); IChatClient chatClient = new OllamaChatClient(uri, modelName); var responseStream = chatClient.GetStreamingResponseAsync(strAsk); // 用于缓存响应内容 var responseBuilder = new StringBuilder(); var lastUpdateTime = DateTime.Now; // 逐段读取响应并更新 WebView2 await foreach (var message in responseStream) { // 将消息追加到缓存中 responseBuilder.Append(message.ToString()); // 定期更新 WebView2(例如每 100ms 或每 10 条消息) if ((DateTime.Now - lastUpdateTime).TotalMilliseconds > 100 || responseBuilder.Length > 1000) { // 将内容追加到 WebView2 await AppendToWebView2(responseBuilder.ToString()); // 清空缓存 responseBuilder.Clear(); lastUpdateTime = DateTime.Now; } } // 追加剩余内容 if (responseBuilder.Length > 0) { await AppendToWebView2(responseBuilder.ToString()); } } catch (Exception ex) { // 异常处理 MessageBox.Show($"发生错误:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private async Task AppendToWebView2(string content) { try { // 将内容追加到 WebView2 的 HTML 中 string appendScript = $@" var contentDiv = document.getElementById('content'); contentDiv.innerHTML += '{EscapeJavaScriptString(content)}'; "; await webView21.CoreWebView2.ExecuteScriptAsync(appendScript); // 增加短暂延迟,确保内容渲染完成 await Task.Delay(10); // 滚动到底部 string scrollScript = @" var contentDiv = document.getElementById('content'); contentDiv.scrollTop = contentDiv.scrollHeight; "; await webView21.CoreWebView2.ExecuteScriptAsync(scrollScript); } catch (Exception ex) { MessageBox.Show($"更新 WebView2 失败:{ex.Message}", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private string EscapeJavaScriptString(string input) { // 转义 JavaScript 字符串中的特殊字符 return input.Replace("\\", "\\\\") .Replace("'", "\\'") .Replace("\"", "\\\"") .Replace("\r", "\\r") .Replace("\n", "\\n"); } } }

四、对话结果


相关推荐

上网行为管理有什么用,行为审计软件解决方案?

上网行为管理有什么用,行为审计软件解决方案?我们生活在互联网的时代,网络是比较复杂的,有时候经常会出现一些网络违规现象,这时候就可以进行上网行为管理了,现在有很多的公司都会进行上网行为管理,因为这样可...

上网行为管理软件如何监控员工访问网址信息

上网行为管理软件可以通过域之盾软件来监控员工访问的网址信息:主要方式↓1、网页日志记录上网行为管理软件可以通过网页日志记录功能,完整地记录员工在工作中访问的所有网站,包括访问时间、访问页面、访问方式等...

企业如何确保上网行为管理顺利进行?

企业的稳定长久发展离不开对员工的上网行为管理,因为员工的上网行为关乎到工作效率、生产效率、以及重要的数据信息安全问题。一旦有不规范的上网行为,便容易造成企业终端数据泄密事件,对企业造成重大的财产损失以...

员工上网行为监控如何实现?六个妙招!帮你轻松管理员工上网!

员工上网行为不仅关乎个人工作效率,更直接影响到企业的信息安全和整体运营。不当的上网行为,如访问非法网站、泄露公司机密、长时间闲聊等,都可能给企业带来不可估量的损失。因此,监控员工上网行为,不仅是为了提...

终端管理系统规范企业上网行为管理

企业内部经常会遇到不同的上网行为管理问题,如职员在上班时间炒股、打游戏、上网聊天等不正当的上网行为,用U盘、硬盘等移动设备随意拷贝资料,终端资产难以管理等,降低办公效率的同时,也增加了企业内部泄密风...

企业如何进行上网行为管理?_如何管理企业网络

企业如何进行上网行为管理?为了保障网络安全,提高员工工作效率,企业有必要部署上网行为管理。上网行为管理可对企业内部员工的上网行为进行全方位有效管理,保护Web访问安全,降低互联网使用风险,避免机密信息...

演员赵露思的官方微博注销的原因是什么?

根据多方权威媒体报道及平台验证,演员赵露思的微博账号已于2025年8月19日正式注销。目前搜索该账号显示“因用户自行申请关闭,现已无法查看”。这一结果源于她8月13日在直播中宣布的注销决定,当时她直言...

分手传闻仅4月,关晓彤的一张海边亲吻照,撕碎了鹿晗最后的体面

“原来八年真能被四个月的‘海边吻照’一键清空。”热搜上那张模糊的侧脸一贴,评论瞬间爆炸:关晓彤亲的是李昀锐,鹿晗的生日祝福还停留在去年。八年,够让一部剧从开播到大结局,也够让一对顶流情侣把微博背景换成...

计算机基础知识(五)(3)_计算机基础知识100道

四、如何使用计算机4、软件的通用使用方法计算机发展到现在,正常使用时均采用窗口式界面。我们的介绍不涉及苹果机。操作系统从DOS(DOS阶段有两类,一类是微软的,称为MS—DOS;另一类称为PC—DOS...

笔记本的这些基础知识,你再不知道,就真的被社会淘汰了!

请您在阅读前点击上面的“关注”二字,后续会为您提供更多有价值的电脑知识,感谢每一位朋友的支持!这篇文章依然是给大家讲讲关于笔记本电脑的基础知识,新手小白可一定要收藏起来,以后想看的时候可以找出来就看,...

电脑基础知识,引起电脑故障的原因

引起电脑出现故障的原因非常多,概括来说主要包括以下几个方面的问题。操作不当:操作不当是指误删除文件或非法关机等不当操作。操作不当通常会造成电脑程序无法运行或电脑无法启动,修复此类故障,只要将删除或损坏...

笔记本电脑新手使用教程,笔记本电脑使用技巧

学电脑能够快速入门是每个新手梦寐以求的事情,但是不是每个人都能快速入门的。但是如果定制好合理计划,循序渐进,就会收到非常好的效果。今天小编来跟大家说说笔记本电脑新手教程的详细介绍-装机吧,大家一起...

电脑基础知识:(二)电脑主机_电脑主机组成图解

你好!我是麦秋~前言现代生活随着互联网通讯的快速发展,通讯技术日趋完美,应用软件日益普及,电脑的使用与维护则成为人们日常生活中密不可分的、重要的生活内容。电脑恐怕是中老年人的短板,然而又是急需解决的问...

电脑基础知识:(六)电脑应用程序_电脑的应用程序是什么意思

你好!我是麦秋~应用软件是专为解决一些具体问题的软件,是体现电脑用途的部分,种类繁多,如:办公软件、游戏软件、杀毒软件等;自媒体平台上的西瓜、头条、抖音、剪映等,对于上述软件主要是操作和使用上的问题,...

键盘操作方法大全_键盘操作教程

【键盘操作方法大全】键盘可不仅仅能帮我们打字哦,还有很多快捷的操作你都知道吗?除了Ctrl+C、Ctrl+V以外,再多学几种吧,让你用起电脑来十指如飞~别再慢慢用鼠标点了,用开始键+Tab键切换程序让...

取消回复欢迎 发表评论: