引言:当你的代码需要一个“脸面”
你刚刚用Python写好了一个很酷的函数:它可能是一个能识别图片的机器学习模型,一个能生成文本的AI,或者只是一个能处理Excel表格的简单脚本。
现在,你想把它分享给同事、朋友,或者非技术人员使用。怎么办?让他们去安装Python、配置环境、运行你的脚本吗?这显然太不现实了。你需要为你的代码创建一个图形用户界面(UI),最好还是一个网页界面(WebUI),这样任何人只要有浏览器就能使用。
但对于许多后端或算法开发者来说,写前端代码(HTML, CSS, JavaScript)是一件头疼的事。
Gradio 的出现,就是为了解决这个痛点。它是一个开源的Python库,可以让你用最少的代码,自动为你的Python函数生成一个简洁、美观、可交互的WebUI。
安装
安装Gradio和安装其他Python库一样简单:
pip install gradio
核心概念:gr.Interface
Gradio的核心就是gr.Interface
类。创建一个界面,你只需要告诉它三件事:
fn
:你要包装的那个Python函数。inputs
:你的函数需要什么样的输入(文本框、图片上传、滑块等)。outputs
:你的函数会返回什么样的输出(文本、图片、图表等)。
Gradio会根据这些信息,自动生成对应的网页组件,并将它们连接到你的函数上。
案例1:最简单的“Hello World”
让我们从一个不能再简单的例子开始。我们有一个函数,它接收一个名字,然后返回一句问候。
# app.py
import gradio as gr
def greet(name):
return "你好, " + name + "!"
# 创建Interface
# 输入是文本框,输出也是文本框
iface = gr.Interface(fn=greet, inputs="text", outputs="text")
# 启动Web服务
iface.launch()
在终端运行 python app.py
。你会看到如下输出:
Running on local URL: http://127.0.0.1:7860
打开你的浏览器,访问http://127.0.0.1:7860
。看,一个UI界面已经为你准备好了!你在输入框里输入名字,点击“Submit”,输出框里就会显示结果。
案例2:图片滤镜应用
现在来个更酷的,展示Gradio处理图片的能力。我们将创建一个简单的应用,用户上传一张图片,我们的函数会给它加上一个“乌贼墨色(Sepia)”的复古滤镜。
这需要Pillow
和Numpy
库来处理图片。如果没安装,先安装一下:
pip install numpy Pillow
然后编写代码:
# image_filter_app.py
import gradio as gr
import numpy as np
from PIL import Image
def sepia_filter(input_img):
# 将PIL图片转为Numpy数组
img_arr = np.array(input_img)
# 乌贼墨色滤镜的转换矩阵
sepia_matrix = np.array([
[0.393, 0.769, 0.189],
[0.349, 0.686, 0.168],
[0.272, 0.534, 0.131]
])
# 应用滤镜
sepia_img_arr = img_arr.dot(sepia_matrix.T)
# 确保像素值在0-255范围内
sepia_img_arr[sepia_img_arr > 255] = 255
# 将Numpy数组转回PIL图片
return Image.fromarray(sepia_img_arr.astype('uint8'))
# 指定输入和输出组件为"image"
iface = gr.Interface(
fn=sepia_filter,
inputs=gr.Image(type="pil"), # 指定输入是PIL格式的Image
outputs=gr.Image(type="pil") # 指定输出也是PIL格式的Image
)
iface.launch()
再次运行并访问,你会看到一个图片上传框。上传一张照片,它会立刻返回处理后的复古风格照片。我们没有写一行前端代码,就实现了一个完整的图片处理应用!
一键分享你的应用
Gradio最令人兴奋的功能之一是分享。如果你想让不在同一个局域网的朋友也能玩你的应用,只需在launch()
函数中添加一个参数:
iface.launch(share=True)
当你再次运行脚本时,除了本地URL,你还会看到一个公网URL,类似这样:
Running on local URL: http://127.0.0.1:7860
Running on public URL: https://1a2b3c4d.gradio.live
这个.gradio.live
的链接有效期是72小时,你可以把它发给任何人,他们可以直接在自己的浏览器里访问和使用你的应用,无需任何安装。
总结
Gradio极大地降低了AI/ML应用和数据科学项目的产品化和展示门槛。它让开发者可以专注于核心的Python逻辑,而将UI创建的繁琐工作自动化。
下次当你需要快速展示你的Python脚本能力时,别忘了用Gradio给它穿上一件漂亮又实用的“外衣”。
...