大模型-本地化部署调用--基于ollama+openWebUI+springBoot

大模型-本地化部署调用--基于ollama+openWebUI+springBoot

前言

前段时间,啊,可能不是前段时间,过去的2024年吧,大模型这块的内容也是非常火的,各家巨头也开始卷大模型的研发。那么本人呢也在过去的一年中也是用到了一些比较优秀的产品,比如通译灵码,Fitten Code等等大模型工具辅助开发.

近期在逛小破站的时候呢,了解到了大模型的本地部署以及局域网访问等相关内容,然后感觉也比较有意思,我个人试着操作了一下,一些过程,踩坑内容想与各位道友一起分享,随著次篇,又不大合适的地方,还请各位道友见谅.


本篇呢主要是分为这几大模块

  • ollama了解及部署
  • 大模型开源可视化界面openWebUI部署
  • Spring-boot 调用

那么废话不多说,实践直接走起来


一、ollama

1.ollama本地大模型简介

最近又一次了解本地模型的玩法,从小破站了解到了 ollama,经过几天业余时间的研究及了解,发现现在模型本地化的玩法。

先来记录一些 ollama 相关的快链:

一句话来说, Ollama 是一个基于 Go 语言开发的简单易用的本地大语言模型运行框架。可以将其类比为 docker(同基于 cobra包实现命令行交互中的 list,pull,push,run 等命令),事实上它也的确制定了类 docker 的一种模型应用标准,在后边的内容中,你能更加真切体会到这一点。

在管理模型的同时,它还基于 Go 语言中的 Web 框架 gin提供了一些 Api 接口,让你能够像跟 OpenAI 提供的接口那样进行交互。

2.ollama玩法

ollama linux部署

ollama官方提供了一种简单的安装方法,只需一行命令即可完成安装,但是对于想要更深入了解和自定义安装的用户,我们也提供了手动安装的步骤。

快速安装

ollama的安装极为简单,只需在终端中执行以下命令:

bash 复制代码
curl -fsSL https://ollama.com/install.sh | sh

但是这个方式在我自己的服务器安装时,老是报错连接超时...可能得需要一些魔法才可以进行安装;

那么有魔法的小伙伴可直接安装,没有魔法的直接转至手动安装即可

手动安装 (博主亲测)
  • 首先访问 ollama linux 官网说明
  • 点击下载下载对应的包,这里可以自己选择,我是要安装在我自己的服务器上,所以选择linux下载
  • 复制https://ollama.com/download/ollama-linux-amd64.tgz -o ollama-linux-amd64.tgz 在浏览器打开,等待下载完成后 ,上传至服务器指定文件夹中

  • 进入刚才上传.tgz文件目录中,执行

    bash 复制代码
    sudo tar -C /usr -xzf ollama-linux-amd64.tgz
  • 将 .tgz文件解压到usr下

  • 解压完成后,运行

    bash 复制代码
    ollama serve
  • 随后新开窗口执行

bash 复制代码
ollama -v
  • 查看ollama版本号

  • 如果出现如下界面说明ollama下载安装完成

接下来将ollama注册为一个服务并配置开机自启

  • 执行

bash 复制代码
#进入/etc/systemd/system
cd /etc/systemd/system/
#编辑ollama.service 文件
vim ollama.service
  • 填写如下配置信息,我看官方给出的内容中还进行了用户及用户组的配置,我们这边直接指定root进行即可

bash 复制代码
[Unit]
Description=Ollama Service #服务的描述,这里说明这是一个 Ollama 服务。
After=network-online.target #指定服务在网络在线之后启动。

[Service]
ExecStart=/usr/bin/ollama serve #指定启动服务时要运行的命令
User=root #指明运行这个服务的用户是 root
Group=root
Restart=always
RestartSec=3 #指定服务退出后,重启之前等待的时间为 3 秒。
Environment="OLLAMA_HOST=0.0.0.0:11434" #设置服务运行时的环境变量,这里配置服务监听所有网络接口的 11434 端口,保证远程调用

