大模型-本地化部署调用--基于ollama+openWebUI+springBoot
大模型-本地化部署调用–基于ollama+openWebUI+springBoot
前言
前段时间,啊,可能不是前段时间,已往的2024年吧,大模型这块的内容也是非常火的,各家巨头也开始卷大模型的研发。那么本人呢也在已往的一年中也是用到了一些比力优秀的产品,好比通译灵码,Fitten Code等等大模型工具辅助开发.
近期在逛小破站的时候呢,了解到了大模型的本地部署以及局域网访问等相关内容,然后感觉也比力故意思,我个人试着操作了一下,一些过程,踩坑内容想与各位道友一起分享,随著次篇,又不大符合的地方,还请各位道友包涵.
本篇呢主要是分为这几大模块
[*]ollama
了解及部署
[*]大模型开源可视化界面openWebUI部署
[*]Spring-boot 调用
那么废话不多说,实践直接走起来
一、ollama
1.ollama
本地大模型简介
最近又一次了解本地模型的玩法,从小破站了解到了 ollama
,经过几天业余时间的研究及了解,发现现在模型本地化的玩法。
https://i-blog.csdnimg.cn/direct/a863a1a23e06446d8a905f51dbb4d7ca.png
先来记录一些 ollama
相关的快链:
[*]项目地点:ollama
-github
[*]官网地点: ollama
offical
[*]模型堆栈: Ollama model lib
[*]官方 logo 是一只可爱的羊驼
https://i-blog.csdnimg.cn/direct/c0d4103e69ee4e738b4ab07442b61141.png
一句话来说, 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://i-blog.csdnimg.cn/direct/b546e7e35b1648248f6e447e65b37388.png
https://i-blog.csdnimg.cn/direct/b92f2e98a8034b9dbfd70afc581add6b.png
[*] 复制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
下载安装完成
https://i-blog.csdnimg.cn/direct/5f76222ad82c4690a143305367c9a789.png
接下来将ollama
注册为一个服务并设置开机自启
[*] 实行
[*] #进入/etc/systemd/system
cd /etc/systemd/system/
#编辑ollama
.service 文件
vim ollama
.service
[*] 填写如下设置信息,我看官方给出的内容中还进行了用户及用户组的设置,我们这边直接指定root进行即可
[*] Description=Ollama Service #服务的形貌,这里说明这是一个 Ollama 服务。After=network-online.target #指定服务在网络在线之后启动。ExecStart=/usr/bin/ollama
serve
#指定启动服务时要运行的命令User=root #指明运行这个服务的用户是 rootGroup=rootRestart=alwaysRestartSec=3 #指定服务退出后,重启之前等待的时间为 3 秒。Environment="OLLAMA_HOST=0.0.0.0:11434" #设置服务运行时的环境变量,这里设置服务监听全部网络接口的 11434 端口,保证长途调用WantedBy=default.target
[*] 开启服务
[*] sudo systemctl daemon-reload #重新加载
sudo systemctl enable ollama
#启动
sudo systemctl start ollama
#启动
[*] 启动之后,访问你自己服务器的ip:11434,出现如下界面,即为启动成功~( 各位道友别忘了开放端口哈~)
https://i-blog.csdnimg.cn/direct/dcb3e8ebf87b44d3a487470cfe21931f.png
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模型堆栈地点
在这里可以选择非常多的模型,进行复制命令拉取,左边的下拉框表现的是模型训练的数据集巨细,固然模型数据集越大,精度越高,下载空间越大,运行内存越高
https://i-blog.csdnimg.cn/direct/e5c72942f1c64311beb853e1faf16066.png
博主利用的是2c4g的服务器就利用qwen2.5:1.5b进行示例部署启动
https://i-blog.csdnimg.cn/direct/5542a64e18d3455a81fc6273ae942cb7.png
表现success 后,ollama
会自动运行该模型,在选中的>>>中输入问题即可
https://i-blog.csdnimg.cn/direct/a4213ec9f3a84837896148b6e6150739.png
二、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 #openWebUIopen-webui: image: backplane/open-webui:0.1-ollama
container_name: open-webui restart: always ports: - "3000:8080" #端口映射 environment: - OLLAMA_BASE_URL=http://:11434 #openwebui 连接本地部署的ollama
地点 volumes: - ollama
:/root/.ollama
- open-webui:/app/backend/datavolumes:ollama
:open-webui:networks:share_net: external: name: my_net 编写完成之后,将docker-compose.yml上传至服务器,通过命令进入上传目次,实行
docker-compose up -d
启动openWebUI
https://i-blog.csdnimg.cn/direct/4beae65ac5d94c4085da5e9a6e747e3a.png
此时在docker可视化界面【portainer】中可以看到openWebUI的运行状态
https://i-blog.csdnimg.cn/direct/72b60aac7ad844ed8bbd6aed97ed7634.png
再通过访问服务器的3000端口(我这儿是3000,道友们可以自定义),可以看到如下界面
https://i-blog.csdnimg.cn/direct/58256c8edef7449881f42def3504c76d.png
初次进入需要进行用户注册,注册完成后默认是管理员身份,点击登录即可
https://i-blog.csdnimg.cn/direct/3f088a7ee42b4212adda4614e66e0d54.png
在左上角可以选择linux服务器上拉取到的大模型,随后便可以进行提问
https://i-blog.csdnimg.cn/direct/1fe046712a9545969a5b357c84d459d4.png
至此呢 本地大模型可视化UI部署已完成,其实还算简朴
三、SpringBoot集成ollama
那么作为一名开发者,不仅仅是部署完成就竣事了,除了可视化界面之外,在自己的一些项目中也可以集成自己及部署的大模型,在此简述一下SpringBoot集成ollama
其实官方的一些api中比力多的是python以及go的一些调用方式,关于java的调用好像是比减少的。
但是在github中相关的自定义封装工具是比力多的,在此我们简朴的设置利用【Olama4j】进行简朴调用
olama4j相关文档说明
1.初始化项目
简朴的springBoot项目 不在过多赘述
2.集成依赖
<dependency> <groupId>io.github.ollama
4j</groupId> <artifactId>ollama
4j</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.ollama
4j.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@Datapublic 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.ollama
4j.OllamaAPI;import io.github.ollama
4j.exceptions.OllamaBaseException;import io.github.ollama
4j.models.response.OllamaResult;import io.github.ollama
4j.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 * @注释 */@RestControllerpublic class OpenOllamaController { @Resource private OllamaConfig ollama
; @PostMapping("/hello") public String sayHello() throws OllamaBaseException, IOException, InterruptedException { OllamaAPI ollama
Client = ollama
.generateOllamaClient(); OllamaResult hello_world = ollama
Client.generate(ollama
.getModel(), "hello world", true,new OptionsBuilder().build()); return hello_world.getResponse(); }} 5.运行效果
https://i-blog.csdnimg.cn/direct/373a9dbe7aea4b349b590865bf04b8f0.png
至此 已经完成了ollama
的本地化部署,可视化界面部署,简朴的java调用
那么对于一些比力生层次的内容,道友们自行参考,自行学习
假如你觉得这边文章对你有用,别忘了一键三连,谢谢
页:
[1]