Gradio中文教程(一)Quickstart
Gradio中文教程(一)Quickstart
快速入门
Gradio
是一个开源的Python包
,它允许你快速构建一个演示
或Web应用程序
,用于你的机器学习模型、API,或者任何任意Python函数
。然后你可以使用 Gradio
内置的分享功能,在几秒钟内就共享出一个链接到你的演示
或Web应用程序
。无需JavaScript
、CSS
、或Web托管经验
!
安装
前置条件:Gradio
需要 Python 3.
8 或以上版本。
我们建议使用 pip
安装 Gradio
,pip 包是默认包含在 Python 中的。在你的终端或命令提示窗口运行以下命令:
pip install gradio
创建你的第一个演示
你可以使用你最喜欢的代码编辑器(如 Visual Studio Cod
e、PyCharm
等)、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"],
)
demo.launch()
现在,运行你的代码。如果你已经用Python
编写了名为app.py
的文件中的Python代码
,那么你就会在终端中使用python app.py
命令来运行Python代码
。
python app.py
理解 Interface 类
你将注意到,在创建第一个演示时,你已经实例化了gr.Interface类
。Interface类
是为机器学习模型设计的,可以接受一个或多个输入,并返回一个或多个输出。
Interface 类有三个核心参数:
-
fn:要包装用户界面(
UI
)的函数 -
inputs:用于输入的
Gradio 组件
(组件数量应与函数参数数量匹配) -
outputs:用于输出的
Gradio 组件
(组件数量应与函数返回值数量匹配
fn 参数
非常灵活—你可以传递任何 Python 函数
,你想要用一个 UI包装
。在上面的例子中,我们看到了一个相对简单的函数,但是这个函数可以是任何东西从一个音乐生成器到一个税收计算器到预训练机器学习模型的预测函数。
inputs
和 outputs
参数接受一个或多个 Gradio 组件
。Gradio
集成了超过30个预先设计好的组件,专为机器学习应用服务,比如 gr.Textbox()
、gr.Image()
和 gr.HTML()
等。随着你的需求,你可以根据需要选择和组合这些组件来创建功能丰富的 UI
。
如果你的函数接受多个参数,就像上面的情况那样,请将输入组件列表传递给inputs
,每个输入组件对应于函数中的一个参数,并按顺序排列。同样,如果你的函数返回多个值:简单地传递输出组件列表到outputs
。这项灵活性使得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
,这个过程将在几秒钟内完成,类似于这样的URL
:
https://a23dsf231adb.gradio.live
现在,世界各地的任何人都可以尝试你的Gradio演示
,通过他们的浏览器,而机器学习模型和所有计算继续运行本地在你的计算机上。要了解更多关于分享您的演示,请阅读我们的专用指南,关于分享您的Gradio应用程
序。
Gradio概述
到目前为止,我们已经讨论了Interface类
,这是一个高级别的类,让我们快速构建演示使用Gradio
。但是,Gradio
还能做些什么?
Gradio chat机器人
Gradio
还包括一个高级别的类,gr. ChatInterface
,这个类是专门为创建Chatbot UIs
而设计。与Interface
类似,你提供一个函数,然后Gradio
就生成了一个完全工作的Chatbot UI
。如果你对创建chatbot
感兴趣,可以直接跳转到我们的关于gr. ChatInterface
的指南。
自定义演示gr. Blocks
Gradio
还提供了一种低级别的approach
来设计web应用程序
,使用gr. Blocks类
,这个类允许你实现更加灵活的布局和数据流。 Blocks
允许你控制组件在页面中的位置、处理复杂的数据流(例如输出可以作为其他函数的输入)和根据用户交互更新组件的属性/可见性——所有这些都可以在Python
中实现。
使用gr. Blocks()
你可以构建非常自定义且复杂的应用程序。例如,流行的图像生成Auto1111 Web UI
就是使用Gradio Blocks
构建的。我们在我们的关于Blocks
的系列指南中更深入地探讨了gr. Blocks
。
GradioPython & JavaScript生态系统
那是Gradio核心 Python 库
的概要,但是Gradio
实际上是一个Python
和JavaScript库
的整个生态系统,允许你在Python
或JavaScript
中构建机器学习应用程序或编程查询它们。下面是Gradio生态系统中的其他相关部分:
-
Gradio Python 客户端(gradio_client):在
Python
中编程查询任何Gradio 应用程序
。 -
Gradio JavaScript 客户端(@gradio/client):在
JavaScript
中编程查询任何Gradio 应用程序
。 -
Gradio-Lite(@gradio/lite):使用
Pyodide
在浏览器中完全运行Gradio 应用程序
(不需要服务器!),以Python 写作
。 -
Hugging Face Spaces:
Gradio 应用程序
的最流行Hosting 地
址——免费!