前言

gr.Interface 类是 Gradio 库中的一个高级抽象,它通过指定输入类型和输出类型,帮助用户快速创建任何 Python 函数的交互式演示。这个类接受几个关键参数来定义界面:

该类有三个核心参数:Interface

fn:将用户界面 (UI) 包裹起来的函数
inputs:用于输入的 Gradio 组件。组件数应与函数中的参数数匹配。
outputs:用于输出的 Gradio 组件。组件数应与函数的返回值数匹配。
此外,gr.Interface 还支持多个可选参数,如 title、description、examples、live、interpretation 和 theme,用于进一步定制界面的外观和行为。

功能特点

  1. 快速创建界面:通过指定输入输出类型,几行代码即可构建出完整的交互式界面。

  2. 预构建组件:Gradio提供了30多个预构建组件,涵盖文本、滑块、复选框、图像等多种类型,满足各种需求。

  3. 实时交互:支持实时更新输出,用户输入变化时,界面会立即显示最新的结果。

  4. 结果解释:可以展示模型预测的解释,增强用户对模型的理解。

  5. 高度可定制:通过调整组件属性和界面参数,可以轻松定制界面的外观和行为。

在第一章节已经介绍了接口的预处理将发送到函数的内容以及我们的后处理过程大致如下
在这里插入图片描述

一、初始化参数介绍

Gradio Interface类初始化参数介绍

请注意,由于Gradio库不断更新,以下信息可能随时间而变化。建议查阅Gradio的官方文档以获取最新和最准确的信息

参数名类型描述默认值
fnfunction被包装成Web界面的Python函数。该函数将作为Web应用的核心逻辑。必须提供,无默认值
inputslist/str输入组件的列表或单个类型字符串,每个元素对应函数的一个参数。必须提供,无默认值
outputslist/str输出组件的列表或单个类型字符串,每个元素对应函数的一个返回值。必须提供,无默认值
titlestrWeb应用的标题,显示在界面顶部。函数名或Gradio默认标题
descriptionstr对Web应用的简短描述,可以在界面上展示给用户。
exampleslist/dict示例数据,用于为输入组件提供示例输入,帮助用户理解如何输入数据。
livebool是否启用实时更新功能,即用户输入变化时,输出立即更新。False
capture_session_statebool是否捕获会话状态,以便在需要时重新加载用户输入。False
sharebool是否在启动应用时生成外部分享链接,允许其他用户访问。False
themestrWeb应用的主题名称或自定义CSS样式,用于改变界面的外观。Gradio默认主题
layoutstr/callable自定义布局,可以是预定义的布局字符串或自定义布局函数。“auto”(自动布局)
cssstr自定义CSS样式,用于覆盖默认主题或添加额外的样式规则。
flagging_dirstr指定保存被用户标记为错误或意外的输入的目录。“flagged”
interpretationcallable一个函数,用于解释和展示模型预测的结果,增强用户理解。
interpret_outlist/str指定哪些输出组件应显示解释结果,依赖于interpretation函数的使用。无,依赖于interpretation

下面是一个带消协转换的示例代码

import gradio as gr  
  
def to_uppercase(text):  
    """  
    将输入的文本转换为大写。  
    """  
    return text.upper()  
  
# 初始化参数  
inputs = gr.Textbox(label="Enter Text", placeholder="Type something...")  
outputs = gr.Textbox(label="Uppercase Text")  
  
# 其他可选参数  
title = "Uppercase Converter"  
description = "Convert your text to uppercase with this simple Gradio app."  
examples = [  
    {"input": "hello world", "output": "HELLO WORLD"},  
    {"input": "gradio is awesome", "output": "GRADIO IS AWESOME"}  
]  
  
# 布局和样式  
layout = "clean"  # Gradio 4.x 中的一个布局选项  
css = """  
.gr-Component-root {  
    padding: 20px;  
    background-color: #f0f0f0;  
    border-radius: 8px;  
}  
  
.gr-Textbox {  
    width: 100%;  
    padding: 10px;  
    margin-bottom: 20px;  
}  
  
.gr-Textbox-output {  
    font-weight: bold;  
}  
"""  
  
