论文精读:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Status: Reading
Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang
Institution: 微软亚洲研究院(Microsoft Research Asia), 浙江大学(Zhejiang University)
Publisher: NeurIPS
Publishing/Release Date: December 3, 2023
Summary: 解决不同领域和多种模态的复杂任务是通往AGI的关键,尽管现在有各种各样的AI模型,但是它们没有办法自主地处理复杂任务,而LLMs恰好可以作为管理者控制现有的AI模型来完成任务。本文提出的HuggingGPT就是一个基于ChatGPT的Agent,可以利用HuggingFace上各种各样的AI模型来完成任务。首先通过ChatGPT根据用户的请求制定任务计划,然后根据HuggingFace上模型的功能描述选择可用的AI模型,之后通过这些模型来执行子任务,最后总结执行结果并给出响应。HuggingGPT可以解决跨领域跨模态的各种AI任务,在语言、视觉、语音等任务中都取得很好的效果。
Type: Paper
链接: https://arxiv.org/abs/2303.17580
代码是否开源: 开源
代码链接: https://github.com/microsoft/JARVIS


读前先问

带着问题读论文,边读边回答。

  1. 大方向的任务是什么?Task

Agent

  1. 这个方向有什么问题?是什么类型的问题?Type

虽然AI模型众多,但是不能互相配合。

  1. 为什么会有这个问题?Why

没有一个大脑作为指挥。

  1. 作者是怎么解决这个问题的?How

将ChatGPT作为大脑来指挥各种AI模型。

  1. 怎么验证解决方案是否有效?

  2. 实验结果怎么样?What(重点关注有没有解决问题,而不是效果有多好)


论文精读

引言

目前的LLM技术尚不完善,在构建先进的AI系统的道路上面临着一些紧迫的挑战:

  1. 受限于文本生成的输入输出形式,目前的LLM缺乏处理视觉、语音等复杂信息的能力;
  2. 在现实场景中,一些复杂的任务通常由多个子任务组成,因此需要多个模型的调度和协作,这也超出了语言模型的能力;
  3. 对于一些具有挑战性的任务,LLM在Zero-Shot或Few-Shot设置中表现出出色的结果,但仍然弱于一些专家。

作者认为,为了处理复杂的AI任务,LLM应该能够与外部模型协调以利用它们的力量。关键问题是如何选择合适的中间件来桥接LLM和AI模型之间的联系,LLM恰好可以完成这个工作。将各种AI模型的描述融入到提示词中,LLM可以作为管理规划、调度、合作等这些AI模型的大脑。

在这篇论文中,作者提出了一种名为 HuggingGPT 的由 LLM 驱动的 Agent,可以自主处理各种复杂的 AI 任务,它连接了 LLM(即 ChatGPT)和 ML 社区(即 Hugging Face),并且可以处理来自不同模式的输入。更具体地说,LLM充当大脑:一方面根据用户请求拆解任务,另一方面根据模型描述为任务分配合适的模型。通过执行模型并将结果集成到计划任务中,HuggingGPT 可以自主满足复杂的用户请求。

HuggingGPT 的工作流如下图所示,可以分为四个阶段:

  1. 任务规划:使用ChatGPT分析用户的请求,了解他们的意图,并将其分解为可能的可解决的任务。
  2. 模型选择:ChatGPT 根据模型描述选择托管在 Hugging Face 上的专家模型。
  3. 任务执行:调用并执行每个选定的模型,并将结果返回给ChatGPT。
  4. 响应生成:ChatGPT 集成所有模型的预测结果并为用户生成响应。

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Status: Reading
Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang
Institution: 微软亚洲研究院(Microsoft Research Asia), 浙江大学(Zhejiang University)
Publisher: NeurIPS
Publishing/Release Date: December 3, 2023
Summary: 解决不同领域和多种模态的复杂任务是通往AGI的关键,尽管现在有各种各样的AI模型,但是它们没有办法自主地处理复杂任务,而LLMs恰好可以作为管理者控制现有的AI模型来完成任务。本文提出的HuggingGPT就是一个基于ChatGPT的Agent,可以利用HuggingFace上各种各样的AI模型来完成任务。首先通过ChatGPT根据用户的请求制定任务计划,然后根据HuggingFace上模型的功能描述选择可用的AI模型,之后通过这些模型来执行子任务,最后总结执行结果并给出响应。HuggingGPT可以解决跨领域跨模态的各种AI任务,在语言、视觉、语音等任务中都取得很好的效果。
Type: Paper
链接: https://arxiv.org/abs/2303.17580
代码是否开源: 开源
代码链接: https://github.com/microsoft/JARVIS


