全网最详细Gradio教程系列8——Gradio库的模块架构和环境变量 ...

打印 上一主题 下一主题

主题 752|帖子 752|积分 2256

前言

本系列文章重要先容WEB界面工具Gradio。Gradio是Hugging Face发布的一个浅易的webui开发框架,它基于FastAPI和svelte,便于摆设人工智能模子,是当前热门的非常易于开发和展示机器学习大语言模子及扩散模子的UI框架。本系列文章不仅从概念上先容Gradio的详细技术架构、汗青、应用场景、与其他框架Gradio/NiceGui/StreamLit/Dash/PyWebIO的区别,还进行了大量实践讲解。实践部分,先讲解了多种不同的安装、运行和摆设方式;然后按照先团体再细节的逻辑,讲解Gradio的多种高级特性,比如Gradio-Lite、Gradio Client和Gradio Tools等,方便读者把握Gradio的团体特性;最后深入细节,实践基础类Interface、Blocks、Chatbots、Data Science And Plots、Streaming和Custom Components的各种功能。
本系列文章如下:

  • 《全网最详细Gradio教程系列1——Gradio简介》
  • 《全网最详细Gradio教程系列2——Gradio的安装与运行》
  • 《全网最详细Gradio教程系列3——Gradio的3+1种摆设方式实践》
  • 《全网最详细Gradio教程系列4——欣赏器集成Gradio-Lite》
  • 《全网最详细Gradio教程系列5——Gradio Client: python客户端》
  • 《全网最详细Gradio教程系列5——Gradio Client: javascript客户端》
  • 《全网最详细Gradio教程系列5——Gradio Client: curl客户端》
  • 《全网最详细Gradio教程系列6——Gradio Tools:将Gradio用于LLM Agents》
  • 《全网最详细Gradio教程系列7——Data Science And Plots:数据科学与绘图》
  • 《全网最详细Gradio教程系列8——Gradio库的模块架构和环境变量》
  • 《全网最详细Gradio教程系列——Interface:接口类》
  • 《全网最详细Gradio教程系列——Blocks》
  • 《全网最详细Gradio教程系列——Custom Components》
本篇摘要

本篇先容Gradio库的模块架构和环境变量。首先对Gradio团体模块架构进行总览,了解构成Gradio库的各个模块,包罗构建Demos模块、Blocks布局模块、Components组件模块、Helpers帮助模块、Modals模块、Routers模块和其它模块,并通过列表的方式先容构成模块的各个类;然后讲解环境变量,了解其设置方法和分类。
7. Gradio库的模块架构和环境变量

本章先容Gradio的各个模块和环境变量。先详细先容Gradio库的模块架构,依次讲解构建Demos模块、Blocks布局模块、Components组件模块、帮助模块、Modals模块、Routers模块和其它模块,并通过列表的方式先容构成模块的各个类,将粗略讲解类的作用概述、API参数和成员函数等,更详细信息请参考官方文档;然后探究下各个环境变量的设置、默认值和作用形貌。
7.1 构建Demos模块

构建Demos(Building Demos)模块的作用是构建演示,它是生成Interface界面的基础类。Gradio现在提供了四种构建类,分别为Interface、ChatInterface、TabbedInterface和Blocks,列表先容如下:
Class NameAPI ParametersMember FunctionsDescriptionInterfacefn, inputs, outputs…launch(), load(), from_pipeline()…gr.Interface是Gradio的重要高级抽象类,它仅需几行代码即可为机器学习模子或任何python函数创建基于web的GUI或demo。它必须指定三个参数fn、inputs和outpus,其他参数可用于控制演示的外观和行为。ChatInterfacefn, multimodal, type, chatbot…like()ChatInterface是Gradio用于创建谈天机器人UI的高级抽象类,只需几行代码即可创建一个包罗谈天模子的基于web的demo。它只需一个参数fn,该函数根据用户输入和谈天汗青来控制谈天机器人的相应。其他参数可用于控制演示的外观和行为。Blockstheme, analytics_enabled, mode…launch(), load(), unload()…Blocks是Gradio的低级API抽象类,但仍然完全基于Python,它可以创建比Interfaces更多的自定义web应用步伐和demos。与Interface类相比,Blocks在以下方面提供了更大的灵活性和可控性:(1)组件的布局;(2)触发函数实行的事件;(3)数据流(比方输入可以触发输出,从而触发下一级输出)。Blocks还提供了将相关演示组合在一起的方法,比方利用tabs标签。TabbedInterfaceinterface_list, tab_namesTabbedInterface是通过提供Interfaces或Blocks的列表来创建的,每个界面都在单独的tab选项卡中出现。只有Interface/Blocks中的组件才会在tab中显示,但Blocks中的某些高级属性(比方自定义css、js和head属性)将不会加载。 7.2 Blocks布局模块

