依赖管理(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/16-dependency-management
翻译时间:2026-06-09T16:11:45.145Z
翻译模型:deepseek-chat
原文字符数:6701
项目:Open WebUI (open-webui)
---
依赖管理
相关源文件
以下文件为本 wiki 页面的生成提供了上下文:
.github/workflows/integration-test.disabledCHANGELOG.mdbackend/open_webui/retrieval/web/firecrawl.pybackend/open_webui/retrieval/web/utils.pybackend/open_webui/storage/provider.pybackend/open_webui/test/apps/webui/storage/test_provider.pybackend/requirements-min.txtbackend/requirements.txtdocker-compose.playwright.yamlpackage-lock.jsonpackage.jsonpyproject.tomlsrc/app.csssrc/lib/components/common/RichTextInput.svelteuv.lock
本文档记录了 Open WebUI 前端和后端的项目依赖、构建系统及包管理。它从宏观层面概述了项目如何管理其由 AI/ML 库、Web 框架和协作工具构成的复杂生态系统。
关于具体依赖列表的详细技术细节,请参阅子页面:
- 后端依赖 — FastAPI 服务器、AI 集成和 RAG 管道的 Python 依赖项详细列表。
- 前端依赖 — SvelteKit、TipTap、Socket.IO-client 和 UI 库的文档。
- 构建系统与包管理 — 构建过程、
pyproject.toml配置、Vite/SvelteKit 构建及包分发的技术细节。
系统级依赖架构
Open WebUI 采用解耦架构,前端和后端各自独立管理其依赖树。后端使用基于 Python 的工具(pip、uv、hatch),而前端则依赖 Node.js 工具(npm、vite)。
依赖生态图谱
graph TB
subgraph "前端 (Node.js/SvelteKit)"
packagejson["package.json"]
packagelock["package-lock.json"]
svelte["Svelte 5 / SvelteKit"]
tiptap["TipTap 编辑器"]
socketio_client["socket.io-client"]
end
subgraph "后端 (Python/FastAPI)"
pyproject["pyproject.toml"]
reqtxt["requirements.txt"]
uvlock["uv.lock"]
fastapi["fastapi"]
langchain["langchain"]
providers["AI 客户端 (openai, anthropic 等)"]
end
subgraph "共享基础设施"
docker["Docker / Docker Compose"]
pyodide["Pyodide (浏览器中的 Python)"]
end
packagejson -->|"构建产物"| fastapi
pyodide -->|"由 package.json 获取"| packagejson
docker -->|"编排"| svelte
docker -->|"编排"| fastapi
来源: package.json:1-161, pyproject.toml:1-215, backend/requirements.txt:1-160, uv.lock:1-15
后端依赖
后端是一个 FastAPI 应用,集成了大量 AI 和数据处理库。依赖项主要在 pyproject.toml pyproject.toml:9-124 中定义,并在 requirements.txt backend/requirements.txt:1-135 中镜像,以确保部署稳定性。
关键后端子系统
- Web 框架: 基于
fastapibackend/requirements.txt:1和uvicornbackend/requirements.txt:2构建。 - AI/ML 集成: 包含
openaibackend/requirements.txt:48、anthropicbackend/requirements.txt:49和google-genaibackend/requirements.txt:50的原生客户端,以及用于 RAG 编排的langchainbackend/requirements.txt:52-55。 - 数据库与向量操作: 使用
sqlalchemybackend/requirements.txt:27处理 SQL,chromadbbackend/requirements.txt:58作为主要向量存储。最近的更新将异步驱动迁移到了psycopg(v3)CHANGELOG.md:30,49。 - 存储提供程序: 通过
StorageProvider抽象层backend/open_webui/storage/provider.py:40-56,支持本地、S3(boto3)、GCS(google-cloud-storage)和 Azure(azure-storage-blob)存储。
完整分类列表请参见后端依赖。
来源: backend/requirements.txt:1-161, pyproject.toml:9-172, CHANGELOG.md:30,49, backend/open_webui/storage/provider.py:1-35
前端依赖
前端是一个现代的 Svelte 5 应用 package.json:44,负责处理富文本编辑、实时协作和 LaTeX 渲染等复杂的 UI 任务。
关键前端库
- 核心框架:
sveltepackage.json:44和@sveltejs/kitpackage.json:27。 - 富文本编辑: 大量使用
@tiptap扩展实现笔记系统package.json:67-85,集成在RichTextInput.svelte等组件中src/lib/components/common/RichTextInput.svelte:130-153。 - 实时与协作:
socket.io-clientpackage.json:140用于事件处理,yjspackage.json:156用于共享编辑状态。 - 数据可视化:
mermaidpackage.json:122用于图表,chart.jspackage.json:93用于分析。
JS/Node.js 库的详细信息请参见前端依赖。
来源: package.json:54-157, src/lib/components/common/RichTextInput.svelte:121-171
构建系统与包管理
Open WebUI 使用复杂的构建流水线来桥接 Python 后端和 JavaScript 前端。
构建流程概览
项目使用 hatchling 作为构建后端 pyproject.toml:178-179。构建的一个独特之处在于将前端集成到 Python 包中。pyproject.toml 配置通过 force-include pyproject.toml:207 强制将编译后的前端构建产物包含到 Python wheel 中。
构建生命周期图
graph LR
subgraph "前端构建 (package.json)"
npm_i["npm install"]
py_fetch["npm run pyodide:fetch"]
vite_build["npm run build"]
end
subgraph "后端打包 (pyproject.toml)"
hatch_build["hatch build"]
wheel["open_webui.whl"]
end
npm_i --> py_fetch
py_fetch --> vite_build
vite_build -->|"产物输出到 build/"| hatch_build
hatch_build --> wheel
来源: package.json:5-23, pyproject.toml:174-208
关于构建脚本、pyodide 获取和 Docker 镜像构建的详细信息,请参见构建系统与包管理。