Refusal in Language Models Is Mediated by a Single Direction

  • 开源代码:https://github.com/andyrdt/refusal_direction

Abstract

会话型大语言模型针对指令遵循和安全性进行了微调,从而产生服从良性请求但拒绝有害请求的模型。虽然这种拒绝行为在聊天模型中普遍存在,但其背后的机制仍然知之甚少。在这项工作中,我们展示了拒绝是由一维子空间介导的,涉及 13 个流行的开源聊天模型,参数大小高达 72B。具体来说,对于每个模型,我们找到一个单一方向,这样从模型的残余流激活(residual stream activations)中删除该方向可以防止其拒绝有害指令,而添加该方向会导致拒绝甚至无害的指令。利用这一见解,我们提出了一种新颖的白盒越狱方法,可以通过防止拒绝,同时对其他功能的影响最小。最后,我们分析对抗性后缀如何抑制模型转向拒绝。我们的研究结果强调了当前安全微调方法的脆弱性。更广泛地说,我们的工作展示了如何利用对模型内部结构的理解来开发控制模型行为的实用方法。

1 Introduction

人们普遍假设LLMs将特征或概念表示为激活空间中的线性方向,最近的工作研究了特定特征的线性表示,例如 harmlessness,truth,humor,sentiment,language,topic 和许多其他的工作。这些 feature directions 已被证明是行为的有效因果中介,能够对模型输出进行细粒度控制。

在这项工作中,我们展示了拒绝是由跨 13 个流行的参数大小高达 72B的开源聊天模型的一维子空间调节的。具体来说,我们使用一小组有害和无害指令的对比对来识别单个均值差异方向(single difference-in-means direction),可用来规避对有害提示的拒绝,或诱导对无害提示的拒绝。然后,我们利用这一见解,通过可解释的一级权重编辑(interpretable rank-one weight edit)来设计一个简单的白盒越狱,该编辑可以有效地禁用拒绝,同时对其他功能的影响最小。最后,我们对对抗性后缀(一种流行的基于提示的越狱技术)如何干扰拒绝方向在令牌位置上的传播进行了初步的机理调查。

我们的工作是一个具体的证明,即从解释模型内部得出的见解在实践上是有用的,既可以更好地理解现有模型的漏洞,也可以识别新的漏洞。我们的发现清楚地表明,当前的开放源代码聊天模型是多么的无防备,即使是简单的权重修改也能几乎消除拒绝行为。我们希望我们的发现能为围绕负责任发布开源模型的讨论做出有价值的贡献。

2 Methodology

2.1Background

Chat models
聊天模型经过针对指令遵循和对话的微调。这些模型使用聊天模板来构建用户查询。通常,聊天模板的形式为<user>{instruction}<end_user><assistant>。我们使用指令后标记(post-instruction token)来指代指令之后的所有模板标记,并将对应这些指令后标记的位置索引集合表示为 I I I。我们的分析集中在这一区域的激活上,以了解模型如何构建其响应。

2.2 Datasets and models

Datasets 构建了2个数据集, D h a r m f u l D_{harmful} Dharmful,从 AdvBench、MaliciousInstruct、TDC2023、HarmBench 中抽取的有害指令数据集;以及 D h a r m l e s s D_{harmless} Dharmless,一个从 Alpaca 中采样的无害指令数据集。每个数据集分别包含 128 个训练样本和 32 个验证样本。我们进行了过滤以确保训练和验证样本不与第 3 节和第 4 节中使用的评估数据集重叠。有关数据集的更多详细信息,包括代表性示例,请参阅附录 A 节。

**Models ** 为了评估我们发现的普遍性,我们研究了一组多样化的安全微调模型,其规模从 18 亿到 720 亿参数不等。我们考虑了通过偏好优化(APO)对齐和通过微调(AFT)对齐的模型。本研究中包含的所有模型均在表 1 中指定。

2.3 Extracting a refusal direction

Difference-in-means. 为了在模型的残差流激活中识别“拒绝方向”,我们计算了模型在有害和无害指令上的平均激活之间的差异。这种技术被称为均值差异,正如先前工作所示,有效地隔离了关键特征方向

