当前位置:   article > 正文

大模型管理工具Ollama搭建及整合springboot_springboot 加载 llama3

springboot 加载 llama3

一、Ollama介绍

1.1、什么是Ollama

Ollama是一个用于部署和运行各种开源大模型的工具,能够帮助用户快速在本地运行各种大模型,极大地简化了大模型在本地运行的过程。对用户来说,只需要通过执行几条命令就能在本地运行开源大模型,如Llama 2等。

官网地址:Ollama

1.2 Ollama特点与优势

Ollama具备如下特点和优势

1)功能齐全

Ollama将模型权重、配置和数据捆绑到一个包中,定义成Modelfile。它优化了设置和配置细节,包括GPU使用情况,从而提高了模型运行的效率。

2)轻量级

Ollama的代码简洁明了,运行时占用资源少。这使得它能够在本地高效地运行,不需要大量的计算资源。此外,它还支持热加载模型文件,无需重新启动即可切换不同的模型,这使得它非常灵活多变。

3)易用性

Ollama提供了多种安装方式,支持Mac和Linux平台,并提供了Docker镜像。用户只需按照安装指南进行操作即可完成安装,无需具备专业的技术背景。

4)捆绑模型组件

它将模型权重、配置和数据捆绑到一个包中,称为 Modelfile,这有助于优化设置和配置细节,包括 GPU 使用情况。

5)支持多种模型

Ollama 支持多种大型语言模型,如 Llama 2、Code Llama、Mistral、Gemma 等,并允许用户根据特定需求定制和创建自己的模型。

6)跨平台支持

支持 macOS 和 Linux 平台,Windows 平台的预览版也已发布。安装过程简单,用户只需访问 Ollama 的官方网站下载相应平台的安装包即可。

二、Ollama本地部署

接下来演示如何在本地的windows系统上安装Ollama,根据你的实际情况,也可以选择Linux系统进行部署

2.1 版本选择

进入网站之后,点击右上角的 Download按钮,根据个人的实际情况,选择不同类型的安装包进行部署,我这里选择的是Windows的版本;

注意,Ollama部署的时候,对服务器或机器是有一定要求的,所以需要根据你的机器配置情况进行选择,在Ollama的官网通过github的链接点进去,可以看到如下的相关参数指导说明,在这里,你部署的大模型参数越多,理论上来说,对机器的配置要求就越高,目前先关注这一点即可。

2.2 下载安装包

这里选择下载的是windows版本

2.3 执行安装

Ollama的安装比较简单,双击执行这个exe文件,等待安装完成即可

安装完成之后,点击开始进入下面的shell窗口

2.4 Ollama常用命令

cmd窗口输入Ollama,即可了解常用的Ollama命令

如何理解本机部署的这个Ollama呢?如果使用过Docker的同学对docker部署一些中间件应该不陌生,比如使用docker中部署mysql或redis,只需要运行一段docker命令即可完成,非常方便,类比于Ollama,是一个大模型的部署管理工具,只需要使用Ollama的命令,也可以快速部署起一个本地的大模型进行使用。

如果你需要使用Ollama部署大模型,可以在Ollama官网进行搜索,类似于你使用docker search 镜像名一样

如下,进入到某个大模型中,拷贝命令到shell窗口中执行即可

三、使用Ollama部署千问大模型

上面演示了基于本地windows操作系统搭建Ollama过程,下面我们使用Ollama部署一个大模型,这里使用Ollama部署千问大模型。

3.1 千问大模型介绍

“通义千问大模型”是阿里云推出的一个超大规模的语言模型,具有强大的归纳和理解能力,可以处理各种自然语言处理任务,包括但不限于文本分类、文本生成、情感分析等。此模型能够极大地提高了自然语言处理的效率和准确性,给用户提供了一种新的、简便的工具。

3.2 部署过程

在Ollama中搜索关键字qwen,然后选择一个参数相对较少(对本地的空间和资源占用减小)的进行运行

使用下面的命令运行

ollama run qwen:0.5b-chat 

