Gradio 迈向每月 100 万用户的旅程!
阅读更多Gradio 迈向每月 100 万用户的旅程!
阅读更多Gradio 是一个开源 Python 包,允许你快速为你的机器学习模型、API 或任何任意 Python 函数构建演示或 Web 应用程序。然后,你可以使用 Gradio 的内置分享功能,在几秒钟内分享你的演示或 Web 应用程序的链接。无需 JavaScript、CSS 或 Web 托管经验!
只需几行 Python 代码即可创建你自己的演示,让我们开始吧 💫
先决条件:Gradio 需要 Python 3.10 或更高版本。
我们建议使用 pip
安装 Gradio,Python 默认包含 pip。在你的终端或命令提示符中运行此命令
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"],
)
demo.launch()
提示: 我们将导入的名称从 gradio
缩短为 gr
。这是一种被广泛采用的约定,以提高代码的可读性。
现在,运行你的代码。如果你已在名为 app.py
的文件中编写了 Python 代码,则你可以从终端运行 python app.py
。
如果从文件运行,则以下演示将在浏览器中在 http://localhost:7860 上打开。如果你在 notebook 中运行,则演示将嵌入在 notebook 中显示。
在左侧的文本框中键入你的姓名,拖动滑块,然后按“提交”按钮。你应在右侧看到友好的问候语。
提示: 在本地开发时,你可以在热重载模式下运行 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
类成为创建演示的非常强大的方式。
我们将在关于构建 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/lite
):使用 Python 编写 Gradio 应用程序,这些应用程序完全在浏览器中运行(无需服务器!),这要归功于 Pyodide。使用 Gradio 指南按顺序继续学习 Gradio,其中包含解释以及示例代码和嵌入式交互式演示。接下来:让我们更深入地了解 Interface 类。
或者,如果您已经了解基础知识并正在寻找特定的内容,您可以搜索更技术性的 API 文档。
您还可以构建 Gradio 应用程序而无需编写任何代码。只需在终端中键入 gradio sketch
即可打开一个编辑器,您可以通过该编辑器定义和修改 Gradio 组件、调整其布局、添加事件,所有这些都通过 Web 编辑器完成。或者使用此托管版本的 Gradio Sketch,它在 Hugging Face Spaces 上运行。