[Install]
WantedBy=default.target
  • 开启服务

bash 复制代码
sudo systemctl daemon-reload #重新加载
sudo systemctl enable ollama #启动
sudo systemctl start ollama #启动
  • 启动之后,访问你自己服务器的ip:11434,出现如下界面,即为启动成功~( 各位道友别忘了开放端口哈~)
ollama 命令

通过ollama部署章节,我们已经将ollama部署到我们自己的服务器上,通过

bash 复制代码
ollama

命令可以查看到ollama具体命令

serve:启动 Ollama 服务。

create:根据 Modelfile 创建一个模型。

show:显示某个模型的信息。

run:运行一个模型。

stop:停止一个正在运行的模型。

pull:从注册表中拉取一个模型。

push:将一个模型推送到注册表。

list:列出所有模型。

ps:列出所有正在运行的模型。

cp:复制一个模型。

rm:删除一个模型。

help:显示关于任何命令的帮助信息。

这些命令允许用户通过命令行界面管理 ollama 模型,包括创建、展示、运行、停止、复制、删除模型,以及从和向注册表推送和拉取模型。

感觉和docker的命令有点类似~

ollama 拉取运行本地大模型

通过命令

bash 复制代码
ollama run XXXX

可以直接拉取模型到部署机器,并执行;首先会检测对应的模型本地是否存在,如果存在直接启动,如果不存在先进行拉取,拉取到本地后在进行构建运行。

Ollama模型仓库地址

在这里可以选择非常多的模型,进行复制命令拉取,左边的下拉框显示的是模型训练的数据集大小,当然模型数据集越大,精度越高,下载空间越大,运行内存越高

博主使用的是2c4g的服务器就使用qwen2.5:1.5b进行示例部署启动

显示success 后,ollama会自动运行该模型,在选中的>>>中输入问题即可

二、openWebUI

Open WebUI 是一种基于 Web 的用户界面,用于管理和操作各种本地和云端的人工智能模型。它提供了一个直观的图形化界面,使用户可以方便地加载、配置、运行和监控各种 AI 模型,而无需编写代码或使用命令行界面。

当然 大模型的可视化界面在github上一搜一大把,我这儿进行集成openWebUI,其他的也是大同小异,道友们自行学习安装哈

1.代码仓库

openWebUI

2.docker&Docker-Compose安装

在此处我将openWebUI 安装在docker容器中,所以对于docker/docker-compose的安装方式各位道友自行学习

3.openWebUI部署

openWebUI 安装在docker容器中,直接进行docker-compose继续部署

执行如下命令进行拉取镜像

bash 复制代码
docker pull backplane/open-webui:0.1-ollama 

编写docker-compose.yml文件

yml 复制代码
version: "2.1"
services:
#docker镜像管理可视化界面
  portainer:
    image: portainer/portainer
    container_name: portainer
    ports: 
      - "9000:9000"
    restart: always

    volumes: 
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
 #openWebUI
  open-webui:
    image: backplane/open-webui:0.1-ollama
    container_name: open-webui
    restart: always
    ports:
      - "3000:8080"    #端口映射
    environment:
      - OLLAMA_BASE_URL=http://[YOUR IP]:11434 #openwebui 连接本地部署的ollama地址 
    volumes:
      - ollama:/root/.ollama
      - open-webui:/app/backend/data
volumes:
  ollama:
  open-webui:
  
networks:
  share_net:
    external:
      name: my_net

编写完成之后,将docker-compose.yml上传至服务器,通过命令进入上传目录,执行

bash 复制代码
docker-compose up -d

启动openWebUI

此时在docker可视化界面【portainer】中可以看到openWebUI的运行状态

再通过访问服务器的3000端口(我这儿是3000,道友们可以自定义),可以看到如下界面

首次进入需要进行用户注册,注册完成后默认是管理员身份,点击登录即可

在左上角可以选择linux服务器上拉取到的大模型,随后便可以进行提问

