后端依赖(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/16.1-backend-dependencies
翻译时间:2026-06-09T16:12:03.072Z
翻译模型:deepseek-chat
原文字符数:15468
项目:Open WebUI (open-webui)
---
后端依赖
相关源文件
以下文件为本 wiki 页面的生成上下文:
.github/workflows/integration-test.disabledbackend/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.yamlpyproject.tomluv.lock
目的与范围
本文档按功能类别组织,涵盖 Open WebUI 后端所需的所有 Python 依赖。它解释了每个主要依赖的作用、依赖在配置文件中的组织方式,以及哪些依赖是可选的、哪些是必需的。前端 JavaScript/TypeScript 依赖请参见前端依赖。控制依赖激活的环境配置请参见环境配置。
依赖管理结构
Open WebUI 使用多个主要文件来管理后端依赖,并逐步向 pyproject.toml 和 uv.lock 等现代标准迁移。
配置文件:
backend/requirements.txt:完整的生产依赖backend/requirements.txt:1-161。pyproject.toml:项目元数据和 pip 可安装包定义pyproject.toml:1-251。backend/requirements-min.txt:基本功能的最小依赖子集backend/requirements-min.txt:1-60。uv.lock:包含精确解析版本的锁定文件,用于可重现构建uv.lock:1-15。
依赖声明模式:
# pyproject.toml 定义核心依赖
[project]
dependencies = [
"fastapi==0.135.1",
"uvicorn[standard]==0.41.0",
...
]
# 特定功能的可选依赖
[project.optional-dependencies]
postgres = [
"psycopg2-binary==2.9.11",
"pgvector==0.4.2",
]
来源:pyproject.toml:8-124, backend/requirements.txt:1-161, backend/requirements-min.txt:4-60
依赖类别概览
graph TB
subgraph "核心框架"
FastAPI["fastapi==0.135.1<br/>Web 框架"]
Uvicorn["uvicorn[standard]==0.41.0<br/>ASGI 服务器"]
Pydantic["pydantic==2.12.5<br/>数据验证"]
end
subgraph "安全与认证"
JWT["PyJWT[crypto]==2.11.0"]
Authlib["authlib==1.6.10<br/>OAuth 支持"]
Bcrypt["bcrypt==5.0.0"]
Argon2["argon2-cffi==25.1.0"]
LDAP["ldap3==2.9.1"]
end
subgraph "数据库层"
SQLAlchemy["sqlalchemy==2.0.48<br/>ORM"]
Alembic["alembic==1.18.4<br/>迁移"]
Peewee["peewee==3.19.0<br/>遗留 ORM"]
Redis["redis==7.4.0<br/>缓存/会话"]
end
subgraph "AI/LLM 集成"
OpenAI["openai==2.29.0<br/>OpenAI API"]
Anthropic["anthropic==0.86.0<br/>Claude API"]
GoogleAI["google-genai==1.66.0<br/>Gemini API"]
Transformers["transformers==5.5.4<br/>本地模型"]
SentenceTransformers["sentence-transformers==5.4.0<br/>嵌入"]
LangChain["langchain==1.2.10<br/>LLM 框架"]
MCP["mcp==1.26.0<br/>模型上下文协议"]
end
subgraph "向量数据库"
ChromaDB["chromadb==1.5.2"]
Qdrant["qdrant-client==1.17.0"]
Milvus["pymilvus==2.6.9"]
Weaviate["weaviate-client==4.20.3"]
OpenSearch["opensearch-py==3.1.0"]
PGVector["pgvector==0.4.2"]
Pinecone["pinecone==6.0.2"]
end
subgraph "文档处理"
PyPDF["pypdf==6.7.5"]
Docx2txt["docx2txt==0.9"]
PythonPPTX["python-pptx==1.0.2"]
Unstructured["unstructured==0.18.31"]
Pandas["pandas==3.0.1"]
Openpyxl["openpyxl==3.1.5"]
RapidOCR["rapidocr-onnxruntime==1.4.4"]
end
subgraph "云存储"
Boto3["boto3==1.42.62<br/>AWS S3"]
GCS["google-cloud-storage==3.9.0"]
AzureBlob["azure-storage-blob==12.28.0"]
end
subgraph "音频处理"
FasterWhisper["faster-whisper==1.2.1<br/>语音转文字"]
Pydub["pydub==0.25.1<br/>音频工具"]
Soundfile["soundfile==0.13.1"]
end
FastAPI --> Pydantic
FastAPI --> Uvicorn
SQLAlchemy --> Alembic
来源:backend/requirements.txt:1-161, pyproject.toml:9-124
核心 Web 框架依赖
HTTP 框架栈
| 包名 | 版本 | 用途 | 必需 |
|---|---|---|---|
fastapi | 0.135.1 | 支持 OpenAPI 的现代异步 Web 框架 | 是 |
uvicorn[standard] | 0.41.0 | 支持 WebSocket 和 watchfiles 的 ASGI 服务器 | 是 |
pydantic | 2.12.5 | 数据验证和设置管理 | 是 |
python-multipart | 0.0.22 | 文件上传的多部分表单数据解析 | 是 |
starlette-compress | 1.7.0 | Gzip/Brotli 响应压缩中间件 | 是 |
itsdangerous | 2.2.0 | 加密签名的会话数据 | 是 |
来源:backend/requirements.txt:1-5, backend/requirements.txt:20-21, pyproject.toml:9-13
HTTP 客户端库
| 包名 | 版本 | 用途 |
|---|---|---|
requests | 2.33.1 | 用于外部 API 的同步 HTTP 客户端 |
aiohttp | 3.13.5 | 异步 HTTP 客户端(注意:明确避免使用 3.13.3 版本) |
httpx[socks,http2,zstd,cli,brotli] | 0.28.1 | 支持 HTTP/2 和 SOCKS 的现代 HTTP 客户端 |
async-timeout | 5.0.1 | 异步操作的超时上下文管理器 |
来源:backend/requirements.txt:15-17, backend/requirements.txt:23, pyproject.toml:23-25, pyproject.toml:31
实时通信
| 包名 | 版本 | 用途 |
|---|---|---|
python-socketio | 5.16.1 | 用于 WebSocket 的 Socket.IO 服务器实现 |
starsessions[redis] | 2.2.1 | 支持 Redis 后端的会话中间件 |
pycrdt | 0.12.47 | 用于协作编辑的 CRDT 数据结构 |
redis | 7.4.0 | 用于缓存和发布/订阅的 Redis 客户端 |
来源:backend/requirements.txt:7, backend/requirements.txt:24, backend/requirements.txt:34-35, pyproject.toml:15, pyproject.toml:32, pyproject.toml:42-43
认证与安全依赖
graph LR
subgraph "令牌管理"
JWT["PyJWT[crypto]==2.11.0<br/>JWT 编码/解码"]
Jose["python-jose==3.5.0<br/>遗留 JWT 支持"]
Cryptography["cryptography==46.0.5<br/>加密原语"]
end
subgraph "密码哈希"
Bcrypt["bcrypt==5.0.0<br/>Bcrypt 算法"]
Argon2["argon2-cffi==25.1.0<br/>Argon2 算法"]
end
subgraph "OAuth/LDAP"
Authlib["authlib==1.6.10<br/>OAuth 2.1 客户端"]
LDAP3["ldap3==2.9.1<br/>LDAP 认证"]
end
JWT --> AuthUtils["认证工具"]
Jose --> AuthUtils
Bcrypt --> AuthUtils
Argon2 --> AuthUtils
Authlib --> OAuthRoutes["OAuth 路由"]
LDAP3 --> OAuthRoutes
来源:backend/requirements.txt:8-13, backend/requirements.txt:146, pyproject.toml:16-21, pyproject.toml:123
安全包角色
JWT 令牌库:
PyJWT[crypto](2.11.0):主要 JWT 实现。python-jose(3.5.0):替代 JWT 库,支持更广泛的 JOSE 标准。cryptography(46.0.5):核心加密原语。
认证协议:
authlib(1.6.10):全面的 OAuth 2.1 和 OpenID Connect 客户端实现。ldap3(2.9.1):纯 Python LDAP v3 客户端,用于企业目录集成。
来源:backend/requirements.txt:8-13, backend/requirements.txt:146, pyproject.toml:16-21, pyproject.toml:123
数据库与 ORM 依赖
主要数据库栈
| 包名 | 版本 | 用途 |
|---|---|---|
sqlalchemy[asyncio] | 2.0.48 | 支持异步的现代 ORM(主要) |
alembic | 1.18.4 | 数据库迁移管理 |
peewee | 3.19.0 | 轻量级 ORM(遗留/迁移) |
peewee-migrate | 1.14.3 | Peewee 的迁移工具 |
来源:backend/requirements.txt:27-32, pyproject.toml:35-40
数据库驱动依赖
PostgreSQL 支持(可选):
psycopg[binary](3.2.9):现代 PostgreSQL 驱动。psycopg2-binary(2.9.11):遗留 PostgreSQL 驱动。pgvector(0.4.2):支持 PostgreSQL 向量相似性搜索。
其他数据库:
PyMySQL(1.1.2):MySQL 客户端。mariadb(1.1.14):MariaDB 连接器(可选)。pymongo(4.16.0):MongoDB 客户端。pymilvus(2.6.9):Milvus 向量数据库客户端。qdrant-client(1.17.0):Qdrant 客户端。elasticsearch(9.3.0):Elasticsearch 客户端。oracledb(3.4.2):Oracle 数据库驱动。pinecone(6.0.2):Pinecone 向量数据库客户端。
来源:backend/requirements.txt:120-134, pyproject.toml:139-167
AI 与 LLM 集成依赖
LLM 提供商 SDK
| 包名 | 版本 | 用途 |
|---|---|---|
openai | 2.29.0 | OpenAI API 客户端(及兼容 API) |
anthropic | 0.86.0 | Anthropic Claude API 客户端 |
google-genai | 1.66.0 | Google Gemini API SDK |
mcp | 1.26.0 | 用于工具集成的模型上下文协议 |
tiktoken | 0.12.0 | OpenAI 模型的 BPE 分词器 |
来源:backend/requirements.txt:45-50, pyproject.toml:52-57
LangChain 生态系统
| 包名 | 版本 | 用途 |
|---|---|---|
langchain | 1.2.10 | LLM 编排框架 |
langchain-community | 0.4.1 | 社区集成 |
langchain-classic | 1.0.1 | 经典 LangChain 组件 |
langchain-text-splitters | 1.1.1 | 文档分块工具 |
来源:backend/requirements.txt:52-55, pyproject.toml:59-62
本地模型与嵌入
| 包名 | 版本 | 用途 |
|---|---|---|
transformers | 5.5.4 | Hugging Face Transformers |
sentence-transformers | 5.4.0 | 嵌入生成 |
accelerate | 1.13.0 | 模型推理优化 |
onnxruntime | 1.24.3 | ONNX 模型执行 |
来源:backend/requirements.txt:62-64, backend/requirements.txt:96, pyproject.toml:70-72, pyproject.toml:103
文档处理依赖
内容提取引擎
| 包名 | 版本 | 支持格式 |
|---|---|---|
pypdf | 6.7.5 | PDF 解析 |
docx2txt | 0.9 | Microsoft Word |
python-pptx | 1.0.2 | PowerPoint |
unstructured | 0.18.31 | 通用文档加载 |
pandas | 3.0.1 | CSV/Excel 数据处理 |
openpyxl | 3.1.5 | Excel (.xlsx) 支持 |
pyxlsb | 1.0.10 | Excel (.xlsb) 支持 |
xlrd | 2.0.2 | 遗留 Excel (.xls) 支持 |
来源:backend/requirements.txt:70-85, pyproject.toml:78-91
专用处理
rapidocr-onnxruntime(1.4.4):本地 OCR 支持。faster-whisper(1.2.1):本地语音转文字。youtube-transcript-api(1.2.4):YouTube 字幕提取。pytube(15.0.0):YouTube 元数据和下载。pydub(0.25.1):音频处理。ddgs(9.11.3):DuckDuckGo 搜索 API。
来源:backend/requirements.txt:93, backend/requirements.txt:97, backend/requirements.txt:100-105, pyproject.toml:100, pyproject.toml:104, pyproject.toml:110-111
云存储与服务集成
graph TB
subgraph "存储提供商"
S3["boto3==1.42.62<br/>AWS S3 客户端"]
GCS["google-cloud-storage==3.9.0<br/>GCP 存储客户端"]
Azure["azure-storage-blob==12.28.0<br/>Azure Blob 客户端"]
end
subgraph "实现"
ProviderBase["backend/open_webui/storage/provider.py<br/>StorageProvider 抽象基类"]
S3Provider["S3StorageProvider"]
GCSProvider["GCSStorageProvider"]
AzureProvider["AzureStorageProvider"]
end
S3 --> S3Provider
GCS --> GCSProvider
Azure --> AzureProvider
ProviderBase --> S3Provider
ProviderBase --> GCSProvider
ProviderBase --> AzureProvider
来源:backend/open_webui/storage/provider.py:40-375, backend/requirements.txt:112-118, backend/requirements.txt:106-109
云集成包详情
boto3(1.42.62):用于 S3 存储的 AWS SDK。在S3StorageProvider中用于管理云文件持久化backend/open_webui/storage/provider.py:101-131。google-api-python-client(2.193.0)、google-auth-httplib2(0.3.0)、google-auth-oauthlib(1.3.0)、googleapis-common-protos(1.72.0)、google-cloud-storage(3.9.0):GCS 客户端和认证。在GCSStorageProvider中使用backend/open_webui/storage/provider.py:222-250。azure-ai-documentintelligence(1.0.2)、azure-identity(1.25.2)、azure-storage-blob(12.28.0)、azure-search-documents(11.6.0):Azure 存储客户端和 AI 服务。在AzureStorageProvider中使用backend/open_webui/storage/provider.py:304-332。
来源:backend/requirements.txt:106-118, backend/open_webui/storage/provider.py:101-332
可观测性与追踪
Open WebUI 实现了 OpenTelemetry 用于分布式追踪和监控。
| 包名 | 版本 | 用途 |
|---|---|---|
opentelemetry-api | 1.40.0 | 核心 OTel API |
opentelemetry-sdk | 1.40.0 | SDK 实现 |
opentelemetry-exporter-otlp | 1.40.0 | 用于追踪和指标的 OTLP 导出器 |
opentelemetry-instrumentation | 0.61b0 | 基础仪表化包 |
opentelemetry-instrumentation-fastapi | 0.61b0 | FastAPI 自动仪表化 |
opentelemetry-instrumentation-sqlalchemy | 0.61b0 | 数据库查询追踪 |
opentelemetry-instrumentation-redis | 0.61b0 | Redis 追踪 |
opentelemetry-instrumentation-requests | 0.61b0 | Requests 库追踪 |
opentelemetry-instrumentation-logging | 0.61b0 | 日志仪表化 |
opentelemetry-instrumentation-httpx | 0.61b0 | httpx 库追踪 |
opentelemetry-instrumentation-aiohttp-client | 0.61b0 | aiohttp 客户端追踪 |
opentelemetry-instrumentation-system-metrics | 0.61b0 | 系统指标收集 |
来源:backend/requirements.txt:149-160
测试依赖
pytest(8.4.1):核心测试框架backend/requirements.txt:142。pytest-docker(3.2.5):在集成测试中管理 Docker 容器backend/requirements.txt:143。docker(~=7.1.0):Docker 的 Python 客户端backend/requirements.txt:141。
来源:backend/requirements.txt:141-143, pyproject.toml:156-158
平台特定约束
pyarrow==20.0.0:为树莓派兼容性固定版本backend/requirements.txt:65。av==14.0.1:因 FATAL FIPS SELFTEST FAILURE 固定版本backend/requirements.txt:135。playwright==1.58.0:必须与docker-compose.playwright.yaml中的版本匹配backend/requirements.txt:130,docker-compose.playwright.yaml:3。
来源:backend/requirements.txt:65, backend/requirements.txt:130, backend/requirements.txt:135, docker-compose.playwright.yaml:3