【LLM】三、open-webui+ollama搭建自己的聊天机器人

news2024/11/20 20:39:50

系列文章目录

往期文章回顾:

【LLM】二、python调用本地的ollama部署的大模型

【LLM】一、利用ollama本地部署大模型


目录

前言

一、open-webui是什么

二、安装

1.docker安装

2.源码安装

三、使用

四、问题汇总

总结



前言

        前面的文章,我们已经学习了如何在本地搭建并调用自己大模型,今天我们的主要内容是通过open-webui+Ollama来搭建一个聊天机器人的前端页面。        


一、open-webui是什么

       官网地址:open- webUI

        Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 WebUI,旨在完全离线运行。它支持各种 LLM 运行器,包括 Ollama 和 OpenAI 兼容 API。

二、安装

1.docker安装

这里直接参考官方文档,安装即可。这里我推荐使用下面这条命令:

docker run -d -p 3000:8080 -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

其中,涉及到的参数解释如下:

  • -p 端口映射:将本地机器的端口 3000 映射到容器内的端口 8080。这意味着你可以通过访问 http://localhost:3000 来访问运行在容器内的服务。如果你的Ollama监听的端口是其他的,比如1001,那就改为-p 1001:8000即可,以此类推
  • -e OLLAMA_BASE_URL=https://example.com 是添加我们的Ollama服务,http://example.com改为自己的服务地址即可。
  • - v 目录挂载:将本地的 open-webui 卷映射到容器内的 /app/backend/data 目录。这用于持久化数据,确保即使容器停止或重新启动,数据也不会丢失。注意,open-webui不是固定的,你可以设置为任何存在的目录
  • --name 起名:为容器指定一个名称,如 open-webui,可通过docker ps -a 来查看所有的容器状况
  • --restart: 设置容器的重启策略,若为 always,这意味着容器如果停止(例如由于崩溃或系统重启),Docker 会自动重启它。
  • 其余参数用默认的即可

2.源码安装

        如果你不想用docker的方式安装,那就自己用源码去编译安装,参考链接为源码安装

三、使用

  •  按照上述方式部署成功后,在浏览器输入http:localhost:3000之后,首先会先让你注册,注册时,邮箱可以随便填,填123@123.com都可以,注册并登陆成功后进入如下界面:

        

  • 默认情况下界面时英文状态,点击红框中的设置键进入设置界面,如下:

        

        在通用里选择语言为中文然后点击保存即可汉化。

  • 在连接里我们可以绑定open AI的密钥或者我们用ollama自己部署的本地模型,如下:

        

        这里我用的是Ollama服务,对应的URL即为我们docker 启动命令里的-e OLLAMA_BASE_URL=这个参数,如果启动命令里没指定也可以在这里加入。

  • 设置完这里之后我们就可以回到主界面进行使用,先选择我们要调用的模型,如下:

        

        点击红框中的按钮即可选择我们本地已有的模型,选择一个然后即可开始对话,同时,聊天机器人窗口也会在左下方保存,如上图中的qwen2_7b即为我自己的聊天机器人窗口。

四、问题汇总

1、第一次启动容器之后,在浏览器输入http:localhost:3000,发现进入失败,容器也直接崩溃重启,通过打印docker 日志(docker logs 容器ID),爆出如下错误:    ​​​​​​​

解决办法:

docker启动时,命令改为如下:

docker run -d -p 3000:8080 -e HF_ENDPOINT=https://hf-mirror.com -e OLLAMA_BASE_URL=https://example.com -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:main

即增加一条指令:-e HF_ENDPOINT=https://hf-mirror.com

2、当在设置中添加Ollama的URL时没有生效

        在如下设置里添加Ollama的URL后,点击保存发现也没有生效

                

        解决办法:

        用以下命令重新启动容器

docker restart 容器ID(通过docker ps -a查询容器ID)

        


总结

以上就是本篇的全部内容,如有问题,欢迎评论区交流,或+企鹅群:995760755交流,如觉得有用,直接三连带回家。🐶

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

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

相关文章

Studying-代码随想录训练营day34| 62.不同路径、63.不同路径II、343.整数拆分、96.不同的二叉搜索树

第34天,动态规划part02,牢记五部曲步骤,编程语言:C 目录 62.不同路径 63.不同路径II 343.整数拆分 96.不同的二叉搜索树 总结 62.不同路径 文档讲解:代码随想录不同路径 视频讲解:手撕不同路径 题目…

红酒知识百科:从入门到精通

红酒,这个深邃而迷人的世界,充满了无尽的知识与奥秘。从葡萄的选择、酿造工艺,到品鉴技巧,每一步都蕴藏着深厚的文化底蕴和精细的技艺。今天,就让我们一起踏上这场红酒知识之旅,从入门开始,逐步…

2024年7月1日,公布的OpenSSH的漏洞【CVE-2024-6387】