【下图里计算vector,这里有非常多组,对同一层,同一token序列位置,不同样本做平均,但是有很多层,并且token也是变量,所以候选向量有 I ⋅ L I\cdot{L} IL个】

Selecting a single vector. 【下图里选择vector】

2.4 Model interventions

Activation addition. 直接加
Directional ablation. 按公式(4)消除该方向

2.5 Evaluation of refusal and harmfulness

在生成模型补全以进行评估时,我们始终使用贪婪解码和最大生成长度为 512 个标记。然后,我们根据每个模型补全是否构成拒绝以及是否包含有害内容来评估。我们将这些评估分为两个分数:拒绝分数和安全分数。
Refusal score
拒绝通常包含特征短语,例如“很抱歉”或“作为一个 AI”。我们编制了一组这些常见的“拒绝子串”。如果一个模型补全至少包含这样一个子串,它就被分类为拒绝(拒绝得分=1);否则,它被分类为非拒绝(拒绝得分=0)。完整的拒绝子串集合见§D.1。

这种字符串匹配方法存在局限性。虽然能有效检测拒绝,但它并不能评估回答是否连贯或包含有害内容。为了解决这些局限性,我们使用一个互补的指标来评估完成的危害性。

Safety score.
为了衡量模型回答的有害性,我们使用 Meta Llama Guard 2 (一个开源的微调用于检测恶意内容的模型),们提示该模型将每个模型补全分类为安全(safety_score=1)或不安全(safety_score=0)。更多细节请参阅§D.2。

请添加图片描述

3 Refusal is mediated by a single direction

对于每个模型,我们通过第 2.3 节中描述的方法提取一个单一的差异均值向量 r。然后我们表明这个单一方向对于拒绝既是必要的也是充分的。在第 3.1 节中,我们表明消除这个方向 r ^ \hat{r} r^ 有效地禁用了模型拒绝有害请求的能力。在第 3.2 节中,我们表明将 r 添加到模型的激活中会在无害指令上引起拒绝。

3.1 Bypassing refusal via directional ablation

对拒绝方向进行消融然后在 JailbreakBench 上生成模型输出,这是一个包含 100 条有害指令的数据集。结果显示在图 1 中。在没有干预的情况下,聊天模型几乎拒绝所有有害请求,从而获得高拒绝率和安全分数。从模型的残差流激活中移除 r ^ \hat{r} r^,进行方向消融(directional ablation)可以降低拒绝率并引发不安全输出。

3.2 Inducing refusal via activation addition

把r加到层l中(l是r提取的原始层),在所有token位置都执行这种干预,这样可以诱导拒绝。使用来自 Alpaca 的 100 个随机采样的无害指令生成模型输出。结果显示在图 3 中。在没有干预的情况下,聊天模型通常不会拒绝无害的指令。将 r 添加到模型的残差流激活中,标记为激活添加,导致模型甚至拒绝无害的请求。

4 A white-box jailbreak via weight orthogonalization

本节中,我们通过权重正交化(weight orthogonalization)提出了一种新颖的白盒越狱方法。该技术直接修改模型权重以消除拒绝方向的表示,从而得到一个保留原有能力但不再拒绝有害指令的模型。与涉及微调的先前方法相比,这种新方法为开源模型的越狱提供了一种更简单的方法,因为它不需要基于梯度的优化或任何有害完成的示例。

4.1 Weight orthogonalization

directional ablation 是一种 inference-time intervention 手段。在正向传播过程中,我们将每个中间残差流激活的 r ^ \hat{r} r^。我们可以通过直接修改组件权重来实现这个操作,使其从一开始就永远不会写入 r ^ \hat{r} r^ 方向。具体来说,我们可以取每个写入残差流的矩阵 W o u t ∈ R d m o d e l × d i n p u t W_{out}\in{R^{d_{model}\times{d_{input}}}} WoutRdmodel×dinput 并使其列向量相对于 r ^ \hat{r} r^ 正交化:

