本地部署大模型ollama+docker+open WebUI/Lobe Chat

2024-05-05 08:36

本文主要是介绍本地部署大模型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有两种方式

  1. Docker方式(官网推荐)
  2. 源代码部署安装方式:(文档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 部署

  1. 使用 Vercel、Zeabur 或 Sealos 部署;
  2. 使用 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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/961262

相关文章

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

在java中如何将inputStream对象转换为File对象(不生成本地文件)

《在java中如何将inputStream对象转换为File对象(不生成本地文件)》:本文主要介绍在java中如何将inputStream对象转换为File对象(不生成本地文件),具有很好的参考价... 目录需求说明问题解决总结需求说明在后端中通过POI生成Excel文件流,将输出流(outputStre