Gradio 是一个开源 Python 包,可让您快速构建机器学习模型、API 或任何任意 Python 函数的演示或 Web 应用程序。然后,您可以使用 Gradio 内置的共享功能,在几秒钟内共享演示或 Web 应用程序的链接。无需 JavaScript、CSS 或 Web 托管经验!
只需几行 Python 代码即可创建自己的演示,让我们开始吧 💫
先决条件:Gradio 需要 Python 3.10 或更高版本。
我们建议使用 pip 安装 Gradio,pip 默认包含在 Python 中。在您的终端或命令提示符中运行此命令
pip install --upgrade gradio最好在虚拟环境中安装 Gradio。有关所有常见操作系统安装的详细说明在此提供。
您可以在您喜欢的代码编辑器、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"],
api_name="predict"
)
demo.launch()
我们将 gradio 的导入名称缩短为 gr。这是一个被广泛采纳的约定,以提高代码的可读性。
现在,运行您的代码。如果您将 Python 代码写在名为 app.py 的文件中,那么您将在终端中运行 python app.py。
如果从文件运行,演示将会在浏览器中打开,地址为 https://:7860。如果您在 Notebook 中运行,演示将嵌入在 Notebook 中。
在左边的文本框中输入您的名字,拖动滑块,然后按提交按钮。您应该会在右边看到一个友好的问候。
在本地开发时,您可以在 热重载模式 下运行您的 Gradio 应用程序,它会在您更改文件时自动重新加载 Gradio 应用程序。要做到这一点,只需在文件名之前输入 gradio 而不是 python。在上面的例子中,您将在终端中输入:gradio app.py。您还可以通过使用 --vibe 标志启用 vibe 模式,例如 gradio --vibe app.py,它提供了一个浏览器内的聊天界面,可用于使用自然语言编写或编辑您的 Gradio 应用程序。在 热重载指南 中了解更多信息。
理解 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 类成为创建演示的非常强大的方式。
我们将在关于构建 Interface 的系列中更深入地探讨 gr.Interface。
一个漂亮的演示如果无法分享,又有什么意义呢?Gradio 让您可以轻松地共享机器学习演示,而无需担心托管在 Web 服务器上的麻烦。只需在 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 提供了一种低级方法,用于设计具有更可定制布局和数据流的 Web 应用程序,即 gr.Blocks 类。Blocks 支持诸如控制组件在页面上的显示位置、处理多个数据流和更复杂的交互(例如,输出可以作为其他函数的输入)以及根据用户交互更新组件的属性/可见性等功能——所有这些仍然全部用 Python 实现。
您可以使用 gr.Blocks() 构建非常自定义和复杂的应用程序。例如,流行的图像生成Automatic1111 Web UI 是使用 Gradio Blocks 构建的。我们在关于使用 Blocks 构建的系列中更深入地探讨了 gr.Blocks。
gr.ChatInterface 创建聊天机器人Gradio 还包含另一个高级类,gr.ChatInterface,它专门用于创建聊天机器人 UI。与 Interface 类似,您只需提供一个函数,Gradio 就会创建一个功能齐全的聊天机器人 UI。如果您有兴趣创建聊天机器人,您可以直接跳转到我们关于 gr.ChatInterface 的专用指南。
这就是核心 gradio Python 库的要点,但 Gradio 实际上远不止于此!它是一个完整的 Python 和 JavaScript 库生态系统,可以让你用 Python 或 JavaScript 构建机器学习应用程序,或以编程方式查询它们。以下是 Gradio 生态系统中其他相关部分
gradio_client):以编程方式用 Python 查询任何 Gradio 应用程序。@gradio/client):以编程方式用 JavaScript 查询任何 Gradio 应用程序。通过 Gradio 指南顺序学习 Gradio,其中包括解释以及示例代码和嵌入式交互式演示。接下来:让我们深入研究 Interface 类。
或者,如果您已经知道基础知识并正在寻找具体内容,您可以搜索更具技术性的 API 文档。