英文 | 中文
Gradio: 构建机器学习 Web 应用 — 使用 Python
Gradio 是一个开源的 Python 包,允许你快速构建机器学习模型、API 或任意 Python 函数的演示或 Web 应用。然后,你可以使用 Gradio 内置的共享功能,在几秒钟内分享你的演示或 Web 应用的链接。无需 JavaScript、CSS 或 Web 托管经验!
只需几行 Python 代码即可创建你自己的演示,让我们开始吧 💫
安装
先决条件:Gradio 需要 Python 3.10 或更高版本。
我们建议使用 pip 安装 Gradio,它默认包含在 Python 中。在终端或命令提示符中运行以下命令:
pip install --upgrade gradio
[!TIP] 最好在虚拟环境中安装 Gradio。所有常见操作系统的详细安装说明在此提供。
构建你的第一个 Demo
你可以在你喜欢的代码编辑器、Jupyter notebook、Google Colab 或任何你编写 Python 的地方运行 Gradio。让我们编写你的第一个 Gradio 应用:
import gradio as gr
def greet(name, intensity):
return "Hello, " + name + "!" * int(intensity)
demo = gr.Interface(
fn=greet,
inputs=["text", "slider"],
outputs=["text"],
api_name="predict"
)
demo.launch()
[!TIP] 我们将导入的名称从
gradio缩短为gr。这是一种广泛采用的约定,旨在提高代码的可读性。
现在,运行你的代码。如果你将 Python 代码写在一个名为 app.py 的文件中,那么你需要从终端运行 python app.py。
如果从文件运行,下面的演示将在 http://localhost:7860 的浏览器中打开。如果你在 notebook 中运行,演示将嵌入在 notebook 中显示。