读前先问

带着问题读论文,边读边回答。

  1. 大方向的任务是什么?Task

Agent

  1. 这个方向有什么问题?是什么类型的问题?Type

虽然AI模型众多,但是不能互相配合。

  1. 为什么会有这个问题?Why

没有一个大脑作为指挥。

  1. 作者是怎么解决这个问题的?How

将ChatGPT作为大脑来指挥各种AI模型。

  1. 怎么验证解决方案是否有效?

  2. 实验结果怎么样?What(重点关注有没有解决问题,而不是效果有多好)


论文精读

引言

目前的LLM技术尚不完善,在构建先进的AI系统的道路上面临着一些紧迫的挑战:

  1. 受限于文本生成的输入输出形式,目前的LLM缺乏处理视觉、语音等复杂信息的能力;
  2. 在现实场景中,一些复杂的任务通常由多个子任务组成,因此需要多个模型的调度和协作,这也超出了语言模型的能力;
  3. 对于一些具有挑战性的任务,LLM在Zero-Shot或Few-Shot设置中表现出出色的结果,但仍然弱于一些专家。

作者认为,为了处理复杂的AI任务,LLM应该能够与外部模型协调以利用它们的力量。关键问题是如何选择合适的中间件来桥接LLM和AI模型之间的联系,LLM恰好可以完成这个工作。将各种AI模型的描述融入到提示词中,LLM可以作为管理规划、调度、合作等这些AI模型的大脑。

在这篇论文中,作者提出了一种名为 HuggingGPT 的由 LLM 驱动的 Agent,可以自主处理各种复杂的 AI 任务,它连接了 LLM(即 ChatGPT)和 ML 社区(即 Hugging Face),并且可以处理来自不同模式的输入。更具体地说,LLM充当大脑:一方面根据用户请求拆解任务,另一方面根据模型描述为任务分配合适的模型。通过执行模型并将结果集成到计划任务中,HuggingGPT 可以自主满足复杂的用户请求。

HuggingGPT 的工作流如下图所示,可以分为四个阶段:

  1. 任务规划:使用ChatGPT分析用户的请求,了解他们的意图,并将其分解为可能的可解决的任务。
  2. 模型选择:ChatGPT 根据模型描述选择托管在 Hugging Face 上的专家模型。
  3. 任务执行:调用并执行每个选定的模型,并将结果返回给ChatGPT。
  4. 响应生成:ChatGPT 集成所有模型的预测结果并为用户生成响应。

在这里插入图片描述

主要贡献:

  1. 提出HuggingGPT,结合LLM和专家模型,通过模型间合作协议,提供设计通用AI解决方案的新方法。
  2. 将Hugging Face平台的任务特定模型与ChatGPT集成,处理多模态、多领域的广义AI任务,提供可靠的多模态对话服务。
  3. 强调任务规划和模型选择的重要性,并提出评估LLMs在这方面能力的实验方法。
  4. 大量跨模态和领域的实验表明,HuggingGPT在理解和解决复杂任务方面具有强大能力和巨大潜力。

方法

任务规划

