1. 入门指南
  2. 快速入门

快速开始

Gradio 是一个开源的 Python 包,允许你快速为你的机器学习模型、API 或任何任意的 Python 函数构建演示或 Web 应用程序。然后,你可以使用 Gradio 的内置共享功能在几秒钟内分享你的演示或 Web 应用程序的链接。不需要 JavaScript、CSS 或 Web 托管经验!

只需几行Python代码即可创建您自己的演示,让我们开始吧 💫

安装

前提条件: Gradio 需要 Python 3.10 或更高版本.

我们建议使用pip安装Gradio,这是Python默认包含的。在您的终端或命令提示符中运行以下命令:

pip install --upgrade gradio

提示: 最好在虚拟环境中安装Gradio。所有常见操作系统的详细安装说明在这里提供

构建您的第一个演示

你可以在你最喜欢的代码编辑器、Jupyter笔记本、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"],
)

demo.launch()

提示: 我们将导入的名称从gradio缩短为gr。这是一个广泛采用的约定,以提高代码的可读性。

现在,运行你的代码。如果你已经将Python代码写在一个名为app.py的文件中,那么你可以在终端中运行python app.py

下面的演示将在浏览器中打开,如果从文件运行,则会在http://localhost:7860上打开。如果您在笔记本中运行,演示将嵌入在笔记本中显示。

在左侧的文本框中输入您的名字,拖动滑块,然后按下提交按钮。您应该在右侧看到一个友好的问候。

提示: 在本地开发时,您可以在热重载模式下运行您的Gradio应用程序,这样每当您对文件进行更改时,Gradio应用程序会自动重新加载。要做到这一点,只需在文件名前输入gradio而不是python。在上面的示例中,您可以在终端中输入:`gradio app.py`。了解更多信息,请参阅热重载指南

理解Interface

你会注意到,为了创建你的第一个演示,你创建了一个gr.Interface类的实例。Interface类旨在为机器学习模型创建演示,这些模型接受一个或多个输入,并返回一个或多个输出。

Interface 类有三个核心参数:

  • fn: 用于包装用户界面(UI)的函数
  • inputs: 用于输入的Gradio组件。组件的数量应与函数中的参数数量相匹配。
  • outputs: 用于输出的Gradio组件。组件的数量应与函数返回值的数量相匹配。

fn 参数非常灵活——你可以传递任何你想要用 UI 包装的 Python 函数。在上面的例子中,我们看到了一个相对简单的函数,但这个函数可以是任何东西,从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。

inputsoutputs 参数接受一个或多个 Gradio 组件。正如我们将看到的,Gradio 包含了超过 30 个内置组件(例如 gr.Textbox()gr.Image()gr.HTML() 组件),这些组件专为机器学习应用程序设计。

提示: 对于`inputs`和`outputs`参数,您可以将这些组件的名称作为字符串(`"textbox"`)或类的实例(`gr.Textbox()`)传递。

如果你的函数接受多个参数,如上所述,将输入组件列表传递给inputs,每个输入组件按顺序对应函数的一个参数。如果你的函数返回多个值,同样适用:只需将组件列表传递给outputs。这种灵活性使得Interface类成为创建演示的非常强大的方式。

我们将在构建界面系列中更深入地探讨gr.Interface

分享您的演示

如果你不能分享它,一个漂亮的演示有什么用?Gradio 让你可以轻松分享一个机器学习演示,而不用担心在网页服务器上托管的麻烦。只需在 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构建的。我们在building with Blocks系列中深入探讨了gr.Blocks

使用gr.ChatInterface的聊天机器人

Gradio 包含另一个高级类,gr.ChatInterface,专门用于创建聊天机器人用户界面。与 Interface 类似,你提供一个函数,Gradio 会创建一个完全可用的聊天机器人用户界面。如果你对创建聊天机器人感兴趣,可以直接跳转到 我们关于 gr.ChatInterface 的专门指南

Gradio Python 和 JavaScript 生态系统

这就是核心gradio Python库的要点,但Gradio实际上远不止这些!它是一个完整的Python和JavaScript库生态系统,让你可以用Python或JavaScript构建机器学习应用程序,或以编程方式查询它们。以下是Gradio生态系统的其他相关部分:

  • Gradio Python Client (gradio_client): 在Python中以编程方式查询任何Gradio应用。
  • Gradio JavaScript Client (@gradio/client): 在JavaScript中以编程方式查询任何Gradio应用程序。
  • Gradio-Lite (@gradio/lite): 使用Python编写完全在浏览器中运行的Gradio应用程序(无需服务器!),这要归功于Pyodide。
  • Hugging Face Spaces: 最受欢迎的免费托管Gradio应用程序的地方!

接下来是什么?

继续按顺序学习Gradio指南,其中包含解释以及示例代码和嵌入式交互式演示。接下来:让我们更深入地了解Interface类

或者,如果您已经掌握了基础知识并正在寻找特定的内容,您可以搜索更技术性的API文档