Gradio:三行代码把 AI 模型变成可交互的网页 Demo
智能体
📖 简介
Gradio 让任何 Python 模型几行代码就能变成浏览器可交互的 Demo,54k+ Stars。分享、测试、演示 AI 应用,Hugging Face Spaces 上百万个应用背后的技术。
📝 详细介绍
这篇教程带你完成什么
最终你会得到一个运行在本地的情感分析网页应用——在输入框粘贴一段英文文本,点击提交,页面立刻返回积极/消极判断和置信度。整个过程只需要一个 Python 文件,代码不超过 20 行。前置条件
- Python 3.8 及以上版本,建议 3.10+
pip包管理器可用,并能访问 PyPI 仓库- 推荐使用虚拟环境(venv 或 conda)隔离项目依赖
- 无需 GPU,CPU 即可运行;如果想要加速推理,有 NVIDIA GPU 可自行安装 CUDA 版 PyTorch
安装部署
安装依赖
pip install gradio transformers
gradio 负责网页交互层,transformers 提供预训练模型。安装完成后检查版本:
python -c "import gradio; print(gradio.__version__)"
看到版本号说明安装成功。
初始化项目
mkdir sentiment-demo && cd sentiment-demo
在目录下创建 app.py,这就是你的全部代码所在地。
启动服务
python app.py
看到 Running on local URL: http://127.0.0.1:7860 就表示服务已启动,浏览器打开这个地址即可访问。
第一个 Demo
第 1 步:加载预训练模型
这一步要做什么:用transformers 的 pipeline 接口加载情感分析模型,它会把 tokenization、推理、输出解析全部封装好。
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
首次运行会自动下载模型权重(约 250MB),需要一点耐心。
第 2 步:定义核心函数
这一步要做什么:写一个接收字符串、返回字符串的普通 Python 函数,Gradio 会在后端调用它,并把返回值渲染到网页上。def analyze(text: str) -> str:
result = classifier(text)[0]
return f"情感:{result['label']},置信度:{result['score']:.2f}"
这个函数输入用户粘贴的文本,输出格式化的情感结论。
第 3 步:用三行代码封装成网页应用
这一步要做什么:创建gr.Interface 对象,指定输入组件、输出组件和要调用的函数,最后启动服务。
import gradio as gr
demo = gr.Interface(fn=analyze, inputs="text", outputs="text")
demo.launch()
保存后运行 python app.py,浏览器打开 http://127.0.0.1:7860。
预期输出:页面中央有一个文本输入框和一个"Submit"按钮。输入 I love this product!,点击提交,输出:
情感:POSITIVE,置信度:1.00
如果你的浏览器没有自动打开页面,手动复制终端里显示的 URL 粘贴到地址栏。
配置与调优
开启公共链接
本机运行只能自己访问,把launch() 改成:
demo.launch(share=True)
Gradio 会通过 frpc 生成一个 https://xxxxxx.gradio.live 的公共地址,有效期 72 小时,可以发给同事远程试用,无需部署服务器。
切换界面主题
Gradio 内置多种主题,比如gr.themes.Soft()、gr.themes.Monochrome()。在创建 Interface 时指定:
demo = gr.Interface(
fn=analyze,
inputs="text",
outputs="text",
title="情感分析 Demo",
theme=gr.themes.Soft()
)
同时加上 title 和 description 参数,界面会正式很多。
提高并发处理能力
默认情况下队列积压会丢失请求,按需调整:demo.launch(concurrency_limit=10)
demo.queue()
先调用 demo.queue() 启用队列机制,再设置并发上限,避免多人同时点击时页面卡死。
常见坑与排错
| 报错信息 | 原因 | 解决办法 |
|---|---|---|
ModuleNotFoundError: No module named 'gradio' |
没有在正确的 Python 环境中安装 gradio | 确认虚拟环境已激活,重新执行 pip install gradio |
OSError: Can't load model |
transformers 下载模型失败或网络受限 | 设置镜像源:export HF_ENDPOINT=https://hf-mirror.com 后重试 |
Share link is not available |
frpc 组件下载被防火墙拦截 | 改用 localtunnel 或部署到 huggingface.co/spaces |
| 浏览器打开页面后空白 | 前端静态资源(js/css)加载超时 | 升级 gradio 到最新版,或检查网络代理是否干扰本地回环地址 |
下一步
- Blcoks 进阶:当你的 Demo 需要多输入多输出、中间状态展示或多个页面时,Interface 不够灵活。去读官方文档的Blocks 章节,它可以用 gr.Blocks() 自由布局页面。
- 多模态支持:Gradio 不止有文本组件,还有 Image、Audio、Video 等输入输出组件。可以尝试把情感分析换成图像分类模型,输入图片输出类名。
- 部署上线:把项目推送到 Hugging Face Spaces,它原生支持 Gradio 应用,填好 requirements.txt 后自动构建,永久免费运行。把链接分享出去,别人就不用安装 Python 也能用了。🚀
AI 项目推荐
智能体- 标签
- #机器学习 #演示 #Web应用 #Python
- 浏览
- 👁️ 7
- 发布日期
- 2026-08-01