大模型管理工具Ollama搭建及整合springboot

目录

一、Ollama介绍

[1.1 什么是Ollama](#1.1 什么是Ollama)

[1.2 Ollama特点与优势](#1.2 Ollama特点与优势)

二、Ollama本地部署

[2.1 版本选择](#2.1 版本选择)

[2.2 下载安装包](#2.2 下载安装包)

[2.3 执行安装](#2.3 执行安装)

[2.4 Ollama常用命令](#2.4 Ollama常用命令)

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

[3.1 千问大模型介绍](#3.1 千问大模型介绍)

[3.2 部署过程](#3.2 部署过程)

四、springboot接入Ollama

[4.1 引入Ollama依赖](#4.1 引入Ollama依赖)

[4.2 添加配置文件](#4.2 添加配置文件)

[4.3 使用Ollama聊天api](#4.3 使用Ollama聊天api)

五、写在结尾


一、Ollama介绍

1.1 什么是Ollama

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

官网地址:Ollama

1.2 Ollama特点与优势

Ollama具备如下特点和优势

  • 功能齐全
    • Ollama将模型权重、配置和数据捆绑到一个包中,定义成Modelfile。它优化了设置和配置细节,包括GPU使用情况,从而提高了模型运行的效率。
  • 轻量级
    • Ollama的代码简洁明了,运行时占用资源少。这使得它能够在本地高效地运行,不需要大量的计算资源。此外,它还支持热加载模型文件,无需重新启动即可切换不同的模型,这使得它非常灵活多变。
  • 易用性
    • Ollama提供了多种安装方式,支持Mac和Linux平台,并提供了Docker镜像。用户只需按照安装指南进行操作即可完成安装,无需具备专业的技术背景。
  • 捆绑模型组件
    • 它将模型权重、配置和数据捆绑到一个包中,称为 Modelfile,这有助于优化设置和配置细节,包括 GPU 使用情况。
  • 支持多种模型
    • Ollama 支持多种大型语言模型,如 Llama 2、Code Llama、Mistral、Gemma 等,并允许用户根据特定需求定制和创建自己的模型。
  • 跨平台支持
    • 支持 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,然后选择一个参数相对较少(对本地的空间和资源占用减小)的进行运行

使用下面的命令运行

bash 复制代码
ollama run qwen:0.5b-chat 

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

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

四、springboot接入Ollama

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

4.1 引入Ollama依赖

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

java 复制代码
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-ollama-spring-boot-starter</artifactId>
        </dependency>

4.2 添加配置文件

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

java 复制代码
server:
  port: 8088

spring:
  application:
    name: chat-001

  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: qwen:0.5b-chat
    openai:
      api-key: 你的apikey
      base-url: openai地址

4.3 使用Ollama聊天api

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

java 复制代码
import jakarta.annotation.Resource;
import org.springframework.ai.ollama.OllamaChatClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class OllamaChatController {

    @Resource
    private OllamaChatClient ollamaChatClient;

    //http://localhost:8088/ollama/chat?msg=大数据的技术栈有哪些
    @GetMapping("/ollama/chat")
    public String ollamaChat(@RequestParam String msg){
        String resMsg = ollamaChatClient.call(msg);
        return resMsg;
    }

}

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

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

java 复制代码
    @GetMapping("/ollama/chat/v2")
    public Object ollamaChatV2(@RequestParam String msg){
        Prompt prompt = new Prompt(msg);
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse;
    }

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

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

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

java 复制代码
    //http://localhost:8088/ollama/chat/v3?msg=中国排名前十的大学
    @GetMapping("/ollama/chat/v3")
    public Object ollamaChatV3(@RequestParam String msg){
        Prompt prompt = new Prompt(
                msg,
                OllamaOptions.create()
                        .withModel("qwen:0.5b-chat")
                        .withTemperature(0.4F)
        );
        ChatResponse chatResponse = ollamaChatClient.call(prompt);
        return chatResponse.getResult().getOutput().getContent();
    }

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

五、写在结尾

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