gradio快速入门 — Interface状态

目录

    • 全局状态
    • 会话状态

到目前为止,我们假设您的演示是无状态的:它们不会保留单个函数调用以外的信息。如果您想根据与演示的先前交互来修改演示的行为,该怎么办? Gradio 中有两种方法:全局状态会话状态

全局状态

如果状态是所有函数调用和所有用户都应该可以访问的,则可以在函数调用之外创建一个变量,并在函数内部访问它。例如,您可以在函数外部加载一个大型模型,并在函数内部使用它,这样每次函数调用都不需要重新加载模型。

import gradio as grscores = []def track_score(score):scores.append(score)top_scores = sorted(scores, reverse=True)[:3]return top_scoresdemo = gr.Interface(track_score, gr.Number(label="Score"), gr.JSON(label="Top Scores")
)
demo.launch()

在上面的代码中,scores数组在所有用户之间共享。如果多个用户正在访问此演示,他们的分数将全部添加到同一个列表中,并从此共享引用中收集返回的前 3 个分数。

会话状态

Gradio 支持的另一种数据持久性类型是会话状态,其中数据在页面会话中的多次提交中保持不变。但是,数据不会模型的不同用户之间共享。要将数据存储在会话状态中,您需要做三件事:

  1. 将一个额外的参数传入你的函数,它代表接口的状态。
  2. 在函数的最后,将状态的更新值作为额外的返回值返回。
  3. 在创建Interface时添加'state'输入和'state'输出组件

这是一个用于说明会话状态的简单应用程序 - 该应用程序仅存储用户以前的提交并将其显示给用户:

import gradio as grdef store_message(message: str, history: list[str]):output = {"Current messages": message,"Previous messages": history[::-1]}history.append(message)return output, historydemo = gr.Interface(fn=store_message, inputs=["textbox", gr.State(value=[])], outputs=["json", gr.State()])demo.launch()

在这里插入图片描述
请注意,状态在每个页面的提交之间如何保持不变,但如果您在另一个选项卡中加载此演示(或刷新页面),则演示将不会共享聊天历史记录。在这里,我们不能将提交历史记录存储在全局变量中,否则提交历史记录会在不同的用户之间混乱。

的初始值State默认None为。如果将参数传递给value的参数gr.State(),则它将被用作状态的默认值。

注意:该类Interface仅支持单个会话状态变量(尽管它可以是包含多个元素的列表)。对于更复杂的用例,您可以使用支持多个State变量的 Blocks 。或者,如果您正在构建一个维护用户状态的聊天机器人,请考虑使用自动管理状态的ChatInterface抽象。

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

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

相关文章

【Docker实战】jenkins卡在编译Dockerfile的问题

我们的项目是标准的CI/CD流程,也即是GitlabJenkinsHarborDocker的容器自动化部署。 经历了上上周的docker灾难,上周的服务器磁盘空间灾难,这次又发生了jenkins卡住的灾难。 当然,这些灾难有一定的连锁反应,是先发生的d…

简单通用防篡改水印组件封装(vue3)

一、项目结构 二、项目代码 1.App.vue <template><div class"container"><Watermark text"版权所有"><div class"content"></div></Watermark><Watermark text"禁止转载" style"backgr…

数据资产赋能智能决策:通过深度挖掘数据资产价值,构建全面智能决策支持系统,精准分析,辅助决策,显著提升企业决策质量与效率,推动业务快速发展

一、引言 在信息化和数字化飞速发展的今天&#xff0c;数据已成为企业最宝贵的资产之一。数据资产不仅记录着企业的历史运营轨迹&#xff0c;更蕴含着企业未来发展的无限可能。然而&#xff0c;如何深度挖掘数据资产的价值&#xff0c;将其转化为推动企业发展的动力&#xff0…

七、(正点原子)Linux并发与竞争

Linux是多任务操作系统&#xff0c;肯定会存在多个任务共同操作同一段内存或者设备的情况&#xff0c;多个任务甚至中断都能访问的资源叫做共享资源。在驱动开发中要注意对共享资源的保护&#xff0c;也就是要处理对共享资源的并发访问。 一、并发与竞争 1、简介 并发就是多个…

Go - 4.数组和切片

目录 一.引言 二.定义 1.基础定义 2.引申理解 三.实战 1.估算切片的长度与容量 2.切片的切片长度与容量 四.拓展 1.估算切片容量的增长 2.切片底层数组的替换 五.总结 一.引言 本文主要讨论 Go 语言的数组 array 类型和切片 slice 类型。主要从二者的使用方法&…

【开源许可证】介绍

文章目录 概述具体总结 概述 开源许可证通常可以分为两大类&#xff1a;宽松式许可证及 Copyleft 许可证&#xff08;也称著作权&#xff09;。二者的差别主要在于宽松度以及与使用开源软件组件相关的要求和许可权限的多少。 当一个开源组件采用 Copyleft 许可证时&#xff0…

零成本!无需服务器,搭建你的个性化应用!

