跳到正文
原文
Hugging Face Blog·· 2026-08-25精选AI 评分67

Gradio 内置 gr.Workflow:把 AI 流程做成可拖拽的节点图并自动生成 REST API

Wire It, Run It, Deploy It: AI Workflows in Gradio

AI 导读

Hugging Face 在 Gradio 中内置 gr.Workflow,把多步 AI 流程描述为由引用、算子和输出组成的类型化节点图,Gradio 提供可拖拽画布运行每个节点并展示中间结果。

推荐理由

原文展示了把多步 AI 流程变成可视化图并自动暴露为 REST 接口的做法,读者可据此判断自己现有脚本能否照此改造。

正文 · AI 翻译

大多数有趣的 AI 应用都是流水线。你生成一张图像,然后按需抠掉背景,或者把它编辑成新的东西。你写一段脚本,然后为它生成配音,或者在保持脚本不变的情况下替换声音。我们通常用 Python 把这些步骤串在一起,而一旦哪里看起来不对,我们就又回到 print 调试,去找到底是哪一步产生了那个奇怪的值。

gr.Workflow 直接内置于 Gradio,让流水线本身成为界面。你把各个步骤描述为一张带类型节点的图,Gradio 就会提供一个拖拽式画布,其中每个节点都可运行,每个中间结果都可见。同一张图同时还是一个 REST API,并可一条命令部署到 HF Mirror Spaces。

理解它的最好方式就是看看几个工作流的实际运行。下面每个应用都是一个实时 Huggingface Space,你可以打开、运行并复制。

编辑图像

上传一张图像,输入一条编辑指令(“把它变成下雪的冬日场景”“加上墨镜”“把车变成红色”),就能拿回编辑后的照片。整个应用只有一个节点,通过 HF Mirror Inference Providers 调用 Qwen-Image-Edit。

👉 试用图像编辑器流水线

把真实模型串联成媒体工作室

一张图,三条流水线。从一个提示词开始,用 FLUX 生成一张图像,然后把它传给一个背景移除 Gradio Space,将其变成贴纸。一个主题通过文本转语音 Gradio Space 变成旁白,而同一个主题通过一次 LLM 调用变成一个吸引人的剧集标题。

这是一张画布、两次通过 HF Mirror Inference Providers 的模型调用,以及两次对 Gradio Spaces 的调用。

由于这是一个工作流,这三个输出中的每一个也都有自己的 REST 端点:/sticker、/voiceover 和 /episode_title。你可以直接从代码调用其中任何一个,而无需打开 UI。可运行示例请参见下方的从代码调用。

👉 试用 AI 媒体工作室

并行扇出图像生成

输入一个想法,它就会立刻变成一组生成的艺术作品:一张来自 FLUX 的基础图像、对该图像的两种 AI 再想象(一个柔和的水彩版本和一个霓虹赛博朋克版本),以及一个由 LLM 撰写的画廊标题。

每张图像都由一个模型节点使用 Inference Providers 直接根据提示词生成,而标题则来自一个调用 LLM 的 fn 节点。这就是扇出模式的实际应用:一个想法可以同时喂给多个算子,全部并行生成。

👉 试用生成艺术实验室

分析 HF Mirror 数据集

输入一个 HF Mirror 数据集 ID,例如 stanfordnlp/imdb 或 mteb/tweet_sentiment_extraction,单个输入就会扇出到四个算子节点,使用 Datasets Server API 实时分析该数据集。

你会得到一张概览卡片、前几行的预览、逐列统计信息,以及一张分布图,全部独立且并行计算。这就是工作流的力量!

👉 试用 Data Detective

运行你自己的 GPU 模型

到目前为止,每个节点都会访问 HF Mirror。但一个 fn 节点只是 Python,这意味着它也可以在 Space 内使用 GPU 运行模型。

用 @spaces.GPU 装饰这个绑定函数,当节点运行时,ZeroGPU 会为该调用获取一块 GPU,运行模型,然后释放它。我们不必总是依赖 Inference Providers 或现有的 Gradio Spaces。

来看看这个演示,它使用通过 Diffusers 加载的 Lightricks/LTX-Video 为静态图像制作动画,完全通过一个节点运行。gr.Workflow 不需要了解任何关于你 GPU 配置的信息。它只是调用绑定的函数。

👉 试试 ZeroGPU Animator

工作原理简述

每个工作流都是一个图,包含三种节点:引用(你的输入)、算子(执行工作的步骤)和主体(你的输出)。算子可以是你的 Python 函数、HF Mirror Inference Providers 上的模型、另一个 Gradio Space,或 Hub 数据集中的一行。你可以通过在类型化端口之间拖拽来连接它们,点击 Run,然后看着每个结果就地出现。

从代码中调用

你构建的每个工作流同时也是一个 API,无需额外工作。每个输出都会变成一个以其标签命名的 REST 端点,你可以使用 Gradio 客户端从 Python 中调用它。下面是一个针对 multi-endpoint demo Space 的实时、无需 token 的示例,完全原样:

from gradio_client import Client

client = Client("ysharma/gr-workflow-multi-endpoint-API")

print(client.predict("hello there friend", api_name="/word_count"))  # -> 3
print(client.predict(20, api_name="/fahrenheit"))                    # -> 68.0

调用模型或 Space 的端点会在 HF Mirror token 下运行,因此在创建客户端时请传入一个:

from gradio_client import Client, handle_file

client = Client("ysharma/gr-workflow-image-editor", token="hf_...")

edited = client.predict(
    handle_file("dog.jpg"),
    "turn it into a snowy winter scene",
    api_name="/edited_image",
)

更喜欢用纯 HTTP?每个端点也可以通过 curl 访问:

curl -s https://ysharma-gr-workflow-multi-endpoint-API.hf.space/gradio_api/call/word_count \
  -H "Content-Type: application/json" -d '{"data": ["hello there friend"]}'

构建你自己的

最快的上手方式是打开上面任意一个演示,点击 Duplicate,然后开始重新连线。从 Python 开始,只需这么短:

import gradio as gr

def your_function(text: str) -> str:
  pass

gr.Workflow(bind=[your_function]).launch()

如需完整演练、算子类型、JSON schema 和可复用模式,请参阅 Gradio 文档中的官方 gr.Workflow 指南。

你甚至可以用 gr.Workflow 构建像 AUTOMATIC1111 这样复杂的东西。请关注我们的下一篇文章,我们会一步步带你构建它。这里先睹为快 😉👇

来源:Hugging Face Blog · hf-mirror.com