【semantic Kernel】对接 Ollama

news/2025/1/18 13:08:30/文章来源:https://www.cnblogs.com/fanfan-90/p/18516218

在 chatGPT 的推动下。LLM 简直火出天际,各行各业都在蹭。听说最近 meta 开源的 llama3 模型可以轻松在普通 PC 上运行,这让我也忍不住来蹭一层。以下是使用 ollama 试玩 llama3 的一些记录。

什么是 llama

LLaMA(Large Language Model Meta AI)是Meta开发的大规模预训练语言模型,基于Transformer架构,具有强大的自然语言处理能力。它在文本生成、问答系统、机器翻译等任务中表现出色。LLaMA模型有多个规模,从几亿到上千亿参数,适用于不同的应用场景。用户可以通过开源平台如Hugging Face获取LLaMA模型,并根据需要进行微调。LLaMA的灵活性和可扩展性使其在自然语言处理领域具有广泛的应用前景。

什么是 ollama

Ollama是一款用于本地安装和管理大规模预训练语言模型的工具。它简化了模型的下载、安装和使用流程,支持多种流行的模型如GPT-4和llama。Ollama通过易于使用的命令行界面和API,帮助用户快速部署和运行自然语言处理任务。它还支持多GPU配置和模型微调,适应各种计算资源和应用需求。总之,Ollama为研究人员和开发者提供了一个高效、灵活的本地化大模型解决方案。

下载 ollama

ollama 官网提供了各种平台的安装包,那么这里选择 windows 系统的。以下是下载地址:https://ollama.com/download
下载windows版本的,一路 next 就行了。
以在命令行下执行

ollama -v

下载模型并运行

安装好 ollama 之后我们需要把训练好的模型拉到本地,然后才能运行它。

查找 模型

ollama 提供了一个页面供用户查询可以使用的开源模型。

https://ollama.com/search?q=&p=1

可以看到主流的开源 LLM 几乎都能找到。什么 llama3 啊,phi3 啊,国产的 qwen2 啊。让我们点击 llama3 看看详情。
里面可以选模型的参数大小。这里我们选 8b 试一下。模型大小是 4.7 GB。复制右上角的命令并在命令行运行:

ollama run llama3:8b

对话

下载完成后命令行就会跳转到对话模型,等待你输入问题。随便先来一个吧。

使用 SemanticKernel 对接 Ollama

安装 SK 及 ollama connector
首先在本地创建一个 Console 项目,然后安装以下包:

dotnet add package Microsoft.SemanticKernel --version 1.21.1
dotnet add package Microsoft.SemanticKernel.Connectors.Ollama --version 1.21.1-alpha

注意:ollama connector 还是 alpha 版本,请勿用于生产

代码:

    var endpoint = new Uri("http://localhost:11434");var modelId = "llama3:8b";var builder = Kernel.CreateBuilder();
#pragma warning disable SKEXP0070builder.Services.AddScoped<IChatCompletionService>(_ => new OllamaChatCompletionService(modelId, endpoint));
#pragma warning restore SKEXP0070var kernel = builder.Build();var chatService = kernel.GetRequiredService<IChatCompletionService>();var history = new ChatHistory();history.AddSystemMessage("This is a llama3 assistant ...");while (true){Console.Write("You:");var input = Console.ReadLine();if (string.IsNullOrWhiteSpace(input)){break;}history.AddUserMessage(input);var contents = await chatService.GetChatMessageContentsAsync(history);foreach (var chatMessageContent in contents){var content = chatMessageContent.Content;Console.WriteLine($"Ollama: {content}");history.AddMessage(chatMessageContent.Role, content ?? "");}}

参考:
本地部署llama: https://mp.weixin.qq.com/s?__biz=MzI0NDAzMTQyNQ==&mid=2456395459&idx=1&sn=c29ece0ba9427ab9709d4afc129c49be&chksm=fef9346dc98ebd7bbfd10d80d22b744dd0b9a1e90971b11614e1d3789ec3785bebde64a0a66f&scene=21#wechat_redirect

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824239.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka的消费者

Kafka的消费者 Kafka采用消费者组的方式来消费消息,一个消费者组中可以包含多个消费者。消费者对象订阅主题并接收Kafka的消息,然后验证消息并保存结果。尽管一个消费者组中可以包含多个消费者,但是它们订阅的都是同一个主题的消息。 1. 消费模式 当生产者将消息发送到Kafka…

GIS空间索引技术

