Gradio:三行代码把 AI 模型变成可交互的网页 Demo

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 步:加载预训练模型

这一步要做什么:用 transformerspipeline 接口加载情感分析模型,它会把 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()
)
同时加上 titledescription 参数,界面会正式很多。

提高并发处理能力

默认情况下队列积压会丢失请求,按需调整:
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 不止有文本组件,还有 ImageAudioVideo 等输入输出组件。可以尝试把情感分析换成图像分类模型,输入图片输出类名。 - 部署上线:把项目推送到 Hugging Face Spaces,它原生支持 Gradio 应用,填好 requirements.txt 后自动构建,永久免费运行。把链接分享出去,别人就不用安装 Python 也能用了。
🚀

AI 项目推荐

智能体
标签
#机器学习 #演示 #Web应用 #Python
浏览
👁️ 7
发布日期
2026-08-01