Gradio 简单入门指南

1. Gradio简介

Gradio是一个开源的Python库,用于快速创建机器学习模型和数据科学工作流的演示界面。它允许开发者通过几行代码将Python函数转换为交互式Web应用,无需前端开发经验。

主要用途

  • 快速演示机器学习模型
  • 创建数据可视化工具
  • 构建交互式数据处理应用
  • 开发教学演示界面

优势

  • 极简的API设计,上手门槛低
  • 支持多种输入输出类型(文本、图像、音频、视频等)
  • 自动生成美观的UI界面
  • 支持本地运行和云端部署
  • 内置分享功能,一键生成公开链接

2. 安装步骤

环境要求

  • Python 3.7或更高版本
  • 建议使用虚拟环境(如venv或conda)

安装命令

基础安装

1
pip install gradio

完整安装(包含所有依赖)

1
pip install gradio[all]

验证安装

1
2
import gradio as gr
print(gr.__version__)

3. 基础示例

示例1:简单的文本输入输出应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import gradio as gr

def greet(name):
"""简单的问候函数"""
return f"你好, {name}! 欢迎使用Gradio!"

# 创建Gradio界面
iface = gr.Interface(
fn=greet, # 要包装的函数
inputs=gr.Textbox(label="请输入你的名字"), # 输入组件
outputs=gr.Textbox(label="问候语") # 输出组件
)

# 运行应用
iface.launch()

示例2:图像展示应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import gradio as gr
import numpy as np

def generate_image(width, height):
"""生成随机彩色图像"""
# 创建随机彩色图像
image = np.random.randint(0, 255, (height, width, 3), dtype=np.uint8)
return image

# 创建Gradio界面
iface = gr.Interface(
fn=generate_image,
inputs=[
gr.Slider(minimum=100, maximum=800, value=400, label="图像宽度"),
gr.Slider(minimum=100, maximum=800, value=300, label="图像高度")
],
outputs=gr.Image(label="随机生成的图像")
)

# 运行应用
iface.launch()

4. 核心组件

常用输入组件

文本输入

1
2
3
4
5
# 单行文本框
text_input = gr.Textbox(label="单行文本输入", placeholder="请输入文本")

# 多行文本框
textarea = gr.Textarea(label="多行文本输入", lines=5)

图像输入

1
2
# 图像上传组件
image_input = gr.Image(label="上传图像", type="numpy") # 返回numpy数组

数值输入

1
2
3
4
5
# 滑块
slider = gr.Slider(minimum=0, maximum=100, value=50, label="滑块")

# 数值输入框
number = gr.Number(label="数值输入", value=0)

选择组件

1
2
3
4
5
# 下拉菜单
dropdown = gr.Dropdown(choices=["选项1", "选项2", "选项3"], label="下拉菜单")

# 单选按钮
radio = gr.Radio(choices=["A", "B", "C"], label="单选按钮")

常用输出组件

文本输出

1
text_output = gr.Textbox(label="文本输出")

图像输出

1
image_output = gr.Image(label="图像输出")

表格输出

1
dataframe_output = gr.Dataframe(label="表格输出")

5. 运行与分享

运行应用

本地运行

1
2
3
4
5
iface.launch(
server_name="0.0.0.0", # 允许外部访问
server_port=7860, # 指定端口
share=True # 生成公开链接
)

分享应用

临时分享

1
iface.launch(share=True)

永久部署

  • 使用Gradio Hub部署
  • 部署到Hugging Face Spaces
  • 部署到AWS、GCP等云平台

6. 进阶提示

技巧1:添加自定义CSS样式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
iface = gr.Interface(
fn=greet,
inputs=gr.Textbox(),
outputs=gr.Textbox()
)

# 添加自定义CSS
iface.css = """
.gradio-container {
background-color: #f0f2f6;
}
"""

iface.launch()

技巧2:使用Blocks构建更复杂的界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import gradio as gr

with gr.Blocks() as demo:
gr.Markdown("# 复杂界面示例")

with gr.Tab("文本处理"):
input_text = gr.Textbox(label="输入文本")
output_text = gr.Textbox(label="输出文本")
process_btn = gr.Button("处理")

with gr.Tab("图像处理"):
input_image = gr.Image(label="上传图像")
output_image = gr.Image(label="处理后的图像")
process_image_btn = gr.Button("处理图像")

def process_text(text):
return text.upper()

process_btn.click(fn=process_text, inputs=input_text, outputs=output_text)

demo.launch()

7. 常见问题

Q: 如何在Jupyter Notebook中运行Gradio?

A: 使用iface.launch(inline=True)即可在Notebook中内嵌运行。

Q: 如何关闭Gradio应用?

A: 在终端按Ctrl+C即可停止运行。

Q: 如何处理大文件上传?

A: 在gr.Image组件中设置type="filepath",然后处理文件路径。

8. 学习资源

希望这份指南能帮助你快速上手Gradio!