Gradio Blocks:自定义交互式Web应用和演示

news/2024/10/30 13:36:18/

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈

博主原文链接:https://www.yourmetaverse.cn/nlp/246/

请添加图片描述

(封面图由文心一格生成)

Gradio Blocks:自定义交互式Web应用和演示

Gradio是一个强大的库,提供了多种方法来构建交互式Web应用和演示。其中之一是Gradio的Blocks模块,它允许您创建比接口更加自定义的Web应用和演示,完全在Python中实现。本文将介绍Gradio的Blocks模块,探讨其灵活性和控制能力,并提供示例和详细的参数介绍。

1. 引言

Gradio的Blocks模块是Gradio的低级API,它允许您创建比接口更加自定义的Web应用和演示。相比于Interface类,Blocks提供了更多的灵活性和控制,包括组件的布局、触发函数执行的事件以及数据流(例如,输入可以触发输出,输出可以触发下一级的输出)。Blocks还提供了将相关的演示组合在一起的方法,例如使用选项卡。

2. 基本用法

使用Blocks的基本步骤如下:创建一个Blocks对象,然后将其用作上下文(使用"with"语句),在Blocks上下文中定义布局、组件或事件。最后,调用launch()方法启动演示。

以下是一个示例:

import gradio as grdef update(name):return f"Welcome to Gradio, {name}!"with gr.Blocks() as demo:gr.Markdown("Start typing below and then click **Run** to see the output.")with gr.Row():inp = gr.Textbox(placeholder="What is your name?")out = gr.Textbox()btn = gr.Button("Run")btn.click(fn=update, inputs=inp, outputs=out)demo.launch()

在这个示例中,我们使用Blocks创建了一个简单的界面,包含一个文本输入框和一个按钮。当用户在文本框中输入内容并点击按钮时,按钮的点击事件会触发update函数,并将输入文本作为参数传递给它。然后,update函数返回一个欢迎消息,该消息将显示在输出文本框中。

3. 参数介绍

下面是Blocks的参数介绍:

参数数据类型默认值描述
themeTheme | str | NoneNone主题对象或表示主题的字符串。如果是字符串,将查找具有该名称的内置主题(例如"soft"或"default"),或尝试从HF Hub加载主题(例如"gradio/monochrome")。如果为None,将使用默认主题。
analytics_enabledbool | NoneNone是否允许基本的遥测。如果为None,将使用GRADIO_ANALYTICS_ENABLED环境变量的值,或默认为True。
modestr“blocks”Blocks或Interface的人类友好名称。
titlestr | None“Gradio”在输入和输出组件上方显示的标题。同时也用作在浏览器窗口中打开时的标签标题。
cssstr | NoneNone自定义CSS样式或自定义CSS文件的路径,应用于整个Blocks。

下面是Blocks的launch方法的参数介绍:

参数数据类型默认值描述
inlinebool|NoneNone是否在界面中以iframe内联方式显示。在Python笔记本中默认为True;其他情况下默认为False。
inbrowserboolFalse是否在默认浏览器中自动打开界面的新标签页。
sharebool|NoneNone是否为界面创建一个公开可分享的链接。创建一个SSH隧道,使您的界面可以从任何地方访问。如果未提供,默认设置为False,除非在Google Colab中运行。当本地主机不可访问时(例如在Google Colab中),不支持设置share=False。
debugboolFalse如果为True,则阻塞主线程运行。在Google Colab中运行时,需要设置为True以打印单元格输出中的错误信息。
enable_queuebool|NoneNone已弃用(请使用.queue()方法代替)。如果为True,则推理请求将通过队列而不是并行线程进行处理。在需要较长的推理时间(>1分钟)时,使用队列来防止超时。HuggingFace Spaces的默认选项是True。其他情况下的默认选项是False。
max_threadsint40Gradio应用程序可以并行生成的最大线程数。默认值继承自starlette库(当前为40)。无论队列是否启用,都适用。但如果启用了队列,则将增加此参数的值,至少为队列的concurrency_count。
authCallable|tuple[str, str]|list[tuple[str, str]]|NoneNone如果提供,需要用户名和密码(或用户名-密码元组列表)来访问界面。也可以提供一个函数,该函数接受用户名和密码并返回True表示有效登录。
auth_messagestr|NoneNone如果提供,登录页面上显示的HTML消息。
prevent_thread_lockboolFalse如果为True,界面将在服务器运行时阻塞主线程。
show_errorboolFalse如果为True,界面中的任何错误将显示在警告模态框中,并打印在浏览器控制台日志中。
server_namestr|NoneNone若要在本地网络上使应用程序可访问,将其设置为"0.0.0.0"。可以通过环境变量GRADIO_SERVER_NAME进行设置。如果为None,则使用"127.0.0.1"。
server_portint|NoneNone将Gradio应用程序启动在此端口(如果可用)。可以通过环境变量GRADIO_SERVER_PORT进行设置。如果为None,则从7860开始搜索可用端口。
show_tipsboolFalse如果为True,将定期显示有关Gradio新功能的提示。
heightint500包含界面的iframe元素的高度(如果inline=True)。
widthint|str“100%”包含界面的iframe元素的宽度(如果inline=True)。
encryptbool|NoneNone已弃用,无效果。
favicon_pathstr|NoneNone如果提供文件的路径(.png、.gif或.ico),将其用作网页的favicon。
ssl_keyfilestr|NoneNone如果提供了文件的路径,将使用该路径作为私钥文件来创建运行在https上的本地服务器。
ssl_certfilestr|NoneNone如果提供文件的路径,将其用作https的签名证书。如果提供了ssl_keyfile,必须提供此参数。
ssl_keyfile_passwordstr|NoneNone如果提供密码,将与https的ssl证书一起使用。
ssl_verifyboolTrue如果为False,则跳过证书验证,允许使用自签名证书。
quietboolFalse如果为True,则抑制大部分打印语句。
show_apiboolTrue如果为True,则在界面的页脚显示API文档。默认为True。如果启用了队列,则由.queue()的api_open参数确定是否显示API文档,与show_api的值无关。
file_directorieslist[str]|NoneNone已更名为allowed_paths。将在将来的版本中删除。
allowed_pathslist[str]|NoneNone可以由Gradio公开访问的完整文件路径或父目录列表(除了包含Gradio Python文件的目录)。必须是绝对路径。警告:如果提供了目录,则这些目录及其子目录中的任何文件都可供您的应用程序的所有用户访问。
blocked_pathslist[str]|NoneNone不允许Gradio提供访问的完整文件路径或父目录列表(即,您的应用程序的用户不允许访问)。必须是绝对路径。警告:此参数优先于allowed_paths和Gradio默认公开的所有其他目录。
root_pathstr“”应用程序的根路径(或“挂载点”),如果它不是从域的根路径(“/”)提供的。通常在应用程序位于反向代理后面,将请求转发到应用程序时使用。例如,如果应用程序位于"https://example.com/myapp"上提供,则将root_path设置为“/myapp”。
app_kwargsdict[str, Any]|NoneNone作为参数键和参数值的字典,附加到底层FastAPI应用程序中的额外关键字参数。例如,{"docs_url": "/docs"}