Blocks布局模块可实现界面定制化的排版结果,如渲染、分行、分列、分组、折叠以及tab标签网页等,其成员类包罗装饰器render、折叠类Accordion、Column、Row、Group、Tab等。对各个类的API参数、成员函数和作用形貌列表先容如下:
Class NameAPI ParametersMember FunctionsDescriptionrenderinputs, triggers, queue…render渲染装饰器可以使Gradio Blocks应用步伐具有动态布局,以便app中的组件和事件监听器可以根据自定义逻辑进行更改。将@gr.render装饰符附加到函数,使该函数包罗根据输入进行更新的组件和事件监听器,这使函数在输入更改(或指定的触发器被激活)时重新运行。Accordionlabel, open, visible…expand(), collapse()折叠类Accordion是一种布局元素,它可以切换以显示/隐蔽所包罗的内容。Columnscale, min_width, variant…Column是Blocks中的一个布局元素,它垂直出现所有子元素。Column的宽度可以通过参数scale和min_width设置,如果某个scale导致列宽度比min_width窄,则min_widch优先。Groupvisible, elem_id, elem_classes…Group是Blocks中的一个布局元素,它将子元素组合在一起,使它们之间没有任何填充(padding)或边距(margin)。Rowvariant, visible, elem_id…Row是Blocks中的一个布局元素,用于水平渲染所有子元素。Tablabel, visible, interactive…select()Tab(或其别名TabItem)是一个布局元素,当某个tab被选中时,Tab中定义的组件将被出现。 7.3 Components组件模块

Components组件模块是Gradio中数量最多也是最告急的模块,浩繁殊效和功能必要组件的支持才气实现。Gradio包罗预构建的组件,这些组件只需一行代码即可在Interface或Blocks中用作输入或输出。本节将报告组件的预处理和后处理、不同组件支持的事件events和组件类大全。
7.3.1 组件处理和事件

1. 预处理和后处理

组件一样平常包罗预处理步骤和后处理步骤,预处理步骤将通过欣赏器提交的用户数据转换为Python函数可以利用的数据,后处理步骤将Python函数返回的值转换为可以在欣赏器中显示的数据。考虑一个有三个输入(文本框、数字和图像)和两个输出(数字和图库)的示例,下图是预处理步骤将向函数发送什么样的数据,以及后处理将必要什么样的数据的示意图:

2. 支持事件events