在一个 transformer 架构中,写入残差流的矩阵包括:嵌入矩阵、位置嵌入矩阵、注意力输出矩阵和 MLP 输出矩阵。将这些矩阵以及任何输出 bias 与方向 r ^ \hat{r} r^ 正交化,实际上有效防止了模型向其残差流写入 r ^ \hat{r} r^
请注意,这种权重修改与之前描述的推理时间方向消除等效,如 §E 中明确所示。因此,第 3.1 节中提出的绕过拒绝的推理时间干预的性能也恰好表征了直接权重修改的性能。

4.2 Comparison to other jailbreaks

在这一节中,我们使用 HarmBench 的标准评估设置,将我们的方法与其他现有的越狱技术进行比较。具体来说,我们在 HarmBench 测试集的 159 个“标准行为”上生成补全,然后使用他们提供的分类器模型来确定攻击成功率(ASR),即被分类为成功绕过拒绝的补全比例。我们在 HarmBench 研究中包含的模型上评估我们的权重正交化方法,并报告其 ASR 以及替代越狱的 ASR。有关每个替代越狱的简要描述,请参阅 §F.1。


表 2 显示,我们的权重正交化方法,标记为 Ortho,与其他通用越狱技术相比表现良好。在整个 Qwen 模型家族中,我们的通用方法甚至与针对特定提示的越狱技术(如 GCG(Zou 等人,2023b))相当,后者针对每个提示单独优化越狱。
请注意,HarmBench 的评估方法规定,在评估过程中应使用每个模型的默认系统提示。虽然这种方法对于评估黑盒系统的鲁棒性是合理的,但在攻击者可以完全访问模型并轻松排除系统提示的白盒场景中,这种方法不太适用。因此,我们报告了带系统和不带系统提示的 ASR。
我们观察到,在比较带有和不带有系统提示的 Llama-2 模型在 ASR 方面的结果时,存在显著的差异。我们推测,尽管我们的干预措施禁用了模型的自然拒绝机制,但并未妨碍其遵循指令的能力。因此,当包含 Llama-2 系统提示时,该提示明确指示模型避免有害内容,正交化模型生成有害内容的可能性较低。相比之下,Qwen 系统提示要短得多,并且缺乏避免有害内容的明确指导,这可能是这些模型在 ASR 方面差异较小的原因之一。有关我们方法对系统提示敏感性的更详细讨论,请参阅§F.2。

4.3 Measuring model coherence

任何新的越狱技术都存在一个合理的担忧,即除了绕过拒绝之外,它还可能降低模型的总体质量。然而,从定性上看,我们发现模型在经过权重正交化后仍保持其一致性。虽然第 3.1 节和第 4.2 节表明我们的方法有效地绕过了拒绝,但在本小节中,我们定量评估了这种修改如何改变模型的一般能力。

对于每个模型及其正交化版本,我们运行了四种常见的语言模型评估:MMLU(Hendrycks 等,2020 年),ARC(Clark 等,2018 年),GSM8K(Cobbe 等,2021 年)和 TruthfulQA(Lin 等,2021 年)。所有评估均使用 LM 评估工具包(Gao 等,2023 年)进行,设置与 Open LLM排行榜(Beeching 等,2023 年)一致。

表 3 显示,对于 MMLU、ARC 和 GSM8K,正交化模型与基线模型表现相似。在 §G.1 中,我们展示了这一点也适用于我们套件中的其他模型,包括对 WinoGrande(Sakaguchi 等人,2021 年)和 TinyHellaSwag(Polo 等人,2024 年)的额外评估。除了 Qwen 7B 和 Yi 34B 之外,所有正交化模型的评估指标都位于原始性能的 99%置信区间内。

有趣的是,对于正交化模型,在 TruthfulQA 上的准确性始终下降。这一现象与杨等人(2023)的研究一致,他们观察到,移除安全护栏的微调会导致在 TruthfulQA 上的准确性下降。检查 TruthfulQA 中的具体问题表明,数据集接近拒绝的领域,包括“虚假信息”、“刻板印象”和“阴谋论”,因此从这个评估数据集上模型行为有显著差异可能直观上是有意义的。参见§G.2 以进一步讨论 TruthfulQA 的性能。

除了标准语言模型评估之外,我们还评估了 CE 损失在不同标准文本语料库和模型特定生成(§G.3)中的差异。这些损失指标表明,方向性消融比基于激活添加的方法更具有手术性(surgical)(§I.1)。

