Gradio的重要函数以及一些代码示例学习(一)

news2025/4/5 18:05:43

1 重要函数解析

1.1 Interface()类

参考: interface

最常用的基础模块构成。

  • 应用界面:gr.Interface(简易场景), gr.Blocks(定制化场景)
  • 输入输出:gr.Image(图像), gr.Textbox(文本框), gr.DataFrame(数据框), gr.Dropdown(下拉选项), gr.Number(数字), gr.Markdown, gr.Files
  • 控制组件:gr.Button(按钮)
  • 布局组件:gr.Tab(标签页), gr.Row(行布局), gr.Column(列布局)

1.1.1 Interface()

import gradio as gr

def image_classifier(inp):
    return {'cat': 0.3, 'dog': 0.7}

demo = gr.Interface(fn=image_classifier, inputs="image", outputs="label")
demo.launch()

一些基本参数的解读:

  • fn(Union[Callable, List[Callable]]):包装的函数,可以是一个或者多个,用列表存放多个函数。
  • inputs(Union[str, InputComponent, List[Union[str, InputComponent]]]):输入类型/格式,一个参数可以是字符串str;可以是输入组件InputComponent;多个参数可以是列表,列表可以包含字符串str,输入组件InputComponent。输入组件的个数应该和fn函数的参数个数一致。
  • outputs(Union[str, OutputComponent, List[Union[str, - OutputComponent]]]):输出类型/格式,与inputs类似,区别就算这是输出组件。输出组件的个数应该和fn函数返回个数一致。
  • live(bool):默认为False,设置为True,为动态页面,只要输入发生变化,结果马上发生改变。
  • layout(str):输入输出面板的布局。"horizontal"安排他们为两列等高;"unaligned"安排他们为两列不等高;"vertical"安排他们为垂直排放。
  • allow_flagging(str):有三个选项"never"、“auto”、“manual”。设置为"never"或"auto"时,用户无法看到Flag按钮;设置为"manual",用户可见Flag按钮。如果设置为"auto",每次的输入输出都会被标记保存。如果设置为"manual",当用户按下Flag按钮,标记当前输入输出的结果并保存。
  • flagging_dir(str):Flag保存的文件夹名称

1.1.2 Interface.launch

参考:gradio.Interface.launch(···)

import gradio as gr
def reverse(text):
    return text[::-1]
demo = gr.Interface(reverse, "text", "text")
demo.launch(share=True, auth=("username", "password"))
参数名数据类型默认值描述
inlinebool/NoneNone是否在界面中以内联的方式显示。在Python笔记本中默认为True,其他情况下默认为False。
inbrowserboolFALSE是否自动在默认浏览器的新标签页中打开界面。
sharebool/NoneNone是否创建一个公共链接,使演示可以被任何人访问。如果未提供,默认为False,除非在Google Colab中运行。
debugboolFALSE如果为True,在Google Colab中需要打印错误时会阻塞主线程。
enable_queuebool/NoneNone【已弃用】是否启用队列来处理推理请求,用于防止超时。在HuggingFace Spaces中默认为True,在其他情况下默认为False。
max_threadsint40并行生成的线程的最大数量。默认继承自starlette库(当前为40)。无论队列是否启用,都适用。但如果启用了队列,该参数将增加到至少队列的并发数。
authCallable/tuple/…None如果提供,需要用户名和密码(或用户名-密码元组的列表)来访问界面。还可以提供一个函数,该函数接受用户名和密码并返回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),将用作Web页面的favicon(网站图标)。
ssl_keyfilestr/NoneNone如果提供文件的路径,将用作创建运行在https上的本地服务器的私钥文件。
ssl_certfilestr/NoneNone如果提供文件的路径,将用作https的已签名证书。如果提供了ssl_keyfile,需要提供ssl_certfile。
ssl_keyfile_passwordstr/NoneNone如果提供密码,将与https的SSL证书一起使用。
ssl_verifyboolTRUE如果为False,则跳过证书验证,允许使用自签名证书。
quietboolFALSE如果为True,则抑制大部分打印语句。
show_apiboolTRUE如果为True,在应用程序的页脚中显示API文档。默认为True。如果启用了队列,则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“”应用程序的根路径(或"mount point"),如果应用程序不是从域的根目录(“/”)提供的。通常在应用程序位于转发请求的反向代理后面时使用。例如,如果应用程序在"https://example.com/myapp"提供,则root_path应设置为"/myapp"。LinkTo
app_kwargsdict[str, Any]/NoneNone作为参数键和参数值的字典,将附加给底层的FastAPI应用程序。例如,{“docs_url”: “/docs”}。

