- A+
现如今大模型遍地都是,OpenAI的ChatGPT,Meta的Llama(羊驼),Anthropic的Claude,Microsoft的Phi3,Google的Gemini......
怎么都是国外的???嗯,国内也有,比如腾讯有混元大模型,字节跳动有豆包大模型等等。
不过这不是今天的重点,这写国内外的大模型都有一个特点,就是只有Web、安卓、Ios客户端,感觉怎么没有我们C#桌面客户端的一席之地?,这也太离离原上谱了。本着公平公正的原则,我调研了一下国内外的资料,疯狂查找一番发现,确实资料有点少。不过好在有一个国外的作者,开源了一个OllamaSharp,这个库还在活跃更新,他可以让C#开发者轻松调用各种大预言模型,目前可以查到支持的有100个大模型。这下.net开发者有福音了。
不过OllamaSharp也只是一个封装库,他背后的核心其实是Ollama,一个集成了各种大语言模型的开源库。然后Ollama背后才是各种大预言模型。
下面我就演示一下如何在C#客户端调用Ollama吧。
1. 安装Ollama
打开下载Ollama链接,你将下载一个200多MB的安装包,下载完成直接安装。
安装完成后会弹出一个命令行,我们首先选择一个大模型,并在命令行安装一下。
比如第一个,我们就输入ollama run llama3
,参数越多,对你的机器配置要求就越高,同时带来的收益就是精度更高,回答更准确等。不过一个80亿的大模型,覆盖我们99%的场景了,而且配置需求还好。我一个3060显卡,输出token的速度不亚于网页版。
注意:70亿的模型起步内存8GB,130亿的需要16GB,330亿需要32GB。
运行完安装命令,你就可以直接在命令行中跟大模型对话了【这些终于可以离线对话了,是的,离线!!!终于不用挂各种梯子去外面忍受龟速了,还有封号的风险】
下面演示一下3060显卡的是速度,录屏没有加速呢。
那么这不是我们的目的,我们需要在C#中集成他,这样就可以写一个大模型聊天客户端了,或者用在特定的领域,比如看论文、写代码等领域。
2. C#调用Ollama
Nuget搜索OllamaSharp,安装。
注意端口是11434
private async void Ask() { var uri = new Uri("http://localhost:11434"); var ollama = new OllamaApiClient(uri); ollama.SelectedModel = "llama3"; var prompt = "WPF和Winform的区别是啥"; //1. //ConversationContext context = null; //context = await ollama.StreamCompletion(prompt, context, Callback); //2. ConversationContext context = null; await foreach (var stream in ollama.StreamCompletion(prompt, context)) { Debug.Write(stream.Response); } } private void Callback(GenerateCompletionResponseStream? stream) { Debug.Write(stream.Response); }
这样我们可以在VS的输出栏里面看到实时回答了。如果你想做的酷一点,可以在界面上贴一个AI机器人的动画,然后给输出的文本框不断Append文字,应该就可以实现和网页端一样的打字效果了/。
3. One more thing
这样体验一下,感觉似乎也并没有特别之处。如果你这样想,那就too young too simple啦。
现在鉴于这些大模型都是下载下来运行在本地的,那么离线和数据保密就是他的一大优点了。有很多客户的机器出于商业机密或者其他原因,不能将设备接入互联网,因此本地运行大模型尤为重要。或者局域网部署也可。
其次,还可以和多模态大模型llava等交流图片,比如我上传一张绝命毒师的图片,他就立马识别出来,并给一段文字描述。同样的我们也可以在C#里面实现上传。