本地部署大模型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-ollama
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        options:
          model: qwen:4b   

写代码

在这里插入图片描述

@RestController
public class OllamaController {

    @Autowired
    private 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/
    • 基于中文语言理解测评基准,包括代表性的数据集、基准(预训练)模型、语料库、排行榜;
    • 选择一系列有一定代表性的任务对应的数据集,做为测试基准的数据集,这些数据集会覆盖不同的任务、数据量、任务难度;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线性数据结构-手写链表-LinkList

为什么需要手写实现数据结构&#xff1f; 其实技术的本身就是基础的积累和搭建的过程&#xff0c;基础扎实 地基平稳 万丈高楼才会久战不衰&#xff0c;做技术能一通百&#xff0c;百通千就不怕有再难得技术了。 一&#xff1a;链表的分类 主要有单向&#xff0c;双向和循环链表…

迎接AI时代:智能科技的社会责任与未来展望

AI智能体的社会角色、伦理挑战与可持续发展路径 引言&#xff1a; 在技术的浪潮中&#xff0c;AI智能体正逐步成为我们生活的一部分。它们在医疗、教育、交通等领域的应用&#xff0c;预示着一个全新的时代即将到来。本文将结合实际案例和数据分析&#xff0c;深入探讨AI智能体…

vue3--element-plus-抽屉文件上传和富文本编辑器

一、封装组件 article/components/ArticleEdit.vue <script setup> import { ref } from vue const visibleDrawer ref(false)const open (row) > {visibleDrawer.value trueconsole.log(row) }defineExpose({open }) </script><template><!-- 抽…

《MySQL45讲》读书笔记

重建表 alter table t engine InnoDB&#xff08;也就是recreate&#xff09;&#xff0c;而optimize table t 等于recreateanalyze&#xff0c;让表大小变小 重建表的执行流程 建立一个临时文件&#xff0c;扫描表 t 主键的所有数据页&#xff1b;用数据页中表 t 的记录生…

华为机考入门python3--(22)牛客22- 汽水瓶

分类&#xff1a;数字 知识点&#xff1a; 整除符号// 5//3 1 取余符号% 5%3 2 题目来自【牛客】 import sysdef calc_soda_bottles(n):if n 0: # 结束输入&#xff0c;不进行处理returnelse:# 循环进行汽水换算total_drunk 0 # 记录总共喝了多少瓶汽水while…

XSS注入漏洞解析(上)

XSS跨站脚本介绍 跨站脚本&#xff08;Cross-Site Scripting&#xff0c;XSS/CSS&#xff09;是一种经常出现在Web应用程序中的计算机安全漏洞&#xff0c;是 由于Web应用程序对用户的输入过滤不足而产生的。攻击者利用网站漏洞把恶意的脚本代码&#xff08;通常包括 HTML代码和…

深入浅出 BERT

Transformer 用于学习句子中的长距离依赖关系&#xff0c;同时执行序列到序列的建模。 它通过解决可变长度输入、并行化、梯度消失或爆炸、数据规模巨大等问题&#xff0c;比其他模型表现更好。使用的注意力机制是神经架构的一部分&#xff0c;使其能够动态突出显示输入数据的…

Meta Llama 3 使用 Hugging Face 和 PyTorch 优化 CPU 推理

原文地址&#xff1a;meta-llama-3-optimized-cpu-inference-with-hugging-face-and-pytorch 了解在 CPU 上部署 Meta* Llama 3 时如何减少模型延迟 2024 年 4 月 19 日 万众期待的 Meta 第三代 Llama 发布了&#xff0c;我想确保你知道如何以最佳方式部署这个最先进的&…

java基于云计算的SaaS医院his信息系统源码 HIS云平台源码

目录 云HIS功能模块 1、预约挂号&#xff1a; 2、药库管理&#xff1a; 3、门诊医生站&#xff1a; 4、门诊费用&#xff1a; 5、药房管理&#xff1a; 6、治疗室&#xff08;门诊护士工作站&#xff09;&#xff1a; 7、统计分析&#xff1a; 8、财务管理&#xff1a;…

vue快速入门(五十三)使用js进行路由跳转

注释很详细&#xff0c;直接上代码 上一篇 新增内容 几种常用的路由跳转方式演示 源码 App.vue <template><div id"app"><div class"nav"><!-- router-link 自带两个高亮样式类 router-link-exact-active和router-link-active区别&a…

《QT实用小工具·五十四》果冻弹出效果的动画按钮

1、概述 源码放在文章末尾 该项目实现动画按钮&#xff0c;鼠标放在按钮上可以弹性拉出的三个按钮&#xff0c;使用贝塞尔曲线实现&#xff0c;项目demo显示如下所示&#xff1a; 项目部分代码如下所示&#xff1a; #ifndef WATERCIRCLEBUTTON_H #define WATERCIRCLEBUTTON…

MySQL CRUD进阶

前言&#x1f440;~ 上一章我们介绍了CRUD的一些基础操作&#xff0c;关于如何在表里进行增加记录、查询记录、修改记录以及删除记录的一些基础操作&#xff0c;今天我们学习CRUD&#xff08;增删改查&#xff09;进阶操作 如果各位对文章的内容感兴趣的话&#xff0c;请点点小…

mac查看Linux服务器的性能

mac上安装 linux系统 如果有 linux服务器账号密码&#xff0c;那么上一部可忽略&#xff1b; 比如&#xff1a;直接连接阿里云或腾讯云账号 1. 安装termius 链接: https://pan.baidu.com/s/1iYsZPZThPizxqtkLPT89-Q?pwdbw6j 提取码: bw6j 官网 Termius - SSH platform for …

[Linux][网络][TCP][一][TCP基础][TCP报头]详细讲解

目录 1.TCP头部格式2.TCP协议的特点3.TCP如何封装与分用4.通过序列号和确认应答号提高可靠性1.32位序列号2.32位确认应答号3.保证可靠性4.为什么序列号和确认应答号是单独的字段 5.窗口大小1.TCP的发送和接收缓冲区2.窗口大小 6.连接管理机制 1.TCP头部格式 TCP全称为"传输…

C语言数据结构之队列

目录 1.队列的概念及结构2.队列的实现逻辑3.队列的代码实现4.相关例题选择题 •͈ᴗ•͈ 个人主页&#xff1a;御翮 •͈ᴗ•͈ 个人专栏&#xff1a;C语言数据结构 •͈ᴗ•͈ 欢迎大家关注和订阅!!! 1.队列的概念及结构 队列&#xff1a;只允许在一端进行插入数据操作&#x…

SpringBoot与SpringMVC的区别

SpringBoot与SpringMVC的区别是什么&#xff1f; SpringBoot和SpringMVC是Java开发中常用的两个框架&#xff0c;它们都是由Spring框架所提供的&#xff0c;但在功能和使用方式上有着一些区别。本文将分别介绍SpringBoot和SpringMVC的特点和区别。 一、SpringBoot的特点&#…

第16章 基于结构的测试技术(白盒测试技术)

一、静态测试技术 &#xff08;一&#xff09;概述 不运行程序代码的情况下&#xff0c;通过质量准则或其他准则对测试项目进行检查的测试类型&#xff0c;人工或工具检查。 1、代码检查 2、编码规则检查 软件编码规范评测&#xff1a;源程序文档化、数据说明、语句结构、…

wpf线程中更新UI的4种方式

在wpf中&#xff0c;更新UI上面的数据&#xff0c;那是必经之路&#xff0c;搞不好&#xff0c;就是死锁&#xff0c;或者没反应&#xff0c;很多时候&#xff0c;都是嵌套的非常深导致的。但是更新UI的方式&#xff0c;有很多的种&#xff0c;不同的方式&#xff0c;表示的意思…

01-MySQL 基础篇笔记

一、MySQL 概述 1.1 数据库相关概念 数据库&#xff1a;&#xff08;DB&#xff1a;DataBase&#xff09; 存储数据的仓库&#xff0c;数据是有组织的进行存储 数据库管理系统&#xff1a;&#xff08;DBMS&#xff1a;DataBase Management System&#xff09; 操作和管理数…

论文阅读笔记(AAAI 20)Order Matters

个人博客地址 注&#xff1a;部分内容参考自GPT生成的内容 论文笔记&#xff1a;Order Matters&#xff08;AAAI 20&#xff09; 用于二进制代码相似性检测的语义感知神经网络 论文:《Order Matters: Semantic-Aware Neural Networks for Binary Code Similarity Detection》…