连接、运行、部署:Gradio 中的 AI 工作流
摘要
本文介绍了 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/imdb 或 mteb/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) 这样复杂的东西。请留意我们的下一篇文章,我们将逐步讲解如何构建它。这里先抢先看 😉👇
相似文章
@abidlabs:我们如何为复杂工作流构建最佳的智能体友好且用户友好的界面:https://huggingface.co/blog/…
Gradio 推出了 Workflow 功能,该功能通过将步骤描述为带类型的节点图,结合拖放画布、REST API 以及轻松部署到 Hugging Face Spaces 的方式,实现了为复杂 AI 工作流构建智能体友好且用户友好的界面。
代理工作流可视化与API网关
正在构建一个用于代理AI工作流的开源API网关,提供多LLM和工具调用的可视化,跟踪令牌、成本和延迟,无需代码插桩。采用Rust和Go服务器配合Python关联器,寻求AI运维用户的合作与反馈。
@DanKornas:当模型、工具、数据和路由散布在代码中时,代理工作流的推理变得困难。Flowise 是一个…
Flowise 是一个开源的生成式 AI 开发平台,提供可视化构建器来创建 AI 代理和 LLM 工作流,具备代理流编排、集成节点和灵活部署等功能。
构建高阶 AI 工作流:我还漏掉了什么?
一位开发者正在寻求关于高级 AI 工作流编排工具与模式的建议,重点关注 LangChain、LangGraph 及 AWS Step Functions 等方案,旨在构建更稳健且面向未来的系统。
FlowBoard v5:你的AI代理真正运行的项目工作区
FlowBoard v5是AI代理项目工作区的全面重建,具有基于React的UI、事件溯源任务存储、多代理支持以及模块化概览仪表板,现可通过ClawHub一键安装。