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

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

前言

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

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


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

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

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


一、ollama

1.ollama本地大模型简介

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

请添加图片描述

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

  • 项目地址:ollama-github
  • 官网地址: ollama offical
  • 模型仓库: Ollama model lib
  • 官方 logo 是一只可爱的羊驼

请添加图片描述

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

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

2.ollama玩法

ollama linux部署

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

快速安装

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

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文件目录中,执行

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

  • 解压完成后,运行

    ollama serve
    
  • 随后新开窗口执行

  • ollama -v
    
  • 查看ollama版本号

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

请添加图片描述

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

  • 执行

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

  • [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
    
  • 开启服务

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

请添加图片描述

ollama 命令

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

ollama

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

serve:启动 Ollama 服务。

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

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

run:运行一个模型。

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

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

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

list:列出所有模型。

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

cp:复制一个模型。

rm:删除一个模型。

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

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

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

ollama 拉取运行本地大模型

通过命令

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继续部署

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

docker pull backplane/open-webui:0.1-ollama 

编写docker-compose.yml文件

version: "2.1"
services:
#docker镜像管理可视化界面portainer:image: portainer/portainercontainer_name: portainerports: - "9000:9000"restart: alwaysvolumes: - /var/run/docker.sock:/var/run/docker.sockenvironment:- TZ=Asia/Shanghai#openWebUIopen-webui:image: backplane/open-webui:0.1-ollamacontainer_name: open-webuirestart: alwaysports:- "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上传至服务器,通过命令进入上传目录,执行

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.集成依赖

  <dependency><groupId>io.github.ollama4j</groupId><artifactId>ollama4j</artifactId><version>1.0.89</version></dependency>

3.项目配置

ai:ollama:host: http://XXXXXX #YOUR IPport: 11434model: qwen2.5-coder:1.5b
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;@Beanpublic OllamaAPI generateOllamaClient() {return new OllamaAPI(host+":"+port);}}

