本地部署大模型ollama+docker+open WebUI/Lobe Chat
文章目录
- 大模型工具Ollama
- 下载
- 安装
- 运行
- Spring Ai 代码测试
- 加依赖
- 配置
- 写代码
- ollama的web&Desktop
- 搭建部署Open WebUI有两种方式
- Docker Desktop
- Docker部署Open WebUI
- Docker部署Lobe Chat
- 可以配置OpenAI的key
- 也可以配置ollama
- 大模型的选择
本篇基于windows环境下配置
大模型工具Ollama
https://ollama.com/

下载
https://ollama.com/download
windows环境下就安装windows版本


安装
点击下载的exe文件进行傻瓜式安装
运行
去ollama官网(models模块下)找大模型的名字,然后复制ollama的运行名字
https://ollama.com/library

ollama run qwen:4b
Spring Ai 代码测试
默认ollama会监听11434端口,可以使用下面命令查看

netstat -ano | findstr 11434
可以使用ollama list指令查看本地已经下好的大模型
ollama list

加依赖
<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-ollama-spring-boot-starter</artifactId></dependency>
或者使用23版以上的idea,创建spring项目的时候选最新版本,直接勾选上AI模块下的ollama模块
配置
spring:application:name: open-ai-05-ollamaai:ollama:base-url: http://localhost:11434chat:options:model: qwen:4b
写代码

