Gradio小记
Gradio小记
小游Gradio小记
安装Gradio
#清华镜像源 |
接口创建函数
import gradio as gr |
Interface类以及基础模块
三个参数
- fn:包装的函数
- inputs: 输入组件类型(“text”,”image”等)
- ouputs: 输出组件类型(“text”,”image”等)
我们可以创建一个接口并发布
可以定义多个输入和输出
import gradio as gr |
其中Slider是滑动条,中的数字是范围
最常用的基础模块构成
- 应用界面:gr.Interface(简易场景),gr.Blocks(定制化场景)
- 输入输出的组件:gr.Image(图像),gr.Textbox(文本框),gr.DataFrame(数据框),gr.Dropdown(下拉选项),gr.Number(数字),gr.Markdown(markdown语句),gr.Files(文件)
- 控制组件:gr.Button(按钮)
- 布局组件:gr.Tab(标签页),gr.Row(行布局),gr.Column(列布局)
gr.Textbox(lines=行数,placeholder=“提示文字’’,label=”标签名称”)
launch()方法的三个返回值
- app, 为Gradio演示提供支持的FastAPI应用程序
- local_url,本地地址
- share_url,公共地址,当share=True时生成
小知识
设置报错弹窗
raise gr.Error("弹窗文字") |
#设置网页标题 |
interface状态及交互
全局变量
全局变量的好处就是在调用函数后仍然能够保存,例如在机器学习中通过全局变量从外部加载一个大型模型,并在函数内部使用它,一边每次函数调用都不需要重新加载模型。
全局变量的使用
import gradio as gr |
状态
会话状态
#简易聊天机器人 |
allow_flagging 设置没有保存数据的按钮
gr.Chatbot()是创建聊天机器人类
交互
实时变化
在Interface 中设置live=True ,则输出回跟随输入实时变化。这个时候界面不会有submit按钮,因为不需要手动提交输入。
流模式
在许多情况下,我们的输入是实时视频流或者音频流,那么意味这数据不停地发送到后端,这是可以采用streaming模式处理数据
import gradio as gr |
numpy.flipud()用于翻转列表,将矩阵进行上下翻转
numpy.fliplr()用于翻转列表,左右翻转
自定制组件:Blocks构建应用
切片时第三个参数为负数是从后往前
将图片左右翻转,文字前后翻转
import gradio as gr |
Flagging标记
在 Gradio 中,Flagging 标记通常是指使用参数或属性来配置 Gradio 接口的行为,使其能够满足你的需求。Flagging 在 Gradio 中主要体现在 Interface
对象的各种设置上。
以下是一些在 Gradio 中常见的 Flagging 标记的例子:
live
标志:import gradio as gr
iface = gr.Interface(
fn=my_function,
inputs="text",
outputs="text",
live=True # 设置 live 标志,使界面实时更新
)在这个例子中,
live
标志设置为True
,表示界面会实时更新,而不是等到用户点击按钮或发出请求后才刷新。share
标志:import gradio as gr
iface = gr.Interface(
fn=my_function,
inputs="text",
outputs="text",
share=True # 设置 share 标志,生成一个可以共享的链接
)通过将
share
标志设置为True
,你可以创建一个可分享的链接,使其他人能够访问你的 Gradio 接口。其他设置:
Gradio 的
Interface
对象还有许多其他可以配置的标志,如title
(标题)、description
(描述)、examples
(示例输入)等。这些标志允许你定制接口的外观和行为。import gradio as gr
iface = gr.Interface(
fn=my_function,
inputs="text",
outputs="text",
title="My Interface",
description="This is a custom interface.",
examples=[["input example 1", "input example 2"]],
live=True,
share=True
)
这里只是一些 Flagging 的示例,你可以根据 Gradio 的文档和你的需求查找更多可用的标志和配置选项。标记的使用使 Gradio 接口的定制变得非常灵活,使你能够通过简单地调整参数来改变界面的外观和行为。
队列
如果函数推理事件较长,比如目标检测,或者应用程序处理流量过大,则需要使用queue方法进行排队。queue方法使用websockets,可以防止网络超时。
demo = gr.Interface(...).queue() |
可交互设置
任何输入的组件内容都是可编辑的,而输出组件默认是不能编辑的。如果想要使得输出组件内容可编辑,设置interacitve=True即可。
#不可交互 |