当前位置: 首页 > news >正文

LLM之Agent(五)| AgentTuning:清华大学与智谱AI提出AgentTuning提高大语言模型Agent能力

​论文地址:https://arxiv.org/pdf/2310.12823.pdf

Github地址:https://github.com/THUDM/AgentTuning

       在ChatGPT带来了大模型的蓬勃发展,开源LLM层出不穷,虽然这些开源的LLM在各自任务中表现出色,但是在真实环境下作为AI Agent仍与商业模型的效果存在较大差距,比如ChatGPT和GPT-4等。Agent把LLM当做核心控制器来完成任务规划、记忆和工具使用等功能,这既需要细粒度的Prompt方法,又需要强大的LLMs来获得满意的性能。

       现有针对LLM代理能力的研究主要关注设计提示或构建框架来完成某一特定代理任务,而没有从根本上提升LLM自身的通用Agent能力。许多相关工作专注于提升LLM在特定方面的能力,这通常以牺牲其通用能力为代价,也降低了其泛化能力。针对上述问题,清华大学与智谱AI提出了AgentTuning方法。

       AgentTuning是一种简单而通用的方法,既可以增强LLM的Agent能力,有可以同时保持其通用LLM能力。AgentTuning具体方法是首先构造一个包含高质量交互轨迹的轻量级指令调优数据集AgentInstruction,然后采用混合指令微调策略将AgentInstruction与来自通用领域的开源指令相结合。AgentTuning对Llama 2系列模型进行指令微调产生AgentLM。

一、AgentTuning方法介绍

       对于一个代理任务,LLM代理的交互轨迹可以记录为对话历史(u1,a1,…,un,an)。考虑到现有的对话模型通常包括两个角色,用户和模型,ui表示来自用户的输入,ai表示来自的响应模型每个轨迹都有一个最终奖励r∈[0,1],反映了任务的完成状态。

、构造AgentInstruction数据集

        大语言模型的指令数据已经广泛应用于预训练好的LLM来获得更好的指令跟随能力,比如FLAN、InstructGPT模型。然而,收集Agent任务的指令要困难得多,因为它涉及Agent在复杂环境中的交互轨迹。AgentInstruction数据集构建有三个主要阶段:指令构建、轨迹交互和轨迹过滤。整个过程使用GPT-3.5(GPT-3.5-turbo-0613)和GPT4(GPT-4-0613)实现完全自动化,使该方法能够轻松扩展到新的Agent任务。

2.1 指令构建

       作者使用六个现实世界场景相对容易收集指令的Agent任务来构建AgentConstruct数据集,包括AlfWorld、WebShop、Mind2Web、知识图、操作系统、数据库。具体请参考如下表所示:

任务派生

       对于常见的Agent任务,可以直接从相似的数据集构造指令。对于数据库任务,我们需要从BIRD(是一个仅用于SELECT的数据库基准)中构建指令。我们运行了两种类型的任务派生。首先,作者使用问题和每个BIRD子任务中的参考SQL语句来构建轨迹。然后,我们使用参考SQL语句查询数据库来获取对应的输出,并将其作为Agent的答案。最后,让GPT-4结合上述信息的情况下补充Agent的想法。通过这种方式,可以直接从BIRD数据集中生成正确的轨迹。

       然而,由于该合成过程决定了交互的轮数固定为2,然后作者又提出了另一种方法,不是直接生成轨迹,而是通过构建指令来提高多样性。作者把BIRD的问题作为Prompt向GPT-4请求,并收集其与数据库的交互轨迹。收集到轨迹后,执行参考SQL语句并将结果与来自GPT-4的结果进行比较,过滤掉错误的答案,只收集正确的轨迹。

Self-Instruct

       对于操作系统任务来说,由于难以在终端执行OS命令来获得指令,因此作者采用了Self-Instruct方法构建任务。首先通过Prompt给GPT-4提出一些与操作系统相关的任务,以及任务说明、参考解决方案和评估脚本。然后,把任务作为Prompt给另一个GPT-4(求解器)并收集其轨迹。在任务完成之后,运行参考解决方案,并与使用评估脚本GPT-4(求解器)生成的结果进行比较。最后收集两者相同的轨迹数据。对于DB任务,由于BIRD只包含SELECT数据,我们需要使用Self-Instruct发光法来构造其他数据库操作类型(比如INSERT、UPDATE和DELETE)。