至此呢 本地大模型可视化UI部署已完成,其实还算简单

三、SpringBoot集成ollama

那么作为一名开发者,不仅仅是部署完成就结束了,除了可视化界面之外,在自己的一些项目中也可以集成自己及部署的大模型,在此简述一下SpringBoot集成ollama

其实官方的一些api中比较多的是python以及go的一些调用方式,关于java的调用好像是比减少的。

但是在github中相关的自定义封装工具是比较多的,在此我们简单的配置使用【Olama4j】进行简单调用

olama4j相关文档说明

1.初始化项目

简单的springBoot项目 不在过多赘述

2.集成依赖

pom 复制代码
  <dependency>
      <groupId>io.github.ollama4j</groupId>
      <artifactId>ollama4j</artifactId>
      <version>1.0.89</version>
  </dependency>

3.项目配置

yml 复制代码
ai:
  ollama:
    host: http://XXXXXX #YOUR IP
    port: 11434
    model: qwen2.5-coder:1.5b
java 复制代码
package com.jerry.springetcd.config;

import io.github.ollama4j.OllamaAPI;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @version 1.0
 * @Author jerryLau
 * @Date 2025/1/22 9:25
 * @注释
 */
@Configuration
@Data
public class OllamaConfig {

    @Value("${ai.ollama.host}")
    private String host;

    @Value("${ai.ollama.port}")
    private int port;

    @Value("${ai.ollama.model}")
    private String model;


    @Bean
    public OllamaAPI generateOllamaClient() {
        return new OllamaAPI(host+":"+port);
    }

}

4.简单使用

java 复制代码
package com.jerry.springetcd.controller;

import com.jerry.springetcd.config.OllamaConfig;
import io.github.ollama4j.OllamaAPI;
import io.github.ollama4j.exceptions.OllamaBaseException;
import io.github.ollama4j.models.response.OllamaResult;
import io.github.ollama4j.utils.OptionsBuilder;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.Resource;
import java.io.IOException;

/**
 * @version 1.0
 * @Author jerryLau
 * @Date 2025/1/22 9:12
 * @注释
 */
@RestController
public class OpenOllamaController {

    @Resource
    private OllamaConfig ollama;

    @PostMapping("/hello")
    public String sayHello() throws OllamaBaseException, IOException, InterruptedException {
        OllamaAPI ollamaClient = ollama.generateOllamaClient();

        OllamaResult hello_world = ollamaClient.generate(ollama.getModel(), "hello world", true,new OptionsBuilder().build());

        return hello_world.getResponse();

    }
}

5.运行结果


至此 已经完成了ollama的本地化部署,可视化界面部署,简单的java调用

那么对于一些比较生层次的内容,道友们自行参考,自行学习

如果你觉得这边文章对你有用,别忘了一键三连,谢谢 😋😋😋

相关推荐
风铃儿~7 分钟前
Spring AI 入门:Java 开发者的生成式 AI 实践之路
java·人工智能·spring
斯普信专业组12 分钟前
Tomcat全方位监控实施方案指南
java·tomcat
忆雾屿22 分钟前
云原生时代 Kafka 深度实践:06原理剖析与源码解读
java·后端·云原生·kafka
武昌库里写JAVA35 分钟前
iview Switch Tabs TabPane 使用提示Maximum call stack size exceeded堆栈溢出
java·开发语言·spring boot·学习·课程设计
gaoliheng00644 分钟前
Redis看门狗机制
java·数据库·redis
我是唐青枫1 小时前
.NET AOT 详解
java·服务器·.net
小白杨树树1 小时前
【WebSocket】SpringBoot项目中使用WebSocket
spring boot·websocket·网络协议
Su米苏1 小时前
Axios请求超时重发机制
java
Undoom2 小时前
🔥支付宝百宝箱新体验!途韵归旅小帮手,让高铁归途变旅行
后端
不超限2 小时前
Asp.net Core 通过依赖注入的方式获取用户
后端·asp.net