# 创建并启动Gradio界面  
with gr.Interface(fn=to_uppercase,   
                  inputs=inputs,   
                  outputs=outputs,   
                  title=title,   
                  description=description,   
                  examples=examples,     
                  css=css) as app:  
    app.launch()  
  
# 注意:如果你不是在Jupyter Notebook中运行此代码,或者你不希望Gradio自动关闭,  
# 你可能不需要with语句块,而是直接调用app.launch()并让它保持运行。  
# 然而,由于with语句块在退出时会自动清理资源,所以在这里使用它通常是安全的。  
# 如果你想要更长时间地保持服务器运行,请确保不要从脚本中退出(例如,在IDE中运行或在命令行中保持脚本运行)。

在这里插入图片描述

launch方法

gradio.Interface.launch(···)

功能描述
launch()方法的主要功能是启动一个本地服务器,使得用户可以在Web浏览器中查看和交互Gradio应用程序。它提供了多种部署方式,包括本地部署、通过HuggingFace托管、FastAPI挂载以及Gradio-lite浏览器集成

常用参数

参数名类型描述默认值
shareBoolean是否生成公共访问地址。当设置为True时,Gradio将提供一个外网URL以便访问应用。False
authTuple/Function设置登录验证。可以是一个包含用户名和密码的元组,或者是一个自定义的验证函数。
inlineBoolean是否将Gradio应用嵌入到当前页面的iframe中,而不是在新窗口或标签页中打开。False
inbrowserBoolean是否在新浏览器标签页中打开Gradio应用。如果为True,则点击启动按钮将在新标签页中打开应用。False
debugBoolean是否启用调试模式。在调试模式下,将提供更多错误信息,特别是在Jupyter环境中运行时。False
favicon_pathString (文件路径)设置网页图标的路径。允许你自定义浏览器标签页上显示的图标。
show_apiBoolean是否在Gradio应用的底部显示API帮助文档。这有助于开发者了解可用的API端点。False
ssl_verifyBoolean是否在请求外部资源时验证SSL证书。设置为False可以绕过自签名证书的验证错误,但请注意安全风险。True

代码如下(示例):

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="textbox", outputs="textbox")

def same_auth(username, password):
    return username == password

demo.launch(auth=same_auth, auth_message="username and password must be the same")

一下还有一些方法,但是不常用,如果需要使用可以查阅帮助文档,这里制作简单介绍

load方法

gradio.Interface.load(block, ···)

功能描述
load 方法用于从Hugging Face的模型库或Space中构建一个Gradio演示。如果源是模型库(models),它将加载模型;如果是Space(spaces),它将加载一个Space应用。输入和输出组件将自动从仓库中加载。需要注意的是,如果加载的是Space,某些高级的Blocks属性(例如自定义的css、js和head属性)将不会被加载

from_pipeline方法

gradio.Interface.from_pipeline(pipeline, ···)

功能描述
from_pipeline方法用于快速创建一个Gradio界面,该界面封装了一个Hugging Face的pipeline。这使得用户可以很容易地为预训练的模型或自定义的pipeline创建一个交互式的Web界面

pipeline方法

gradio.Interface.pipeline(pipeline, ···)

功能描述
Gradio允许用户通过使用Interface.from_pipeline方法快速创建一个界面,该方法接受一个Hugging Face的pipeline对象,并自动生成相应的Gradio界面。这使得用户可以很容易地为预训练的模型或自定义的pipeline创建一个交互式的Web界面。

queue方法

gradio.Interface.queue(···)

功能描述
queue方法允许用户设置界面的并发请求处理限制,这对于控制应用程序在高负载情况下的性能非常有用。通过queue方法,用户可以指定在任何给定时间可以处理的请求数量


总结

本章简单介绍了Gradio的接口使用方法,掌握常规用法,如果遇到新的需求,可以根据实际情况查看帮助文档,下一节我们一起来学学Gradio提供的内部组件

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