图像生成集成(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/6.6-image-generation-integration
翻译时间:2026-06-09T16:08:54.676Z
翻译模型:deepseek-chat
原文字符数:7408
项目:Open WebUI (open-webui)
---
图像生成集成
相关源文件
以下文件被用作生成此 wiki 页面的上下文:
LICENSEREADME.mdTROUBLESHOOTING.mdbackend/open_webui/routers/audio.pybackend/open_webui/routers/images.pybackend/open_webui/utils/files.pysrc/lib/apis/images/index.tssrc/lib/components/admin/Settings/Audio.sveltesrc/lib/components/admin/Settings/Connections.sveltesrc/lib/components/admin/Settings/General.sveltesrc/lib/components/admin/Settings/Images.sveltesrc/lib/components/admin/Settings/Interface.sveltesrc/lib/components/admin/Settings/Models.sveltesrc/lib/components/admin/Settings/Pipelines.sveltesrc/lib/components/chat/Settings/About.sveltesrc/lib/components/playground/Images.sveltesrc/routes/(app)/playground/images/+page.svelte/playground/images/+page.svelte)static/manifest.json
图像生成集成系统在 Open WebUI 界面中提供自动化的图像创建和编辑能力。它支持多种后端引擎,包括 OpenAI (DALL-E)、Google Gemini (Imagen)、ComfyUI 和 AUTOMATIC1111 (Stable Diffusion)。该系统处理提示词增强、模型切换和自动文件持久化。
系统架构
图像生成逻辑主要包含在 images 路由中,该路由与各种外部 API 和本地扩散服务器交互。
graph TB
subgraph "前端层"
UI["Images.svelte<br/>Playground 组件"]
AdminSettings["Settings/Images.svelte<br/>管理面板"]
ImageAPI["lib/apis/images/index.ts<br/>API 封装"]
end
subgraph "后端路由 [routers/images.py]"
Router["APIRouter<br/>images.py:52"]
GetConfig["get_config<br/>images.py:161"]
SetModel["set_image_model<br/>images.py:55"]
GetModel["get_image_model<br/>images.py:84"]
end
subgraph "外部引擎"
OAI["OpenAI DALL-E"]
Gem["Gemini Imagen"]
A11["AUTOMATIC1111<br/>SD API"]
CUI["ComfyUI<br/>工作流 API"]
end
UI --> ImageAPI
AdminSettings --> ImageAPI
ImageAPI --> Router
Router --> OAI
Router --> Gem
Router --> A11
Router --> CUI
来源: backend/open_webui/routers/images.py:52-53、src/lib/components/admin/Settings/Images.svelte:8-15、src/lib/apis/images/index.ts:1-15
配置与引擎管理
系统使用集中式的 ImagesConfig Pydantic 模型来管理所有支持引擎的设置。此配置会被持久化,管理员可通过 WebUI 进行更新。
支持的引擎与模型
get_image_model 函数根据当前激活的引擎配置确定使用哪个模型:
- OpenAI:若未指定,默认为
dall-e-2backend/open_webui/routers/images.py:85-90。 - Gemini:默认为
imagen-3.0-generate-002backend/open_webui/routers/images.py:91-96。 - AUTOMATIC1111:从服务器的
/sdapi/v1/options端点获取当前的sd_model_checkpointbackend/open_webui/routers/images.py:102-113。
配置模式
| 字段 | 引擎 | 描述 |
|---|---|---|
IMAGE_GENERATION_ENGINE | 全局 | 可选值:openai、gemini、comfyui、automatic1111 |
AUTOMATIC1111_BASE_URL | A1111 | Stable Diffusion WebUI API 的基础 URL |
COMFYUI_BASE_URL | ComfyUI | ComfyUI 实例的基础 URL |
COMFYUI_WORKFLOW_NODES | ComfyUI | 用于提示词、模型和尺寸的节点映射列表 backend/open_webui/routers/images.py:139-140 |
来源: backend/open_webui/routers/images.py:118-159、src/lib/components/admin/Settings/Images.svelte:118-142
ComfyUI 工作流集成
ComfyUI 集成具有高度灵活性,允许用户通过 UI 定义自定义工作流。后端将特定的工作流节点映射到生成参数,如提示词文本、种子和图像尺寸。
必需的节点映射
前端定义了标准节点类型,这些类型必须在 ComfyUI JSON 工作流中进行映射:
prompt:文本输入节点src/lib/components/admin/Settings/Images.svelte:33-36。model:检查点加载器节点src/lib/components/admin/Settings/Images.svelte:39-42。width/height:分辨率节点src/lib/components/admin/Settings/Images.svelte:44-52。steps/seed:采样参数src/lib/components/admin/Settings/Images.svelte:54-62。
graph LR
subgraph "ComfyUI 集成流程"
WF["JSON 工作流<br/>images.py:138"]
Nodes["REQUIRED_WORKFLOW_NODES<br/>Images.svelte:32"]
Map["将 UI 参数映射到<br/>工作流节点 ID"]
Exec["comfyui_create_image<br/>comfyui.py:40"]
end
Nodes --> Map
WF --> Map
Map --> Exec
来源: src/lib/components/admin/Settings/Images.svelte:31-63、backend/open_webui/routers/images.py:35-42
图像编辑集成
Open WebUI 支持图像到图像(image-to-image)和图像修补(inpainting)工作流。此功能通过 ENABLE_IMAGE_EDIT 启用,并且可以使用与主生成引擎不同的引擎。
- 引擎路由:如果设置了
IMAGE_EDIT_ENGINE,编辑请求将被路由到该引擎;否则,可能会回退到默认处理器backend/open_webui/routers/images.py:145-147。 - ComfyUI 编辑:需要一个包含
image节点类型(用于源文件)的特定编辑工作流src/lib/components/admin/Settings/Images.svelte:66-71。 - Gemini/OpenAI:使用特定提供商的编辑端点(例如
IMAGES_EDIT_GEMINI_API_BASE_URL)backend/open_webui/routers/images.py:150-154。
来源: backend/open_webui/routers/images.py:145-158、src/lib/components/admin/Settings/Images.svelte:65-92
数据流与持久化
生成的图像会被本地缓存,并注册到 Open WebUI 文件管理系统中,以便在聊天历史中引用。
- 生成:引擎(例如 ComfyUI)生成图像,并以 base64 字符串或 URL 的形式返回。
- 持久化:
images路由使用routers.files中的upload_file_handler将图像保存到内部存储backend/open_webui/routers/images.py:29-29。 - 缓存:图像存储在
IMAGE_CACHE_DIR(位于CACHE_DIR / 'image' / 'generations')backend/open_webui/routers/images.py:49-50。 - 响应:后端返回一个文件 ID 或 URL,前端将其渲染为消息附件。
来源: backend/open_webui/routers/images.py:49-50、backend/open_webui/routers/images.py:29-29