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 函数。在上面的例子中,我们看到了一个相对简单的函数,但这个函数可以是任何东西,从音乐生成器到税务计算器,再到预训练机器学习模型的预测函数。
inputs 和 outputs 参数接受一个或多个 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应用程序的专门指南。
到目前为止,我们一直在讨论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库的要点,但Gradio实际上远不止这些!它是一个完整的Python和JavaScript库生态系统,让你可以用Python或JavaScript构建机器学习应用程序,或以编程方式查询它们。以下是Gradio生态系统的其他相关部分:
gradio_client): 在Python中以编程方式查询任何Gradio应用。@gradio/client): 在JavaScript中以编程方式查询任何Gradio应用程序。@gradio/lite): 使用Python编写完全在浏览器中运行的Gradio应用程序(无需服务器!),这要归功于Pyodide。继续按顺序学习Gradio指南,其中包含解释以及示例代码和嵌入式交互式演示。接下来:让我们更深入地了解Interface类。
或者,如果您已经掌握了基础知识并正在寻找特定的内容,您可以搜索更技术性的API文档。