C# 根据Ollama+DeepSeekR1开发本地AI辅助办公助手

news/2025/2/26 17:42:40

在上一篇《访问DeepSeekR1本地部署API服务搭建自己的AI办公助手》中,我们通过通过Ollama提供的本地API接口用Python实现了一个简易的AI办公助手,但是需要运行Py脚本,还比较麻烦,下面我们用C#依据Ollama提供的API接口开发一个本地AI辅助办公助手.

代码如下:

需要引用Newtonsoft.Json.dll和Winform皮肤插件OwnUI.dll去掉也没什么影响

using System;
using System.Net.Http;
using System.Windows.Forms;
using OwnUI;
using Newtonsoft.Json.Linq;

namespace OllamaChat
{
    public partial class Form1 : UIForm
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        private void Form1_Load(object sender, EventArgs e)
        {
            uitb_requesturl.Text = "http://127.0.0.1:11434/api/chat";
            uitb_question.Text = uitb_answers.Text = "";
        }
        
        private void uitb_question_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                string json = "{\"model\":\"deepseek-r1:1.5b\",\"messages\": [{\"role\":\"user\",\"content\":\"" + uitb_question.Text + "\"}],\"stream\":false}";
                string restext = post(uitb_requesturl.Text, json);
                JObject obj = JObject.Parse(restext);
                string message = obj["message"].ToString();
                if (string.IsNullOrEmpty(message) == false)
                {
                    obj = JObject.Parse(message);
                    string content = obj["content"].ToString();
                    uitb_answers.Text = content;
                }
            }
        }
        /// <summary>
        /// https提交
        /// </summary>
        /// <param name="url"></param>
        /// <param name="jsonParas"></param>
        /// <returns></returns>
        public static String post(String url, String jsonParas)
        {
            String responseBody = String.Empty;
            using (HttpClient client = new HttpClient())
            {
                HttpContent httpContent = new StringContent(jsonParas);
                httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json");
                HttpResponseMessage response = client.PostAsync(url, httpContent).GetAwaiter().GetResult();
                response.EnsureSuccessStatusCode();
                responseBody = response.Content.ReadAsStringAsync().GetAwaiter().GetResult();
            }
            //Console.WriteLine(responseBody);
            return responseBody;
        }
    }
}


http://www.niftyadmin.cn/n/5869002.html

相关文章

设计模式|结构型模式总结

1. 介绍 结构型设计模式&#xff08;Structural Patterns&#xff09; 主要关注类与对象的组合&#xff0c;以提高代码的灵活性和可维护性。这些模式帮助创建更大结构&#xff0c;同时保持代码的低耦合性。 结构型设计模式包括以下七种&#xff1a; 适配器模式&#xff08;Ad…

如何让传统制造企业从0到1实现数字化突破?

随着全球制造业不断向智能化、数字化转型&#xff0c;传统制造企业面临着前所未有的机遇与挑战。数字化转型不仅是技术的革新&#xff0c;更是管理、文化、业务流程等全方位的变革。从零开始&#xff0c;如何带领一家传统制造企业走向数字化突破&#xff0c;是许多企业领导者面…

多线程进阶 : 八股文面试题 一 [Java EE 多线程 锁和死锁相关问题]

目录 锁策略: 1. 乐观锁 vs 悲观锁 2. 轻量级锁 vs 重量级锁 3. 自旋锁 vs 挂起等待锁 4. 公平锁 vs 非公平锁 5. 可重入锁 vs 不可重入锁 6. 读写锁 vs 互斥锁 Java中 synchronized 内部实现策略 (内部原理) Java中的synchronized具体采用了哪些锁策略呢? 死锁相关 …

DeepSeek05-大模型WebUI

一、说明&#xff1a; 将DeepSeek部署到前台Web界面的方法主要有以下几种推荐方案&#xff0c;涵盖开源工具、第三方客户端及特定场景适配方案&#xff1a; Open WebUIChatbox AICherry StudioSillyTavern 二、Open WebUI 安装配置教程 特点&#xff1a;Open WebUI 是一个开…

The First项目报告:MyShell开启AI创作经济新纪元

随着加密货币和区块链技术的不断发展&#xff0c;MyShell作为一个前瞻性的Web3 AI平台&#xff0c;迅速崭露头角。MyShell致力于通过去中心化的方式&#xff0c;将AI技术与区块链相结合&#xff0c;为全球创客社区提供一个开放、模块化的AI应用生态。2025年2月25日&#xff0c;…

idea里的插件spring boot helper 如何使用,有哪些强大的功能,该如何去习惯性的运用这些功能

文章精选推荐 1 JetBrains Ai assistant 编程工具让你的工作效率翻倍 2 Extra Icons&#xff1a;JetBrains IDE的图标增强神器 3 IDEA插件推荐-SequenceDiagram&#xff0c;自动生成时序图 4 BashSupport Pro 这个ides插件主要是用来干嘛的 &#xff1f; 5 IDEA必装的插件&…

【WebDav】坚果云使用WebDav访问文件夹内文档大于750份无法返回问题

坚果云分页多次加载解决办法 问题坚果云使用WebDav访问限制 现象PropFind请求返回数据少于文件夹内数据坚果云请求响应体坚果云请求响应头 结论文档遍历实现python循环方式实现 问题 坚果云使用WebDav访问限制 在批量请求时使用大部份的WebDav库请求坚果云时都会出现仅请求到前…

Fisher信息矩阵与Hessian矩阵:区别与联系全解析

Fisher信息矩阵与Hessian矩阵&#xff1a;区别与联系全解析 在统计学和机器学习中&#xff0c;Fisher信息矩阵&#xff08;FIM&#xff09;和Hessian矩阵是两个经常出现的概念&#xff0c;它们都与“二阶信息”有关&#xff0c;常用来描述函数的曲率或参数的敏感性。你可能听说…