任务规划模块旨在使用LLM分析用户请求,然后将其分解为结构化任务的集合,还要要求LLM确定这些分解任务的依赖关系和执行顺序,以建立它们的连接。

  1. 特定格式的指令:为了更好地表示用户请求并且在后续阶段使用,我们希望LLM能够输出特定格式(例如JSON)的内容,方便解析。一个任务则是由任务名称、任务ID、依赖任务和参数四部分组成。
  2. 为了更好地理解任务规划的意图和标准,HuggingGPT 在提示词中融入了多个例子。

任务规划阶段的提示词如下图所示,为了支持更复杂的场景(例如,多轮对话),作者在提示词中还包含了聊天日志。

在这里插入图片描述

任务规划的模板

[{"task": task, "id", task_id, "dep": dependency_task_ids, "args": {"text": text, "image": URL, "audio": URL, "video": URL}
}]
名称定义
task代表解析任务的类型,涵盖了语言、视觉、视频、音频等不同的任务。
id任务计划的唯一标识符,用于引用相关任务及其生成的资源。
dep定义了执行所需的先决任务,仅当所有先决依赖任务完成后才会启动该任务。
args包含任务执行所需参数的列表,三个子字段,根据任务类型填充文本、图像和音频资源。它们是根据用户的请求或依赖任务生成的资源来解析的。

支持的任务列表

在这里插入图片描述

模型选择

HuggingGPT 继续将任务与模型进行匹配的任务,即为解析的任务列表中的每个任务选择最合适的模型。作者使用模型描述作为连接每个模型的语言接口,从 ML 社区(例如 Hugging Face)收集专家模型的描述,然后采用动态上下文任务模型分配机制来为任务选择模型。

模型选择阶段的提示词如下图所示,将模型选择制定为单选问题,其中可用模型在给定上下文中作为选项呈现。由于最大上下文长度的限制,提示词中无法包含所有相关模型的信息。为了缓解这个问题,作者首先根据任务类型过滤模型,然后根据 Hugging Face 上的下载量对模型进行排名,选择前 K 个模型作为候选模型。

在这里插入图片描述

任务执行

HuggingGPT 会自动将任务参数输入到模型中,执行这些模型以获得推理结果,然后将其发送回 LLM。

由于先决任务的输出是动态生成的,HuggingGPT 还需要在启动任务之前动态指定任务的依赖资源。因此,任务执行阶段的重点是建立具有资源依赖性的任务之间的连接。

作者使用了一个唯一符号“”来维护资源依赖性。具体来说,HuggingGPT 将先决任务生成的资源标识为 -task_id,其中 task_id 是先决任务的 id。在任务规划阶段,如果某些任务依赖于先前执行的任务的输出(例如,task_id),HuggingGPT 会将此符号(即 -task_id)设置为参数中相应的资源子字段。然后在任务执行阶段,HuggingGPT 动态地用先决任务生成的资源替换该符号。

其余没有任何资源依赖的任务直接并行执行,进一步提高推理效率。也就是说,如果多个任务满足先决条件依赖关系,则可以同时执行多个任务。

响应生成

HuggingGPT 在本阶段将前三个阶段(任务规划、模型选择和任务执行)的所有信息整合为一个简洁的摘要,包括规划的任务列表、任务选择的模型以及模型的推理结果。

其中最重要的是推理结果,这是HuggingGPT做出最终决策的关键点。HuggingGPT 允许LLM接收结构化的推理结果作为输入,并以友好的人类语言形式生成响应。此外,LLM 不是简单地汇总结果,而是生成积极响应用户请求的响应,从而提供具有置信度的可靠决策。

在这里插入图片描述

实验

采用 GPT 模型的 gpt-3.5-turbo、text-davinci-003 和 gpt-4 变体作为主要 LLM,可通过 OpenAI API 公开访问,set the decoding temperature to 0,set the logit_bias to 0.2 on the format constraints (e.g., “{” and “}”)。

定性分析

