前言
你是否训练了一个机器学习模型,却不知道怎么展示给别人看?Gradio 就是为你量身定制的工具!
一、Gradio 简介
Gradio 是一个用来快速为 Python 函数、机器学习模型构建 Web 界面的工具。
它的特点:
- 用 Python 写前端!
- 支持文本、图片、音频、视频等输入/输出
- 无需 HTML/JS/CSS
- 适配 Hugging Face、Torch、TF 等主流模型
二、安装与快速启动
安装方式
pip install gradio
最小运行示例
import gradio as gr
def greet(name):
return f"你好,{name}!"
gr.Interface(fn=greet, inputs="text", outputs="text").launch()
默认运行在:http://127.0.0.1:7860
三、案例:部署一个情感分析模型
第一步:准备模型函数
这里用最简单的情感分类做示例:
def predict_sentiment(text):
if "好" in text:
return "积极"
elif "差" in text:
return "消极"
else:
return "中性"
第二步:构建显示界面
import gradio as gr
demo = gr.Interface(
fn=predict_sentiment,
inputs=gr.Textbox(label="输入你的句子"),
outputs=gr.Label(label="预测情感")
)
demo.launch()
第三步:查看页面效果
- 打开浏览器即可看到界面
- 输入一段话,点击提交,即可返回预测结果
四、适配 AI 模型的范例
使用Hugging Face Transformers
pip install transformers
pip install torch
pip install huggingface_hub[hf_xet]
pip install hf_xet
from transformers import pipeline
import gradio as gr
classifier = pipeline("sentiment-analysis")
def classify(text):
result = classifier(text)[0]
return f"标签: {result['label']}, 分数: {result['score']:.2f}"
gr.Interface(classify, inputs="image", outputs="text").launch()
支持的输入类型
- 文本:
Textbox
,TextArea
- 图像:
Image
- 音频:
Audio
- 视频:
Video
- 文件上传:
File
五、自定义布局与增强交互
Gradio 还支持 Blocks 构建更复杂的界面:
with gr.Blocks() as demo:
text = gr.Textbox(label="请输入问题")
btn = gr.Button("提交")
output = gr.Textbox(label="回答")
def reply(msg):
return "你刚才说:" + msg
btn.click(reply, inputs=text, outputs=output)
demo.launch()
六、部署与分享
方式 | 步骤简述 |
---|---|
本地运行 | 运行 .launch() 后访问浏览器端口即可 |
远程部署(推荐) | 上传 GitHub,部署到 Hugging Face Spaces |
在 Hugging Face Spaces 免费托管:
pip install gradio
上传你项目的 app.py
+ requirements.txt
至 Hugging Face 即可
七、总结
优点 | 限制 |
---|---|
极易上手,专为 AI 打造 | 不适合复杂网页或多页面项目 |
组件丰富,UI 自动美化 | 样式自定义能力较弱 |
支持多模态输入(图音文) | 功能定位于模型交互,不适合 CMS |
一句话总结: 如果你想用最短时间,让别人体验你的模型,Gradio 是首选!
你学会了么?如需本项目素材,可留言获取完整项目包。
aiofiles==24.1.0
annotated-types==0.7.0
anyio==4.9.0
certifi==2025.6.15
charset-normalizer==3.4.2
click==8.2.1
colorama==0.4.6
exceptiongroup==1.3.0
fastapi==0.115.13
ffmpy==0.6.0
filelock==3.18.0
fsspec==2025.5.1
gradio==5.34.2
gradio_client==1.10.3
groovy==0.1.2
h11==0.16.0
hf-xet==1.1.5
httpcore==1.0.9
httpx==0.28.1
huggingface-hub==0.33.0
idna==3.10
Jinja2==3.1.6
markdown-it-py==3.0.0
MarkupSafe==3.0.2
mdurl==0.1.2
mpmath==1.3.0
networkx==3.4.2
numpy==2.2.6
orjson==3.10.18
packaging==25.0
pandas==2.3.0
pillow==11.2.1
pydantic==2.11.7
pydantic_core==2.33.2
pydub==0.25.1
Pygments==2.19.2
python-dateutil==2.9.0.post0
python-multipart==0.0.20
pytz==2025.2
PyYAML==6.0.2
regex==2024.11.6
requests==2.32.4
rich==14.0.0
ruff==0.12.0
safehttpx==0.1.6
safetensors==0.5.3
semantic-version==2.10.0
shellingham==1.5.4
six==1.17.0
sniffio==1.3.1
starlette==0.46.2
sympy==1.14.0
tokenizers==0.21.1
tomlkit==0.13.3
torch==2.7.1
tqdm==4.67.1
transformers==4.52.4
typer==0.16.0
typing-inspection==0.4.1
typing_extensions==4.14.0
tzdata==2025.2
urllib3==2.5.0
uvicorn==0.34.3
websockets==15.0.1