在 Gradio 中,Interface 是用于构建和展示机器学习模型。通过 Interface,你可以轻松地创建一个交互式的 Web 界面,让用户能够输入数据并查看模型或函数的输出,而不需要编写复杂的前端代码。
1. 基本使用
一个简单的交互界面,包含若干个输入控件,若干个输出控件,以及对输入数据进行计算的处理函数。在 Gradio 中提供了非常便捷的工具 Interface 来快速创建一个简单的交互式界面。该类通过三个重要的参数在交互式界面中显示需要的控件,以及相应的数据处理:
- fn:后端处理函数
- inputs:输入控件集合
- outputs:输出控件集合
import gradio as gr
def test01():
def response(number):
ret1 = number + 10
ret2 = 'hello' + str(number)
return ret1,ret2
# 1. 传入字符串
# app = gr.Interface(fn=response, inputs='number', outputs=['number', 'text'])
# app.launch()
# 2. 传入控件对象
num = gr.Number()
out1 = gr.Number()
out2 = gr.Text()
app = gr.Interface(fn=response, inputs=num, outputs=[out1, out2])
app.launch()
def test02():
num = gr.Number()
out1 = gr.Number()
out2 = gr.Textbox()
def response(number):
ret1 = number + 10
ret2 = 'hello' + str(number)
# 返回字典类型
return {out2: ret2, out1: ret1}
app = gr.Interface(fn=response, inputs=num, outputs=[out1, out2])
app.launch()
if __name__ == '__main__':
test01()
2. 基本参数
import gradio as gr
def test():
def respond(num, txt):
return txt * num
app = gr.Interface(fn=respond, inputs=['number', 'text'], outputs='text',
# 界面的标题
title='我的交互界面',
# 界面的描述
description='这是对界面的描述',
# 界面的详细内容
article='<h2>这是详细内容</h2>',
# 界面的主题风格
theme=gr.themes.Default(),
# 界面的样式
# css='p{color:red;}',
# 如果设置为 True,输出控件的内容会实时更新输出
# live=True,
# 样例数据,每个控件都需要设置值
examples=[[10, 'A'], [20, 'B'], [30, 'C']],
# 样例标签
example_labels=['样例1', '样例2', '样例3'],
# 按钮文本
submit_btn='提交',
stop_btn='停止',
clear_btn='清空')
app.launch()
if __name__ == '__main__':
test()
3. 输出标记
import gradio as gr
def test():
class CustomFlagCallback(gr.FlaggingCallback):
def setup(self, components, flagging_dir):
"""
程序运行时初始化执行
components: 提供标记的组件集合(输入和输出控件集合)
flagging_dir: 存储路径
"""
# [<gradio.components.number.Number object at 0x0000023CA2EC5C90> ... ]
print(components)
# fallback
print(flagging_dir)
def flag(self, flag_data, flag_option, username):
"""
用户点击标记时执行
flag_data: 标记数据
flag_option: 标记选项
username: 标记用户名
Returns: 标记的总数量
"""
# [30, 'C', 'CCCCCCCCCCCCCCCCCCCCCCCCCCCCCC']
print(flag_data)
# weifa
print(flag_option)
return 0
app = gr.Interface(fn=lambda n, t: n * t, inputs=['number', 'text'], outputs='text',
# 输出标记: never auto manual
# never: 从不标记
# auto: 自动标记每次输出
# manual: 手动标记每次输出
flagging_mode='manual',
# 标记内容:[(label, value)...]
flagging_options=[('违法', 'weifa'), ('错误', 'cuowu')],
# 标记数据存储路径
flagging_dir='fallback',
# 标记数据处理回调,默认使用 gradio.flagging.CSVLogger 处理标记数据
flagging_callback=CustomFlagCallback(),
batch=True,
max_batch_size=2)
app.launch()
if __name__ == '__main__':
test()
4. launch 参数
import gradio as gr
def test():
app = gr.Interface(fn=lambda x : x ** 2, inputs='number', outputs='number')
# share:如果设置为 True,Gradio 会为你生成一个可以通过互联网访问的临时 URL。默认值为 False。
# inbrowser:是否在启动时自动在默认浏览器中打开应用界面。默认值为 False。
# auth:允许你为应用添加基本身份验证。你可以传入一个用户名和密码的元组,或者包含多个用户凭据的列表。
# auth_message:当启用 auth 时,显示的提示信息
# server_name:允许指定服务器的主机名。默认是 '127.0.0.1',即仅本地可访问。如果想通过局域网访问,可以设置为 '0.0.0.0'。
# quiet:如果设置为 True,则在启动应用时不会输出任何日志或信息。默认值为 False。
app.launch(share=True,
inbrowser=True,
auth=[('admin', '123456'), ('mbl', '123')],
auth_message='请登录访问',
server_name='0.0.0.0',
server_port=8080,
quiet=True)
if __name__ == '__main__':
test()

冀公网安备13050302001966号