目录 ■概要 ■概要(日语) ■相关知识 openssh 和 ssh 有区别吗 如何查看 openssh的版本 漏洞描述 glibc Linux是什么 如何查看系统是不是基于 Gibc RHEL Linux 是基于Glibc的Linux吗 还有哪些 Linux版本是基于 GNU C库(glibc&…

Github Actions 构建Vue3 + Vite项目

本篇文章以自己创建的项目为例,用Github Actions构建。 Github地址:https://github.com/ling08140814/myCarousel 访问地址:https://ling08140814.github.io/myCarousel/ 具体步骤: 1、创建一个Vue3的项目,并完成代…

谷粒商城 - 编写一个自定义校验注解

目录 开始 未来实现效果 第一步:编写自定义校验注解 第二步:编写自定义校验器 第三步:编写配置文件 效果演示 开始 未来实现效果 编写一个 ListValue 注解,可以实现功能有: 限定字段的值,例如指定只…

注解复习(java)

文章目录 注解内置注解**Deprecated**OverrideSuppressWarnings【不建议使用】Funcationallnterface 自定义注解元注解RetentionTargetDocumentedInherited 和 Repeatable 反射注解 前言:笔记基于动力节点 注解 注解可以标注在 类上,属性上&#xff0c…

LabVIEW中使用 DAQmx Connect Terminals作用意义

该图展示了如何在LabVIEW中使用 DAQmx Connect Terminals.vi 将一个信号从一个源端口连接到一个目标端口。这种处理有以下几个主要目的和作用: 同步操作: 在多任务、多通道或多设备系统中,可能需要不同的组件在同一时刻执行某些操作。通过将触…

深入理解循环神经网络(RNN)

深入理解循环神经网络(RNN) 循环神经网络(Recurrent Neural Network, RNN)是一类专门处理序列数据的神经网络,广泛应用于自然语言处理、时间序列预测、语音识别等领域。本文将详细解释RNN的基本结构、工作原理以及其优…

【鸿蒙学习笔记】创建自定义组件

官方文档:创建自定义组件 目录标题 [Q&A] 如何自定义组件?1・struct 自定义组件名 {...}2・build()函数:3・@Component4・Entry5・Reusable 自定义组件的参数 buil…

一篇经典Python编程常用的30个操作以及代码演示

这些案例将涵盖数据处理、算法、文件操作、数据可视化、网络编程、机器学习等多个领域. 以下是具体的操作步骤和示例代码: 基础操作 1. 计算两个数的和 def add(a, b): return a b print(add(3, 5)) 2. 判断一个数是否为偶数 def is_even(n): return n % …

谷歌+火狐浏览器——实现生成二维码并实现拖动——js技能提升

最新遇到的问题:前两个二维码拖动不了,只有第三个一维码生成后,才可以拖拽 【问题】:出现在都是绝对定位,但是没有指定z-index导致的。 解决办法:在方法中添加一个变量 renderDrag(id) {var isDragging f…

RDNet实战:使用RDNet实现图像分类任务(一)

论文提出的模型主要基于对传统DenseNet架构的改进和复兴,通过一系列创新设计,旨在提升模型性能并优化其计算效率,提出了RDNet模型。该模型的主要特点和改进点: 1. 强调并优化连接操作(Concatenation) 论文…

Java反射与Fastjson的危险反序列化

什么是Java反射? 在前文中,我们有一行代码 Computer macBookPro JSON.parseObject(preReceive,Computer.class); 这行代码是什么意思呢?看起来好像就是我们声明了一个名为 macBookPro 的 Computer 类,它由 fastjson 的 parseObje…

【解决ERROR】usage:conda [-h][-V] command... conda:error:unrecognized arguments

解决方法 conda env create --file conda3_520_env_deepPath.yml

拖地机检测液位的原理-管道液位传感器

在现代洗地机中,确保水箱液位充足是保证清洁效率和质量的关键之一。为了实现这一功能,洗地机通常配备了管道光电液位传感器,这种传感器利用先进的光学感应原理来准确检测水箱中的液位情况。 管道光电液位传感器的工作原理基于光学传感技术&a…

新手教学系列——crontab 使用不当引发的服务器性能问题

起因及症状 最近,我们的一台服务器随着运行时间的增加,逐渐出现了压力过大的问题。具体表现为数据库连接数飙升至 4000+,Redis 频繁超时,系统报错文件打开数过多等。针对这些问题,我们逐一检查了数据库连接池、Redis 连接池以及系统的 ulimit 配置,但都未能找到问题的根…

k8s中port,targetPort,nodePort,containerPort的区别

一、说明 在 Kubernetes 中,port、targetPort、nodePort 和 containerPort 是用于定义服务(Service)和容器之间网络通信的不同参数。 它们各自的作用和含义如下: 1. port 定义:这是服务对外暴露的端口号。作用&#x…

eBPF实战教程五|如何使用USDT探针定位MySQL异常访问(含源码)

前言 各位小伙伴们,非常感谢你们对我们eBPF专题系列文章的持续关注和热情支持!在之前的文章中,我们深入探讨了如何手写一个uprobe探测用户态程序。许多热心的小伙伴给我们发私信表达了他们对eBPF技术在数据库领域应用的浓厚兴趣,…

2024建博会|博联AI大模型全屋智能引领智能体验新纪元

7月8日,2024中国建博会(广州)在广交会展馆及保利世贸博览馆盛大启幕。BroadLink博联智能携AI大模型全屋智能以及AI商业照明解决方案惊喜亮相,全方位展示AI大模型在智能家居领域的前沿应用成果。 本次建博会,博联智能带…

《大语言模型的临床和外科应用:系统综述》

这篇题为《大语言模型的临床和外科应用:系统综述》的文章对大语言模型(LLM)目前在临床和外科环境中的应用情况进行了全面评估。 大语言模型(LLM)是一种先进的人工智能系统,可以理解和生成类似人类的文本。…