1.1.3 Interface.from_pipeline


2 代码示例

2.1 一些功能片段

2.1.1 密码验证

在首次打开网页前,可以设置账户密码。比如auth参数为(账户,密码)的元组数据。这种模式下不能够使用queue函数。

demo.launch(auth=("admin", "pass1234"))

如果想设置更为复杂的账户密码和密码提示,可以通过函数设置校验规则。

#账户和密码相同就可以通过
def same_auth(username, password):
    return username == password
demo.launch(auth=same_auth,auth_message="username and password must be the same")

2.2 页面完善

参考:Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

import gradio as gr
from transformers import *

#标题
title = "抽取式问答"
#题下的描述,支持md格式
description = "输入上下文与问题后,点击submit按钮,可从上下文中抽取出答案,赶快试试吧!"
#输入样例
examples = [
    ["普希金从那里学习人民的语言,吸取了许多有益的养料,这一切对普希金后来的创作产生了很大的影响。这两年里,普希金创作了不少优秀的作品,如《囚徒》、《致大海》、《致凯恩》和《假如生活欺骗了你》等几十首抒情诗,叙事诗《努林伯爵》,历史剧《鲍里斯·戈都诺夫》,以及《叶甫盖尼·奥涅金》前六章。", "著名诗歌《假如生活欺骗了你》的作者是"],
    ["普希金从那里学习人民的语言,吸取了许多有益的养料,这一切对普希金后来的创作产生了很大的影响。这两年里,普希金创作了不少优秀的作品,如《囚徒》、《致大海》、《致凯恩》和《假如生活欺骗了你》等几十首抒情诗,叙事诗《努林伯爵》,历史剧《鲍里斯·戈都诺夫》,以及《叶甫盖尼·奥涅金》前六章。", "普希金创作的叙事诗叫什么"]
    ]
#页面最后的信息,可以选择引用文章,支持md格式

article = "感兴趣的小伙伴可以阅读[gradio专栏](https://blog.csdn.net/sinat_39620217/category_12298724.html?spm=1001.2014.3001.5482)"

qa = pipeline("question-answering", model="uer/roberta-base-chinese-extractive-qa")

def custom_predict(context, question):
    answer_result = qa(context=context, question=question)
    answer = question + ": " + answer_result["answer"]
    score = answer_result["score"]
    return answer, score

gr.Interface(fn=custom_predict, inputs=["text", "text"], outputs=[gr.Textbox(label="answer"), gr.Label(label="score")], 
             title=title, description=description, examples=examples, article=article).launch()

运行上述代码,将看到如下页面,这里的example是可以点击的,点击后将自动填充至context和question中
由于description和article字段支持md语法,因此我们可以根据需求,自行的去丰富完善各部分内容

注意点:

  • 其中def custom_predict(context, question):这个函数当中的contextquestion的命名会影响到下面框框左上角的命名

在这里插入图片描述


参考文献:
Gradio入门到进阶全网最详细教程[一]:快速搭建AI算法可视化部署演示(侧重项目搭建和案例分享)
Gradio入门到进阶全网最详细教程[二]:快速搭建AI算法可视化部署演示(侧重参数详解和案例实践)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1114602.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI-新人类电商人的AI课,用世界先进的AI帮助电商降本增效