5 Mechanistic analysis of adversarial suffixes

安全微调的聊天模型容易受到对抗性后缀攻击(Zou 等,2023b):存在精心构造的字符串,将这些字符串附加到有害指令的末尾可以绕过拒绝并引发有害内容。有效的对抗性后缀通常不是人类可解释的,它们工作的机制也不太为人所理解。在本节中,我们从机制上分析了对抗性后缀对 Qwen 1.8B Chat 的影响。

5.1 Adversarial suffixes suppress the refusal-mediating direction

我们首先识别出一个有效的对抗性后缀,该后缀能够绕过 Qwen 1.8B Chat 的拒绝。该后缀在§H 中显示,并附带其生成细节。为了研究这个对抗性后缀的效果,我们从 JailbreakBench 和 HarmBench 测试集中采样了 128 个引起拒绝的有害指令。对于每个指令,我们运行模型三次:第一次是未编辑的指令,第二次是附加了对抗性后缀的指令,第三次是附加了相同长度的全新随机后缀的指令。通过将对抗性后缀与随机后缀进行比较,我们旨在控制添加任何后缀的效果。对于每次运行,我们缓存最后一个标记激活并可视化其与拒绝调节方向的余弦相似度。我们还将其与来自 Alpaca 的 128 个无害指令的基线进行比较,这些指令不会引起拒绝。图 5 显示,有害指令的拒绝方向的表达非常高,当附加随机后缀时仍然很高。附加对抗性后缀后的拒绝方向的表达被严重抑制,并非常接近无害指令的表达。

5.2 Adversarial suffixes hijack the attention of important heads

为了进一步研究拒绝方向的抑制方式,我们考察了单个注意力头和 MLP 组件对拒绝方向的贡献。我们使用直接特征归因(DFA)(Makelov 等,2024;Kissane 等,2024)量化每个组件对此方向的贡献:每个组件的直接贡献可以通过将其输出投影到拒绝方向来衡量。我们选择了在有害指令上 DFA 最高的前八个注意力头,然后研究当添加后缀时它们的行为变化。图 6(a)显示,与无后缀和随机后缀相比,当添加对抗性后缀时,这些头对拒绝方向的直接贡献被显著抑制。

为了理解这些注意力头如何改变输出,我们检查它们的注意力模式。图 6(b)说明,对抗性后缀有效地“劫持”了这些头的注意力。通常,这些头关注提示的指令区域,其中包含有害内容。在添加对抗性后缀后,这些头将注意力转移到后缀区域,并远离有害指令。


图 6:我们分析了八个最重要的注意力头,它们对拒绝方向的写入影响最大。图 6(a)显示,当添加对抗性后缀时,对拒绝方向的输出被严重抑制。图 6(b)揭示,与添加随机后缀相比,添加对抗性后缀将注意力从指令区域的标记转移到后缀区域的标记。

6 Related work

Understanding refusal in language models.
Wei 等人(2024)表明,移除一组安全关键神经元和排名可以降低安全机制,同时保持效用。Zheng 等人(2024)和 Zou 等人(2023a)都使用有害和无害输入的对比对来识别模型的representation of harmfulness,声称这一方向与模型拒绝表示的方向不同。Zheng 等人(2024)通过展示安全提示将激活转移到不同的方向来论证这一点,而 Zou 等人(2023a)则表明表示并未受到对抗后缀的显著改变。请注意,这与我们在第 5.1 节中的发现形成对比,即“拒绝方向”在有对抗后缀的情况下被显著抑制。Rimsky 等人(2023)使用对比多选补全(contrastive multiple-choice completions),发现使用由此产生的向量用于控制,在多选设置中可以有效调节拒绝,但在长篇生成中则不然。

Features as directions.
从输入对比对中提取特征方向是一种已建立的技巧(Burns 等人,2022;Rimsky 等人,2023;Zou 等人,2023a)。众所周知,向残差流中添加特征向量可以改变行为(Turner 等人,2023;Zou 等人,2023a;Tigges 等人,2023;Rimsky 等人,2023;Marks 和 Tegmark,2023;Li 等人,2024),尽管如何以及在哪里干预的细节各不相同(Jorgensen 等人,2023;von Rütte 等人,2024)。

