← 文章 / 编程开发
HuggingFace博客 8小时前 · 2026-08-29 20:45:56 · 3 阅读

连接、运行、部署:Gradio 中的 AI 工作流

大多数有趣的 AI 应用,本质上都是一条条流水线:先生成图像,再按需抠出背景,或者进一步编辑成新的内容;先写好脚本,再为它生成语音,或者在保留脚本不变的情况下更换声音。我们通常用 Python 把这些步骤串起来,一旦结果不对,就只能回到打印调试,查找究竟是哪一步产生了异常值。

Gradio 内置的 gr.Workflow,让流水线本身成为界面。你可以把各个步骤描述为由类型化节点组成的图,Gradio 则会提供一个支持拖放的画布:每个节点都能单独运行,所有中间结果也一目了然。同一张图还会自动成为 REST API,并可通过一条命令部署到 Hugging Face Spaces。

理解这一理念的最好方式,就是看看几个实际运行的工作流。下面的每个应用都是一个在线 Hugging Face Space,你可以直接打开、运行并复制。

编辑图像

上传一张图像,输入编辑指令(“把它变成下雪的冬日场景”“加一副太阳镜”“把车变成红色”),即可得到编辑后的照片。整个应用只有一个节点,负责调用 Hugging Face Inference Providers 上的 Qwen-Image-Edit

👉 试用图像编辑流水线

将真实模型串成媒体工作室

一张图,三条流水线。输入提示词后,先用 FLUX 生成图像,再将它传给背景移除 Gradio Space,把图像变成贴纸。输入一个主题后,可以通过文本转语音 Gradio Space生成旁白,同时调用 LLM,为同一主题生成吸引人的节目标题。

整个过程只需一张画布:通过 Hugging Face Inference Providers 调用两个模型,再调用两个 Gradio Space。

由于这是一个工作流,三个输出分别对应各自的 REST 端点:/sticker/voiceover/episode_title。无需打开界面,就可以直接在代码中调用它们。可运行示例请参阅下方的 通过代码调用

👉 试用 AI Media Studio

并行生成多路图像

输入一个创意,就能一次生成一组作品:由 FLUX 生成的基础图像、基于该图像重新创作的两种 AI 版本(柔和的水彩风格和霓虹赛博朋克风格),以及由 LLM 撰写的画廊标题。

每张图像都由模型节点通过 Inference Providers 根据提示词直接生成,标题则由调用 LLM 的 fn 节点生成。这正是 fan-out 模式:一个创意可以同时传给多个操作节点,并行完成生成。

👉 试用 Generative Art Lab

分析 Hugging Face 数据集

输入 Hugging Face 数据集 ID,例如 stanfordnlp/imdbmteb/tweet_sentiment_extraction,单个输入就会分发给四个操作节点。它们通过 Datasets Server API 实时分析数据集。

最终你会得到概览卡片、前几行数据预览、逐列统计信息和分布图表;这些结果都由各节点独立并行计算。工作流的优势正在于此!

👉 试用 Data Detective

运行你自己的 GPU 模型

到目前为止,每个节点都会调用 Hugging Face。但 fn 节点本质上就是 Python,因此也可以直接在 Space 的 GPU 上运行模型。

只需为绑定的函数添加 @spaces.GPU 装饰器。节点运行时,ZeroGPU 会为这次调用分配 GPU,运行模型后再释放资源。这样一来,我们不必始终依赖 Inference Providers 或现成的 Gradio Space。

来看看这个演示:它通过 Diffusers 加载 Lightricks/LTX-Video,将静态图片生成动画,而且整个流程只需一个节点即可完成。gr.Workflow 无需了解你的 GPU 配置,只要调用绑定的函数即可。

👉 试试 ZeroGPU Animator

简单说说它是怎么工作的

每个 workflow 都是一张由三类节点组成的图:references(输入)、operators(执行具体操作的步骤)和 subjects(输出)。operator 可以是你自己编写的 Python 函数、Hugging Face Inference Providers 上的模型、另一个 Gradio Space,或 Hub 数据集中的一行数据。只需在类型匹配的端口之间拖线连接,点击 Run,就能看到每个结果直接显示在对应位置。

在代码中调用

你创建的每个 workflow 同时也是一个 API,无需额外配置。每个输出都会根据其标签生成对应的 REST endpoint,还可以通过 Gradio client 在 Python 中调用。下面是针对多 endpoint 演示 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

如果 endpoint 调用了模型或 Space,就需要使用 Hugging Face token。因此,创建 client 时请传入 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?每个 endpoint 也都可以通过 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"]}'

构建你自己的 workflow

最快的入门方式是打开上面的任意一个演示,点击 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 这样复杂的项目。敬请期待我们的下一篇文章,届时我们将一步步带你完成构建。先来一睹为快 😉👇

原始来源: HuggingFace博客

评论 (0)