Open WebUI项目源码学习记录(从0开始基于纯CPU环境部署一个网页Chat服务)

感谢您点开这篇文章:D,鼠鼠我是一个代码小白,下文是学习开源项目Open WebUI过程中的一点笔记记录,希望能帮助到你~

本人菜鸟,持续成长,能力不足有疏漏的地方欢迎一起探讨指正,比心心~

通过本文,您可以了解:

  • Open WebUI项目的基本信息和架构

  • 通过ollama部署大模型、通过docker镜像和源码运行Open WebUI项目的方法

  • 项目后端代码在多情景(普通提问、联网搜索提问、上传PDF文件且联网提问、上传PDF文件非联网提问)下的相关代码实现逻辑

  • RAG****模块实现逻辑流程


目录

一、项目基本信息

二、运行项目源码

1、通过ollama部署大模型

1.1、安装ollma

1.2、配置ollama

1.3、下载模型

1.4、运行服务

命令行直接对话

REST API

2、搭建Open WebUI

2.1、通过docker部署

2.2、通过源码构建

?编辑

三、项目结构

1、backend目录(后端代码)

1.1、start.sh

1.2、data目录

1.3、open_webui目录

1.3.1、main.py

中间件(应用于FastAPI应用中)

Task Endpoints

Pipelines Endpoints

Config Endpoints

OAuth Login & Callback

1.3.2、apps目录

1.3.2.1、webui/main.py

1.3.2.2、webui/models(重点,数据库实体)

1.3.2.3、openai/main.py

1.3.2.4、openai/chat_interceptor

1.3.3、retrieval目录

main.py

utils.py

2、src目录(前端代码)

四、特定情景下代码链路逻辑

情景1:用户在界面发送消息时,代码调用逻辑:

情景2:用户进行联网搜索提问“武汉今天天气如何”时,代码调用逻辑:

情景3.1:用户上传PDF文件,让其帮忙总结(联网搜索功能关闭),代码逻辑:

情景3.2:用户上传PDF文件,让其帮忙总结,(联网搜索功能开启),代码逻辑:

五、总结



一、项目基本信息

  • Github:https://github.com/open-webui/open-webui

  • 官方文档:https://docs.openwebui.com/getting-started/

  • 代码版本:v0.3.32(2024.10.6)——本文学习版本,目前最新版本已更新至v0.3.35(截至2024.10.28)


二、运行项目源码

**作者本地环境:**Ubuntu24.04,纯CPU

通过ollama部署大模型qwen2:7b作为模型端,通过Open WebUI提供用户chat服务。

1、通过ollama部署大模型

ollama是大模型部署方案,对应docker,本质也是基于docker的容器化技术

1.1、安装ollma

官方地址:https://ollama.com/

开源地址:https://github.com/ollama/ollama

打开官网,点击Downloard,根据操作系统选择对应下载方式。

以Ubuntu24.04为例,通过下述命令下载:

curl -fsSL https://ollama.com/install.sh | sh

#下载完成后查询版本信息
ollama -v

#查看状态

如上,ollama已经成功安装。

1.2、配置ollama

通过编辑ollama.service进行配置:

sudo vim /etc/systemd/system/ollama.service
  • 更改HOST

由于Ollama的默认参数配置,启动时设置了仅本地访问,因此需要对HOST进行配置,开启监听任何来源IP。

[Service]
# 配置远程访问
Environment="OLLAMA_HOST=0.0.0.0"
  • 更改模型存储路径

默认情况下,不同操作系统大模型存储的路径如下:

macOS: ~/.ollama/models

Linux: /usr/share/ollama/.ollama/models

Windows: C:Users.ollamamodels

如果要修改模型文件的存储路径,设置如下:

[Service]
# 配置OLLAMA的模型存放路径
Environment="OLLAMA_MODELS=/data/ollama/models"

如果因为指定的目录ollama用户及用户组没有相应权限,导致服务不能启动。可以通过授权给相应的目录权限解决问题:

chown ollama:ollama ollama/models
  • 应用配置

重载systemd并重启Ollama

systemctl daemon-reload
systemctl restart ollama

配置完成后,访问测试。浏览器访问http://IP:11434/,出现Ollama is running代表成功。

1.3、下载模型

ollama的命令和docker操作命令非常相似。可通过shell窗口输入ollama查看相关命令:

******:~/work# ollama
Usage:
  ollama [flags]
  ollama [command]

Available Commands:
  serve       Start ollama
  create      Create a model from a Modelfile
  show        Show information for a model
  run         Run a model
  pull        Pull a model from a registry
  push        Push a model to a registry
  list        List models
  ps          List running models
  cp          Copy a model
  rm          Remove a model
  help        Help about any command

Flags:
  -h, --help      help for ollama
  -v, --version   Show version information

Use "ollama [command] --help" for more information about a command.

由上可知ollama相关命令:

ollama serve                # 启动ollama
ollama create               # 从模型文件创建模型
ollama show                # 显示模型信息
ollama run                # 运行模型
ollama pull                # 从注册仓库中拉取模型
ollama push                # 将模型推送到注册仓库
ollama list                # 列出已下载模型
ollama cp                # 复制模型
ollama rm                # 删除模型
ollama help                # 获取有关任何命令的帮助信息
  • 拉取qwen2-7b模型

    ollama pull qwen2:7b

    #下载成功查看模型
    ollama list

可见,已成功拉取:

也可以自定义模型,所谓自定义模型就是不适用Ollama官方模型库中的模型,理论可以使用其他各类经过转换处理的模型,有从GGUF导入和从PyTorch或Safetensors导入两种方式。

所谓从从PyTorch或Safetensors导入Ollama,其实就是使用llama.cpp项目,对PyTorch或Safetensors类型的模型进行转换、量化处理成GGUF格式的模型,然后再用Ollama加载使用 。

参考:Ollama:一个在本地部署、运行大型语言模型的工具-优快云博客

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值