文本转视频 • 35B • 已更新 • 221k • 298

gr.Workflow
图表并暗示了构建像 AUTOMATIC1111 的 Workflow1111 这样复杂的东西需要什么,Workflow1111 是一个由 73 个节点 构建的 11 条媒体管道 图。它汇集了用于文本到图像、高分辨率修复、图像到图像、提示矩阵网格、VLM 询问、检测到修复蒙版、ControlNet 风格标注器、背景移除、PNG 信息存储和图像到视频的 SOTA 模型。
您可以通过使用 Hugging Face 账户登录或提供访问令牌来运行这些管道中的任何一个。登录后,模型调用将使用您自己的配额。
👉 ** 尝试 Workflow1111**,或复制该 Space 并开始为您的用例重新布线。
让我们浏览画布。
所有媒体管道都由我们上一篇文章和 官方指南 中介绍的相同四种操作符类型构建。画布上的每个节点包装一个操作符,操作符的输入和输出成为您连接边的端口。作为我们四种操作符类型的快速参考:fn
是一个 Python 函数,model
是通过 InferenceClient 调用的模型
,space
是另一个 Gradio Space,dataset
是 Hub 数据集中的一行。
让我们逐一介绍这些管道。
这是核心管道。它具有您期望从 A1111 的 txt2img 选项卡中获得的控件:负面提示、步数、CFG、种子、宽度和高度,以及用于选择检查点的 model_id
字段。提示首先经过一个提示构建器 fn
节点,该节点附加选定的样式预设并清理文本,然后进入一个 model
节点,该节点通过 Inference Providers 调用检查点。一个后处理 fn
节点在输出时将生成参数写入 PNG 的元数据中,这就是 PNG Info 管道稍后读取的内容。
在 Automatic1111 中,高分辨率修复首先放大 txt2img 输出,然后运行第二次去噪。这里则是一个两节点绕行。文本到图像的结果进入一个 FLUX.1-Kontext model
节点,并带有精炼指令(“增强细节和微纹理,保持构图不变”),然后返回更清晰、更大的图像。
同一个 Kontext 节点兼作图像到图像选项卡。上传一张图像,描述您想要的更改,它会返回编辑后的图像。
从一个粗略的提示开始,比如“暴风雨中的灯塔”。此管道将其发送到一个 Qwen3-4B model
节点,一个小型 fn
节点将回复转换为一个干净的标签列表,最多四十个:“暴风雨的海、湿岩石、戏剧性构图、低角度拍摄、体积光、不祥的基调。”您可以将任何扩散模型节点连接到此输出以渲染图像。
与 ComfyUI 不同,这里不涉及自定义节点。在 Gradio 工作流中,LLM 和扩散模型都是同一画布上的普通 model
操作符。
这就像 AUTOMATIC1111 的 Interrogate 按钮,但由 VLM 进行询问,而不是 CLIP。Qwen2.5-VL 查看一张夜市照片并写下一个可能产生它的提示。一个 ViT 分类器节点读取同一张图像并返回标签:餐厅 51.9%、烟草店 15.6%、玩具店 9.1%。
两个节点使用相同的图像输入,因此 gr.Workflow
会并行运行它们,你大约只需运行一个节点的时间就能得到两个答案。
AUTOMATIC1111 需要你手动绘制修复蒙版。而此流水线则通过检测器生成一个。 DETR 在一张街景照片中找到了六个对象(三个人、一只狗、一辆自行车和一辆汽车),然后工作流分成两个分支:一个在原始图像上绘制检测到的边界框,另一个将它们转换为蒙版,供下游的修复流水线使用。
绘制和蒙版创建都在本地使用 Pillow 和 NumPy 完成。只有检测调用会离开本机。
这类似于 AUTOMATIC1111 的提示词矩阵。一个基础提示词“一棵孤零零的橡树”通过一个 fn
节点与四个后缀(日出时、雷暴中、银河下、秋雾里)组合,每个变体都发送到各自的文本到图像节点。最后一个节点将四个结果拼接成一张联系表。
gr.Workflow
没有循环操作符,因此四个文本到图像节点并排放在画布上。由于它们处于相同的依赖深度,它们会并行运行,所有四张图像同时开始生成。
这类似于 Automatic1111 中的“附加功能”选项卡。有两个放大节点,它们采用不同的路径。第一个是在 fn
节点中进行的本地 Lanczos 重采样,无需网络调用,完成速度与 Pillow 调整大小一样快。第二个是 AuraSR ×4,它是画布上的第一个 space
节点:它调用 Hub 上的一个 Space,并将结果视为任何其他节点输出。
背景移除的工作方式相同。 BRIA RMBG-2.0 是另一个 space
节点,因此整个模型都存在于它自己的 Space 中,而这个画布只是调用它。
Canny、线稿、素描、亮度深度和色调分离是通常从 Automatic1111 的 ControlNet 扩展中获得的预处理器。在这里,每一个都是一个用纯 NumPy 编写的 fn
节点,背后没有模型。在一张预加载的建筑立面示例照片上,每个标注器在 CPU 上大约需要半秒钟。
应用中有 36 个操作节点,其中 32 个是 fn
节点,而其中的 22 个完全在进程内运行,无需网络调用。如果你失去连接,大约三分之二的画布仍能工作。由于这些是常规的 Python 函数,你也可以直接测试它们,无需画布、服务器或 GPU。
AUTOMATIC1111 将生成细节存储在 PNG 的 parameters
文本块中,PNG Info 选项卡会读取它们。Workflow1111 也是如此。文本到图像流水线上的后处理节点写入元数据,而此流水线将其读回,包括提示词、负面提示词、步数、CFG、种子、图像尺寸和模型。
PNG Info 读取的图像节点还馈送到一个 Wan 2.2 I2V A14B 节点,该节点将其动画化;在演示示例中,一只睡着的狐狸醒来并开始移动。没有第二个上传框,因为一个参考节点可以馈送你需要的任意多个下游流水线,所以一次上传就能在同一画布上读取其元数据并进行动画化。
到目前为止,每次模型调用都发生在别人的硬件上,通过 Inference Providers 或 Space 完成。这就是为什么你无需自己的 GPU 就能构建并运行像 Workflow1111 这样的东西。
不过,一个 fn
节点本质上就是 Python,因此它同样可以在本地加载模型并在你自己的 GPU 上运行。FastVideo/fastvideo-fasth3-preview 就是一个 gr.Workflow
应用,它正是这样做的。它运行 FastH3,这是 MiniMax-H3 的四步蒸馏版本,并在 ZeroGPU 上生成带配乐的视频。
整个应用归结为一个绑定函数:
@spaces.GPU(duration=get_duration, size=GPU_SIZE)
def _generate(prompt_embeds, text_token_tags, height, width, num_frames, seed):
...
gr.Workflow(bind={"generate": generate, "status": status}).launch()
ZeroGPU 会在函数需要时为其分配一块 GPU,并在调用结束后将其释放。gr.Workflow
无需了解这一切。它只是调用 fn
节点。
这一点也不仅限于 Spaces。将 bind=
指向一个加载本地检查点的函数,在你自己的机器上运行 .launch()
,Workflow1111 画布就能驱动你自己的 GPU。
画布上的每个输出节点都会成为一个 REST 端点,无需手写任何路由。Workflow1111 暴露了其中九个:/image
、/edited_image
、/generated_prompt
、/recovered_prompt
、/detected_objects
、/x_y_grid
、/upscaled_local
、/annotator_map
和 /png_info
。
from gradio_client import Client
client = Client("ysharma/Workflow1111", oauth_token="hf_...")
image, params, hires = client.predict(
"a red fox in a snowy pine forest", # Prompt
"", # Negative prompt
"Cinematic", # Style preset
"enhance fine detail", # Hires refine instruction
api_name="/image",
)
相同的端点同时也是 MCP 工具。使用 mcp_server=True 启动
(指南),每个输出节点都会作为一个 AI 助手可调用的工具出现。将 Claude Code、Cursor 或任何 MCP 客户端指向该服务器 URL:
{
"mcpServers": {
"workflow1111": {
"url": "https://ysharma-workflow1111.hf.space/gradio_api/mcp/",
"headers": { "X-HF-Token": "hf_..." }
}
}
}
现在,智能体可以生成图像、读回提示词,或将检测作为更大任务中的步骤来运行,而无需任何胶水代码。每个调用方在 X-HF-Token
请求头中发送自己的令牌,因此该 Space 自身不持有任何令牌。
AUTOMATIC1111 为我们提供了功能列表,但 Gradio Workflow 真正被拿来比较的工具是 ComfyUI,因为两者都是节点图。对于人们想要构建和发布的许多东西,gr.Workflow
覆盖了相同的领域。
结果是一个多模型流水线,人们可以在浏览器中打开、登录、立即使用,并从代码中调用。
Workflow1111 有 73 个节点,但它最初只有这些:
import gradio as gr
def your_function(text: str) -> str:
pass
gr.Workflow(bind=[your_function]).launch()
bind=
将你的函数转换为节点,edges=
将它们连接起来,而 .launch()
会在浏览器中打开画布,让你可以在那里继续编辑。准备就绪后,gradio deploy
会把整个东西放到一个 Space 上。gr.Workflow 指南 有完整的细节,包括 JSON schema 和每一种算子类型。
如果你更想从已经能用的东西开始,打开 Workflow1111,点击 Duplicate,然后从十一条流水线中挑一条来改:删除节点、替换模型、重新连线。如果你更想从小处开始,上一篇文章 有五个工作流,每个大约一分钟就能跑起来。
无论你构建了什么,都发到 X 上并 @@gradio。我们很乐意帮你推广你的工作流。
4 步 MiniMax-H3 —— 带匹配配乐的视频
从任意图像中移除背景
一键将图像放大 4 倍
在单个 gr.Workflow 画布上的 Automatic1111 风格工作室
非常令人印象深刻的拆解,其中最突出的一点是图结构如何让你免费获得并行性(prompt-matrix 和 interrogate 示例),而无需任何额外的编排代码。fn、model 和 space 节点类型混合在同一个画布上,也让与 ComfyUI 的对比很有说服力:你从纯 Python 中获得自定义节点的灵活性,同时免费获得零代码的 REST/MCP 端点。好奇一个画布能变得多复杂,才会让性能或可维护性成为问题——有人突破过 73 个节点吗