然后等待模型下载完成运行起来之后就可以使用了,下面这个进度窗口是不是与docker部署中间件很相像

然后就可以输入文本,与千问大模型进行对话,而后,就可以基于部署的模型应用于实际工作或业务中进行结合使用

四、springboot接入Ollama

由于本地搭建了Ollama,并且在Ollama上安装了千问大模型,就可以将千问大模型当GPT一样使用进行交流,参考下面具体的对接步骤。

4.1 引入Ollama依赖

本地提前搭建一个springboot工程,然后引入Ollama核心依赖

  1. <dependency>
  2. <groupId>org.springframework.ai</groupId>
  3. <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
  4. </dependency>

4.2 添加配置文件

配置文件中添加Ollama相关的配置信息,注意的是,Ollama本地端口为11434

  1. server:
  2. port: 8088
  3. spring:
  4. application:
  5. name: chat-001
  6. ai:
  7. ollama:
  8. base-url: http://localhost:11434
  9. chat:
  10. options:
  11. model: qwen:0.5b-chat
  12. openai:
  13. api-key: 你的apikey
  14. base-url: openai地址

4.3 使用Ollama聊天api

Ollama聊天API的核心对象为OllamaChatClient,与上述的spring ai中提供的client对象类似,在程序中可以直接调用其api,如下,传入一个msg参数,返回响应的文本内容

  1. import jakarta.annotation.Resource;
  2. import org.springframework.ai.ollama.OllamaChatClient;
  3. import org.springframework.web.bind.annotation.GetMapping;
  4. import org.springframework.web.bind.annotation.RequestParam;
  5. import org.springframework.web.bind.annotation.RestController;
  6. @RestController
  7. public class OllamaChatController {
  8. @Resource
  9. private OllamaChatClient ollamaChatClient;
  10. //http://localhost:8088/ollama/chat?msg=大数据的技术栈有哪些
  11. @GetMapping("/ollama/chat")
  12. public String ollamaChat(@RequestParam String msg){
  13. String resMsg = ollamaChatClient.call(msg);
  14. return resMsg;
  15. }
  16. }

启动服务调用一下接口,可以看到响应的内容,通过这种方式,相当于是利用spring ai接入了本地的大模型进行对话聊天。

也可以使用Prompt进行参数传递,看下面的接口

  1. @GetMapping("/ollama/chat/v2")
  2. public Object ollamaChatV2(@RequestParam String msg){
  3. Prompt prompt = new Prompt(msg);
  4. ChatResponse chatResponse = ollamaChatClient.call(prompt);
  5. return chatResponse;
  6. }

返回结果如下,返回这种结构的数据在实际使用的时候,需要对json中的字段进行解析即可

spring ai官网中也提供了Ollama的相关文档,地址:Ollama Chat :: Spring AI Reference,在文档中,可以找到很多有关Ollama的详细的配置参数,这些配置参数,都可以在Prompt对象或者配置文件中进行合理的使用,达到最佳的实践效果

比如,在下面的接口中,仍然使用Prompt对象,里面传入更多的参数选项做控制

  1. //http://localhost:8088/ollama/chat/v3?msg=中国排名前十的大学
  2. @GetMapping("/ollama/chat/v3")
  3. public Object ollamaChatV3(@RequestParam String msg){
  4. Prompt prompt = new Prompt(
  5. msg,
  6. OllamaOptions.create()
  7. .withModel("qwen:0.5b-chat")
  8. .withTemperature(0.4F)
  9. );
  10. ChatResponse chatResponse = ollamaChatClient.call(prompt);
  11. return chatResponse.getResult().getOutput().getContent();
  12. }

再次调用一下接口,当然这个结果是否一定准确呢?对于结果的使用还需要做认真的鉴别

五、写在结尾

本文详细介绍了基于windows系统部署Ollama的过程,并演示了基于Ollama部署千问大模型的过程,以及如何与springboot对接,更详细和深入的可以参阅官网资料进一步学习,本文到此结束谢谢观看。

转自:大模型管理工具Ollama搭建及整合springboot-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/845527
推荐阅读
相关标签
  

闽ICP备14008679号