地理信息系统(Geography Information System,简称GIS)的主要任务之一是有效地检索空间数据及快速响应不同用户的在线查询。地理空间索引技术和方法是GIS的关键技术。是快速高效查询、检索和显示地理空间数据的重要指标。 常用的空间索引技术介绍和比较: 网格空间索引、四叉树…

Base64编码原理

Base64编码原理 Base64作用 目前Base64已经成为网络上常见的传输8Bit字节代码的编码方式之一。在做支付系统时,系统之间的报文交互都需要使用Base64对明文进行转码,然后再进行签名或加密,之后再进行(或再次Base64)传输。 Base64编码原理 Base64的原理比较简单,每当我们使…

项目管理平台实操:项目经理如何快速生成项目报告?(3分钟教程)

一、项目管理平台与报告生成的关联 项目管理平台在项目管理中起着至关重要的作用。它为项目经理提供了一个集中化的管理工具,能够有效地组织和协调项目的各个方面。 首先,项目管理平台可以实现对项目任务的全面管理。通过任务清单功能,项目经理可以清晰地了解每个任务的名称…

游戏平台如何通过技术加持“弯道超车”

随着游戏产业的蓬勃发展,游戏平台与游戏开发引擎之间的兼容性问题日益凸显。为了满足日益多样化的游戏需求,游戏平台在技术上不断创新,力求实现与各大游戏开发引擎的无缝对接。自从微信2017年12月发布了第一款小游戏--“跳一跳”,小游戏以其“轻量化”、“即用即走”的特性…

试用期被裁是有补偿的!一定要记得领取~

每年都会收到同学试用期被裁的消息,除了震惊之外,更多的是遗憾。 因为试用期被裁的大部分同学都是知名公司的 Offer,例如下面这两个,一个某程旅行,一个某知名外企:某知名外企:所以,本文要聊两个问题:试用期被裁有没有补偿? 如何避免试用期被裁?1.试用期被裁有没有补…

# [Educational Codeforces Round 171](https://codeforces.com/contest/2026)

Educational Codeforces Round 171 D. Sums of Segments定义四个前缀和: \(s_i=a_1+a_2+\dots+a_i\) \(u_i=s_1+s_2+\dots+s_i\) \(t_i=s(i,i)+s(i,i+1)+\dots+s(i,n)\) \(ts_i=t_1+t_2+\dots+t_i\) \(s_i\)为\(a_i\)的前缀和,\(u_i\)为\(s_i\)的前缀和,\(t_i\)为分块之后第…

Ansible 的主机清单和配置文件

一.简介 在使用Ansible来批量管理主机的时候通常我们需要先定义要管理哪些主机或者主机组,而这个用于管理主机与主机组的文件就叫做 Inventory ,也叫主机清单。 该文 件 默 认 位 于/etc/ansible/hosts。当然我们也可以通过修改ansible配置文件的Inventory配置项来修改默认in…

2024年项目经理必看!项目管理平台如何助力项目成功交付?

一、项目管理平台的重要性 在 2024 年,项目管理平台对于项目成功交付起着至关重要的作用。 首先,项目管理平台能够极大地提高协作效率。例如,像 禅道 这样的优秀平台,为团队提供了统一的协作空间,成员可以在平台上共享文档、讨论问题、分配任务等。通过这种方式,信息传递…

嗅探与欺诈实验

作业题目 包嗅探和欺骗是网络安全中的两个重要概念;它们是网络通信中的两大威胁。能够理解这两种威胁对于理解网络中的安全措施至关重要。有许多包嗅探和欺骗工具,如Wireshark、Tcpdump、Netwox等。其中一些工具被安全专家以及攻击者广泛使用。能够使用这些工具对学生来说很重…

强势建议收藏!2024年工程项目管理平台上的10个高效工具

一、多功能的禅道 禅道作为工程项目管理平台,拥有众多强大功能。 在项目管理和协作方面,禅道集成了产品管理、项目管理、质量管理、文档管理、组织管理和事务管理等多方面功能,完整覆盖了工程项目管理的核心流程。通过禅道,团队成员可以清晰地了解项目的各个环节,从需求收…

TCP攻击实验

作业题目 本实验的学习目标是让学生获得有关漏洞以及针对这些漏洞的攻击的第一手经验。聪明人从错误中学习。在安全教育中,我们研究导致软件漏洞的错误。研究过去的错误不仅有助于学生理解为什么系统容易受到攻击,为什么“看似良性”的错误会变成灾难,以及为什么需要许多安全…