课程下载:https://download.csdn.net/download/m0_66047725/88448518 比如用语言模型写短视频文案、脚本,用生图模型做场景、拍摄、换装,用数字人做直播短视频 AI电商课程目录 注意:由于AI发展太快,新内容可能不在…

如何提升多个微信个人号管理效率?

一、管理多个微信个人号 微信扫码即可登录到系统,支持登录多个账号,可以聚合聊天,设置快捷回复语,提高回复的效率,不用来回切换界面,减少封号的风险。 二、监管管理多个账号 微信登陆在系统,所…

ECharta雷达图 样式调整

预期效果&#xff1a; <template><div id"operationalRisk-radar-chart" class"h-290 w-385"></div> </template><script>export default {name: radarChart} </script> <script setup>import { onMounted, r…

机器学习(24)---AdaBoost(课堂笔记)

文章目录 一、知识记录二、题目2.1 题目12.2 题目22.3 答案书写 一、知识记录 二、题目 2.1 题目1 2.2 题目2 2.3 答案书写

网络编程开发及实战(上)

一、什么是互联网 一、什么是互联网 1、计算机网络的定义 2、计算机的分类 1&#xff09;按照作用范围分类 个人局域网&#xff1a;热点 2&#xff09;按照网络的使用者分类 公用网&#xff1a;缴费可以使用的网 专用网&#xff1a;军队 3、网络的网络 由节点和链组成 互…

(七)QVTKOpenGLNativeWidget中显示坐标轴

为了方便观察图像的方向&#xff0c;位置以及旋转情况&#xff0c;想在窗口中添加一个坐标轴显示&#xff0c;并且这个坐标轴是随着窗口的旋转变动的&#xff0c;在网上找了很多例子&#xff0c;但是最后就是不显示坐标轴。 在此记录一下。 一、坐标轴相关类简单介绍 1.vtkA…

LabVIEW生成和打印条形码

LabVIEW生成和打印条形码 想在LabVIEW中生成条形码然后打印条形码。但是&#xff0c;当尝试使用任何一个打印VI来从LabVIEW打印条形码字体时&#xff0c;打印机中的字体是扭曲的。该如何解决这个问题&#xff1f; 首先&#xff0c;需要条形码字体。如果没有&#xff0c;可以从…

水质分析仪MQTT应用案例

水质分析仪MQTT应用案例 一、公司介绍 某仪器股份有限公司&#xff0c;集研发&#xff0c;生产&#xff0c;销售于一体的水质分析仪器公司。产品主要包括PH/ORP分析仪&#xff0c;电导度分析仪&#xff0c;溶氧分析仪&#xff0c;离子浓度分析仪&#xff0c;浊度分析仪及重金…

靠做网络安全,工资是同龄人的5倍:赚钱真的不能靠拼命!

最近在知乎看到一个测试&#xff0c;特扎心&#xff1a; 以下三种情况&#xff0c;哪个最让你绝望&#xff1f; ❶ 每月工资去掉开销还存不到3千&#xff1b; ❷ 家人突然急病住院&#xff0c;医药费10万&#xff1b; ❸ 同班的家长都在争先恐后给孩子报名各种辅导班、兴趣…

【python】文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景&#xff0c;而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词&#xff0c;可能需要先科普一下关于文件系统的知识&#xff0c;但是这里我们并不浪费笔墨介绍这个概念&#xff0c;请大…

实用API管理平台推荐:Apipost

在数字化时代&#xff0c;API已成为企业和开发者实现数据互通、应用集成的重要桥梁。然而&#xff0c;随着API数量的不断增加&#xff0c;API设计、调试、文档和测试等工作也变得越来越复杂。为了解决这一痛点&#xff0c;一款名为Apipost的API协同研发工具应运而生&#xff0c…

