c#开发AI模型对话

AI模型

前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。

微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了,如果有兴趣或者工作需要可以直接看官网,基础应用不是特别复杂。

这里主要是程序中集成使用模型。微软提供Microsoft.Extensions.AI库。该库具体使用可以查看文档,很简单。先拿来主义吧,中小企业就是用居多。什么时候美国对中国全面禁止使用再说了,说不定哪天c#,visual studio都不让我们用了呢。

以下主要说说其它方法。

HHTP协议直接请求接口

这种方式是最基础的方式,直接调用Api接口,集成到程序中。以deepseel为例。

使用HttpClient包,请求接口。

cs 复制代码
 var inputData = new { input_data = "your_input_here" };
        var jsonContent = JsonConvert.SerializeObject(inputData);
        var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

        var response = await client.PostAsync("http://localhost:5000/predict", content);
        var result = await response.Content.ReadAsStringAsync();

这样就可以直接访问数据了。

Python 库访问

很多AI模型语言是Python。可以通过Python 和PythonNet来访问接口。

1.安装Python环境。

2.引入PythonNet包。

3.开发Python脚本,例如:

python 复制代码
# deepseek_script.py
import deepseek

def run_model(input_data):
    model = deepseek.load_model("model_path")
    result = model.predict(input_data)
    return result

4.调用Python脚本。、

cs 复制代码
using Python.Runtime;

public class DeepSeekIntegration
{
    public void CallDeepSeek()
    {
        // 启动 Python 运行时环境
        using (Py.GIL())
        {
            // 导入 Python 脚本
            dynamic deepseekScript = Py.Import("deepseek_script");
            
            // 调用 Python 函数
            dynamic result = deepseekScript.run_model("input_data_here");
            
            // 打印结果
            Console.WriteLine(result);
        }
    }
}

这样是一种间接方式集成使用。可能有性能优势,但是我没有验证过。

Ollama 访问

这个是本文最主要的内容,因为前面介绍的AI模型本地部署就是该方式。

使用该方式,需要Ollama。

引入OllamaSharp包,调用接口即可。

初始化加载

cs 复制代码
  // set up the client
  var uri = new Uri("http://localhost:11434");
  var ollama = new OllamaApiClient(uri);

  // select a model which should be used for further operations
  ollama.SelectedModel = "llama3.1:8b";
  ollamaApi = ollama;

通过地址访问接口。

获取本地模型

cs 复制代码
 var models = await ollamaApi.ListLocalModelsAsync();//获取本地所有模型
 //  cmb.Items = models;
 animals.ItemsSource = models.Select(p=>p.Name);//显示模型
 animals.SelectedIndex = animals.ItemCount - 1;
 var model = animals.SelectedItem as string;
 ollamaApi.SelectedModel = model;

获取本地部署的模型,然后显示下来框中。

下载指定模型

cs 复制代码
 ollamaApi.PushModelAsync("deepseek-r1:7b");
 Console.WriteLine("模型下载完成");

通过该接口可以下载模型。

删除模型

cs 复制代码
 await ollamaApi.DeleteModelAsync("deepseek-r1:7b");
 Console.WriteLine("模型已删除");

该接口删除指定模型。

模型交互

cs 复制代码
  await foreach (var response in ollamaApi.GenerateAsync(msg))
  {
      Console.Write(response.Response);
      // rsp.Inlines.Add(response.Response);
      Dispatcher.UIThread.Post(() =>
       {
           rsp.Text = rsp.Text + response.Response; }
      );
     
  }

通过输入消息,返回数据。

以上几种方式就可以很简单讲AI模型集成到自己的程序中使用。

一个简单例子的实现样子。

相关推荐
地藏Kelvin29 分钟前
Spring Ai 从Demo到搭建套壳项目(二)实现deepseek+MCP client让高德生成昆明游玩4天攻略
人工智能·spring boot·后端
猫天意31 分钟前
【深度学习】为什么2个3×3的卷积可以相当于一个5×5的卷积核?为什么3个3×3的卷积相当于一个7×7的卷积核,到底区别在哪里?我们该如何使用?
人工智能·深度学习·神经网络·目标检测·视觉检测
AiTEN_Robotics41 分钟前
仓库自动化搬运:自动叉车与AGV选型要点及核心技术解析
人工智能·机器人·自动化
飞哥数智坊1 小时前
Coze实战第12讲:轻松一句话搞定三餐计划、采购和制作,让AI助你健康饮食
人工智能·coze
阔跃生物1 小时前
Nature Methods | OmiCLIP:整合组织病理学与空间转录组学的AI模型
人工智能·深度学习·机器学习
武子康1 小时前
AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书
人工智能·爬虫·gpt·算法·机器学习·ai·音视频
赛卡2 小时前
汽车安全:功能安全FuSa、预期功能安全SOTIF与网络安全Cybersecurity 解析
人工智能·安全·网络安全·车载系统·自动驾驶·汽车
ou.cs2 小时前
c# :this() 和 :base()区别
开发语言·c#
layneyao2 小时前
RPA+AI:自动化办公机器人开发指南
人工智能·自动化·rpa
Ama_tor3 小时前
14.AI搭建preparationのBERT预训练模型进行文本分类
人工智能·深度学习·bert