Python - Gradio用Blocks构建自定义界面布局的应用程序

什么是Blocks

Blocks是Gradio的低级API,它允许你创建比Interfaces更多的自定义web应用程序和演示。简单来说就是比Interfaces更灵活。
一般使用上下文管理,示例代码如下:

import gradio as gr

with gr.Blocks() as demo:
	gr.Image("lion.jpg", scale=2)
	gr.Image("tiger.jpg", scale=1)
demo.launch()

Blocks的布局

既然更灵活,那么界面怎么布局也可以你自己决定。
如果没提供布局,那么就是默认一个个组件垂直排列下来。

Row、Column

行布局和列布局

with gr.Blocks() as demo:
    with gr.Row():
        with gr.Column():
            gr.Text(value='1')
            gr.Text(value='2')
        with gr.Column():
            gr.Text(value='3')
            gr.Text(value='4')
demo.launch()

在这里插入图片描述

Tab

标签页布局

with gr.Blocks(title='test Blocks') as demo:  # title可以修改页面标题
    with gr.Tab('标签页1'):
        gr.Text(value='1')
        gr.Text(value='2')
    with gr.Tab('标签页2'):
        gr.Text(value='3')
        gr.Text(value='4')
demo.launch()

在这里插入图片描述
在这里插入图片描述

Box

盒子布局。就是把组件放同一个盒子里,个人认为没啥用,基本没用到过。
可能我不说都看不出有啥变化,跟第一张图对比,你会发现中间的缝没了,也就是把Box里的所有组件放在同一个盒子里了,而第一张图是两个盒子。

with gr.Blocks(title='test Blocks') as demo:
    with gr.Box():
        with gr.Row():
            with gr.Column():
                gr.Text(value='1')
                gr.Text(value='2')
            with gr.Column():
                gr.Text(value='3')
                gr.Text(value='4')
demo.launch()

在这里插入图片描述

Accordion

这个布局就是可以把组件隐藏。

with gr.Blocks(title='test Blocks') as demo:
    with gr.Accordion("See Details"):
        with gr.Row():
            with gr.Column():
                gr.Text(value='1')
                gr.Text(value='2')
            with gr.Column():
                gr.Text(value='3')
                gr.Text(value='4')
demo.launch()

在这里插入图片描述
在这里插入图片描述

总结

总之,使用Blocks()来构建程序比使用Inferfaces()肯定灵活得多。
本篇只谈到用Blocks可以自定义界面布局,下一篇我们将继续聊聊自定义组件触发事件

### 使用 Gradio.Blocks 调用大语言模型 Gradio 是一个用于快速构建机器学习和深度学习模型交互界面的开源库。`gr.Blocks()` 提供了一种灵活的方式来设计自定义布局应用程序,可以轻松集成各种输入和输出组件。 以下是通过 `gr.Blocks()` 调用大语言模型的具体方法: #### 方法概述 为了调用大语言模型,通常需要实现以下几个部分: 1. **加载模型**:确保已经安装并配置好所需的大语言模型及其依赖项。 2. **定义处理函数**:编写一个 Python 函数,该函数接受用户的输入作为参数,并返回经过大语言模型处理的结果。 3. **创建 Gradio 接口**:利用 `gr.Blocks()` 构建应用程序,将输入组件(如文本框)、输出组件(如文本框或表格)与处理函数绑定在一起。 --- #### 示例代码 假设我们正在使用 Hugging Face 的 Transformers 库中的 GPT 模型来进行文本生成任务,下面是一个完整的示例代码: ```python import gradio as gr from transformers import pipeline # 加载预训练的语言模型 model = pipeline('text-generation', model='gpt2') def generate_text(prompt, max_length=50): """ 处理函数:接收用户输入并生成文本。 参数: prompt (str): 用户提供的提示文本。 max_length (int): 输出文本的最大长度。 返回: str: 由大语言模型生成的文本。 """ result = model(prompt, max_length=max_length, do_sample=True)[0]['generated_text'] return result with gr.Blocks() as demo: # 添加页面标题 gr.Markdown(""" # 文本生成应用 输入一段文字,让大语言模型为你续写! """) # 定义输入和输出组件 input_text = gr.Textbox(label="输入提示", placeholder="请输入您的问题...") slider = gr.Slider(minimum=10, maximum=100, value=50, label="最大生成长度") output_text = gr.Textbox(label="生成结果") # 将输入组件与处理函数绑定 input_text.submit(fn=generate_text, inputs=[input_text, slider], outputs=output_text) demo.launch() ``` --- #### 关键点解析 1. **加载模型** 上述代码中使用了 Hugging Face 的 `pipeline` 工具来加载名为 `gpt2` 的预训练模型[^4]。可以根据需求替换为其他支持的大语言模型。 2. **定义处理函数** `generate_text` 函数负责接收用户输入的提示文本以及可选的最大生成长度参数,并返回经模型生成的结果字符串[^5]。 3. **创建接口** 利用 `gr.Blocks()` 创建了一个简单的 Web 应用程序,其中包含以下组件: - 一个文本框 (`gr.Textbox`) 用于接收用户输入; - 一个滑动条 (`gr.Slider`) 控制生成文本的最大长度; - 另一个文本框显示模型生成的内容。 4. **事件监听** 当用户提交输入时,触发 `submit` 方法执行指定的处理逻辑,并更新输出区域[^3]。 --- ### 注意事项 - 如果目标设备上未预先下载所需的模型权重文件,则首次运行可能需要花费一些时间完成下载操作。 - 对于较大的模型或者复杂的推理流程,建议考虑部署到云端服务器以提高性能表现。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值