小睿AI导航

ARTICLE DETAIL

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

Gradio可以把Python函数包装成可在浏览器操作的演示页面。本文按官方文档中的基本用法,从文本摘要原型入手,说明安装启动、组件与数据类型的对应关系,再扩展到模型API和图片分类,并解释Block

🛠️ AI工具教程 浏览 1 2026-10-23 作者 小睿AI
📝

文章正文

样式 7 内容详情排版

阅读提示当前文章有1305字,阅读完大概需要4分钟。

先运行一个文本摘要原型

负责把输入组件、函数和输出组件连接起来。模型加载、推理与外部仍由后端代码完成,不需要为了制作演示页面重新训练模型。下面沿用官方文档中Interface与launch的基本使用方式。

建议先创建独立的Python虚拟环境,激活后安装依赖:

python -m pip install gradio

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

新建app.py,将下面四段代码按顺序各占一行保存:

import gradio as gr

summarize = lambda text: "。".join([s.strip() for s in text.split("。") if s.strip()][:3])

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

demo = gr.Interface(fn=summarize, inputs=gr.Textbox(label="原文", lines=8), outputs=gr.Textbox(label="摘要"), title="文本摘要演示")

demo.launch()

运行python app.py,再打开终端显示的本地地址。默认情况下通常是http://127.0.0.1:7860;端口被占用或配置改变时,以实际输出为准。输入一段包含中文句号的文字并提交,即可看到结果。

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

这里的函数只是提取前三句,用于验证页面到函数再到结果的流程,不具备语义概括能力。流程跑通后,再替换成真正的摘要模型。

Interface怎样对应函数输入和输出

Interface的fn接收Python函数,inputs决定用户怎样提供参数,outputs决定返回值如何展示。这个例子中,Textbox传入字符串,函数也返回字符串,因此输出仍选Textbox。

  • 有多个输入组件时,默认按组件排列顺序对应函数参数。
  • 有多个输出组件时,函数应按相同顺序返回对应结果,例如元组中的两个值分别交给两个输出框。
  • 组件类型需要与函数处理的数据一致。图片可配置为PIL图像或数组,文件组件则应按其配置处理文件路径或字节内容。

初次接入时,可先检查输入类型与返回结构。页面能打开并不代表模型已经成功运行。

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

从后端读取密钥并调用模型

以OpenAI Python SDK为例,额外安装openai,在运行app.py的环境中设置OPENAI_API_KEY,并将MODEL_NAME设置为该账户可用、支持相应接口的模型名称。不要把真实密钥写进代码、输入框默认值或公开仓库。

保留原来的界面定义,将summarize定义替换为下面四行,并放在demo创建之前:

import os

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

from openai import OpenAI

client = OpenAI()

summarize = lambda text: client.responses.create(model=os.environ["MODEL_NAME"], instructions="请用中文概括原文,保留主要事实,不补充原文没有的信息。", input=text).output_text

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

SDK在后端读取密钥,浏览器只提交原文并显示结果。请求会把原文发送给模型服务,仍需确认内容允许外发,并处理超时、额度不足和接口错误。Gradio本身不提供模型额度,也不保证模型服务可用。

给图片分类模型添加上传入口

图片演示同样可以使用Interface。例如安装transformers、torch和pillow后,在另一个脚本中逐行写入:

import gradio as gr

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

from transformers import pipeline

classifier = pipeline("image-classification", model="google/vit-base-patch16-224")

predict = lambda image: {r["label"]: r["score"] for r in classifier(image)}

Gradio怎么用?从创建交互界面到接入模型与分享演示的入门指南

gr.Interface(fn=predict, inputs=gr.Image(type="pil", label="上传图片"), outputs=gr.Label(label="分类结果")).launch()

Image把图片转换为PIL图像交给函数;函数把预测结果整理成“类别名称到分数”的字典,Label负责展示。首次运行需要下载模型文件,耗时与内存占用取决于网络和机器配置。输出类别受模型训练标签范围限制,分数不代表结果一定正确。

什么时候使用Blocks和ChatInterface

一个函数配一组输入输出,优先使用Interface。需要左右分栏、多个按钮,或让按钮点击分别触发不同函数时,可以使用Blocks组织布局,再通过click、change等事件连接组件与函数。

聊天场景可使用ChatInterface,回调通常接收本轮message和历史history,再返回回复。接入模型时,需要按所用Gradio版本与模型接口要求转换消息格式;展示了历史消息,不代表后端已经把历史传给模型。

分享链接、长期托管与访问控制

launch(share=True)可生成临时公开分享链接,适合邀请他人测试。它依赖本地程序持续运行,存在有效期限制,不能当作永久访问地址。长期提供演示需要部署到持续运行的服务器或托管平台,并确认依赖、资源、存储和平台限制。

分享与鉴权是两项配置。小范围测试可通过launch(auth=("用户名", "密码"))设置登录信息;公开服务还需按实际需求配置访问控制、请求限制与资源隔离。

开放前检查上传文件的保存与清理方式、可访问的文件路径,以及日志是否记录原文、图片信息或密钥。先用非敏感样本测试,再决定演示允许哪些人访问。