@RestController
public class OllamaController {@Autowiredprivate OllamaChatClient ollamaChatClient;@RequestMapping(value = "/ai/ollama")public Object ollama(@RequestParam(value = "msg") String msg){String call = ollamaChatClient.call(msg);System.out.println(call);return call;}@RequestMapping(value = "/ai/ollama2")public Object ollama2(@RequestParam(value = "msg") String msg){ChatResponse response = ollamaChatClient.call(new Prompt(msg,OllamaOptions.create().withModel("qwen:4b").withTemperature(0.4f)));String content = response.getResult().getOutput().getContent();System.out.println(content);return content;}
}
ollama的web&Desktop
看ollama的github主页下面有很多的web&Desktop,比较流行的是Open WenUI
Open WenUI Github https://github.com/open-webui/open-webui
Open WenUI 官网:https://github.com/open-webui/open-webui
搭建部署Open WebUI有两种方式
- Docker方式(官网推荐)
- 源代码部署安装方式:(文档https://docs.openwebui.com/getting-started/)
Docker Desktop
windows环境下推荐使用Docker Desktop
轻量化,界面化操作Docker容器
官网下载安装包
https://www.docker.com/products/docker-desktop/
下载后傻瓜式安装即可,安装后需要重启,然后打开Docker Desktop后的界面如下:

Docker部署Open WebUI
在docker中运行Open WebUI
在命令行运行docker指令
docker run -d -p 3000:8080 --add-host=host.docker.internal:host-gateway -v D:\dev\open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main
这是一个 docker run 命令,用于启动一个新的 Docker 容器,下面是这个命令各个部分的解释:
- docker run:这是 Docker 的命令,用于从指定的镜像启动一个新的容器;
- -d:表示在“分离”模式下运行容器,即后台运行;
- -p 3000:8080:端口映射,表示将宿主机的3000端口映射到容器的8080端口,当你访问宿主机的3000端口时,实际上会访问容器内的8080端口;
- –add-host=host.docker.internal:host-gateway:这个选项向容器的 /etc/hosts 文件中添加一条记录,这通常用于让容器能够解析到宿主机的名称,并且将其 IP 地址设置为宿主机的网关地址,这在某些网络配置中很有用,尤其是当容器需要知道宿主机的地址时;
- -v D:\dev\open-webui:/app/backend/data:卷挂载,这表示将宿主机的 D:\dev\open-webui 目录挂载到容器内的 /app/backend/data 目录,这样,容器和宿主机之间可以共享这个目录中的数据;
- –name open-webui:为容器指定一个名称,这里是 open-webui;
- –restart always:这个选项告诉 Docker 在容器退出时总是自动重启它,无论容器是因为何种原因退出,它都会自动重启;
- ghcr.io/open-webui/open-webui:main:这是你要运行的 Docker 镜像的完整名称,ghcr.io 是 GitHub Container Registry 的地址,open-webui/open-webui 是镜像的仓库和名称,main是标签,通常表示该镜像的最新或主分支版本;
第一次运行需要拉取镜像比较慢,等待执行完成

这时候打开docker desktop就可以在images模块下看到拉取到的镜像

我们在拉取镜像的时候指定了Web UI的端口为3000,所以访问3000端口即可
http://localhost:3000/
第一次会要求登录

注册并登录

上来后和Chatgpt的页面很像的。

select model的地方选择上我们通过ollama部署的模型。然后就可以开心聊天了
Docker部署Lobe Chat
官网:https://lobehub.com/
Github:https://github.com/lobehub/lobe-chat
- Built for you the Super Individual (专为你打造的超级个人)
- 现代化设计的开源 ChatGPT/LLMs
- 聊天应用与开发的UI框架; 支持语音合成、多模态、可扩展的(function call)插件系统;
- 一键免费拥有你自己的ChatGPT/Gemini/Claude/Ollama 应用;
Lobe Chat 部署
- 使用 Vercel、Zeabur 或 Sealos 部署;
- 使用 Docker 部署;
docker run -d -p 3210:3210 -e OPENAI_API_KEY=sk-xxxx -e ACCESS_CODE=lobe66 --name lobe-chat lobehub/lobe-chat
完整的部署文档:https://lobehub.com/zh/docs/self-hosting/start
同样的,在拉取完成后,docker desktop中也会有镜像,

同样的方式,访问我们指定的3210端口

这个需要点击设置去配置模型
可以配置OpenAI的key

注意代理的地址要在后面加上/v1
配置好后就可以访问openai
也可以配置ollama

本机默认代理地址可以不用配,模型列表中选上你的模型就可以使用了。
还可以加插件使用
也可以在本地部署更强大的模型,使用图片,文件,音频等模态
大模型的选择
- 大语言模型主要分为国外大模型 和 国内大模型;
- 国外大模型,可能受到一些限制,或者不稳定;
- 国内也有非常优秀的大模型,国内大模型排行榜:
- https://www.superclueai.com/
- 基于中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜;
- 选择一系列有一定代表性的任务对应的数据集,做为测试基准的数据集,这些数据集会覆盖不同的任务、数据量、任务难度;
相关文章:
本地部署大模型ollama+docker+open WebUI/Lobe Chat
文章目录 大模型工具Ollama下载安装运行Spring Ai 代码测试加依赖配置写代码 ollama的web&Desktop搭建部署Open WebUI有两种方式Docker DesktopDocker部署Open WebUIDocker部署Lobe Chat可以配置OpenAI的key也可以配置ollama 大模型的选择 本篇基于windows环境下配置 大模型…...
qt学习篇---界面按键关联(信号和槽)
目录 1.qt基础 2.做一个界面 创建project UI界面设计 信号和槽 1.控件改名字 2.什么是信号和槽 3.怎么关联信号和槽 自动关联 手动关联 1.qt基础 qt可移植性强,不久会用到MCU。很有意义学习 2.做一个界面 创建project 不要中文路径 选择QWidget .pro文件…...
python Django 的内置权限系统或自定义模型来存储更复杂的角色和权限关系
在 Django 中,管理用户权限和角色通常涉及到使用 Django 的内置权限系统或自定义模型来存储更复杂的角色和权限关系。下面是一个基本的指南,说明如何在 Django 中为后台管理系统分配权限并将其保存在数据库中,同时结合 Vue.js 和 Element UI 作为前端框架。 后端(Django)…...
不上班,我靠这5份赚钱副业养活了自己
在这个快节奏的社会里,很多人都在为生活奔波忙碌。今天,就让我来跟大家分享一下我的“躺平”秘籍吧! 这一个月来,我没有上班,但好在有副业养活自己。有时候,我真的觉得有一份自己喜欢的自媒体副业挺好的。…...
强一致性的皇冠:分布式事务模型的至高法则揭秘
关注微信公众号 “程序员小胖” 每日技术干货,第一时间送达! 引言 分布式事务模型是分布式系统设计的核心,关键在于保证数据一致性和事务完整性,尤其强调强一致性。诸如2PC、3PC、Saga、TCC等模型与协议,应运而生以解…...
mac/windows下安装docker,minikube
1、安装docker Get Started | Docker 下载安装docker 就行 启动后,就可以正常操作docker了 使用docker -v 验证是否成功就行 2、安装minikube,是基于docker-desktop的 2.1、点击设置 2.2、选中安装,这个可能需要一点时间 这样安装后&…...
【爬虫】fake_useragent的使用、BeautifulSoup(find()和find_all())
1 fake_useragent 2 BeautifulSoup 3 Beautiful Soup库的find()和find_all() 1 fake_useragent fake_useragent是一个Python库,用于生成随机的用户代理字符串。 用户代理是在HTTP请求中发送给服务器的一种标识,它告诉服务器发送请求的客户端的类型、版本…...
ComfyUI中图像亮度/对比度/饱和度处理
用上面这个节点可以同时设置图片的亮度、对比度和饱和度。 【保姆级教程】一口气分享在ComfyUI中常用的30多种基本图像处理方式 更多好玩且实用AIGC工作流和节点 星球号:32767063 本期资料链接 往期学习资料 整理AI学习资料库...
基于FPGA的DDS波形发生器VHDL代码Quartus仿真
名称:基于FPGA的DDS波形发生器VHDL代码Quartus仿真(文末获取) 软件:Quartus 语言:VHDL 代码功能: DDS波形发生器VHDL 1、可以输出正弦波、方波、三角波 2、可以控制输出波形的频率 DDS波形发生器原理…...
C++语法|可调用对象与function类型
文章目录 引入function的使用function类型的典型应用function类型的原理实现代码优化可变参的函数对象 引入 还记得C语言中的函数指针数组吗? 我们通过函数指针数组实现一个,图书管理系统的界面: #include <stdio.h> void doShowAllB…...
Linux学习之路 -- 文件 -- 文件描述符
前面介绍了与文件相关的各种操作,其中的各个接口都离不开一个整数,那就是文件描述符,本文将介绍文件描述符的一些相关知识。 目录 <1>现象 <2>原理 文件fd的分配规则和利用规则实现重定向 <1>现象 我们可以先通过prin…...
JDK动态代理和Cglib动态代理区别
1.如果目标类实现了接口,将会使用JDK动态代理,否则会使用Cglib动态代理; 2.JDK代理使用自己的字节码生成工具生成代理对象,而Cglib会使用ASM字节码生成工具去生成; 3.JDK动态代理是通过反射的方式去实现代理对象的所有方法,通过…...
牛客 | 字符金字塔
请打印输出一个字符金字塔,字符金字塔的特征请参考样例 #include <stdio.h> #include <string.h> using namespace std; int main() {char c;scanf("%c", &c);for (int i 1; i < (c - 64); i)//第一个循环决定了有多少行{//c:67 第三…...
【计算机科学速成课】笔记三——操作系统
文章目录 18.操作系统问题引出——批处理设备驱动程序多任务处理虚拟内存内存保护Unix 18.操作系统 问题引出—— Computers in the 1940s and early 50s ran one program at a time. 1940,1950 年代的电脑,每次只能运行一个程序 A programmer would write one at…...
用js代码实现贪吃蛇小游戏
js已经学了大部分了,现在就利用我所学的js知识试试做贪吃蛇小游戏吧 以下部分相关图片以及思路笔记均出自渡一陈老师的视频 首先制作简单的静态页面,添加贪吃蛇移动的背景和相关图片,比如开始游戏等等 将各个功能均封装在函数中࿰…...
微信小程序+esp8266温湿度读取
本文主要使用微信小程序显示ESP8266读取的温湿度并通过微信小程序控制LED灯。小程序界面如下图所示 原理讲解 esp8266 通过mqtt发布消息,微信小程序通过mqtt 订阅消息,小程序订阅后,就可以实时收到esp8266 传输来的消息。 个人可免费注册五个微信小程序账号,在微信小程序官…...
软考中级-软件设计师(十)网络与信息安全基础知识
一、网络概述 1.1计算机网络的概念 计算机网络的发展:具有通信功能的单机系统->具有通信功能的多机系统->以共享资源为目的的计算机网络->以局域网及因特网为支撑环境的分布式计算机系统 计算机网络的功能:数据通信、资源共享、负载均衡、高…...
推荐一个好用的命令行工具ShellGPT
ShellGPT 配置安装常用功能聊天写命令并执行 高级功能函数调用角色管理 总结 这两天突然想到,现有的很多工具都在被大模型重构,比如诞生了像perplexity.ai 这种新交互形式的搜索引擎,就连wps也推出了AI服务,甚至都可以直接生成ppt…...
Prompt提示词教程 | 提示工程指南 | 提示词示例 入门篇
在上一节中,我们介绍并给出了如何赋能大语言模型的基本示例。如果还没看而且是刚入门的同学建议看下,有个基本概念。 Prompt提示词教程 | 提示工程指南 | 提示工程简介https://blog.csdn.net/HRG520JN/article/details/138523705在本节中,我…...
uniapp + uView动态表单校验
项目需求:动态循环表单,并实现动态表单校验 页面: <u--form label-position"top" :model"tmForm" ref"tmForm" label-width"0px" :rulesrules><div v-for"(element, index) in tmForm…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Qt Http Server模块功能及架构
Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词
Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...
C++使用 new 来创建动态数组
问题: 不能使用变量定义数组大小 原因: 这是因为数组在内存中是连续存储的,编译器需要在编译阶段就确定数组的大小,以便正确地分配内存空间。如果允许使用变量来定义数组的大小,那么编译器就无法在编译时确定数组的大…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