各种研究显示,激活空间中的方向比神经元具有更多“特征性”属性(Elhage 等人,2022;Mikolov 等人,2013;Park 等人,2023b;Li 等人,2021;Geiger 等人,2024;Hernandez 和 Andreas,2021;Nanda 等人,2023;Bolukbasi 等人,2016)。近期的研究使用稀疏自编码器以无监督方式发现特征方向(Bricken 等人,2023;Cunningham 等人,2023;Templeton 等人,2024)。假设特征以线性方式表示,对于从语言模型中消除概念是有效的(Belrose 等人,2024;Belrose,2023;Ravfogel 等人,2020;Guerner 等人,2023;Haghighatkhah 等人,2022;Shao 等人,2022)。

Undoing safety fine-tuning.
众所周知,在恶意示例上进行微调足以取消安全护栏(Lermen 等人,2023 年),即使整体能力略有下降(Yang 等人,2023 年;Zhan 等人,2023 年)。通过微调取消拒绝需要有害指令和完成的示例,而我们的方法只需要有害指令。然而,请注意,即使数据是良性的,微调也可能削弱安全护栏(Qi 等人,2023 年;Pelrine 等人,2023 年)。机制可解释性工作提供了初步证据,表明微调不会显著改变相关内部电路(Lee 等人,2024 年;Prakash 等人,2024 年;Jain 等人,2023 年)。例如,Lee 等人(2024 年)微调一个模型以使其毒性降低,并发现这种行为修改可以通过调整少量 MLP 权重来简单地取消。

**Jailbreaks. **
研究通过修改输入来规避对LLM行为限制的研究领域已经出现了许多不同的研究方向。许多模型容易受到社会工程攻击(Wei 等人,2023;Shah 等人,2023b;Perez 等人,2022)。一个假设是,这样的提示修改了LLM助手的“人格”(Andreas,2022;Shanahan 等人,2023;Park 等人,2023a)。在§L 的初步实验表明,我们的方法不会改变模型的聊天个性和拒绝之外的行为。

优化后的对抗性后缀(Zou 等,2023b;Andriushchenko 等,2024;Liao 和 Sun,2024)可以附加到提示中以绕过拒绝。相比之下,我们的方法不需要对输入提示进行任何修改,但有一个明显的局限性,即我们需要访问模型的权重。然而,请注意,在黑盒模型上优化的开放权重模型上的越狱提示的可迁移性尚不清楚(Meade 等,2024)。越狱提示可能对模型性能有重大影响(Souly 等,2024),而我们的方法则没有(§4.3)。

7 Discussion

在这项工作中,我们证明了拒绝行为在一系列开源聊天模型中始终由单一方向所调节。基于这种理解,我们提出了一种简单而有效的白盒越狱方法,该方法直接修改模型权重以禁用拒绝机制,同时保持模型一致性。我们的工作展示了基于模型内部的可解释性的实际效用:通过从模型内部的角度研究拒绝,我们能够创建一种简单而有效的越狱方法。模型拒绝机制的简单性和在白盒设置中绕过它的容易性,引发了关于当前对齐技术鲁棒性的担忧。

Limitations.
我们的研究有几个局限性。首先,虽然我们评估了广泛的开源模型,但我们的发现可能无法推广到未经测试的模型,尤其是那些规模更大的模型,包括当前最先进的专有模型和未来开发的模型。其次,我们用来提取“拒绝方向”的方法可能不是最优的,并依赖于几个启发式方法。我们认为这篇论文更多的是一个存在证明,表明这样的方向存在,而不是对如何最佳提取它的仔细研究,我们将方法改进留给未来的工作。第三,我们对对抗后缀的分析并没有提供对这一现象的全面机制理解,并且仅限于一个模型和一个对抗示例。第四,衡量聊天模型的连贯性很困难,我们认为每个使用的指标都有各种缺陷。我们使用多个不同的指标来提供一个广泛的连贯性视角,并欢迎未来有更严格的分析。