测试数据污染风险分析

       值得注意的是,如果GPT-4输出的指令与测试集中的指令相同,或者如果测试任务是从派生的同一数据集构建的,那么这两种方法可能存在测试数据污染的风险。作者对其做了污染分析。

       作者采用了基于token的污染分析方法。具体是对训练数据和测试样本进行分词,然后匹配10-gram,最多允许4个不匹配。如果10-gram在训练数据和测试数据都包括,那么这个10-gram被认为是污染了。作者将评估样本的污染率定义为该样本的token污染率。如果评估样本的污染率大于80%,我们将其定义为“dirty”,如果其污染率低于20%,则为“clean”。具体如下表所示:

2.2 交互轨迹生成

        在构建了初始指令后,作者使用GPT-4(GPT-4-0613)作为轨迹交互的代理。对于Mind2Web任务,由于大量的指令和预算限制,作者部分使用ChatGPT(gpt-3.5-turbo-0613)进行相互作用。

       由于代理任务对输出格式的严格要求,作者采用了1-shot评估方法。对于每项任务,针对训练数据集都生成一个完整的交互过程。

交互过程

       交互过程有两个主要部分:首先,给模型一个任务描述和一个成功的1-shot实例,然后,开始实际的交互。给模型提供当前的指令和必要的信息。模型会基于这些信息和先前的反馈会形成一个想法和一个动作。然后环境提供反馈,包括可能的更改或新信息。此循环会持续到模型达到其目标或达到其令牌限制。如果模型连续三次重复相同的输出,认为这是一次反复的失败。如果模型的输出格式错误,我们使用BLEU度量进行比较所有可能的动作选择,并选择最接近的匹配项作为该步骤的模型动作。

CoT比率

      思维链推理方法可以显著增强LLM逐步推理的推理能力。作者采用ReAct作为推理框架,会输出CoT每个步骤的解释(简称thought),直到完成最终的动作。因此,所收集的交互轨迹伴随着详细的轨迹细节,使模型能够学习引导行动的推理过程。对于不使用thought而使用任务推导生成的轨迹,作者使用GPT-4来补充thought,以与ReAct Prompting保持一致。

2.3 交互轨迹过滤

       为了确保数据质量,需要严格过滤其相互作用轨迹。由于每个互动轨迹都会得到一个奖励r,可以基于奖励r自动选择高质量的轨迹。根据最终奖励r=1可以过滤除Mind2Web外的所有任务的轨迹。然而,由于Mind2Web任务相对较难,我们使用r≥2/3确保可以获得足够数量的轨迹。在表2中,我们展示了7B模型在过滤与不过滤轨迹上进行微调的效果对比。

经过上述步骤过滤之后,最终AgentInstruction数据集得到1866条数据。

、指令微调