组件还附带了它们支持的某些events事件,它们是由用户操作触发的调用方法。下表展示了每个组件支持的events事件。这些事件也会在组件官方的阐明文档中进行带参数的详细讲解。
Class Namedouble_clickkey_updeletestop_recordingsubmiteditdownloadretryendpauseapplytickblurchangeclickstart_recordingclearlikeexample_selectselectuploadfocusreleaseundoinputstopplaystreampause_recordingAnnotatedImage✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕Audio✕✕✕✓✕✕✕✕✕✓✕✕✕✓✕✓✓✕✕✕✓✕✕✕✓✓✓✓✓BrowserState✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Button✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕Chatbot✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✓✓✓✓✕✕✕✓✕✕✕✕✕Checkbox✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✓✕✕✕✕CheckboxGroup✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✓✕✕✕✕ClearButton✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕Code✕✕✕✕✕✕✕✕✕✕✕✕✓✓✕✕✕✕✕✕✕✓✕✕✓✕✕✕✕ColorPicker✕✕✕✕✓✕✕✕✕✕✕✕✓✓✕✕✕✕✕✕✕✓✕✕✓✕✕✕✕Dataframe✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✓✕✕✕✕Dataset✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✓✕✕✕✕✕✕✕✕✕DateTime✕✕✕✕✓✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕DownloadButton✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕Dropdown✕✓✕✕✕✕✕✕✕✕✕✕✓✓✕✕✕✕✕✓✕✓✕✕✓✕✕✕✕DuplicateButton✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕File✕✕✓✕✕✕✓✕✕✕✕✕✕✓✕✕✓✕✕✓✓✕✕✕✕✕✕✕✕FileExplorer✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Gallery✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✓✕✕✕✕✕✕✕✕HighlightedText✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕HTML✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Image✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✓✕✕✓✓✕✕✕✓✕✕✓✕ImageEditor✕✕✕✕✕✕✕✕✕✕✓✕✕✓✕✕✓✕✕✓✓✕✕✕✓✕✕✕✕JSON✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Label✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕LoginButton✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕Markdown✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Model3D✕✕✕✕✕✓✕✕✕✕✕✕✕✓✕✕✓✕✕✕✓✕✕✕✕✕✕✕✕MultimodalTextbox✕✕✕✕✓✕✕✕✕✕✕✕✓✓✕✕✕✕✕✓✕✓✕✕✓✓✕✕✕BarPlot✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕LinePlot✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕ScatterPlot✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕Number✕✕✕✕✓✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✓✕✕✓✕✕✕✕ParamViewer✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕Plot✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕Radio✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✓✕✕✕✕Slider✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✓✕✓✕✕✕✕State✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕Textbox✕✕✕✕✓✕✕✕✕✕✕✕✓✓✕✕✕✕✕✓✕✓✕✕✓✓✕✕✕Timer✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕✕UploadButton✕✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✕✕✕✓✕✕✕✕✕✕✕✕Video✕✕✕✓✕✕✕✕✓✓✕✕✕✓✕✓✓✕✕✕✓✕✕✕✕✓✓✕✕SimpleImage✕✕✕✕✕✕✕✕✕✕✕✕✕✓✕✕✓✕✕✕✓✕✕✕✕✕✕✕ 7.3.2 组件类大全

