惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - ExplorerMan

大模型sft微调参数优化2 大模型RAG实战,从被骂不靠谱到成为部门MVP,这是我的踩坑全记录【转】 推荐 Prompt 模板(大幅提升 JSON 质量) 渐进式SFT内化 [推荐]双塔模型(介绍) Agno - 轻量级Python多智能体系统框架 Open WebUI:打造友好且强大的自托管 AI 平台 文本切割方案进化概览:从“机械切割”到“智能解构” 大模型RAG的上下文压缩与过滤 SemanticChunker 语义相似拆分 基于LangChain 实现 Advanced RAG-后检索优化(上)-Reranker 基于LangChain 实现 Advanced RAG-后检索优化(下)-上下文压缩与过滤 多Agent协作入门:基于A2A协议的Agent通信(中) ollama部署与open-webui 0基础也能看懂!从0到1手把手教你本地部署大模型Ollama 什么是 AutoModel 大模型基础应用框架(ReACT\SFT\RAG)技术创新及零售业务落地应用 - ExplorerMan - 博客园 多模态Embedding模型:从文本到多模态的全面选型指南! rag 查询检索轮换
【gradio】使用Gradio快速开发前端界面:基础知识
ExplorerMan · 2025-10-11 · via 博客园 - ExplorerMan

使用Gradio快速开发前端界面:基础知识
前言
一、什么是Gradio?
二、安装Gradio
三、快速入门:构建一个简单的文本处理界面
四、Gradio 的核心组件
五、核心组件的演示
六、总结
前言
在机器学习和深度学习项目中,模型的部署和展示往往是一个重要的环节。然而,传统的前端开发流程可能对数据科学家或算法工程师来说过于复杂。Gradio 是一个轻量级的 Python 库,能够帮助开发者快速构建交互式的前端界面,用于展示模型的功能或进行简单的数据处理。 下面将零帧起手,学习Gradio 的基础知识,并通过一个简单的示例掌握其用法。我将所学内容汇总于这个专栏。

一、什么是Gradio?
Gradio 是一个开源的 Python 库,专为机器学习和数据科学项目设计。允许用户通过几行代码快速创建交互式界面,无需任何前端开发经验。Gradio 支持多种输入和输出类型(如文本、图像、音频等),非常适合用来展示模型的功能或构建原型。

特点:

简单易用:只需几行代码即可生成交互界面。
支持多种数据类型:文本、图像、音频、视频等。
跨平台支持:可以在本地运行,也可以轻松部署到云端。
开源社区活跃:拥有丰富的文档和示例。

二、安装Gradio
在开始之前,我们需要先安装 Gradio。可以通过 pip 命令轻松完成安装:

pip install gradio
运行本项目
1
三、快速入门:构建一个简单的文本处理界面
1. 示例场景
假设我们有一个简单的函数,用于将输入的文本转换为大写。我们将使用 Gradio 来构建一个交互式界面,用户可以输入任意文本并查看转换结果。

2. 编写代码
以下是完整的代码示例:

import gradio as gr

# 定义核心功能函数
def to_uppercase(text):
return text.upper()

# 创建 Gradio 接口
with gr.Blocks() as demo:
# 添加输入和输出组件
input_text = gr.Textbox(label="输入文本")
output_text = gr.Textbox(label="转换后的文本")

# 绑定函数到按钮点击事件
submit_button = gr.Button("转换为大写")
submit_button.click(to_uppercase, inputs=input_text, outputs=output_text)

# 启动界面
demo.launch()
运行本项目
python
运行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
运行上述代码后,Gradio 会在本地启动一个 Web 服务,并提供一个交互式界面。用户可以在输入框中输入任意文本,点击“转换为大写”按钮后,界面会显示转换后的结果。


四、Gradio 的核心组件
Gradio 提供了多种输入和输出组件,可以根据需求灵活选择。以下是一些常用的组件:

输入组件
gr.Textbox:文本输入框。
gr.Image:图像上传组件。
gr.Audio:音频上传组件。
gr.File:文件上传组件。
gr.Slider:滑块组件,用于选择数值范围。
输出组件
gr.Textbox:文本输出框。
gr.Image:图像显示组件。
gr.Audio:音频播放组件。
gr.Label:标签显示组件,常用于分类任务的结果展示。
五、核心组件的演示
以下是各部分的功能描述:
文本输入框 :用户输入的文本会被转换为大写并显示在“文本输出”框中。
图像上传组件 :用户上传的图片会被转换为灰度图,并显示在“图像输出”区域。
音频上传组件 :用户上传的音频文件会计算其时长,并显示在“音频信息”框中。
文件上传组件 :用户上传的文件会被读取前 100 个字符的内容,并显示在“文件内容”框中。
滑块组件 :用户通过滑块选择的数值会显示在“滑块分类结果”区域。

import gradio as gr
from PIL import Image
import numpy as np


# 定义核心功能函数
def process_inputs(text, image, audio, file, slider_value):
# 1. 处理文本输入(转换为大写)
processed_text = text.upper()

# 2. 处理图像(转换为灰度图)
if image is not None:
gray_image = Image.fromarray(image).convert("L") # 转换为灰度图
gray_image = np.array(gray_image) # 转换为 NumPy 数组
else:
gray_image = None

# 3. 处理音频(返回音频的时长)
if audio is not None:
audio_duration = f"音频时长: {len(audio[1]) / audio[0]:.2f} 秒"
else:
audio_duration = "未上传音频"

# 4. 处理文件(读取文件内容)
if file is not None:
with open(file.name, "r", encoding="utf-8") as f: # 使用 file.name 获取文件路径
file_content = f.read()[:100] + "..." # 读取前100个字符
else:
file_content = "未上传文件"

# 5. 处理滑块值(生成分类标签)
label_result = f"滑块值: {slider_value}"

# 返回所有结果
return processed_text, gray_image, audio_duration, file_content, label_result


# 创建 Gradio 界面
with gr.Blocks() as demo:
# 输入组件
gr.Markdown("### Gradio 综合示例")
with gr.Row():
text_input = gr.Textbox(label="文本输入", placeholder="请输入任意文本")
image_input = gr.Image(label="图像上传", type="numpy")
with gr.Row():
audio_input = gr.Audio(label="音频上传")
file_input = gr.File(label="文件上传")
slider_input = gr.Slider(0, 100, label="滑块选择数值范围")

# 输出组件
with gr.Row():
text_output = gr.Textbox(label="文本输出")
image_output = gr.Image(label="图像输出")
with gr.Row():
audio_output = gr.Textbox(label="音频信息")
file_output = gr.Textbox(label="文件内容")
label_output = gr.Label(label="滑块分类结果")

# 提交按钮
submit_button = gr.Button("提交")
submit_button.click(
process_inputs,
inputs=[text_input, image_input, audio_input, file_input, slider_input],
outputs=[text_output, image_output, audio_output, file_output, label_output]
)

# 启动界面
demo.launch()
运行本项目
python
运行

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
结果显示:


六、总结
通过本文的内容, Gradio 的基本用法是略有了解,下一章尝试更多高级功能,动态界面更新、多页面布局等。
希望这篇文章对你有所帮助!如果有任何问题或建议,欢迎在评论区留言交流。
————————————————

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_51086862/article/details/146397960