3.1 通用领域指令

       最近的研究表明,使用多样化的用户Prompt训练模型可以提高模型的性能。作者从ShareGPT数据集(https://huggingface.co/datasets/anon8231489123/ShareGPT_Vicuna_unfiltered)选择了57096个GPT-3.5会话和3670个GPT-4会话。从GPT-4回复的高质量数据中按照采样率为1:4抽取GPT-4和GPT-3.5的样本。

3.2 混合训练

       从下表5可以看出,Agent任务数据和通用数据混合训练才能在agent任务和通用领域都表现良好,因此混合训练主要优化如下loss:

PS:通过调整不同的η,发现η = 0.2时held-out任务的效果是最好的。

3.3 训练设置

       作者选择开源Llama 2(Llama-2-{7,13,70}b-chat)作为基础模型。参考Vicuna,作者将所有数据标准化为多轮聊天机器人风格的格式,这样可以很方便地混合不同来源的数据。作者使用Megatron-LM微调Llama 2 7B、13B和70B的模型,并且在微调过程中,只计算模型输出的损失。

  • 学习率:7B和13B模型的学习率为5e-5,70B模型为1e-5;
  • 批次大小:设置了批次大小为64;
  • 序列长度:序列长度为4096;
  • 优化器:我们使用AdamW优化器,其中余弦学习调度器具有2%的预热步骤。

     为了训练高效,作者使用了tensor并行和pipeline并行。训练详细超参数见下表6所示:

、效果评估

4.1 评估设置

Held-in/out任务:评估的任务如下表3所示:

通用任务:为了全面评估模型的总体能力,作者选择了常用的4个任务,分别是反映了模型的知识能力(MMLU),数学能力(GSM8K),编码能力(Humaneval)和人类偏好(MT Bench)。

baseline:从下图1可以看出,基于api的商业模型明显超过了开源模型在代理任务中的表现。因此,作者选择了GPT-3.5(GPT-3.5-turbo-0613)以及GPT-4(GPT-4-0613)作为Agent。因其卓越的指令跟随能力,选择评估开源的Llama 2聊天版本(Llama-2-{7,13,70}b-chat)。参考AgentBench,作者也截断了超过模型长度限制的对话历史,并且使用贪婪解码。对于WebArena,我们采用核采样,p=0.9进行探索。

总体分数计算:任务难度的差异可能导致直接计算平均分有失公允,因此对每个任务的得分进行归一化,并将其缩放到1的平均值以实现平衡基准评估。任务权重如下表3所示:

4.2 实验主要结论

        从表4可以看出,AgentLM展示了Llama 2系列不同大小模型在held-in任务和held-out任务中都有显著改进,同时保持通用任务的性能。held-in任务的改进比held-out任务更明显,但是held-out任务的提升仍然达到至170%。这证明了AgentLM模型作为一般代理的潜力。在若干任务中,AgentLM的13B和70B版本甚至超过了GPT-4。

       对于大多数held-in任务,Llama 2的性能几乎为零,这表明Llama 2完全无法处理这些任务。然而,AgentLM的基本错误明显较少,这表明该方法有效地激活了模型的Agent能力。值得注意的是,70BAgentLM的总体性能接近GPT-4。

        在held-out任务中,70B AgentLM的性能接近GPT-3.5,70B模型和7B模型分别都有176%和76%的提升。这是因为更大的模型具有更强的泛化能力能力,在相同的训练数据上有更好的泛化性。

       在通用任务上,AgentLM在四个维度(知识,数学、编码和人类偏好)上的表现与Llama 2不相上下。这充分表明,即使增强了Agent能力,AgentLM模型也能保持相同的通用能力。

4.3 错误分析

       为了深入研究错误分析,作者从held-in任务集中选择了三个任务(ALFWorld、WebShop、KG),并使用基于规则的方法识别常见错误类型,例如无效动作和重复生成。结果如图3(a)所示:

       总的来说,Llama2会出现如重复生成和采取无效行动的基本错误,相比之下,GPT-3.5尤其是GPT-4产生这种错误更少。然而,AgentLM显著减少了这些基本错误。作者推测,虽然Llama 2 chat模型本身具有Agent能力,但其较差,可能是由于缺乏对Agent数据对齐训练;AgentTuning有效的激活了其Agent潜力。

参考文献:

[1] https://arxiv.org/pdf/2310.12823.pdf

相关文章:

LLM之Agent(五)| AgentTuning:清华大学与智谱AI提出AgentTuning提高大语言模型Agent能力

​论文地址:https://arxiv.org/pdf/2310.12823.pdf Github地址:https://github.com/THUDM/AgentTuning 在ChatGPT带来了大模型的蓬勃发展,开源LLM层出不穷,虽然这些开源的LLM在各自任务中表现出色,但是在真实环境下作…...

LLM之Agent(三):HuggingGPT根据用户需求自动调用Huggingface合适的模型

​ 浙大和微软亚洲研究院开源的HuggingGPT,又名JARVIS,它可以根据用户的自然语言描述的需求就可以自动分析需要哪些AI模型,然后去Huggingface上直接调用对应的模型,最终给出用户的解决方案。 一、HuggingGPT的工作流程 它的…...

【上海大学数字逻辑实验报告】五、记忆元件测试

一、实验目的 掌握R-S触发器、D触发器和JK触发器的工作原理及其相互转换。学会用74LS00芯片构成钟控RS触发器。学会用74LS112实现D触发器学会在Quartus II上用D触发器实现JK触发器。 二、实验原理 基本R-S触发器是直接复位-置位的触发器,它是构成各种功能的触发器…...

yaml工作常用语法总结

文章目录 yaml中的| 符号 和 > 符号yaml中的 - 符号工作中常遇到的问题- 命令行中有冒号加空格,导致yaml解析报错 yaml中的| 符号 和 > 符号 在 YAML 中,| 符号表示标量块(Scalar Block)的开始。它用于表示长文本块或保持多…...

bash中通过变量中的内容获取对应的关联数组

bash中通过变量中的内容获取对应的关联数组 Bash declare 手册: https://phoenixnap.com/kb/bash-declare 实际问题: 在 bash 中创建了多个关联数组,需要根据输入的值,获取不同的关联数组。 可以使用 if 进行多次判断&#xff…...

Redis Geo操作地理位置

Redis Geo 使用场景API列表名词API列表Springboot使用mavenyamlTest 注意事项 Redis Geo 是Redis在3.2版本中新增的功能,用于存储和操作地理位置信息 使用场景 滴滴打车:这是一个对地理位置精度要求较高的场景。通过使用Redis的GEO功能,滴滴…...

市面上的AR眼镜:优缺点分析

AR眼镜是近年来备受关注的科技产品之一。它通过将虚拟信息叠加到现实世界中,为用户提供全新的视觉体验。目前,市面上的AR眼镜主要分为两类:消费级AR眼镜和企业级AR眼镜。 消费级AR眼镜 消费级AR眼镜的特点是轻便、时尚、易于佩戴&#xff0…...

2024年湖南省职业院校技能竞赛高职组电子与信息专业类软件测试赛项竞赛规程及样题

湖南省职业院校技能竞赛 高职组电子与信息专业类软件测试赛项竞赛规程及样题 一、竞赛内容 1.本赛项考查的技术技能和涵盖的职业典型工作任务 任务项 任务名称 职业典型工作任务 任务一 功能测试 测试计划、测试报告文档设计与编写、测试用例 设计、测试执行和 Bug记录 任务二…...

10、pytest通过assert进行断言

官方实例 # content of test_assert1.pydef f():return 3def test_function():assert f() 4def test_assert_desc():a f()# assert a % 2 0assert a % 2 0, "value was odd, should be even"解读与实操 pytest允许你使用标准python断言来验证测试中的期望值&am…...

Webpack技术入门与实践

1.概念: 本质上, webpack是一个现代JavaScript应用程序的静态模块打包器,当webpack处理应用程序时,它会递归地构建一个依赖关系图,其中包含应用程序需要的每个模块,然后将所有这些模块打包成一个或多个bund…...

HarmonyOS开发(九):数据管理

1、概述 1.1、功能简介 数据管理为开发者提供数据存储、数据管理能力。 它分为两个部分: 数据存储:提供通用数据持久化能力,根据数据特点,分为用户首选项、键值型数据库和关系型数据库。数据管理:提供高效的数据管…...

acwing-Linux学习笔记

acwing-Linux课上的笔记 acwing-Linux网址 文章目录 1.1常用文件管理命令homework作业测评命令 2.1 简单的介绍tmux与vimvimhomeworktmux教程vim教程homework中的一些操作 3 shell语法概论注释变量默认变量数组expr命令read命令echo命令printf命令test命令与判断符号[]逻辑运算…...

Python渗透测试——一、数据包的编辑工具——Scapy

Python渗透测试 一、Scapy简介二、Scapy中的分层结构三、Scapy中的常用函数四、在Scapy 中发送和接收数据包五、Scapy 中的抓包函数 一、Scapy简介 提到数据包(这里泛指帧、段和报文等)的构造,我们首先需要了解协议和分层这两个概念。在“互联世界的规则一协议”中…...

使用webstrom编写vue开启提示

1.语言服务器选择 2.文件类型–忽略的文件和文件夹,删去,node_modules,就可以点进去库了 3.禁用JSLint、TSLint 4.开启node辅助 5.如果是vite,开启自动读取,或手动指定 6.如果是Webpack,开启自动读取&#…...

linux远程桌面管理工具(xrdp)、向日葵

Windows远程桌面 linux远程桌面 使用向日葵远程桌面(手机端同理) Windows远程桌面 微软自带Remote Desktop Connection Manager (RDCMan)远程控制管理软件介绍 远程桌面连接管理器 v2.93 linux远程桌面 Windows远程桌面Ubunt…...

【力扣100】8.找到字符串中所有字母异位词

添加链接描述 class Solution:def findAnagrams(self, s: str, p: str) -> List[int]:sildingstrresult[]p.join(sorted(p))for i in range(len(s)):if len(sildingstr)<len(p):sildingstrsildingstrs[i]# print(sildingstr)if len(sildingstr)len(p):sort_sildingstr.j…...

圆通速递查询,圆通速递单号查询,用表格导出查询好的物流信息

批量查询圆通速递单号的物流信息&#xff0c;以表格的形式导出查询好的物流信息。 所需工具&#xff1a; 一个【快递批量查询高手】软件 圆通速递单号若干 操作步骤&#xff1a; 步骤1&#xff1a;运行【快递批量查询高手】软件&#xff0c;并登录 步骤2&#xff1a;点击主界…...

FLStudio中文2024中文最新汉化安装包下载

FLStudio中文21最新版本以其使用速度而闻名&#xff0c;是一个高度复杂的音乐制作环境。FL Studio免费&#xff0c;联合国音序器音频和MIDI每个复合编辑都是音乐。现代的DAW是一种非凡的野兽。首先&#xff0c;它在很大程度上把自己放在了(几乎)每个人记录过程的核心。其次&…...

AI:大语言模型训练方法 - 机器学习

Transformer Transformer是一种深度学习的模型架构&#xff0c;特别适用于自然语言处理任务。Transformer 模型的核心创新在于其 "自注意力"&#xff08;Self-Attention&#xff09;机制&#xff0c;这种机制使得模型可以有效地捕捉输入数据中的长距离依赖关系。 T…...

Linux(17):认识与分析登录档

什么是登录档 【详细而确实的分析以及备份系统的登录文件】是一个系统管理员应该要进行的任务之一。 登录档 就是记录系统活动信息的几个文件&#xff0c;例如&#xff1a;何时、何地(来源IP)、何人(什么服务名称)、做了什么动作(讯息登录啰)。 换句话说就是&#xff1a;记录系…...

STM32上模拟CH340芯片的功能 (一)

#虚拟串口模拟CH340# 代码gitee地址&#xff1a;STM32F103_CH340: 用STM32模拟ch340USB串口的功能 一、思路 1. 确定通信接口&#xff1a;CH340是一款USB转串口芯片&#xff0c;因此您需要选择STM32上的某个USB接口来实现USB通信。通常情况下&#xff0c;STM32系列芯片都有内…...

图论——最小生成树

图论——最小生成树 A wise man changes his mind, a fool never will 生成树 一个连通图的生成树是一个极小的连通子图&#xff0c;它包含图中全部的n个顶点&#xff0c;但只有构成一棵树的n-1条边。 最小生成树 在这些边中选择N-1条出来&#xff0c;连接所有的N个点。这N-1…...

C++基础 -42- STL库之list链表

———————STL库之list链表——————— &#x1f384; list链表的格式(需要定义头文件) list<int> data1(4, 100);list<int> data2(4, 500);&#x1f384;list链表的合并接口 &#x1f384;举例使用合并接口并且验证 data2.merge(data1);list<int>::…...

Backend - Python 序列化

目录 一、作用1&#xff1a;代码块存入数据库 二、作用2&#xff1a;前后端传递数据 &#xff08;一&#xff09;前端 1. JSON.stringify() 2. JSON.parse() &#xff08;二&#xff09;后端 1. json.dumps() &#xff08;1&#xff09;作用 &#xff08;2&#xff09…...

初级数据结构(一)——顺序表

文中代码源文件已上传&#xff1a;数据结构源码 <-上一篇 NULL | 初级数据结构&#xff08;二&#xff09;——链表 下一篇-> 1、顺序表的特点 1.1、数组 现实中数据记录一般都记录在表格中&#xff0c;如进货单、菜单等&#xff0c;它们的最大特点就是…...

实现:切换页面切换标题,扩展 vue-router 的类型

布局容器-页面标题 网址&#xff1a;https://router.vuejs.org/zh/guide/advanced/meta 给每一个路由添加 元信息 数据 router/index.ts const router createRouter({history: createWebHistory(import.meta.env.BASE_URL),routes: [{ path: /login, component: () > im…...

已通过考试和认证注册以及后续计划表

已通过考试和认证注册以及后续计划表 软考 - 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试信息系统集成及服务项目管理人员工程类考试计划你关注的证书样子 软考 - 计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试 高级 信息系统项目管理师&…...

开源计算机视觉库OpenCV详解

目录 1、概述 2、OpenCV详细介绍 2.1、OpenCV的起源 2.2、OpenCV开发语言 2.3、OpenCV的应用领域 3、OpenCV模块划分 4、OpenCV源码文件结构 4.1、根目录介绍 4.2、常用模块介绍 4.3、CUDA加速模块 5、OpenCV配置以及Visual Studio使用OpenCV 6、关于Lena图片 7、…...

使用pytorch查看中间层特征矩阵以及卷积核参数

这篇是我对哔哩哔哩up主 霹雳吧啦Wz 的视频的文字版学习笔记 感谢他对知识的分享 1和4是之前讲过的alexnet和resnet模型 2是分析中间层特征矩阵的脚本 3是查看卷积核参数的脚本 1设置预处理方法 和图像训练的时候用的预处理方法保持一致 2实例化模型 3载入之前的模型参数 4载入…...

HarmonyOS4.0从零开始的开发教程09页签切换

HarmonyOS&#xff08;七&#xff09;页签切换 List组件和Grid组件的使用 Tabs组件的使用 概述 在我们常用的应用中&#xff0c;经常会有视图内容切换的场景&#xff0c;来展示更加丰富的内容。比如下面这个页面&#xff0c;点击底部的页签的选项&#xff0c;可以实现“首页…...

大电流H桥电机驱动电路的设计与解析(包括自举电路的讲解,以IR2104+LR7843为例)

大电流H桥电机驱动电路的设计与解析&#xff08;包括自举电路的讲解&#xff0c;以IR2104LR7843为例&#xff09; 电机驱动板主要采用两种驱动芯片&#xff0c;一种是全桥驱动&#xff08;如&#xff1a;HIP4082&#xff09;&#xff0c;一种是半桥驱动&#xff08;如&#xff…...

windows11 windows 11 (win11 win 11) 怎么安装 Python3 ? numpy? sounddevice? 声音信号处理库?

首先确认要安装的 sounddevice 库&#xff0c;链接&#xff1a;https://python-sounddevice.readthedocs.io/en/0.4.6/ 根据文档&#xff0c;可知最新的 sounddevice 版本是 0.4.6 进入安装页面查看&#xff0c;发现 Newest sounddevice 可以使用 pip 安装&#xff0c;如下图…...

git如何配置多个远程仓库,并且进行切换

一、配置多个远程仓库并进行切换&#xff0c;请按照以下步骤进行操作&#xff1a; 打开命令行终端&#xff0c;并进入您的 Git 仓库所在的目录。添加第一个远程仓库&#xff0c;使用以下命令&#xff1a;git remote add origin <第一个远程仓库的 URL>这里将远程仓库命名…...

计算机存储单位 + 程序编译过程

C语言的编译过程 计算机存储单位 头文件包含的两种方式 使用 C/C 程序常用的IDE 常用的C语言编译器&#xff1a; 在选择编译器时&#xff0c;需考虑平台兼容性、性能优化、调试工具和开发人员的个人偏好等因素。 详细教程可转 爱编程的大丙...

vue路由导航守卫(全局守卫、路由独享守卫、组件内守卫)

目录 一、什么是Vue路由导航守卫&#xff1f; 二、全局守卫 1、beforeEach 下面是一个beforeEach的示例代码&#xff1a; 2、beforeResolve 下面是一个beforeResolve的示例代码&#xff1a; 3、afterEach 下面是一个afterEach的示例代码&#xff1a; 三、路由独享守卫…...

单片机双机通信控制跑马灯

实验要求 两个单片机各驱动8个LED灯&#xff0c;构成两个跑马灯&#xff0c;要求甲单片机LED的点亮方式是从上至下&#xff0c;首先是最上面第一个点亮、其次是前两个点亮、其次是前三个点亮……直至8个灯全部点亮&#xff0c;8个灯全部灭&#xff0c;重复这个过程&#xff0c…...

微信小程序:button微信开放能力打开客服会话分享到聊天框

文档 https://developers.weixin.qq.com/miniprogram/dev/component/button.html 打开客服会话 按钮关键属性 open-type"contact"功能按钮 <button class"mo-open-type"open-type"contact"> </button>分享 <button class&q…...

【数据结构】——队列实现二叉树的功能

前言&#xff1a;二叉树的实现方式多种多样&#xff0c;有数组实现满二叉树&#xff0c;有链表实现完全二叉树&#xff0c;今天我们就用队列来实现二叉树。 创建二叉树&#xff1a; typedef int BTDataType; typedef struct BinaryTreeNode {BTDataType data;struct BinaryTre…...

【已解决】Win7虚拟机安装VMtools报错

在做以前的实验的时候发现要用到Win7虚拟机&#xff0c;于是就安装了一个Win7的虚拟机&#xff0c;但是发现屏幕太小&#xff0c;而且来回复制文本、复制文件太不方便了&#xff0c;索性就安装了VMtools&#xff0c;发现还安装不成– 情况1 报错&#xff1a;本程序需要您将此…...

华为OD机试真题-小明找位置-2023年OD统一考试(C卷)

题目描述&#xff1a; 小朋友出操&#xff0c;按学号从小到大排成一列&#xff1b;小明来迟了&#xff0c;请你给小明出个主意&#xff0c;让他尽快找到他应该排的位置。 算法复杂度要求不高于nLog(n)&#xff1b;学号为整数类型&#xff0c;队列规模<10000&#xff1b; 输…...

2023.2版idea安装教程,现在jdk8已经过去式了,不同idea支持的jdk不同。升级jdk后idea也要随之升级

下载idea2023.2版本&#xff0c;下载之前需要删除之前的版本&#xff0c;一定要删除干净&#xff0c;删除程序要勾选那两个delete 下载路径&#xff1a;其他版本 - IntelliJ IDEA (jetbrains.com.cn) 选择2023.2版本 下载后进入安装程序&#xff0c;选择安装目录&#xff0c;然…...

CSS3技巧36:让内容垂直居中的三种方式

让内容垂直居中&#xff0c;是一个很重要的应用情景&#xff0c;在很多场合都会需要。这也是面试的时候&#xff0c;一些考官喜欢拿来初面的小题目。 这里&#xff0c;小结下让内容垂直居中的三种方式。 当然&#xff0c;读者如果有更好的方法&#xff0c;也可以提出来。 基本…...

空间运算设备-Apple Vision Pro

苹果以其在科技领域的创新而闻名&#xff0c;他们致力于推动技术的边界&#xff0c;这在他们的产品中表现得非常明显。他们尝试开发一项的新型突破性显示技术。在 2023 年 6 月 5 日官网宣布将发布 Apple Vision Pro 头戴空间设备&#xff0c;我们一起来了解一下 Apple Vision …...

cocos creator “TypeError: Cannot set property ‘string‘ of null

背景&#xff1a; 学习cocos creator时遇到"TypeError: Cannot set property string of null" 错误。具体代码如下&#xff1a;property({ type: Label })public stepsLabel: Label | null null;update(deltaTime: number) {this.stepsLabel.string Math.floor(…...

简谈MySQL的binlog模式

一、MySQL的binlog模式介绍 MySQL的binlog模式是一种日志模式&#xff0c;用于记录对MySQL数据库进行的更改操作。通过启用binlog模式&#xff0c;可以将数据库的更改操作记录到二进制日志文件中&#xff0c;以便在后续需要时进行恢复和复制。 要启用binlog模式&#xff0c;请…...

Linux 环境部署RabbitMQ

1.单机部署 我们在Centos7虚拟机中使用Docker来安装。 1.1.下载镜像 方式一&#xff1a;在线拉取 docker pull rabbitmq:3-management 方式二&#xff1a;从本地加载&#xff08;本文章带有mq安装包&#xff09; docker load -i mq.tar 1.2.安装MQ 执行下面的命令来运行…...

【1day】泛微e-office OA系统xml.php 文件 SORT_ID 参数 SQL 注入漏洞学习

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现...

智能无人零售:革新零售消费体验的未来

智能无人零售&#xff1a;革新零售消费体验的未来 在当今数字化时代&#xff0c;智能无人零售正以惊人的速度改变着我们的购物方式和消费体验。这一新兴领域的发展&#xff0c;为消费者带来了前所未有的便利和个性化选择。 智能无人零售是指利用先进的智能技术和自动化系统&…...

代币化对网约车区块链平台的影响

The effects of tokenization on ride-hailing blockchain platforms 再一次分析一下一篇关于区块链的文章&#xff0c;这篇文章比较新&#xff0c;2023年发表在POMS上。 由于这篇文章跟之前那几篇关注假货的文章的重点不一样&#xff0c;所以需要仔细读一下他的INTRODUCTION…...

YOLOv7 学习笔记

文章目录 前言一、YOLOv7贡献和改进二、YOLOv7核心概念三、YOLOv7架构改进总结 前言 在深度学习和计算机视觉领域&#xff0c;目标检测一直是一个极具挑战性和实用性的研究领域。特别是在实时目标检测方面&#xff0c;准确率和速度之间的平衡成为了关键考量因素。YOLO&#xf…...