【Gradio系列】快速入门

快速入门

Gradio 是一个开源 Python 包,可让您快速构建 机器学习模型、API 或任何任意 Python 函数的演示或 Web 应用程序。然后,您可以使用 Gradio 内置的共享功能,在几秒钟内共享演示或 Web 应用程序的链接。

先决条件:Gradio 需要 Python 3.10 或更高版本。

复制代码
pip install --upgrade gradio

Interface 类

Interface 类旨在为接受一个或多个输入并返回一个或多个输出的机器学习模型创建演示。

Interface 类有三个核心参数

  • fn:围绕其包装用户界面 (UI) 的函数
  • inputs:用于输入的 Gradio 组件。组件的数量应与函数中的入参数数量匹配。
  • outputs:用于输出的 Gradio 组件。组件的数量应与函数的返回值数量匹配。

fn 参数非常灵活------可以传递任何您想用 UI 包装的 Python 函数。

inputs 和 outputs 参数接受一个或多个 Gradio 组件。Gradio 包含超过 30 个内置组件(例如 gr.Textbox()、gr.Image() 和 gr.HTML() 组件),这些组件专为机器学习应用程序设计。

对于 inputs 和 outputs 参数,可以传递这些组件的名称作为字符串("textbox")或类的实例(gr.Textbox())。

复制代码
import gradio as gr

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

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

demo.launch()
  • inputs="text", "slider" 对应的就是左边的文本输入框和滑块

  • outputs="text" 对应的是右边的文本输入框

  • Clear和submit按钮是Interface默认的属性.

    submit_btn: str | Button = "Submit"
    clear_btn: str | Button | None = "Clear"
    stop_btn: str | Button = "Stop"

完整Gradio Interface示例

在这个示例中,我们展示了如何用 一个 gr.Interface 同时处理多种输入输出类型,从而快速构建一个功能丰富的交互式演示界面。通过这个界面,可以通过 Gradio 支持的常见输入输出控件快速生成表单组件,包括:文本(Textbox)数字(Number)滑块(Slider) :滑动滑块选择数值,函数返回数值平方作为演示。复选框(Checkbox)下拉菜单(Dropdown) :选择单个选项,函数返回选中的值。图片(Image)音频(Audio)视频(Video)

复制代码
"""
  完整Gradio Interface
  展示多种输入输出类型
"""

import gradio as gr
import numpy as np
from PIL import Image


def demo_fn(text, num, slider_val, check1, check2, dropdown_choice, image, audio, video):
    # 文本输出
    text_out = f"文本输入: {text}"

    # 数字输出
    number_out = f"数字输入: {num}, 加10 = {num + 10}"

    # 滑块输出
    slider_out = f"滑块值: {slider_val}, 平方 = {slider_val**2}"

    # 复选框输出
    checks = []
    if check1: checks.append("Option 1")
    if check2: checks.append("Option 2")
    checkbox_out = "选择了: " + (", ".join(checks) if checks else "无")

    # 下拉输出
    dropdown_out = f"下拉选择: {dropdown_choice}"

    # 图片输出: 原图 + 反色图
    if image is not None:
        inverted_image = Image.fromarray(255 - np.array(image))
    else:
        inverted_image = None

    # 音频输出: 原样返回
    audio_out = audio

    # 视频输出: 原样返回
    video_out = video

    # 返回多个输出
    return text_out, number_out, slider_out, checkbox_out, dropdown_out, image, inverted_image, audio_out, video_out

iface = gr.Interface(
    fn=demo_fn,
    inputs=[
        gr.Textbox(label="文本输入"),
        gr.Number(label="数字输入"),
        gr.Slider(0, 100, label="滑块"),
        gr.Checkbox(label="Option 1"),
        gr.Checkbox(label="Option 2"),
        gr.Dropdown(choices=["A", "B", "C"], label="下拉菜单"),
        gr.Image(label="上传图片"),
        gr.Audio(sources=["upload"], type="numpy", label="上传音频"),
        gr.Video(label="上传视频")
    ],
    outputs=[
        gr.Textbox(label="文本输出"),
        gr.Textbox(label="数字输出"),
        gr.Textbox(label="滑块输出"),
        gr.Textbox(label="复选框输出"),
        gr.Textbox(label="下拉输出"),
        gr.Image(label="原图"),
        gr.Image(label="反色图"),
        gr.Audio(label="音频输出"),
        gr.Video(label="视频输出")
    ],
    title="Interface 示例",
    description="Gradio输入输出示例"
)

if __name__ == "__main__":
    iface.launch()
相关推荐
墨舟的AI笔记38 分钟前
React 组件库的 Tree Shaking:按需加载与副作用的工程化治理
人工智能
WoooChi1 小时前
DailyTech-20260724
人工智能·科技·业界资讯
zh路西法2 小时前
【CAM Grad-CAM Grad-CAM++】深度学习模型可解释性:从原理到YOLOv8部署实战
人工智能·深度学习·yolo·yolov8·grad-cam·cam
雨辰AI2 小时前
全集实战:企业级大模型服务化部署全栈指南|FastAPI 封装 + Nginx 负载均衡 + 高可用架构 从单机到生产一步到位
人工智能·ai·负载均衡·fastapi·ai编程
触底反弹2 小时前
Vibe Coding 不写 Git,等于悬崖边飙车
人工智能·git·面试
咖啡屋和酒吧2 小时前
健康管理:现代生活的科学守护
人工智能·生活·精选
星栈独行3 小时前
翻完 Pi 源码:它和 Codex、Claude Code 有何不同
开发语言·javascript·人工智能·程序人生
没有梦想的咸鱼185-1037-16633 小时前
AI-Python机器学习与深度学习技术:CNN/Transformer/扩散模型、SHAP可解释及Hermes智能体自动化
人工智能·python·深度学习·机器学习·chatgpt·cnn·transformer
船漏了就会沉3 小时前
Kimi K3 vs DeepSeek-V4:国产大模型的技术路线之争
人工智能
kirs_ur3 小时前
SSD 在 AI 训练中的角色
大数据·服务器·人工智能