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

news2025/1/26 14:22:07

大模型-本地化部署调用–基于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/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上传至服务器,通过命令进入上传目录,执行

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 IP
    port: 11434
    model: 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;


    @Bean
    public 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 {

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

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

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

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

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

相关文章

RKNN_C++版本-YOLOV5

1.背景 为了实现低延时&#xff0c;所以开始看看C版本的rknn的使用&#xff0c;确实有不足的地方&#xff0c;请指正&#xff08;代码借鉴了rk官方的仓库文件&#xff09;。 2.基本的操作流程 1.读取模型初始化 // 设置基本信息 // 在postprocess.h文件中定义&#xff0c;详见…

H3C-防火墙IPSec配置案例(主模式)

目录 1.IPSec简述:2.IPSec应用场景:3.网络拓扑及说明:4.案例背景:5.网络配置:5.1 基础网络配置:5.1.1 总部防火墙基础配置:5.1.2 分部防火墙基础配置:5.1.3 互联网路由器基础配置:5.1.4 总部服务器基础配置:5.1.5 总部PC基础配置: 5.2 IPSec配置:5.2.1 总部防火墙IPSec配置:5.2…

windows下本地部署安装hadoop+scala+spark-【不需要虚拟机】

注意版本依赖【本实验版本如下】 Hadoop 3.1.1 spark 2.3.2 scala 2.11 1.依赖环境 1.1 java 安装java并配置环境变量【如果未安装搜索其他教程】 环境验证如下&#xff1a; C:\Users\wangning>java -version java version "1.8.0_261" Java(TM) SE Runti…

vim如何显示行号

:set nu 显示行号 :set nonu 不显示行号 &#xff08;vim如何使设置显示行号永久生效&#xff1a;vim如何使相关设置永久生效-CSDN博客&#xff09;

国产编辑器EverEdit - 命令窗口应用详解

1 命令窗口应用详解 1.1 应用场景 有时需要在EverEdit中执行一些命令行工具&#xff0c;甚至想把当前文档做为参数&#xff0c;传递给命令进行一些文本分析&#xff0c;比如&#xff1a;一些常用的文本处理工具&#xff0c;gawk.exe等。 1.2 使用方法 命令窗口的使用在官方手…

Linux C\C++编程-文件位置指针与读写文件数据块

【图书推荐】《Linux C与C一线开发实践&#xff08;第2版&#xff09;》_linux c与c一线开发实践pdf-CSDN博客 《Linux C与C一线开发实践&#xff08;第2版&#xff09;&#xff08;Linux技术丛书&#xff09;》(朱文伟&#xff0c;李建英)【摘要 书评 试读】- 京东图书 Linu…

vue2使用flv.js在浏览器打开flv格式视频

组件地址&#xff1a;GitHub - bilibili/flv.js: HTML5 FLV Player flv.js 仅支持 H.264 和 AAC/MP3 编码的 FLV 文件。如果视频文件使用了其他编码格式就打不开。 flv.vue <template><div><el-dialog :visible.sync"innerVisibleFlv" :close-on-pre…

Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到

Linux下Ubuntun系统报错find_package(BLAS REQUIRED)找不到 这次在windows的WSL2中遇到了一个非常奇怪的错误&#xff0c;就是 CMake Error at /usr/share/cmake-3.22/Modules/FindPackageHandleStandardArgs.cmake:230 (message):Could NOT find BLAS (missing: BLAS_LIBRAR…

仿 RabbitMQ 的消息队列3(实战项目)

七. 消息存储设计 上一篇博客已经将消息统计文件的读写代码实现了&#xff0c;下一步我们将实现创建队列文件和目录。 实现创建队列文件和目录 初始化 0\t0 这样的初始值. //创建队列对应的文件和目录&#xff1a;public void createQueueFile(String queueName) throws IO…

多线程杂谈:惊群现象、CAS、安全的单例

引言 本文是一篇杂谈&#xff0c;帮助大家了解多线程可能会出现的面试题。 目录 引言 惊群现象 结合条件变量 CAS原子操作&#xff08;cmp & swap&#xff09; 线程控制&#xff1a;两个线程交替打印奇偶数 智能指针线程安全 单例模式线程安全 最简单的单例&…

腾讯 Hunyuan3D-2: 高分辨率3D 资产生成

腾讯 Hunyuan3D-2&#xff1a;高分辨率 3D 资产生成的突破 前言 在当今数字化时代&#xff0c;3D 资产生成技术正变得越来越重要。无论是游戏开发、影视制作还是虚拟现实领域&#xff0c;高质量的 3D 模型和纹理都是创造沉浸式体验的关键。然而&#xff0c;传统的 3D 资产制作…

R语言学习笔记之开发环境配置

一、概要 整个安装过程及遇到的问题记录 操作步骤备注&#xff08;包含遇到的问题&#xff09;1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖&#xff0c;试错逐步下载并安装…

DRG/DIP 2.0时代下基于PostgreSQL的成本管理实践与探索(上)

一、引言 1.1 研究背景与意义 在医疗领域的改革进程中&#xff0c; DRG/DIP 2.0 时代&#xff0c;医院成本管理的重要性愈发凸显。新的医保支付方式下&#xff0c;医院的收入不再单纯取决于医疗服务项目的数量&#xff0c;而是与病种的分组、费用标准以及成本控制紧密相关。这…

【数据结构】_顺序表

目录 1. 概念与结构 1.1 静态顺序表 1.2 动态顺序表 2. 动态顺序表实现 2.1 SeqList.h 2.2 SeqList.c 2.3 Test_SeqList.c 3. 顺序表性能分析 线性表是n个具有相同特性的数据元素的有限序列。 常见的线性表有&#xff1a;顺序表、链表、栈、队列、字符串等&#xff1b…

缓存之美:万文详解 Caffeine 实现原理(下)

上篇文章&#xff1a;缓存之美&#xff1a;万文详解 Caffeine 实现原理&#xff08;上&#xff09; getIfPresent 现在我们对 put 方法有了基本了解&#xff0c;现在我们继续深入 getIfPresent 方法&#xff1a; public class TestReadSourceCode {Testpublic void doRead() …

VSCode下EIDE插件开发STM32

VSCode下STM32开发环境搭建 本STM32教程使用vscode的EIDE插件的开发环境&#xff0c;完全免费&#xff0c;有管理代码文件的界面&#xff0c;不需要其它IDE。 视频教程见本人的 VSCodeEIDE开发STM32 安装EIDE插件 Embedded IDE 嵌入式IDE 这个插件可以帮我们管理代码文件&am…

HTTP 配置与应用(局域网)

想做一个自己学习的有关的csdn账号&#xff0c;努力奋斗......会更新我计算机网络实验课程的所有内容&#xff0c;还有其他的学习知识^_^&#xff0c;为自己巩固一下所学知识&#xff0c;下次更新HTTP 配置与应用&#xff08;不同网段&#xff09;。 我是一个萌新小白&#xf…

LiteFlow Spring boot使用方式

文章目录 概述LiteFlow框架的优势规则调用逻辑规则组件定义组件内数据获取通过 DefaultContext自定义上下文 通过 组件规则定义数据通过预先传入数据 liteflow 使用 概述 在每个公司的系统中&#xff0c;总有一些拥有复杂业务逻辑的系统&#xff0c;这些系统承载着核心业务逻…

mysql学习笔记-数据库的设计规范

1、范式简介 在关系型数据库中&#xff0c;关于数据表设计的基本原则、规则就称为范式。 1.1键和相关属性的概念 超键:能唯一标识元组的属性集叫做超键。 候选键:如果超键不包括多余的属性&#xff0c;那么这个超键就是候选键 主键:用户可以从候选键中选择一个作为主键。 外…

计算机网络 (55)流失存储音频/视频

一、定义与特点 定义&#xff1a;流式存储音频/视频是指经过压缩并存储在服务器上的多媒体文件&#xff0c;客户端可以通过互联网边下载边播放这些文件&#xff0c;也称为音频/视频点播。 特点&#xff1a; 边下载边播放&#xff1a;用户无需等待整个文件下载完成即可开始播放…