下图中,用户的请求包括三个任务:检测示例图像中人的姿势,根据该姿势和指定文本生成新图像,以及创建描述该图像的语音。 HuggingGPT 将这些任务解析为六个任务,包括姿势检测、基于姿势的文生图、目标检测、图像分类、图像字幕和TTS。可以观察到 HuggingGPT 可以正确编排任务之间的执行顺序和资源依赖关系。例如,基于姿势的文生图任务必须遵循姿势检测并使用其输出作为输入。之后,HuggingGPT 为每个任务选择合适的模型,并将模型执行的结果综合为最终响应。

在这里插入图片描述

定量分析

任务规划在整个工作流程中起着至关重要的作用,因为它决定了后续流程中将执行哪些任务。因此,我们认为任务规划的质量可以用来衡量LLM作为HuggingGPT控制器的能力。

作者通过仅考虑任务类型来简化评估,不考虑其关联的参数。为了更好地对任务规划进行评估,作者将任务分为三个不同的类别并为它们制定不同的指标:

  1. 单任务:仅涉及一项任务的请求。当且仅当任务名称和预测标签完全相同时,才认为计划是正确的。在这种情况下使用 F1 和准确性作为评估指标。
  2. 顺序任务:用户的请求可以分解为多个子任务的序列。在这种情况下采用 F1 和归一化编辑距离作为评估指标。
  3. 图任务:用户请求可以分解为有向无环图。图任务中可能存在多种规划拓扑,仅依靠F1分数不足以反映LLM在规划方面的能力。为了解决这个问题,作者采用 GPT-4 作为批评者来评估规划的正确性。准确率是通过评估GPT-4的判断力得到的,简称GPT-4 Score。

在这里插入图片描述

数据集

作者创建两个数据集用于评估任务规划,收集了 3497 个不同的用户请求

  1. 邀请一些标注者提交一些用户请求作为评估数据集,用 GPT-4 生成任务规划作为伪标签,涵盖单任务(1450个)、顺序任务(1917个)和图任务(130个)。
  2. 邀请一些专家标注者将一些复杂请求(46 个示例,24个顺序任务+22个图任务)的任务规划标记为高质量的人工注释数据集。

在这里插入图片描述

性能

单任务评估结果:

在这里插入图片描述

顺序任务评估结果:

在这里插入图片描述

图任务评估结果:

在这里插入图片描述

复杂任务评估结果:

在这里插入图片描述

消融实验

任务规划阶段,提示词中不同任务示例的多样性对结果的影响。多样性指的是提示词中涉及的不同任务类型的数量。增加示例的多样性可以适度提高LLM在任务规划方面的表现。

在这里插入图片描述

提示词中不同任务示例的数量对结果的影响。添加一些示例可以稍微提高模型性能,但当示例数量超过 4 个时,这种改进将受到限制。

在这里插入图片描述

人工评测

作者收集了 130 个不同的请求来评估 HuggingGPT 在各个阶段的性能,包括任务规划、模型选择和最终响应生成,设计了三个评价指标,即通过率、合理性、成功率。

在这里插入图片描述

限制

一些限制或改进空间:

  1. HuggingGPT 中的规划很大程度上依赖于 LLM 的能力,而我们无法确保生成的计划始终可行且最优。因此,探索优化LLM的途径,提升其规划能力至关重要;
  2. 效率是一个最大的挑战,要构建这样一个具有任务自动化功能的协作系统(即 HuggingGPT),它在很大程度上依赖于强大的控制器(例如 ChatGPT)。然而,HuggingGPT 在整个工作流程中需要与LLM进行多次交互,从而增加了生成响应的时间成本;
  3. 令牌长度是使用 LLM 时的另一个常见问题,因为最大令牌长度始终受到限制,如何简洁有效地总结模型描述也是值得探索的;
  4. 不稳定主要是因为LLM通常不可控,在推理过程中可能不符合指令或给出错误答案,从而导致程序工作流程出现异常。在设计系统时应该考虑如何减少推理过程中的这些不确定性。

速览笔记

Motivation

作者为什么做这件事?之前存在什么问题?

AI模型很多,但是大部分都是领域专家模型,没有一个控制器将它们都联合起来。

