7. Gradio库

7.1. Gradio简介

Gradio是一个开源的Python库,用于快速为机器学习模型、API 或任意Python函数构建演示界面和Web应用。

它的主要特点:

  • 快速上手:一行命令安装,几行Python代码即可启动,无需 JavaScript/CSS/前端经验

  • 丰富组件:支持图像、音频、视频、3D、数据框、JSON 等多种输入输出类型

  • 免费托管:可部署到 Hugging Face Spaces,自动扩展,永久在线

  • 即时分享:一键生成本地运行的公开链接,方便展示给客户或同事

我们可以在鲁班猫板卡上安装Gradio库,并通过编写测试代码来快速构建机器学习模型的演示界面。

7.2. Gradio 安装

使用pip工具(或者uv工具)安装gradio。

# 在终端中输入如下命令,安装 Gradio 库:
pip3 install --upgrade gradio

等安装完成后即可,查看版本:

import gradio as gr
print(gr.__version__)
6.10.0

7.3. Gradio 使用

安装好Gradio库之后,我们就可以利用该库构建机器学习演示应用。

7.3.1. 基础例程 - 文本问候演示

这个例程演示如何使用 Gradio 创建一个简单的文本示例界面。

7.3.1.1. 添加代码文件

创建一个简单的 Python 脚本 basic_gradio.py

# 创建基础演示脚本
nano basic_gradio.py

内容如下:

basic_gradio.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import gradio as gr

def greet(name, intensity):
    """
    简单的问候函数

    参数:
        name: 姓名
        intensity: 重复次数

    返回:
        问候语字符串
    """
    return "Hello, " + name + "!" * int(intensity)

# 创建 Interface 界面
demo = gr.Interface(
    fn=greet,                          # 要包装的函数
    inputs=["text", "slider"],         # 输入组件:文本框 + 滑块
    outputs=["text"],                  # 输出组件:文本
    title="Gradio 基础演示",            # 标题
    description="输入你的名字和强度,获得问候语",  # 描述
    examples=[                         # 示例数据(可选)
        ["张三", 3],
        ["李四", 5],
        ["王五", 1],
    ]
    # allow_flagging 参数在新版 Gradio 中已移除
)

# 启动应用
if __name__ == "__main__":
    # 启用队列支持并发访问
    demo.queue(max_size=10)
    demo.launch(server_name="0.0.0.0", server_port=7860)

注解

配置说明:

  • server_name="0.0.0.0" 允许从外部设备访问(默认仅 localhost)

  • server_port=7860 指定服务端口(默认 7860)

  • demo.queue() 启用队列支持多用户并发访问,避免请求阻塞

  • max_size=10 队列最大等待数,防止内存溢出

  • 设置 share=True 可生成72小时有效的临时公网链接(仅用于演示)

7.3.1.2. 运行演示

# 运行 Gradio 演示
cat@lubancat:~$ python3 basic_gradio.py
* Running on local URL:  http://0.0.0.0:7860
* To create a public link, set `share=True` in `launch()`.

此时可以通过浏览器访问 http://<板卡 IP>:7860 来查看演示界面。 在文本框中输入名字,拖动滑块调整强度,点击Submit按钮即可看到生成的问候语。

broken