4. 总结

Gradio的Blocks模块是一个强大的工具,可用于创建自定义的交互式Web应用和演示。通过使用Blocks,您可以实现更灵活和可控的布局、事件触发和数据流,以满足您的特定需求。


❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️

👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博相关......)👈


http://www.ppmy.cn/news/503655.html

相关文章

大数据开发薪资怎么样

想必想入行的小伙伴在正式开始学习之前,都会考虑薪资这个可观因素。有不少小伙伴是看中了大数据的薪资选择加入这个行业的,想知道以后能找什么工作以及工作薪水,那不妨让我们以数据的方式来展示一下~ 猎聘大数据研究院发布了《2022未来人才就…

three.js物体纹理及其常用属性介绍

一、Three中的纹理和材质介绍 THREE中的纹理和材质是用来渲染3D场景中的物体表面的。纹理贴图定义物体表面的颜色和外观,而材质则定义物体表面如何反射光线。 纹理可以使用多种类型的图像文件,包括JPEG、PNG、GIF等。纹理可以是简单的颜色、图案或者是复…

Redis简单动态字符串SDS

目录 前言 一.SDS定义 二.SDS与C字符串的区别 2.1 常数复杂度获取字符串的长度 2.2 杜绝缓冲区溢出 2.3 减少修改字符串时带来的内存重分配次数 2.3.1 空间预分配 2.3.2 惰性空间释放 2.4 二进制安全 2.5 兼容部分C字符串函数 2.6 总结 三.SDS缺点 前言 Redis没有直接使用C语…

获取bing壁纸php,php获取bing每日壁纸示例分享

php获取bing每日壁纸示例分享 复制代码 代码如下: $strfile_get_contents(http://cn.bing.com/HPImageArchive.aspx?idx0&n1); if(preg_match("/(.?)/ies",$str,$matches)){ $imgurlhttp://cn.bing.com.$matches[1]; } if($imgurl){ header(Content-Type: imag…

python 日历壁纸_极客编程日历2018桌面壁纸

图灵社区出版了一本极客编程日历“Happy Hacking 2018”,实体已经售罄,但是提供了PDF电子版下载。我们可以编写脚本,把日历和桌面壁纸结合在一起。最终效果如图: 编程日历桌面壁纸 Python源代码: import datetime from…

Mybatis源码分析_日志模块 (1)

不得不承认,学习MyBatis的时间成本要比学习Spring低很多,Mybatis是我所了解过的代码量最小、整体架构最简单,但是又是最具有学习价值的一个框架。如果,你想快速的阅读一个框架的源码,并且掌握这个框架的精髓&#xff0…

python修改桌面壁纸_轻松有趣的Python小案例,让电脑自动更换壁纸

周末好!难得放假,今天的你是不是一觉睡到大中午了?不要有愧疚感,现在的年轻人压力实在太大,好好睡上一觉已经是一件很奢侈的事情了,就给自己好好放个假吧! 在这难得的休闲时光,我们…

什么是版本控制系统?怎么学习? - 易智编译EaseEditing

版本控制系统(Version Control System,简称VCS)是一种用于管理和跟踪文件版本的工具或系统。它可以追踪文件的变更历史,记录每个版本的修改内容,以及支持多人协作开发。 学习版本控制系统可以帮助你更好地管理和控制你…