ChatGPT出来之后,展现出了强大的理解和推理能力,正好可以作为一个复杂AI系统的大脑。

Novelty

  1. 创建点在哪里?为什么要提出来这个?要解决什么问题?

创新点包括:将ChatGPT作为控制器和规划器,解构复杂的任务,调用HuggingFace上的模型完成子任务,最后再汇总。

其实它也解决LLM只是一个纯语言模型,不能听、说和看的问题。

  1. 怎么才能想出来这个创新点?想问题的思路是什么?

推测作者的想法

站在当时的情境下,ChatGPT爆火,随之而来的就是AGI和Agent的概念。当时也有一些项目,像是AutoGPT、AgentGPT和BabyAGI等等,都是非常新的东西。

但是更多处理的还是文本这一个模态的信息,并不能处理其它像语音、图像和音频等模态的信息。

而GPT-4当时应该是还没有开放视觉能力,如果想要让ChatGPT拥有多模态的处理能力,就只能借助其它的模型,也就是HuggingFace上的模型。这些模型为了能够跟ChatGPT进行交互,也只能把输入输出都转换为文本的形式,这样就能搭建起一个以文本为媒介,ChatGPT为大脑的AI系统。

  1. 怎么就能发这个会议或者这个期刊的?

站在审稿人的角度看论文

一方面AGI和Agent这两点结合的很好,另外一方面,我觉得最重要的是,它提供了一种以文本为媒介的多模态处理方式,还不需要训练一个多模态模型。

Methods

对照代码,整理模型整体结构,分析每个模块的作用以及对性能的提升贡献(重点,呼应实验),找到核心模块(提点最多),以及判断跟创新点是否匹配

Experiments

训练集和测试集

用的哪个数据集,规模多少,评价指标是什么

作者自己创建两个数据集用于评估任务规划,收集了 3497 个不同的用户请求

  1. 邀请一些标注者提交一些用户请求作为评估数据集,用 GPT-4 生成任务规划作为伪标签,涵盖单任务(1450个)、顺序任务(1917个)和图任务(130个)。
  2. 邀请一些专家标注者将一些复杂请求(46 个示例,24个顺序任务+22个图任务)的任务规划标记为高质量的人工注释数据集。

在这里插入图片描述

性能如何,好不好复现,是否有Code/Blog/知乎讨论

代码开源,但是数据集不开源,尝试一下demo可以,复现实验结果不太好弄。

浙大与微软发布的 HuggingGPT 在线演示惊艳亮相,可完成多模态复杂任务,将带来哪些影响? - 知乎

HuggingGPT - 知乎

浙大与微软发布的 HuggingGPT 在线演示惊艳亮相,可完成多模态复杂任务,将带来哪些影响? - 知乎

每个实验证明了什么

定量分析都是模型在任务规划阶段的指标。

消融实验是为了则是评估了提示词中示例的数量对结果的影响。

人类评估测试主要分了三个方面:通过率、合理性和成功率,我觉得最重要的事合理性。

有没有哪些实验没有做

论文中只对任务规划模块进行了定量分析,虽然给出的理由是任务规划模块最重要,但是我觉得其它模块也应该做实验分析。

  1. 任务规划模块,只考虑了任务类型的准确性,没有考虑参数,而且也没有考虑任务之间的依赖是否准确。对于顺序任务和图任务,我觉得顺序也是一个非常重要的因素;
  2. 模型选择这一块,选择模型的准确性也需要评估。例如TTS任务,用户请求是合成的是中文,它会不会选择一个通用的TTS模型然后合成了英文输出;
  3. 任务执行这一块倒是没有什么实验可以做;
  4. 响应生成这一块,是邀请了人类专家做的评判,但是这一块我觉得有些评测可以自动化,比如统计图片中有多少只狗,这个在一些目标检测的数据集中应该是有标签的,可以自动评测。

Downsides

哪些提出的模块是有问题的

好像也没有什么问题,少一个模块都不大行。

