Hugging Face博客演示如何在Gradio中串联AI节点、运行pipeline并一键部署,涵盖从原型到生产的完整路径。
gr.Workflow 内嵌于 Gradio,让流水线成为界面。你把各个步骤描述为一个带类型节点的图,Gradio 会提供一个拖放式画布,每个节点都可运行,每个中间结果都可见。同一个图同时也是一个 REST API,可以一键部署到 Hugging Face Spaces。
最好的理解方式就是看几个实际的工作流。下面的每个应用都是一个活着的 Hugging Face Space,你可以打开、运行和复制。
上传一张图片,输入编辑指令("把它变成雪景"、"加墨镜"、"把车改成红色"),就能收到编辑后的照片。整个应用就是一个节点,调用 Hugging Face Inference Providers 上的 Qwen-Image-Edit。
👉 Try the Image Editor Pipeline
一个图,三个管道。用 FLUX 从提示词生成图像,然后传给背景移除 Gradio Space 做成贴纸。同一个主题通过文本转语音 Gradio Space 变成配音,同时通过 LLM 调用生成吸引人的剧集标题。
这就是一个画布、两次 Hugging Face Inference Providers 模型调用、两次 Gradio Space 调用。
由于这是个工作流,三个输出各自都有对应的 REST 端点:/sticker、/voiceover 和 /episode_title。你可以直接从代码调用任何一个,不需要打开 UI。参见下面的「用代码调用」有可运行的示例。
👉 Try the AI Media Studio
输入一个想法,它会同时生成一组作品:FLUX 的基础图像、该图像的两次 AI 重新诠释(水彩柔和版和霓虹赛博朋克版),以及 LLM 生成的画廊标题。
每张图都通过 Inference Providers 的模型节点直接从提示词生成,而标题来自调用 LLM 的 fn 节点。这就是扇出模式的实际应用:一个想法可以同时触发多个操作符,全部并行生成。
👉 Try the Generative Art Lab
输入一个 Hugging Face 数据集 ID,比如 stanfordnlp/imdb 或 mteb/tweet_sentiment_extraction,一个输入会扇出给四个操作符节点,通过 Datasets Server API 实时分析数据集。
你会得到一张概览卡、前几行预览、每列统计信息,以及分布图表——全部独立并行计算。这就是工作流的力量!
👉 Try Data Detective
之前的节点都调用了 Hugging Face。但 fn 节点本质上是 Python,这意味着它也可以在 Space 内用 GPU 运行模型。
用 @spaces.GPU 装饰绑定函数,节点运行时会由 ZeroGPU 分配 GPU、执行模型、释放资源。我们不一定总要依赖 Inference Providers 或现有的 Gradio Space。
看看这个演示:用 Diffusers 加载的 Lightricks/LTX-Video 将静态图动画化,全部在一个节点内完成。gr.Workflow 不需要了解你的 GPU 配置,它只调用绑定函数。
👉 Try the ZeroGPU Animator
每个工作流都是一个包含三类节点的图:references(你的输入)、operators(执行工作的步骤)和 subjects(你的输出)。操作符可以是自定义 Python 函数、Hugging Face Inference Providers 上的模型、另一个 Gradio Space 或 Hub 数据集的一行。你通过在带类型的端口之间拖拽来连接它们,点击 Run,然后看着每个结果在对应位置显现出来。
你构建的每个工作流同时也是一个 API,无需额外开发。每个输出都成为一个以标签命名的 REST 端点,你可以用 Gradio 客户端从 Python 调用。下面是针对多端点演示 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 的端点在 Hugging Face 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 这样复杂的应用。敬请期待我们的下一篇文章,会逐步讲解如何构建。这里先剧透一下 😉👇
Models mentioned in this article 4
Spaces mentioned in this article 6
Any Custom Frontend with Gradio's Backend
One-Shot Any Web App with Gradio's gr.HTML
· Sign up or log in to comment