善忘技术夹 Logo
善忘技术夹
善用佳软 开源

5 行 Python 代码,把你的模型变成 Web 应用

一、模型做出来了,怎么展示给别人看?

上个月我训练了一个简单的图像分类模型,想给团队演示一下。

找前端同事帮忙搭页面,排期要三天。学 Flask/Django 自己写,最快的也要半天。我最后直接用 Gradio 搭了一个,从开始到可以分享链接,前后不到 10 分钟。

不是我不喜欢写前端,是”展示一个 Demo”这件事的成本不应该这么高。我只需要一个输入框、一个按钮、一个结果显示区域,这些需求 Gradio 几行代码就搞定了。

Gradio 界面演示

二、Gradio 是什么?

Gradio 是一个开源的 Python 包,GitHub 上已有 43.4k Star,Apache-2.0 协议。

项目地址:https://github.com/gradio-app/gradio

它做的事情很简单:用 Python 代码快速构建机器学习模型的交互式 Web 界面。你不需要懂 HTML、CSS、JavaScript,不需要部署服务器,不需要配置域名。

只要你会写 Python 函数,就能用 Gradio 给它套一个 Web 界面。

核心思路是这样的:你有一个 Python 函数,Gradio 帮你自动生成一个网页,包含输入控件和输出显示。用户通过网页操作,你的函数在后台运行,结果实时显示在页面上。

三、怎么用?5 行代码一个 Demo

Gradio 最核心的概念是 gr.Interface,三个参数搞定一切:fn 是你的 Python 函数,inputs 定义用户输入,outputs 定义输出显示。

一个最简单的例子:

import gradio as gr

def greet(name, intensity):
    return "Hello, " + name + "!" * int(intensity)

demo = gr.Interface(
    fn=greet,
    inputs=["text", "slider"],
    outputs=["text"],
)

demo.launch()

这段代码生成一个网页,左边是文本输入框和滑块,右边是输出文字。输入名字,调整滑块,点提交看结果。运行后浏览器自动打开 http://localhost:7860,一个 Web 应用就跑起来了。

一键分享

加一个参数:

demo.launch(share=True)

Gradio 会自动生成一个公网链接,比如 https://a23dsf231adb.gradio.live,把这个链接发给任何人,他们都能访问你的 Demo。不需要你部署服务器,不需要配置域名。

这个功能对快速验证想法和展示原型特别有用。模型还没完全训练好?先搭个 Gradio Demo 给同事看看效果。

四、不止是 Interface:Blocks 和 ChatInterface

gr.Interface 是最简单的用法。如果你需要更灵活的界面布局,Gradio 提供了两个更高级的 API。

gr.Blocks:自定义布局

gr.Blocks 让你像搭积木一样自由组合界面组件,控制每个元素的位置、样式、交互逻辑。Automatic1111 Web UI(Stable Diffusion 最流行的 Web UI)就是用 Gradio Blocks 搭的。

import gradio as gr

with gr.Blocks() as demo:
    gr.Markdown("# 我的应用")
    with gr.Row():
        inp = gr.Textbox(label="输入")
        out = gr.Textbox(label="输出")
    btn = gr.Button("提交")
    btn.click(fn=greet, inputs=inp, outputs=out)

demo.launch()

gr.ChatInterface:聊天机器人

Gradio 5.0 之后加入了 gr.ChatInterface,专门用来搭建聊天机器人界面。几行代码就能做出一个类似 ChatGPT 的对话界面,支持流式输出。

五、30+ 内置组件

Gradio 提供了 30 多种内置组件,覆盖常见的交互需求:

  • 输入类:Textbox、Number、Slider、Checkbox、Radio、Dropdown、File、Image、Audio、Video、Webcam
  • 输出类:Textbox、Label、Image、Audio、Video、Dataframe、Plot、Gallery、JSON
  • 布局类:Row、Column、Tab、Accordion、Markdown、HTML
  • 其他:Chatbot、Model3D、FileExplorer、Timer、State

你不需要自己写上传按钮,不需要自己处理图片压缩,不需要自己画图表。Gradio 的组件都处理好了,直接调用就行。

六、进阶功能

Hot Reload

gradio app.py

gradio 命令代替 python app.py,代码改了之后自动刷新,不用手动重启。

Vibe Mode

gradio --vibe app.py

开启后,浏览器里会出现一个聊天窗口,你可以用自然语言描述想要修改的界面,Gradio 自动帮你改代码。比如你说”把标题改成红色”,它就把 Markdown 的标题颜色改了。这个功能对快速调整界面很方便。

gradio_client

如果你需要用代码调用别人的 Gradio Demo:

from gradio_client import Client

client = Client("https://a23dsf231adb.gradio.live")
result = client.predict("Hello", 3, api_name="/predict")
print(result)

gradio_client 可以连接任何公开的 Gradio 应用,像调用普通 Python 函数一样调用。

Hugging Face Spaces

Gradio 和 Hugging Face Spaces 深度集成。你可以直接把 Gradio 应用部署到 Hugging Face Spaces,获得一个永久的公网链接,免费托管,不需要自己买服务器。

七、适合谁?

适合你,如果:

  • 你训练了一个 ML 模型,需要一个快速 Demo
  • 你不会前端开发,但想把 Python 工具做成 Web 版
  • 你需要一个交互式界面来展示数据分析结果
  • 你想快速验证一个想法,不想花时间搭基础设施
  • 你是学生或研究者,需要做演示

可能不适合你,如果:

  • 你需要高度定制化的 Web 应用——Gradio 的组件库有限,复杂场景可能不够用
  • 你需要生产级别的 Web 应用——Gradio 更适合 Demo 和原型,不是生产框架
  • 你追求极致的性能——Gradio 的实时渲染对超大规模应用有瓶颈

八、写在最后

Gradio 解决的核心问题是:我的 Python 函数需要一个 Web 界面,但我不会写前端。

43.4k Star 不是白来的。它把”做 Demo”这件事的门槛降到了零。pip install,写一个 Python 函数,gr.Interface 包一下,launch(share=True),链接一扔,完事。

如果你还在用 Flask/Django 搭模型 Demo,或者苦于不会写前端,Gradio 值得一试。从最简单的 gr.Interface 开始,5 分钟就能出第一个 Demo。


项目信息

  • 项目名称:Gradio
  • GitHub:https://github.com/gradio-app/gradio
  • 协议:Apache-2.0
  • 当前 Star:43.4k+
  • 安装命令:pip install gradio
  • Python 要求:3.10+
  • 技术栈:FastAPI + Svelte + Vite
  • 论文:Gradio: Hassle-Free Sharing and Testing of ML Models in the Wild (ICML HILL 2019)
  • 官网:https://gradio.app

互动时间:你用什么工具做模型 Demo?Gradio、Streamlit、Flask,还是自己写前端?评论区聊聊。

喜欢这款工具?关注「善忘技术夹」全媒体

扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)