在左侧的文本框中输入你的名字,拖动滑块,然后按下 Submit 按钮。你应该会在右侧看到一条友好的问候语。
[!TIP] 在本地开发时,你可以以 热重载模式 运行你的 Gradio 应用,该模式会在你对文件进行更改时自动重新加载 Gradio 应用。为此,只需在文件名前输入
gradio而不是python。在上面的示例中,你会在终端中输入:gradio app.py。你还可以使用--vibe标志启用 vibe 模式,例如gradio --vibe app.py,这将提供一个浏览器内的聊天界面,可用于使用自然语言编写或编辑你的 Gradio 应用。更多信息请参阅 热重载指南。
理解 Interface 类
你会注意到,为了创建你的第一个演示,你创建了一个 gr.Interface 类的实例。Interface 类旨在为接受一个或多个输入并返回一个或多个输出的机器学习模型创建演示。
Interface 类有三个核心参数:
fn:用于包装用户界面(UI)的函数inputs:用于输入的 Gradio 组件。组件的数量应与函数中的参数数量相匹配。outputs:用于输出的 Gradio 组件。组件的数量应与函数返回值的数量相匹配。
fn 参数非常灵活——你可以传入任意想要用 UI 包装的 Python 函数。在上面的示例中,我们看到了一个相对简单的函数,但该函数可以是任何东西,从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。
inputs 和 outputs 参数接受一个或多个 Gradio 组件。正如我们将看到的,Gradio 包含超过 30 个内置组件(例如 gr.Textbox()、gr.Image() 和 gr.HTML() 组件),它们专为机器学习应用而设计。
[!TIP] 对于
inputs和outputs参数,你可以将这些组件的名称作为字符串("textbox")或类的实例(gr.Textbox())传入。
如果你的函数接受多个参数,如上例所示,请将输入组件列表传递给 inputs,每个输入组件按顺序对应函数的一个参数。如果你的函数返回多个值,情况也相同:只需将组件列表传递给 outputs。这种灵活性使得 Interface 类成为创建演示的一种非常强大的方式。
我们将在关于 构建界面 的系列文章中深入探讨 gr.Interface。
分享你的演示
如果无法分享,再漂亮的演示又有什么用?Gradio 让你轻松分享机器学习演示,无需担心托管在 Web 服务器上的麻烦。只需在 launch() 中设置 share=True,就会为你的演示创建一个可公开访问的 URL。让我们回顾一下我们的示例演示,但将最后一行修改如下:
import gradio as gr
def greet(name):
return "Hello " + name + "!"
demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox")
demo.launch(share=True) # Share your demo with just 1 extra parameter 🚀
当你运行这段代码时,几秒钟内就会为你的演示生成一个公共 URL,类似于:
👉 https://a23dsf231adb.gradio.live
现在,全球任何人都可以通过浏览器尝试你的 Gradio 演示,而机器学习模型和所有计算仍继续在你的计算机上本地运行。
要了解有关共享演示的更多信息,请阅读我们关于共享你的 Gradio 应用的专门指南。
Gradio 概述
到目前为止,我们一直在讨论 Interface 类,这是一个高级类,让你能够使用 Gradio 快速构建演示。但 Gradio 还包含什么?
使用 gr.Blocks 构建自定义演示
Gradio 通过 gr.Blocks 类提供了一种低层方法,用于设计具有更自定义布局和数据处理流程的 Web 应用。Blocks 支持诸如控制组件在页面上的显示位置、处理多个数据流以及更复杂的交互(例如,输出可以作为其他函数的输入),以及根据用户交互更新组件的属性/可见性——所有这些仍然都在 Python 中完成。
你可以使用 gr.Blocks() 构建非常自定义和复杂的应用程序。例如,流行的图像生成 Automatic1111 Web UI 就是使用 Gradio Blocks 构建的。我们在使用 Blocks 构建系列中更深入地探讨了 gr.Blocks。
使用 gr.ChatInterface 构建聊天机器人
Gradio 包含另一个高级类 gr.ChatInterface,专门用于创建 Chatbot UI。与 Interface 类似,你只需提供一个函数,Gradio 就会创建一个完全可用的 Chatbot UI。如果你对创建聊天机器人感兴趣,可以直接跳转到 我们关于 gr.ChatInterface 的专属指南。
Gradio Python 与 JavaScript 生态系统
以上是核心 gradio Python 库的概要,但 Gradio 实际上远不止于此!它是一个由 Python 和 JavaScript 库组成的完整生态系统,让你能够构建机器学习应用程序,或在 Python 或 JavaScript 中以编程方式查询它们。以下是 Gradio 生态系统的其他相关部分:
- Gradio Python 客户端 (
gradio_client):在 Python 中以编程方式查询任何 Gradio 应用。 - Gradio JavaScript 客户端 (
@gradio/client):在 JavaScript 中以编程方式查询任何 Gradio 应用。 - Hugging Face Spaces:托管 Gradio 应用的最受欢迎平台——完全免费!
- 服务器模式 (
gradio.Server):使用 Gradio 的后端构建自定义前端——包含队列、流式传输、MCP、ZeroGPU 和 Spaces 托管。
接下来是什么?
继续使用 Gradio 指南按顺序学习 Gradio,其中包含解释以及示例代码和嵌入式交互式演示。接下来:让我们深入探讨 Interface 类。
或者,如果你已经了解基础知识并正在寻找特定内容,你可以搜索更 技术性的 API 文档。
AI 编码技能
Gradio 提供了一个“技能”,为 AI 编码助手(如 Cursor、Claude Code、Codex 等)注入 Gradio 专属知识,使其能够更高效地构建 Gradio 应用。在创建自定义 Gradio 组件或进行样式设计时,这一功能尤为实用。只需一条命令即可为你的编码助手安装 Gradio 技能:
gradio skills add --cursor # or --claude, --codex, --opencode
使用 --global 在用户级别安装(适用于所有项目)。您的技能将自动对特定的编码代理可用。
您还可以为特定的 Gradio Space 安装技能,该技能会即时生成 API 使用文档(Python、JS、cURL):
gradio skills add abidlabs/en2fr --cursor
有问题?
如果您想报告 bug 或提出功能请求,请在 GitHub 上创建 issue。对于使用方面的通用问题,我们可以在 我们的 Discord 服务器 上提供帮助。
如果您喜欢 Gradio,请在 GitHub 上给我们一个 ⭐!
开源技术栈
Gradio 构建在许多出色的开源库之上!
许可证
Gradio 采用 Apache License 2.0 许可,该许可证位于本仓库根目录中的 LICENSE 文件。
引用
请查阅论文 Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild, ICML HILL 2019,如果您在工作中使用了 Gradio,请引用该论文。
@article{abid2019gradio,
title = {Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild},
author = {Abid, Abubakar and Abdalla, Ali and Abid, Ali and Khan, Dawood and Alfozan, Abdulrahman and Zou, James},
journal = {arXiv preprint arXiv:1906.02569},
year = {2019},
}