C#使用OllamaSharp调用Llama 3、Phi 3等大语言模型
现如今大模型遍地都是,OpenAI的ChatGPT,Meta的Llama(羊驼),Anthropic的Claude,Microsoft的Phi3,Google的Gemini......https://img2024.cnblogs.com/blog/298986/202407/298986-20240720231457172-1579619592.gif
怎么都是国外的???嗯,国内也有,比如腾讯有混元大模型,字节跳动有豆包大模型等等。
不外这不是今天的重点,这写国内外的大模型都有一个特点,就是只有Web、安卓、Ios客户端,感觉怎么没有我们C#桌面客户端的一席之地?,这也太离离原上谱了。本着公平公正的原则,我调研了一下国内外的资料,疯狂查找一番发现,确实资料有点少。不外好在有一个国外的作者,开源了一个OllamaSharp,这个库还在活跃更新,他可以让C#开发者轻松调用各种大预言模型,目前可以查到支持的有100个大模型。这下.net开发者有福音了。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240720234240873-2003762147.png
不外OllamaSharp也只是一个封装库,他背后的核心其实是Ollama,一个集成了各种大语言模型的开源库。然后Ollama背后才是各种大预言模型。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240720232946158-325602604.jpg
下面我就演示一下如安在C#客户端调用Ollama吧。
1. 安装Ollama
打开下载Ollama链接,你将下载一个200多MB的安装包,下载完成直接安装。
安装完成后会弹出一个命令行,我们起首选择一个大模型,并在命令行安装一下。
比如第一个,我们就输入ollama run llama3,参数越多,对你的机器配置要求就越高,同时带来的收益就是精度更高,回答更准确等。不外一个80亿的大模型,覆盖我们99%的场景了,而且配置需求还好。我一个3060显卡,输出token的速度不亚于网页版。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240720234403601-869948656.png
注意:70亿的模型起步内存8GB,130亿的必要16GB,330亿必要32GB。
运行完安装命令,你就可以直接在命令行中跟大模型对话了【这些终于可以离线对话了,是的,离线!!!终于不消挂各种梯子去外面忍受龟速了,还有封号的风险】
下面演示一下3060显卡的是速度,录屏没有加速呢。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240720235415615-1487405974.gif
那么这不是我们的目的,我们必要在C#中集成他,这样就可以写一个大模型谈天客户端了,或者用在特定的领域,比如看论文、写代码等领域。
2. C#调用Ollama
Nuget搜刮OllamaSharp,安装。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240721000027790-580771695.png
注意端口是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#里面实现上传。
https://img2024.cnblogs.com/blog/298986/202407/298986-20240721004431467-1491746363.gif
本文版权归作者和博客园共有,接待转载,但未经作者同意必须保存此段声明,且在文章页面显着位置给出原文毗连,否则保存追究法律责任的权利。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]