在快速发展的互联网时代&#xff0c;每个人都有创造自己应用的梦想。但是&#xff0c;传统的应用开发往往需要大量的技术和资源投入&#xff0c;这对于许多独立开发者和初创企业来说是一个巨大的挑战。幸运的是&#xff0c;现在有了 MemFire Cloud&#xff0c;这款无需服务器、…

工业 web4.0 的 UI 卓越非凡

工业 web4.0 的 UI 卓越非凡

前端易遭受的六大安全威胁,以及对应解决策略。

前端遭受安全威胁可能会导致用户隐私泄露、账户被盗用、系统遭受攻击、用户体验受损等严重后果&#xff0c;所有安全防御也成了前端开发者的必须课之一&#xff0c;贝格前端工场带领大家了解下常见的安全威胁。 一、前端开发面临的安全风险 1. 跨站脚本攻击&#xff08;XSS&a…

图形编辑器基于Paper.js教程02:图形图像编辑器概述

背景 由于笔者目前从事开发图形编辑器&#xff0c;在开始的那段时间里&#xff0c;调研和研究了非常多的图形编辑器&#xff0c;图像编辑器之类的软件&#xff0c;开源&#xff0c;闭源的&#xff0c;免费的&#xff0c;商业的都有。今天的这篇文章就来简单概述一下我调研的结…

SpringCloudNetflix组件整合

SpringCloudNetflix组件整合 Eureka注册中心 Eureka是什么 Eureka是netflix的一个子模块&#xff0c;也是核心模块之一&#xff0c;Eureka是一个基于REST的服务&#xff0c;用于定位服务&#xff0c;以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是…

Python实现音乐播放器 -----------内附源码

Python做一个简易的音乐播放器 简易音乐播放器 import time import pygamefile r歌曲路径 pygame.mixer.init() print(正在播放,file) track pygame.mixer.music.load(file) pygame.mixer.music.play() time.sleep(130) pygame.mixer.music.stop()运行效果&#xff1a; 开始…

EE trade:现货黄金的计量单位及转换

在现货黄金市场中&#xff0c;计量单位的不同会影响投资者对价格的理解和对交易的操作。因此&#xff0c;了解现货黄金的计量单位是每一位投资者的必修课。对于那些刚刚踏入黄金投资的新手们来说&#xff0c;掌握这些知识尤为重要。本文将为您详细介绍现货黄金的主要计量单位及…

Harbor本地仓库搭建004_Harbor配置管理功能_分布式分发功能_仓库管理_用户管理_垃圾清理_审查服务_项目定额---分布式云原生部署架构搭建00

然后我们再看一下配置管理,这里主要有个认证模式 这里我们是数据库,其实就是我们安装的postgresql 可以看到还有LDAP对吧,这个其实就是自己公司如果有 LDAP服务器,那么可以对接过来,那么,这个时候 再登录harbor的时候,就可以直接使用公司的,LDAP来管理,所有的用户了,其实就是…

AI项目二十三:危险区域识别系统

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 在IPC监控视频中&#xff0c;很多IPC现在支持区域检测&#xff0c;当在区域内检测到有人闯入时&#xff0c;发送报警并联动报警系统&#xff0c;以保障生命和财产安全具有重大意义。它能够在第一时间检测到人员进入…

Python酷库之旅-比翼双飞情侣库(16)

目录 一、xlwt库的由来 1、背景和需求 2、项目启动 3、功能特点 4、版本兼容性 5、与其他库的关系 6、示例和应用 7、发展历史 二、xlwt库优缺点 1、优点 1-1、简单易用 1-2、功能丰富 1-3、兼容旧版Excel 1-4、社区支持 1-5、稳定性 2、缺点 2-1、不支持.xls…

[创业之路-116] :制造业企业的必备管理神器-ERP-为什么?传统制造业的转型-数字化、智能化下的需求,ERP是管理面和资金面的数字化、智能化的需要

目录 一、时代背景&#xff1a;制造业企业与智能制造 1.1 传统的制造业 1、概念 2、特点 3、面临的挑战&#xff1a;内卷严重 4、发展趋势 1.2 制造业的转型&#xff1a;数字化 1.3 制造业的转型&#xff1a;智能化 1.4 制造业的转型&#xff1a;无人工厂 1、智能化 …

每日一题——8行Python代码实现PAT乙级1029 旧键盘(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 ​编辑我的写法 代码分析 时间复杂度分析 空间复杂度分析 改进建议 方法 1&#…

leetcode33:搜索旋转数组

题目链接&#xff1a;33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int search(vector<int>& nums, int target) {int n (int)nums.size();if(!n){return -1;}if(n 1){return nums[0] target ? 0 : -1;}int left 0, …

Java开发笔记Ⅲ (一些零碎记录)

一些报错处理 找不到注入的对象 可以在 dao 层 的接口上添加 Repository 注解 common 模块报错 Unable to find main class 由于common中只有一些常量与工具类&#xff0c;不需要主类&#xff0c;故出现该错误时只需删除pom文件中的build标签即可解决 网关模块报错 Failed…