python gradio-app
gradio-app 通常指的是用 Gradio 快速搭建的机器学习 Web 应用。Gradio 是专门为 ML/AI 模型做交互界面的 Python 库,几行代码就能把模型变成网页应用。
安装
pip install gradio
最小示例
import gradio as gr
def greet(name):
return f"Hello, {name}!"
demo = gr.Interface(fn=greet, inputs="text", outputs="text")
demo.launch()
运行后访问 http://127.0.0.1:7860 就能看到界面。
常见场景
1. 文本处理
import gradio as gr
def process_text(text):
return text.upper(), len(text)
demo = gr.Interface(
fn=process_text,
inputs=gr.Textbox(label="输入文本", lines=3),
outputs=[gr.Textbox(label="大写"), gr.Number(label="长度")],
title="文本处理工具"
)
demo.launch()
2. 图像处理
import gradio as gr
from PIL import Image
def to_grayscale(img):
return Image.fromarray(img).convert("L")
demo = gr.Interface(
fn=to_grayscale,
inputs=gr.Image(type="numpy"),
outputs=gr.Image(type="pil"),
title="图片转灰度"
)
demo.launch()
3. 聊天机器人(ChatInterface)
import gradio as gr
def chatbot(message, history):
return f"你说的是:{message}"
demo = gr.ChatInterface(fn=chatbot, title="简单聊天机器人")
demo.launch()
4. 多标签页(Blocks)
import gradio as gr
with gr.Blocks() as demo:
gr.Markdown("# 我的 AI 工具集")
with gr.Tab("文本"):
txt_in = gr.Textbox()
txt_out = gr.Textbox()
txt_btn = gr.Button("处理")
txt_btn.click(lambda x: x[::-1], txt_in, txt_out)
with gr.Tab("图片"):
img_in = gr.Image()
img_out = gr.Image()
img_btn = gr.Button("处理")
img_btn.click(lambda x: x, img_in, img_out)
demo.launch()
部署相关
让别人能访问
demo.launch(
server_name="0.0.0.0", # 监听所有网卡
server_port=7860,
share=False # True 会生成临时公网链接
)
生成临时公网链接(72小时有效)
demo.launch(share=True)
生产部署建议
# 用 nohup 后台跑
nohup python app.py > gradio.log 2>&1 &
# 或用 screen/tmux
screen -S gradio
python app.py
# Ctrl+A D 分离
然后前面挂 Nginx 反向代理,配 HTTPS:
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://127.0.0.1:7860;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
常用组件
| 组件 | 用途 |
|---|---|
gr.Textbox |
文本输入/输出 |
gr.Number |
数字 |
gr.Slider |
滑块 |
gr.Dropdown |
下拉选择 |
gr.Image |
图片 |
gr.Audio |
音频 |
gr.Video |
视频 |
gr.File |
文件上传 |
gr.Dataframe |
表格 |
gr.Chatbot |
对话展示 |
结合大模型示例
import gradio as gr
from openai import OpenAI
client = OpenAI(api_key="your-key")
def chat(message, history):
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": message}]
)
return response.choices[0].message.content
gr.ChatInterface(fn=chat).launch()
常见坑
- 端口被占用:默认 7860,冲突就改
server_port。 share=True慢:它走 Gradio 的 frp 中转,速度不稳定,生产别用。- 中文乱码:Python 文件头加
# -*- coding: utf-8 -*-,或确保终端编码是 UTF-8。 - 并发问题:默认单线程,加
demo.queue()支持并发:demo.queue().launch() - 模型只加载一次:把模型加载写在
if __name__ == "__main__":外面,避免每次请求都重载。
你是想做个什么应用?文本、图像还是接大模型?我可以给你完整可跑的模板。
本文来自博客园,作者:AceFenix,转载请注明原文链接:https://www.cnblogs.com/ukzq/p/23133901

浙公网安备 33010602011771号