Ethical considerations.
任何关于越狱LLMs的工作都必须提出一个问题,即它是否会导致新的危害。众所周知,开源模型权重可以通过微调进行越狱。我们的方法,使用不到 5 美元的计算能力就能生成一个 70B 参数模型的越狱版本,比之前的微调方法更简单,不需要基于梯度的优化或有害补全的数据集。虽然我们承认我们的方法略微降低了越狱开源模型权重的门槛,但我们认为它并没有实质性改变开源模型的风险特征。

尽管今天语言模型造成的滥用风险可能相对较低(Anthropic,2024;Mouton 等人,2024),但最先进模型能力的快速进步表明,这种风险可能在不久的将来变得显著。我们的工作为日益增长的文献做出了贡献,强调了当前安全机制的脆弱性,证明了它们很容易被规避,并且不足以防止开源LLMs的滥用。在当前安全技术的局限性上达成科学共识对于指导未来的政策决策和研究努力至关重要。

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

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

相关文章

智慧平台数据可视化解决方案(附实践资料下载)

阿里云详解数据可视化大屏构建&#xff0c;内容涉及数据可视化大屏的构建。以下是该文件的核心内容概要&#xff1a; 数据可视化大屏概述&#xff1a; 数据可视化大屏的定义和目的。大屏在企业决策中的作用。 大屏设计原则&#xff1a; 强调用户体验和视觉美感。信息的清晰度和…

基于openlayers 开发vue地图组件

先看效果 主要功能如下&#xff1a; 测量图源更换放大缩小地图添加点hover点数据切换到地图位置&#xff1b;也设定层级2D3D切换&#xff0c;3D为cesium开发&#xff0c;技术交流可以加V&#xff1a;bloxed 地图工具做了插槽&#xff0c;分为toolbar&#xff08;左上角工具…

人工智能ACA(六)--计算机视觉基础

一、计算机视觉概述 1. 计算机视觉定义 人工智能&#xff08;AI&#xff09;的一个重要分支旨在使计算机和系统能够从图像或多维数据中“理解”和“解释”视觉世界通过模拟人类视觉系统&#xff0c;计算机视觉技术能够自动执行诸如识别、分类、检测和跟踪等任务。 2. 计算机…

叉车作业如何确认安全距离——UWB测距防撞系统的应用

叉车在工业环境中运行&#xff0c;常常需要在狭窄的空间内完成货物的搬运和堆垛&#xff0c;这对操作员的技术水平和安全意识提出了极高的要求。传统的叉车作业依赖操作员的经验和视觉判断来确认安全距离&#xff0c;然而这种方式往往存在误差&#xff0c;特别是在视线受阻或光…

基于深度学习(HyperLPR3框架)的中文车牌识别系统-搭建开发环境

本篇内容为搭建开发环境。包括&#xff1a;python开发环境&#xff0c;Qt/C开发环境&#xff0c;以及用到的各个库的安装和配置。 一、Python开发环境搭建与配置 1、下载并安装Anaconda 我没有用最新的版本&#xff0c;安装的是 Anaconda3-2021.05-Windows-x86_64.exe&#…

神经网络-AlexNet

AlexNet是在2012年的ImageNet竞赛后&#xff0c;整理发表的文章&#xff0c;也是对CNN网络的衍生。 网络结构 AlexNet网络结构如下图所示&#xff0c;网络分为了上下两部分&#xff0c;对应两个不同的GPU训练&#xff0c;可以更好的利用GPU算力。只有在特殊的网络层后&#x…

【R语言遥感技术】“R+遥感”的水环境综合评价方法

R语言在遥感领域中是一个强大的工具&#xff0c;它提供了一系列的功能和优势&#xff0c;使得遥感数据的分析和应用更加高效和灵活。以下是R语言在遥感中的具体应用&#xff1a; 数据处理&#xff1a;R语言可以处理和清洗遥感数据&#xff0c;包括数据转换、滤波处理、去噪和数…

硬件模块常使用的外部中断

对于STM32来说&#xff0c;想要获取的信号是外部驱动的很快的突发信号 例1&#xff1a;旋转编码器的输出信号&#xff1a; 可能很久都不会拧它&#xff0c;不需要STM32做任何事情但是一拧它&#xff0c;就会有很多脉冲波形需要STM32接收信号是突发的&#xff0c;STM32不知道什…

