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

Hugging Face Blog 工具

摘要

本文介绍了 Gradio 中的 `gr.Workflow`,该功能允许用户通过拖放节点构建交互式、可视化的 AI 流水线,配备实时示例,并可轻松部署至 Hugging Face Spaces。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/08/25 04:08

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

来源:https://huggingface.co/blog/gradio-workflow-guide

大多数有趣的 AI 应用都是管道。你生成一张图像,然后根据需要剪切背景,或将其编辑成新的图像。你写一个脚本,然后为其生成语音,或者保持脚本不变更换声音。我们通常在 Python 中将这些步骤连接起来,一旦发现异常,就会回退到打印调试,以找出产生异常值的步骤。

gr.Workflow 直接内置于 Gradio 中,使得管道成为界面本身。你将步骤描述为带类型的节点图,Gradio 则提供一个拖拽画布,其中每个节点都可运行,每个中间结果都可见。同样的图也作为 REST API,并可通过一条命令部署到 Hugging Face Spaces。

理解这个概念的最佳方式是观看几个运行中的工作流。以下每个应用都是一个可打开、运行和复用的 Huggingface Space。

https://huggingface.co/blog/gradio-workflow-guide#edit-an-image编辑图像

上传图像,输入编辑指令(例如“把它变成雪景”、“添加太阳镜”、“让车变成红色”),即可获取编辑后的照片。整个应用是一个调用 Qwen-Image-Edit (https://huggingface.co/Qwen/Qwen-Image-Edit) 的单一节点,运行于 Hugging Face Inference Providers。

👉尝试图像编辑管道 (https://huggingface.co/spaces/ysharma/gr-workflow-image-editor)

https://huggingface.co/blog/gradio-workflow-guide#chain-real-models-into-a-media-studio将真实模型串联成媒体工作室

一个图,三个管道。从提示开始,使用 FLUX (https://huggingface.co/black-forest-labs/FLUX.1-schnell) 生成图像,然后传递给一个背景移除 Gradio Space (https://huggingface.co/spaces/not-lain/background-removal) 将其变成贴纸。主题通过文本转语音 Gradio Space (https://huggingface.co/spaces/mrfakename/MeloTTS) 变成画外音,而同一主题通过 LLM (https://huggingface.co/Qwen/Qwen2.5-7B-Instruct) 调用变成吸引人的剧集标题。

这是一个画布,两次通过 Hugging Face Inference Providers (https://huggingface.co/docs/inference-providers/en/index) 的模型调用,以及两次对 Gradio Spaces 的调用。

由于这是一个工作流,三个输出中的每一个都有自己的 REST 端点:/sticker/voiceover/episode_title。你可以直接从代码中调用它们中的任何一个,而无需打开 UI。请参见下方的 从代码调用 (https://huggingface.co/blog/gradio-workflow-guide#call-it-from-code) 获取可运行示例。

👉尝试 AI 媒体工作室 (https://huggingface.co/spaces/ysharma/gr-workflow-04-ai-media-studio)

https://huggingface.co/blog/gradio-workflow-guide#fan-out-image-generation-in-parallel并行生成图像

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

每张图像直接由使用 Inference Providers 的模型节点根据提示生成,而标题来自调用 LLM 的 fn 节点。这就是扇出模式的实例:一个想法可以同时馈送多个操作者,全部并行生成。

👉尝试生成艺术实验室 (https://huggingface.co/spaces/ysharma/gr-workflow-01-generative-art-lab)

https://huggingface.co/blog/gradio-workflow-guide#profile-a-hugging-face-dataset分析 Hugging Face 数据集

输入一个 Hugging Face 数据集 ID,例如 stanfordnlp/imdbmteb/tweet_sentiment_extraction,单个输入会扇出到四个操作者节点,它们使用 Datasets Server (https://huggingface.co/docs/dataset-viewer) API 实时分析数据集。

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

👉尝试数据侦探 (https://huggingface.co/spaces/ysharma/gr-workflow-03-data-detective)

https://huggingface.co/blog/gradio-workflow-guide#run-your-own-gpu-model运行自己的 GPU 模型

到目前为止,所有节点都是访问 Hugging Face 的。但 fn 节点只是 Python,这意味着它也可以在 Space 中使用 GPU 运行模型。

@spaces.GPU 装饰绑定函数,当节点运行时,ZeroGPU (https://huggingface.co/docs/hub/spaces-zerogpu) 会为该调用获取一个 GPU,运行模型,然后释放它。我们不必总是依赖 Inference Providers 或现有的 Gradio Spaces。

看看这个演示,它使用通过 Diffusers 加载的 Lightricks/LTX-Video (https://huggingface.co/Lightricks/LTX-Video-0.9.7-distilled) 为静态图像制作动画,完全通过一个节点运行。gr.Workflow 不需要知道你的 GPU 设置。它只是调用绑定函数。

👉尝试 ZeroGPU 动画器 (https://huggingface.co/spaces/ysharma/gr-workflow-zerogpu-animate)

https://huggingface.co/blog/gradio-workflow-guide#how-it-works-in-a-nutshell工作原理简述

每个工作流都是一个包含三种节点的图:引用(你的输入)、操作者(执行工作的步骤)和主题(你的输出)。操作者可以是你自己的 Python 函数、Hugging Face Inference Providers 上的模型、另一个 Gradio Space 或 Hub 数据集中的一行。你通过拖拽连接带类型的端口,点击运行,然后看着每个结果在原地出现。

https://huggingface.co/blog/gradio-workflow-guide#call-it-from-code从代码调用

你构建的每个工作流也是一个 API,无需额外工作。每个输出都成为一个以标签命名的 REST 端点,你可以使用 Gradio 客户端从 Python 中调用它。这是一个针对多端点演示 Space 的实时、无令牌示例,完全照搬:

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 令牌下运行,因此在创建客户端时传递一个:

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"]}'

https://huggingface.co/blog/gradio-workflow-guide#build-your-own构建你自己的工作流

最快的方法是打开上面任何一个演示,点击 Duplicate,然后开始重新连接。从 Python 开始,代码可以非常简短:

import gradio as gr

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

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

有关完整的演练、操作者类型、JSON 架构和可重用模式,请参阅 Gradio 文档中的官方 gr.Workflow 指南 (https://gradio.app/guides/workflows)。

你甚至可以用 gr.Workflow 构建像 AUTOMATIC1111 (https://github.com/automatic1111/stable-diffusion-webui) 这样复杂的东西。请留意我们的下一篇文章,我们将逐步讲解如何构建它。这里先抢先看 😉👇

相似文章

代理工作流可视化与API网关

Reddit r/openclaw

正在构建一个用于代理AI工作流的开源API网关,提供多LLM和工具调用的可视化,跟踪令牌、成本和延迟,无需代码插桩。采用Rust和Go服务器配合Python关联器,寻求AI运维用户的合作与反馈。

构建高阶 AI 工作流:我还漏掉了什么?

Reddit r/artificial

一位开发者正在寻求关于高级 AI 工作流编排工具与模式的建议,重点关注 LangChain、LangGraph 及 AWS Step Functions 等方案,旨在构建更稳健且面向未来的系统。