翼度科技»论坛 编程开发 .net 查看内容

C#使用OllamaSharp调用Llama 3、Phi 3等大语言模型

8

主题

8

帖子

24

积分

新手上路

Rank: 1

积分
24
现如今大模型遍地都是,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
  1.         private async void Ask()
  2.         {
  3.             var uri = new Uri("http://localhost:11434");
  4.             var ollama = new OllamaApiClient(uri);
  5.             ollama.SelectedModel = "llama3";
  6.             var prompt = "WPF和Winform的区别是啥";
  7.             //1.
  8.             //ConversationContext context = null;
  9.             //context = await ollama.StreamCompletion(prompt, context, Callback);
  10.             //2.
  11.             ConversationContext context = null;
  12.             await foreach (var stream in ollama.StreamCompletion(prompt, context))
  13.             {
  14.                 Debug.Write(stream.Response);
  15.             }
  16.         }
  17.         private void Callback(GenerateCompletionResponseStream? stream)
  18.         {
  19.             Debug.Write(stream.Response);
  20.         }
复制代码
这样我们可以在VS的输出栏里面看到实时回答了。如果你想做的酷一点,可以在界面上贴一个AI机器人的动画,然后给输出的文本框不断Append文字,应该就可以实现和网页端一样的打字效果了/。
3. One more thing

这样体验一下,感觉似乎也并没有特别之处。如果你这样想,那就too young too simple啦。
现在鉴于这些大模型都是下载下来运行在本地的,那么离线和数据保密就是他的一大优点了。有很多客户的机器出于商业机密或者其他原因,不能将设备接入互联网,因此本地运行大模型尤为重要。或者局域网部署也可。
其次,还可以和多模态大模型llava等交流图片,比如我上传一张绝命毒师的图片,他就立马识别出来,并给一段文字描述。同样的我们也可以在C#里面实现上传。

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
来源:https://www.cnblogs.com/hupo376787/p/18314039
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具