4.简单使用

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 {@Resourceprivate 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调用

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

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

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

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

相关文章

RV1126+FFMPEG推流项目源码

源码在我的gitee上面&#xff0c;感兴趣的可以自行了解 nullhttps://gitee.com/x-lan/rv126-ffmpeg-streaming-projecthttps://gitee.com/x-lan/rv126-ffmpeg-streaming-project

宏_wps_宏修改word中所有excel表格的格式_设置字体对齐格式_删除空行等

需求&#xff1a; 将word中所有excel表格的格式进行统一化&#xff0c;修改其中的数字类型为“宋体&#xff0c; 五号&#xff0c;右对齐&#xff0c; 不加粗&#xff0c;不倾斜”&#xff0c;其中的中文为“宋体&#xff0c; 五号&#xff0c; 不加粗&#xff0c;不倾斜” 数…

ServletOutputStream failed to write: Broken pipe

案发现场 问题&#xff1a; org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream failed to write: Broken pipe org.springframework.web.context.request.async.AsyncRequestNotUsableException: ServletOutputStream …

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测(Matlab完整源码和数据)

CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测&#xff08;Matlab完整源码和数据&#xff09; 目录 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测&#xff08;Matlab完整源码和数据&#xff09;预测效果基本介绍 CNN-BiLSTM卷积双向长短期记忆神经网络时间序列预测一…

14-6-2C++STL的list

(一&#xff09;list对象的带参数构造 1.list&#xff08;elem);//构造函数将n个elem拷贝给本身 #include <iostream> #include <list> using namespace std; int main() { list<int> lst(3,7); list<int>::iterator it; for(itlst.begi…

[b01lers2020]Life on Mars1

打开题目页面如下 看了旁边的链接&#xff0c;也没有什么注入点&#xff0c;是正常的科普 利用burp suite抓包&#xff0c;发现传参 访问一下 http://5edaec92-dd87-4fec-b0e3-501ff24d3650.node5.buuoj.cn:81/query?searchtharsis_rise 接下来进行sql注入 方法一&#xf…

Linux的udev详解、安装和使用(dev下的设备每次开机的名称不固定怎么办?)

前言&#xff08;问题与需求&#xff09;&#xff1a; 在传统的devfs 1&#xff1a;设备映射的不确定&#xff1a;一个设备多次加载设备的设备文件可能不同&#xff0c;比如一个hub有可能是ttyUSB0或ttyUSB2或ttyUSB3 2&#xff1a;devfs没有足够的主辅设备号&#xff0c;当设…

Linux 内核中的 InfiniBand 核心模块:drivers/infiniband/core/device.c 分析

InfiniBand 是一种高性能、低延迟的网络互连技术,广泛应用于高性能计算(HPC)、数据中心和云计算等领域。Linux 内核中的 InfiniBand 子系统提供了对 InfiniBand 设备的支持,而 drivers/infiniband/core/device.c 文件则是 InfiniBand 核心模块的重要组成部分。本文将对 dev…

如何快速开发LabVIEW项目,成为LabVIEW开发的高手

发现了一篇多年前写的文章&#xff0c;转发到这里 如何快速开发LabVIEW项目&#xff0c;成为LabVIEW开发的高手。 如果您手里有LabVIEW项目&#xff0c;领导催的又很紧&#xff0c;该怎么办&#xff1f; 如果您公司规模小&#xff0c;就想把LabVIEW项目快速搞定&#xff0c;有什…

CodeForces 611:New Year and Domino ← 二维前缀和

【题目来源】 https://codeforces.com/contest/611/problem/C 【题目描述】 They say "years are like dominoes, tumbling one after the other". But would a year fit into a grid? I dont think so. Limak is a little polar bear who loves to play. He has r…

K8S中的数据存储之基本存储

基本存储类型 EmptyDir 描述&#xff1a;当 Pod 被调度到节点上时&#xff0c;Kubernetes 会为 Pod 创建一个空目录&#xff0c;所有在该 Pod 中的容器都可以访问这个目录。特点&#xff1a; 生命周期与 Pod 绑定&#xff0c;Pod 删除时&#xff0c;数据也会丢失。适用于临时…

如何移植ftp服务器到arm板子?

很多厂家提供的sdk&#xff0c;一般都不自带ftp服务器功能&#xff0c; 需要要发人员自己移植ftp服务器程序。 本文手把手教大家如何移植ftp server到arm板子。 环境 sdk&#xff1a;复旦微 Buildroot 2018.02.31. 解压 $ mkdir ~/vsftpd $ cp vsftpd-3.0.2.tar.gz ~/vs…

Alfresco Content Services docker自动化部署操作

Alfresco Content Services docker部署文档 前提条件 在开始之前&#xff0c;需要确保已经安装了 Docker 和 Docker Compose。Docker 用于创建和管理容器&#xff0c;Docker Compose 则用于定义和运行多容器的 Docker 应用。 步骤 1. 创建目录结构 首先&#xff0c;创建一个…

计算机网络 (61)移动IP

前言 移动IP&#xff08;Mobile IP&#xff09;是由Internet工程任务小组&#xff08;Internet Engineering Task Force&#xff0c;IETF&#xff09;提出的一个协议&#xff0c;旨在解决移动设备在不同网络间切换时的通信问题&#xff0c;确保移动设备可以在离开原有网络或子网…

嵌入式MCU面试笔记2

目录 串口通信 概论 原理 配置 HAL库代码 1. 初始化函数 2. 数据发送和接收函数 3. 中断和DMA函数 4. 中断服务函数 串口通信 概论 我们知道&#xff0c;通信桥接了两个设备之间的交流。一个经典的例子就是使用串口通信交换上位机和单片机之间的数据。 比较常见的串…

Charles 4.6.7 浏览器网络调试指南:流量过滤与分析(六)

1. 概述 在网络调试和优化过程中&#xff0c;Charles 不仅可以实现简单的网络抓包操作&#xff0c;还支持更高级的抓包技巧和流量分析功能。这些功能能够帮助开发者深入挖掘网络请求的细节&#xff0c;为复杂问题提供有效的解决方案。本文将重点讲解 Charles 的过滤规则、自定…

xss靶场

xss-labs下载地址&#xff1a;GitHub - do0dl3/xss-labs: xss 跨站漏洞平台 xss常见触发标签&#xff1a;XSS跨站脚本攻击实例与防御策略-CSDN博客 level-1 首先查看网页的源代码发现get传参的name的值test插入了html里头&#xff0c;还回显了payload的长度。 <!DOCTYPE …

主机监控软件WGCLOUD使用指南 - 如何设置主题背景色

WGCLOUD运维监控系统&#xff0c;从v3.5.7版本开始支持设置不同的主题背景色&#xff0c;如下 更多主题查看说明 如何设置主题背景色 - WGCLOUD

C语言:数据的存储

本文重点&#xff1a; 1. 数据类型详细介绍 2. 整形在内存中的存储&#xff1a;原码、反码、补码 3. 大小端字节序介绍及判断 4. 浮点型在内存中的存储解析 数据类型结构的介绍&#xff1a; 类型的基本归类&#xff1a; 整型家族 浮点家族 构造类型&#xff1a; 指针类型&…

51单片机入门_01_单片机(MCU)概述(使用STC89C52芯片;使用到的硬件及课程安排)

文章目录 1. 什么是单片机1.1 微型计算机的组成1.2 微型计算机的应用形态1.3 单板微型计算机1.4 单片机(MCU)1.4.1 单片机内部结构1.4.2 单片机应用系统的组成 1.5 80C51单片机系列1.5.1 STC公司的51单片机1.5.1 STC公司单片机的命名规则 2. 单片机的特点及应用领域2.1 单片机的…