凝聚生态合力|汉得智慧营销中台O2与燕千云深度集成,助力企业数智化发展!

数字化转型&#xff0c;引领未来。在这个科技快速发展的时代&#xff0c;数字化转型已经成为企业发展的必然选择&#xff0c;通过运用先进的技术和创新的思维&#xff0c;企业可以实现业务流程的优化和效率的提升。 数字化转型不仅仅是一种工具&#xff0c;更是一种战略&#x…

可视化工具Datart踩(避)坑指南(6)——避免多人同时编辑

作为目前国内开源版本最好用的可视化工具&#xff0c;Datart无疑是低成本高效率可供二开的可视化神兵利器。当然&#xff0c;免费的必然要付出一些踩坑的代价。本篇我们来讲一讲可视化工具Datart踩&#xff08;避&#xff09;坑指南&#xff08;6&#xff09;之避免多人同时编辑…

酷克数据发布HD-SQL-LLaMA模型,开启数据分析“人人可及”新时代

随着行业数字化进入深水区&#xff0c;企业的关注点正在不断从“数字”价值转向“数智”价值。然而&#xff0c;传统数据分析的操作门槛与时间成本成为了掣肘数据价值释放的阻力。常规的数据分析流程复杂冗长&#xff0c;需要数据库管理员设计数据模型&#xff0c;数据工程师进…

x86 架构的机载计算机,它来了!

Allspark 2-x86采用Intel酷睿11代或12代CPU&#xff0c;x86架构&#xff0c;适用于无人机等机器人运行SLAM、VIO等复杂逻辑和高精度的机器视觉任务。预装 Ubuntu 22.04或Windows 11&#xff0c;满足多种使用场景。 市面上现有的一些NUC产品&#xff0c;不仅没有针对移动机器人使…

Deepfake!黑客冒充非洲联盟主席与多位欧洲领导人通话

黑客利用人工智能冒充非洲联盟委员会主席穆萨-法基&#xff08;Moussa Faki&#xff09;与多位欧洲领导人通话。 法基的发言人 Ebba Kalondo 在 X&#xff08;前 Twitter&#xff09;上发文称&#xff0c;网络不法分子假冒法基与一些欧洲国家首都城市领导人进行了深度伪造视频通…

OFDM同步--符号定时偏差STO

参考书籍&#xff1a;《MIMO-OFDM无线通信技术及MATLAB实现》 实验图基本都截取自该本书 一、什么是STO OFDM在接收时需要做FFT&#xff0c;需要在OFDM符号周期内获得对发射信号的精确采样&#xff0c;即在去CP之后我们需要找到OFDM的起始位&#xff0c;这样进行FFT运算时才能…

千耘导航助力冬小麦抢种,农户节本增效待丰收

随着秋收工作的结束&#xff0c;冬小麦等作物进入种植期。多地趁着晴好天&#xff0c;抢抓农时&#xff0c;启动冬小麦的耕种。 为了确保粮食增产的目标顺利达成&#xff0c;贯彻落实“藏粮于地、藏粮于技”战略&#xff0c;作为主要粮食作物之一的秋季冬小麦的种植任务随之加重…

使用poco出现Cannot find any visible node by query UIObjectProxy of “xxx“怎么办

在编写脚本的时候&#xff0c;使用poco的控件识别已经是大家非常喜欢的一种方式&#xff0c;准确度很高&#xff0c;而且也很容上手。 但是有时候会出现下面这种报错&#xff0c;提示 Cannot find any visible node by query UIObjectProxy of “xxx“这个时候是不是开始着急…

网络编程开发及实战(下)

一、IO模型 一、基本概念 &#xff08;一&#xff09;I/O基本概念 1、基本概念 1&#xff09;一个完整I/O分为两个阶段&#xff1a; 用户进程空间->内核空间 内核空间->设备空间&#xff08;磁盘、网卡&#xff09; 2&#xff09;内存I/O&#xff08;无名管道&…