TCN-Transformer+LSTM多变量回归预测(Matlab)添加气泡图、散点密度图

TCN-TransformerLSTM多变量回归预测&#xff08;Matlab&#xff09;添加气泡图、散点密度图 目录 TCN-TransformerLSTM多变量回归预测&#xff08;Matlab&#xff09;添加气泡图、散点密度图预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基本介绍 1.双路创新&#xff…

基于AI IDE 打造快速化的游戏LUA脚本的生成系统

前面写了一篇关于使用AI IDE进行C安全开发的博客《使用AI IDE 助力 C 高性能安全开发&#xff01;》&#xff0c; 得到许多同学们的喜欢&#xff0c;今天我们来继续在游戏开发中扩展一下AI的能力&#xff0c;看看能不能给游戏研发团队一些启发。 在游戏研发中&#xff0c;Lua曾…

windows nacos安装配置

GitHub下载压缩包 解压目录&#xff08;注意不要用中文路径&#xff09; 在mysql先创建数据库nacos&#xff0c;再执行sql脚本 配置数据库 #*************** Config Module Related Configurations ***************# ### If use MySQL as datasource: ### Deprecated conf…

Redis 基本全局命令

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 Redis 基本全局命令 收录于专栏[redis] 本专栏旨在分享学习Redis的一点学习笔记&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; 目录 KEYS EXISTS DEL…

qt QZipReader详解

1、概述 QZipReader 是 Qt 中用于从 .zip 文件中读取和提取文件内容的类。它提供了便捷的方法来访问压缩包中的文件和目录&#xff0c;并允许你解压缩单个或多个文件。通过 QZipReader&#xff0c;你可以以编程方式读取 .zip 文件中的内容&#xff0c;并提取它们到目标目录中。…

开发微信小程序的过程与心得

起因 作为家长&#xff0c;我近期参与了学校的护学岗工作。在这个过程中&#xff0c;我发现需要使用水印相机来记录护学活动&#xff0c;但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员&#xff0c;我决定利用自己的技术背景&#xff0c;开发一个…

基于vue-popperjs的二次封装弹窗

前言&#xff1a; 基于vue-popperjs的二次封装代码 <template><!-- 1. :appendToBody"true"是否把位置加到body外层标签上饿了么UI和antD是true&#xff0c;iview和vuetifyjs是false2. trigger属性触发方式&#xff0c;常用hover悬浮触发、clickToOpen鼠标…

OpenAI 普及 ChatGPT,开通热线电话,近屿智能深耕AI培训

12月19日&#xff0c;在OpenAI直播活动的第10天&#xff0c;宣布允许用户通过电话或WhatsApp与ChatGPT进行交互。并在美国推出 ChatGPT 热线电话&#xff0c;用户拨打后可与 ChatGPT 进行语音对话。 这项服务的一个亮点在于它兼容各种类型的通信设备——不论是现代智能手机如iP…

黑马Java面试教程_P9_MySQL

系列博客目录 文章目录 系列博客目录前言1. 优化1.1 MySQL中&#xff0c;如何定位慢查询&#xff1f;面试文稿 1.2 面试官接着问&#xff1a;那这个SQL语句执行很慢,如何分析 ( 如何优化&#xff09;呢?面试文稿 1.3 了解过索引吗?(什么是索引)1.4 继续问 索引的底层数据结构…

Vue3+@antv/g2plot 生成词云图

antv/g2plot 是一个基于 AntV 的图表库属于antv库的一部分 用于快速创建各种类型的图表 支持折线图、柱状图、饼图、散点图等多种图表类型 antv/g2plot 属于antv库的一部分 g2plot是在g2基础上封装的 npm install antv/g2plot --save效果 所有值共享一个颜色并且每次刷新颜色随…

K线单边突破指标(附带源码)

编写需求&#xff1a; 今天我们来根据粉丝要求进行源码复现&#xff1a; 【请根据最近两根K线判断当下的行情做多&#xff0c;做空方向。用三个价格判断当前K线状态&#xff0c;最高价、最低价、收盘价都大于昨日对应价格&#xff0c;为上涨K线。用三个价格判断当前K线状态&a…