AI模型
前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。
微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了,如果有兴趣或者工作需要可以直接看官网,基础应用不是特别复杂。
这里主要是程序中集成使用模型。微软提供Microsoft.Extensions.AI库。该库具体使用可以查看文档,很简单。先拿来主义吧,中小企业就是用居多。什么时候美国对中国全面禁止使用再说了,说不定哪天c#,visual studio都不让我们用了呢。
以下主要说说其它方法。
HHTP协议直接请求接口
这种方式是最基础的方式,直接调用Api接口,集成到程序中。以deepseel为例。
使用HttpClient包,请求接口。
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脚本,例如:
# 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脚本。、
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包,调用接口即可。
初始化加载
// 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;
通过地址访问接口。
获取本地模型
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;
获取本地部署的模型,然后显示下来框中。
下载指定模型
ollamaApi.PushModelAsync("deepseek-r1:7b");
Console.WriteLine("模型下载完成");
通过该接口可以下载模型。
删除模型
await ollamaApi.DeleteModelAsync("deepseek-r1:7b");
Console.WriteLine("模型已删除");
该接口删除指定模型。
模型交互
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模型集成到自己的程序中使用。
一个简单例子的实现样子。