如 Quickstart 中所提到的, gr.Interface
类是 Gradio (4.36.1)中的一个高级抽象,它允许您通过指定输入类型和输出类型快速创建任何 Python 函数的演示。重新查看我们的第一个演示:
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()
我们看到 Interface
类是使用三个必需参数初始化的:
fn
:用于围绕用户界面(UI)的函数inputs
:用于输入的 Gradio 组件。组件的数量应与函数中的参数数量相匹配。outputs
:用于输出的 Gradio 组件。组件的数量应与函数的返回值数量相匹配。
在本指南中,我们将深入探讨 gr.Interface
以及它可以定制的各种方式,但在此之前,让我们先更好地了解 Gradio 组件。
Gradio 组件
Gradio 包含 30 多个预构建组件(以及许多社区构建的自定义组件),这些组件可以在您的演示中用作输入或输出。这些组件对应于机器学习和数据科学中的常见数据类型,例如 gr.Image
组件旨在处理输入或输出图像, gr.Label
组件显示分类标签和概率, gr.Plot
组件显示各种类型的图表等等。
静态和交互式组件
每个组件都有一个静态版本,用于显示数据,大多数组件还有一个交互版本,允许用户输入或修改数据。通常,您不需要考虑这种区别,因为当您构建 Gradio 演示时,Gradio 会自动根据组件是用作输入还是输出来判断该组件应该是静态的还是交互的。但是,您可以使用每个组件都支持的 interactive
参数手动设置这一点。
预处理和后处理
当组件被用作输入时,Gradio 会自动处理所需的预处理,将数据从用户浏览器发送的类型(如上传的图像)转换为您的函数可以接受的形式(如 numpy
数组)。
同样,当一个组件被用作输出时,Gradio 会自动处理所需的后处理工作,将函数返回的数据(例如图片路径列表)转换为用户浏览器中可以显示的形式(一个图片库)。
组件属性
我们使用了 gr.Textbox
和 gr.Slider
的默认版本,但如果您想更改 UI 组件的外观或行为呢?
假设您想自定义滑块,使其值从 1 到 10,默认值为 2。并且您想自定义输出文本字段——您希望它更大并且有标签。
如果您使用 gr.Textbox
和 gr.Slider
的实际类而不是字符串快捷方式,您可以通过组件属性访问更多的自定义选项。
import gradio as gr # 导入gradio库
# 定义greet函数,接受名字(name)和强度(intensity)作为输入
def greet(name, intensity):
return "Hello, " + name + "!" * intensity # 返回与强度相符的问候次数
# 创建Gradio界面
demo = gr.Interface(
fn=greet, # 设置greet函数为界面的处理函数
inputs=[ # 定义输入组件
"text&