本小节列出Gradio库当前版本(5.6.0)支持的所有组件类,并给出API参数、成员函数和简要先容,方便读者在后面实践用到时进行查阅。组件类表如下所示:
Class NameAPI ParametersMember FunctionsDescriptionAnnotatedImagevalue, format, show_legend…select()创建显示基础图像和该图像表层的彩色注释的组件,注释可以接纳矩形(比方对象检测)或马赛克(比方图像分割)的情势。由于此组件不接受用户输入,因此很少用作输入组件。Audiovalue, sources, type…stream(), change(), waveform_options() …创建可用于上传/录制音频(作为输入)或显示音频(作为输出)的音频组件。BarPlotvalue, x, y…select(), double_click()创建条形图/柱状图组件以显示来自pandas DataFrame的数据。Buttonvalue, every, inputs…click()创建一个具有专属.click()事件的按钮,按钮的标签值或赋值变量可用作函数的输入,它的值也可以通过函数的输出进行设置。Chatbotvalue, type, label…change(), select(), like()…创建一个谈天机器人界面以显示用户提交的消息和回复,它通常用作输出组件。它支持Markdown的显示子集,如粗体、斜体、代码、表格等,它还支持显示音频/视频/图像文件,以及显示为链接的其他类型的文件。Checkboxchoices, value, type…change(), input(), select()创建一个可设置为True或False的复选框,它即可以用作向函数通报布尔值的输入,也可以用作显示布尔值的输出。CheckboxGroupchoices, value, type…change(), input(), select()创建一组复选框,可以用作向函数通报一组值的输入,也可以用作显示被选中的某组输出值。ClearButtoncomponents, value, every…add(), click()单击时打扫单个组件值或组件列表值的按钮,它与要打扫的组件一起实例化。Codevalue, language, every…languages(), blur(), focus()…创建代码编辑器,在作为输出组件时用于查看代码,或作为输入组件时输入和编辑代码(作为输入组件)。ColorPickervalue, label, info…change(), input(), submit()…创建一个颜色选择器,供用户选择一种颜色作为字符串作为输入。它即可以用作将颜色值通报给函数的输入,也可以用作显示颜色值的输出。Dataframevalue, headers, row_count…change(), input(), select()此组件显示一个类似电子表格的数值表。它即可用于数据显示的输出组件,也可作为收集用户数据的输入。Datasetlabel, components, component_props…click(), select()创建库或表以显示数据示例,此组件重要用于内部显示示例,但也可以直接用于显示数据集并让用户选择示例。DateTimevalue, include_time, type…change(), submit()用于选择日期和时间(可选)的组件。DownloadButtonlabel, value, every…click()创建一个用于下载的按钮,单击该按钮后,用户可以下载任意类型的单个文件。Dropdownchoices, value, type…key_up(), change(), focus()…创建一个选项下拉列表,从中可以选择单个条目或多个条目作为输入组件,也可以作为显示结果的输出组件。DuplicateButtonvalue, every, inputs…click()当演示在Hugging Face Spaces中时,触发空间复制(Spaces Duplication)的按钮,否则不进行任何操作。Filevalue, file_count, file_types…upload(), delete, download()…创建一个文件组件,可以作为输入上传一个或多个通用文件,或作为输出显示通用文件或URL以供下载。FileExplorerglob, value, file_count…change()创建一个文件资源管理器组件,利用户可以欣赏承载Gradio应用步伐的计算机上的文件。它即可以作为输入组件利用户选择用作函数输入的文件,也可以作为输出组件显示所选文件。Galleryvalue, format, file_types…select(), upload(), change()创建显示格栅图像或视频以及可选字幕的库组件。如果用作输入,用户可以将图像或视频上传到Gallery。如果用作输出,用户可以单击单个图像或视频以更高的分辨率查看它们。HighlightedTextvalue, color_map, show_legend…change(), select()创建包罗突出显示类别或数值的结果段(spans)的文本框。HTMLvalue, label, every…change()创建一个显示任意HTML输出的组件。由于此组件不接受用户输入,因此很少用作输入组件。Imagevalue, format, height…upload(), stream(), clear()…创建可用于上传图像(作为输入)或显示图像(作为输出)的图像组件。ImageEditorvalue, height, width…upload(), change(), apply()…创建一个图像组件,它作为输入时,可利用简单的编辑工具(如画笔、笔划、裁剪和图层)编辑和上传图像,也可作为输出显示图像。JSONvalue, label, every…change()它可以雅观地显示任意的JSON输出。由于此组件不接受用户输入,因此很少用作输入组件。Labelvalue, num_top_classes, label…change(), select()用于显示分类标签以及顶级类别的置信度得分(如果设置)。由于此组件不接受用户输入,因此很少用作输入组件。LinePlotvalue, x, y…select(), double_click()创建线状图组件以显示pandas DataFrame中的数据。LoginButtonvalue, logout_value, every…click()创建一个按钮,利用OAuth协议将用户信息重定向到Hugging Face以验证登录。Markdownvalue, label, every…change()用于出现任意Markdown输出,也可以渲染由符号$困绕的latex公式。由于此组件不接受用户输入,因此很少用作输入组件。Model3Dvalue, display_mode, clear_color…change(), upload(), edit()…创建用于上传或查看三维模子(3D Model)文件(如.obj、.glb、.stl、.gltf、.splat或.play)的组件。MultimodalTextboxvalue, file_types, file_count…change(), input(), stop()…创建一个文本区域,供用户输入字符串或显示字符串输出,还允许上传多媒体文件。Numbervalue, label, info…change(), input(), submit()…创建一个数字字段,作为输入供用户输入数字或显示数字输出。ParamViewervalue, language, linkify…change(), upload()创建用于语法突出显示参数及其形貌和默认值的交互式表格。对于每个参数,用户应该提供数据类型(比方str)、易读的形貌和一个默认值。由于此组件不接受用户输入,因此很少用作输入组件。在内部,此组件用于显示自定义组件库(Custom Component Gallery:https://www.gradio.app/custom-components/gallery)中组件的参数。Plotvalue, format, label…change(), clear()创建绘图组件以显示各种绘图,支持matplotlib、plotly、altair或散景图(bokeh plots)。由于此组件不接受用户输入,因此很少用作输入组件。Radiochoices, value, type…select(), change(), input()创建一组字符串或数字类型的单选按钮,只能选择此中一个。ScatterPlotvalue, x, y…select(), double_click()创建点状图组件以显示pandas DataFrame中的数据。SimpleImagevalue, label, every…clear(), change(), upload()创建可用于上传图像(作为输入)或显示图像(作为输出)的图像组件。Sliderminimum, maximum, value…change(), input(), release()以step size为步长创建一个范围从最小到最大的滑块。Statevalue, render, time_to_live…change()用于定义所有输入/输出组件应具有的方法的基类。Textboxvalue, lines, max_lines…change(), input(), blur()…创建一个文本区域,供用户输入字符串或显示字符串输出。Timervalue, active, rendertick()当被激活时,以规律间隔定期计时的特别组件。它不可见,仅用于通过规律间隔计时的事件监听器以定期触发事件。UploadButtonlabel, value, every…click(), upload()用于创建上传按钮,单击后允许用户上传指定类型文件或通用文件(如果未设置file_type)。Videovalue, format, sources…play(), pause(), start_recording()…创建可用于上传/录制视频(作为输入)或显示视频(作为输出)的视频组件。为了在欣赏器中播放视频,它必须具有类似格式容器和编解码器的兼容式组合,Gradio支持的组合包罗.mp4与h264编解码器、.ogg与theora编解码器和.webm与vp9编解码器。如果组件检测到输出视频无法在欣赏器中播放,它将尝试将其转换为可播放的mp4视频,如果转换失败,则返回原始视频。 7.4 Helpers帮助模块

为方便展示,作者将其它模块归类到Helpers帮助模块一同展示。同样以类名、API参数、成员函数和作用形貌的方式列表如下:
Class NameAPI ParametersMember FunctionsDescriptionEventDatatarget当gr.EventData或其子类作为隐变量(hint)类型添加到预测函数的参数时,gr.EventData对象将自动作为该参数的值进行通报。此对象的属性包罗触发监听器事件的信息。gr.EventData对象本身包罗一个.target属性,它与触发该事件的组件相关,而gr.EventData的子类包罗区别于其它类的附加属性。DeletedFileDatafilegr.DeletedFileData类是gr.EventData的子类,专门携带有关.delete()事件的信息。当gr.DeletedFileData作为隐变量添加到事件监听器方法的参数时,gr.DeletedFileData对象将自动作为该参数的值进行通报,此对象的属性包罗有关触发监听器事件的信息。KeyUpDatakey, input_valuegr.KeyUpData类是gr.EventData的子类,专门携带有关.key_up()事件的信息。当gr.KeyUpData作为隐变量添加到事件监听器方法的参数时,gr.KeyUpData对象将自动作为该参数的值进行通报,此对象的属性包罗有关触发监听器事件的信息。LikeDataindex, value, selectedgr.LikeData类是gr.EventData的一个子类,专门携带有关.like()事件的信息。当gr.LikeData作为隐变量添加到事件监听器方法的参数时,gr.LikeData对象将自动作为该参数的值进行通报,此对象的属性包罗有关触发监听器事件的信息。SelectDataindex, value, selectedgr.SelectData类是gr.EventData的一个子类,专门携带有关.select()事件的信息。当gr.SelectData作为隐变量添加到事件监听器方法的参数时,gr.SelectData对象将自动作为该参数的值进行通报,此对象的属性包罗有关触发监听器事件的信息。FileDatapath, url, size…FileData类是GradioModel类的一个子类,它表现Gradio接口中的文件对象,它用于在上传文件时存储文件数据和元数据。Progresstrack_tqdm__call__(), tqdm()Progress类提供了一个在函数标记中利用的自定义进度跟踪器(progress tracker)。要将进度跟踪器附加到函数,只需在输入参数后添加一个参数,该参数的默认值设置为gradio.Progress() 实例;然后通过调用Progress对象或利用Iterable的tqdm方法在函数中更新Progress跟踪器。进度跟踪器现在仅在queue()中可用。Examplesexamples, inputs, outputs…Attributes: dataset, load_input_event, cache_event此类是Dataset组件的包装器,可用于创建Blocks/Interfaces示例。用示例填充Dataset组件并分配事件监听器,以便单击单个示例时,用示例数据填充到输入/输出组件。也可以选择性的利用示例缓存以进行快速推理。DependencyDependency可通过以下方式创建:dict()、dict(mapping) 、dict(iterable)、dict(kwargs),如dict(one=1, two=2)。现在官方Dependency文档欠缺,有必要的读者可随时关注官方更新。loadname, src, token…从Hugging Face的model/Space的堆栈或第三方API提供商提供的资源中,自动构建Gradio应用步伐。请注意,如果加载自Space堆栈,将不会加载Blocks的某些高级属性(比方自定义css、js和head属性)。ontriggers, fn, inputs…设置一个事件监听器,当指定的事件发生时触发某函数。当同一函数应由多个事件触发时,这尤其有用。对于触发器列表中的所有事件,只生成一个API端点。set_static_pathspaths设置供gradio应用步伐利用的静态路径。静态文件直接从文件系统被利用,而不是被复制。在将这些文件提供并发送给用户时,必要将Content-Disposition HTTP标头设置为"inline",这表现如果可能的话,文件应直接展示在欣赏器窗口中。当必要提供在gradio应用步伐的生命周期内不会被修改的文件(如gr.Examples中利用的文件)时,此功能非常有用。通过设置静态路径,Gradio应用步伐将更快地启动,并消耗更少的磁盘空间。调用此函数时将为同一表明器会话中定义的所有gradio应用步伐设置静态路径,直到再次调用或会话结束。Flaggingsimplify_file_data, verbose, dataset_file_name其它模块类,在gradio5.0版本及以上,Flagging是FlaggingCallback抽象类的默认实现。每个标记的样本(包罗输入和输出数据)都被记载到运行gradio应用步伐的机器上的CSV文件中,并带有标题信息。与ClassicCSVLogger不同,此实现是并发且安全的,每当CSV的标题(由组件的标签派生)更改时,它都会创建一个新的数据集文件。如果分别设置了flag_option和username,则它只会为“flag”和“username”创建列。ThemingAttributes: colors, sizes, GoogleFontDefault(), builder(), from_hub()…其它模块类,Gradio具有内置的主题引擎,可以自定义应用步伐的外观和视觉结果。您可以从各种主题中进行选择,也可以创建自己的主题,然后将参数theme=kwarg通报给Blocks或Interface的构造函数即可。Theming内容较多,必要实现酷炫主题的读者请过细阅读themes官方文档。NO_RELOAD其它模块类,重新加载源文件时,代码块if gr.NO_RELOAD中的任何代码都不会被重新运行。它在制止重复导入模块(如tiktoken、numpy)、多次数据库毗连和重复设置需长时间运行的代码等方面非常有用。 7.5 Modals&Routers模块

为方便展示,作者将官方文档中的数量不多的Modals模块和Routers模块一同展示。同样以类名、API参数、成员函数和作用形貌的方式列表如下:
Class NameAPI ParametersMember FunctionsDescriptionErrormessage, duration, visible…Modal类,此类将自定义Error消息通报给用户,它可以通过在函数中的任意位置插入gr.Error(“custom message”)来实现,当实行该行代码时,自定义消息将出如今演示的Error模态中。默认环境下,该模式为红色,标题为:“Error”。Queue必须启用此功能,否则消息将打印到控制台。Infomessage, duration, visible…Modal类,此功能将自定义Info消息通报给用户,它可以通过在函数中的任意位置插入gr.Info(‘message here’)来实现,当实行该行代码时,自定义消息将出如今演示的Info模态中。默认环境下,该模式为灰色,标题为:“Info”。Queue必须启用此功能,否则消息将打印到控制台。Warningmessage, duration, visible…Modal类,此类将自定义Warning消息通报给用户,它可以通过在函数中的任意位置插入gr.Warning(‘message here’)来实现,当实行该行代码时,自定义消息将出如今演示的Warning模态中。默认环境下,该模式为黄色,标题为:“Warning”。Queue必须启用此功能,否则消息将打印到控制台。mount_gradio_appapp, blocks, pathRoutes模块类,将一个gradio.Blocks挂载到现有的FastAPI步伐上。Requestrequest, username, session_hashRoutes模块类,Gradio的哀求对象,可用于从预测函数中访问哀求标头、Cookies、查询参数和其他有关哀求的信息。该类是fastapi.Request类的一个简单封装类,此类的属性包罗:headers、client、query_params、session_hash和path_params,如果得到了auth授权,则可以利用username属性获取登录用户。在某些环境中,此类的类似字典的属性(比方requests.headers、requests.query_params)会自动转换为字典,因此我们发起在访问属性之前将其转换为字典,以便在不同环境中保持划一。 7.6 环境变量

Gradio中的环境变量提供了一种在不更改代码库的环境下,自定义应用步伐和启动设置的方法。在本指南中,我们将探讨Gradio中支持的关键环境变量以及怎样设置它们。
7.6.1 设置方法

要在终端中设置环境变量,请利用export命令,后跟变量名及其值。以GRADIO_SERVER_PORT为例,命令如下:
  1. export GRADIO_SERVER_PORT=8000
复制代码
查看及删除环境变量命令如下:
  1. # 查看
  2. echo $GRADIO_SERVER_PORT
  3. env | grep GRADIO_SERVER_PORT
  4. # 删除
  5. unset GRADIO_SERVER_PORT
复制代码
如果利用.env文件来管理环境变量,则可以在文件中添加如下内容:
  1. GRADIO_SERVER_PORT=8000
  2. GRADIO_SERVER_NAME="localhost"
复制代码
然后,利用命令source .env使命令立即收效。大概在运行应用步伐时,利用dotenv等工具加载这些变量。下面看一下GRADIO常见环境变量。
7.6.2 常见环境变量

本小节列出大部分常见的GRADIO环境变量,在后续实践时,方便读者查阅。以环境变量名、可选值、默认值及作用形貌列表如下:
Environment VariablesoptionsDefaultDescriptionGRADIO_SERVER_PORT7860指定Gradio应用步伐运行的端口。GRADIO_SERVER_NAME“127.0.0.1”定义Gradio服务器的主机名。要使Gradio可从任意IP地点访问,请将其设置为“0.0.0.0”。GRADIO_NUM_PORTS100.定义启动Gradio服务器时,要尝试的端口数。GRADIO_ANALYTICS_ENABLED“True”, “False”“True”是否应提供Gradio解析。GRADIO_DEBUG0在Gradio中启用或禁用调试模式。如果启用了调试模式,则在主线程不停止的环境下,允许在Google Colab等环境中打印错误消息。GRADIO_FLAGGING_MODE“never”, “manual”, “auto”“manual”控制用户是否可以在Gradio界面中标记输入/输出。有关更多详细信息,请参阅Flagging指南。GRADIO_TEMP_DIR系统默认临时目次指定存储Gradio临时创建文件的目次。GRADIO_ROOT_PATH“”设置Gradio应用步伐的根路径。如果在反向代理后运行Gradio,则这个设置很有用。GRADIO_SHARE“True”, “False”“False”启用或禁用Gradio应用步伐的互联网共享。GRADIO_ALLOWED_PATHS“”设置允许gradio访问的完整文件路径或父目次的列表,必须是绝对路径,可以通过用逗号分隔符来指定多个目次。告诫:如果设置了该目次,则应用步伐的所有用户都可以访问这些目次或其子目次中的任意文件。GRADIO_BLOCKED_PATHS“”设置不允许gradio访问的完整文件路径或父目次列表(即不允许应用步伐的用户访问),必须是绝对路径,可以通过用逗号分隔符来指定多个目次。告诫:默认环境下,优先于allowed_path和Gradio公开的所有其他目次。FORWARDED_ALLOW_IPS“127.0.0.1”这不是特定于Gradio的环境变量,而是用于服务器设置的变量,特别是Gradio内部利用的uvicorn。当在反向代理后摆设应用步伐时,此环境变量非常有用。它定义了一个受信任的IP地点列表,可以将流量转发到Gradio应用步伐。设置后,应用步伐将信任这些IP地点中的X-Forwarded-For标头,从而确定发出哀求的用户的原始IP地点。这意味着,如果利用gr.Request对象的client.host属性,它将获取正确的用户IP地点,而不是反向代理服务器的IP地点。请注意,只应添加受信任的IP地点(如反向代理服务器的IP地点),因为任何具有这些IP地点的服务器都可以修改X-Forwarded-For标头并设置诱骗客户端的IP地点。GRADIO_CACHE_EXAMPLES“False”当没有为参数cache_examples显示通报值时,是否默认在在gr.Interface()、gr.ChatInterface()或gr.Examples()中缓存示例,也可以将此环境变量设置为字符串“true”或“false”。GRADIO_CACHE_MODE“lazy”, "eager““eager”怎样缓存示例,仅当cache_examples通过环境变量或显式参数设置为True,而且gr.Interface()、gr.ChatInterface()或gr.Examples()中的参数cache_mode没有通报显式参数时适用。它可以设置为“lazy”或“eager”,如果是“lazy”,则示例将在初次利用后缓存并可用于应用步伐的所有用户;如果是“eager”,所有示例都会在应用步伐启动时缓存。GRADIO_EXAMPLES_CACHE“.gradio/cached_examples/”如果在gr.Interface()、gr.ChatInterface()或gr.examples()中设置cache_examples=True,Gradio将运行预测函数并将结果生存到磁盘。默认环境下,它位于应用步伐工作目次中的.gradio/cached_examples//子目次中。通过将环境变量GRADIO_EXAMPLES_CACHE设置为绝对路径或相对于工作目次的路径,可以指定Gradio创建的缓存示例文件的位置。GRADIO_NODE_SERVER_NAMEGRADIO_SERVER_NAME(非空),否则"127.0.0.1"定义Gradio节点服务器的主机名(仅当ssr_mode设置为True时适用)。GRADIO_NODE_NUM_PORTS100定义启动Gradio节点服务器时要尝试的端口数(仅当ssr_mode设置为True时适用)。 以本章为基础,可以方便我们更好的实践。从后续章节开始,进入大量编码的实践环节。
参考文献


  • Gradio - Documents
  • Gradio - Additional Features - Environment Variables

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

悠扬随风

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表