《Python Gradio》(二)常规界面

在 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()
未经允许不得转载:一亩三分地 » 《Python Gradio》(二)常规界面
评论 (0)

5 + 9 =