哪些提出的点对性能提升存疑

暂无。

有没有能改进的地方

论文中提出的未来改进方向:

  1. we plan to improve the quality and quantity of this dataset to further assist in evaluating the LLM’s planning capabilities.
  2. we believe that developing technologies to improve the ability of LLMs in task planning is very important, and we leave it as a future research direction.
  3. In the future, we will continue to explore more elements that can improve the capability of LLMs at different stages.
  4. we think that how to design and deploy systems with better stability for HuggingGPT or other autonomous agents will be very important in the future.

增加反馈机制,如果有哪个流程出现了问题,可以通过ChatGPT进行检查并反馈。

Thinking

能否迁移应用?(业务应用方向、模型改进、数据生产组织等方面)

超级缝合怪,牛逼o( ̄▽ ̄)d。

不一定要训练多模态大模型,借助现有的各种领域专家模型也可以。


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

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

相关文章

【408精华知识】指令的寻址方式

文章目录 一、指令寻址(一)顺序寻址(二)跳跃寻址 二、数据寻址(一)隐含寻址(二)立即(数)寻址(三)直接寻址(四)…

外卖系统源码开发全攻略:外卖小程序与后台管理系统的设计与实现

今天,小编将详细介绍外卖系统源码的开发全攻略,从需求分析到设计与实现,为开发者提供全面指导。 一、需求分析 1.用户需求 用户是外卖系统的核心,需满足以下基本需求: -浏览菜单并下单 -实时追踪订单 -多种支付方…

移动硬盘难题:不显示容量与无法访问的解决策略

在使用移动硬盘的过程中,有时会遇到一些棘手的问题,比如移动硬盘不显示容量且无法访问。这种情况让人十分头疼,因为它不仅影响了数据的正常使用,还可能导致重要数据的丢失。接下来,我们就来详细探讨一下这个问题及其解…

Python | Leetcode Python题解之第112题路径总和

题目: 题解: class Solution:def hasPathSum(self, root: TreeNode, sum: int) -> bool:if not root:return Falseif not root.left and not root.right:return sum root.valreturn self.hasPathSum(root.left, sum - root.val) or self.hasPathSum…

太狠了,凌晨5点面试。。

(关注数据结构和算法,了解更多新知识) 网上看到一网友发文说收到面试邀请,面试时间竟然是早晨5点,这是要猝死的节奏。有的网友说应该是下午 5 点,如果是下午 5 点直接写下午 5 点就行了,或者写 17 点也行,直…

Unity Assembly Definition Dotween 引用

原理: 具体Unity程序集原理用法,暂时留坑,不介绍了,相信有很多人也写过了 这里简单放个官方API链接 https://docs.unity3d.com/cn/current/Manual/ScriptCompilationAssemblyDefinitionFiles.html 现象 :Dotween引用…

捕捉二氧化碳也能赚钱?深入探索CCUS技术与商业前景

