Gradio 简单入门指南
1. Gradio简介
Gradio是一个开源的Python库,用于快速创建机器学习模型和数据科学工作流的演示界面。它允许开发者通过几行代码将Python函数转换为交互式Web应用,无需前端开发经验。
主要用途
- 快速演示机器学习模型
- 创建数据可视化工具
- 构建交互式数据处理应用
- 开发教学演示界面
优势
- 极简的API设计,上手门槛低
- 支持多种输入输出类型(文本、图像、音频、视频等)
- 自动生成美观的UI界面
- 支持本地运行和云端部署
- 内置分享功能,一键生成公开链接
2. 安装步骤
环境要求
- Python 3.7或更高版本
- 建议使用虚拟环境(如venv或conda)
安装命令
基础安装
完整安装(包含所有依赖)
验证安装
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!"
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
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")
|
数值输入
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() )
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!