引言 随着全球变暖和气候变化的加剧,如何有效减少二氧化碳(CO2)排放成为各国亟待解决的问题。近日,全球最大的二氧化碳捕集工厂在冰岛正式运营,这一消息引起了广泛关注。本文将深入探讨捕集二氧化碳技术(C…

Java进阶学习笔记20——枚举

认识枚举: 枚举是一种特殊的类。 枚举类的格式: 说明: 第一行是罗列枚举的对象名称。只能写合法的标识符(名称),多个名称用逗号隔开。 这些名称本质上都是常量,每个变量都会记住枚举类的一个…

RobotFramework测试框架(13)--内置测试库

Builtln Evaluate方法 Evaluate。它可以做很多事情,主要的作用是可以直接调用Python的方法 一般用Evaluate都是前面放变量接收值,第三列是具体的运算表达式,第四列是要用到的Python的module。这里就是用random来进行一个随机数的生成 Cons…

python写接口性能测试

import time import requestsdef measure_response_time(api_url):try:start_time time.time()response requests.get(api_url, timeout10) # 设置超时时间为10秒end_time time.time()response_time end_time - start_timeprint(f"接口 {api_url} 的响应时间为&#…

nodeJs学习(第一周)

文章目录 学习总结nodejs基础知识核心模块(内置模块)fs(file-system)文件系统fs增删查改urlQuery String httprequest根据不同的请求路径发送不同的响应结果requireip地址和端口号Content-Type 第三方模块 express登录接口逻辑分析…

乡村振兴的乡村文化传承与活化:活化乡村传统文化,传承乡村文化基因,打造具有文化魅力的美丽乡村

目录 一、引言 二、乡村文化的独特价值与现状 三、活化乡村传统文化的策略 1、挖掘乡村文化资源 2、创新文化表达方式 3、加强文化产业发展 四、传承乡村文化基因的途径 1、加强文化教育 2、培育文化人才 3、弘扬文化精神 五、打造具有文化魅力的美丽乡村 1、规划乡…

Photoshop插件(UXP)编写过程中,如何更新sp-checkbox的选中状态

✨问题说明 sp-checkbox是uxpSpectrum UXP Widgets下的一个小组件&#xff0c;内置样式大概是这样&#xff1a; 那么&#xff0c;如果用js动态的改变选中的状态&#xff0c;应该如何做呢&#xff1f; 如果直接是html来写&#xff1a; <sp-checkbox checked>Checked<…

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

求斐波那契数列第n项的值

本期介绍&#x1f356; 主要介绍&#xff1a;什么是斐波那契数列&#xff0c;递归实现求斐波那契数列第n项值&#xff0c;递归法为什么不适合求斐波那契数&#xff0c;用迭代法实现求斐波那契数列的值&#x1f440;。 文章目录 1. 斐波那契数列是什么&#xff1f;2. 题目2. 递归…

【Python 对接QQ的接口(二)】简单用接口查询【等级/昵称/头像/Q龄/当天在线时长/下一个等级升级需多少天】

文章日期&#xff1a;2024.05.25 使用工具&#xff1a;Python 类型&#xff1a;QQ接口 文章全程已做去敏处理&#xff01;&#xff01;&#xff01; 【需要做的可联系我】 AES解密处理&#xff08;直接解密即可&#xff09;&#xff08;crypto-js.js 标准算法&#xff09;&…

Android9.0 MTK平台如何增加一个系统应用

在安卓定制化开发过程中&#xff0c;难免遇到要把自己的app预置到系统中&#xff0c;作为系统应用使用&#xff0c;其实方法有很多&#xff0c;过程很简单&#xff0c;今天分享一下我是怎么做的&#xff0c;共总分两步&#xff1a; 第一步&#xff1a;要找到当前系统应用apk存…

Golang并发编程-协程goroutine的信道(channel)

文章目录 前言一、信道的定义与使用信道的声明信道的使用 二、信道的容量与长度三、缓冲信道与无缓冲信道缓冲信道无缓冲信道 四、信道的初体验信道关闭的广播机制 总结 前言 Goroutine的开发&#xff0c;当遇到生产者消费者场景的时候&#xff0c;离不开 channel&#xff08;…

关于XtremIO 全闪存储维护的一些坑(建议)

XtremIO 是EMC过去主推的一款全闪存储系统&#xff0c;号称性能小怪兽&#xff0c;对付那些对于性能要求极高的业务场景是比较合适的&#xff0c;先后推出了1代和2代产品&#xff0c;目前这个产品好像未来的演进到了PowerStor或者PowerMax全闪&#xff0c;应该不独立发展这个产…

存在重复元素 II[简单]

优质博文&#xff1a;IT-BLOG-CN 一、题目 给你一个整数数组nums和一个整数k&#xff0c;判断数组中是否存在两个不同的索引i和j&#xff0c;满足nums[i] nums[j]且abs(i - j) < k。如果存在&#xff0c;返回true&#xff1b;否则&#xff0c;返回false。 示例 1&#…