Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)

news/2024/5/14 1:31:18/文章来源:https://blog.csdn.net/sinat_39620217/article/details/136562566

Prompt进阶系列1:LangGPT(从编程语言反思LLM的结构化可复用提示设计框架)

大语言模型 (Large Language Models, LLMs) 在不同领域都表现出了优异的性能。然而,对于非AI专家来说,制定高质量的提示来引导 LLMs 是目前AI应用领域的一项重要挑战。现有的提示工程研究已经提出了一些零散的优化原则,也有些研究设计了基于经验的提示优化器。然而,这些研究缺乏结构化的设计模板,学习成本高,可复用性低。受到编程语言的结构化和可复用性的启发,提出了双层提示设计框架 LangGPT,作为面向 LLM 的编程语言。LangGPT 具有易于学习的规范结构,并为迁移和复用提供了扩展结构。实验表明,与 baseline 相比,LangGPT 极大地增强了 LLM 生成高质量回复的能力。此外,也证明了 LangGPT 框架能有效地指导 LLM 自动化地生成高质量提示。

1. 提示优化介绍

以 ChatGPT 为代表的大型语言模型(Large Language Models, LLMs)[Achiam 等人,2023;Schulman 等人,2023] 可以基于强大的语言理解能力、推理能力和生成能力执行各种各样的任务[Sun 等人,2023b;Sun 等人,2023c;Yu 等人,2023]。此外,注入领域知识还能让 LLM 执行与领域相关的特定任务 [Wang 等人,2023a;Li 等人,2023b;Zhang 等人,2023;Ren 等人,2023]。要充分发挥 LLM 的这些能力,就需要构造高质量的提示[Eric,2022;Chen 等人,2023;Gajula,2023]。因此,提示工程 (Prompt Engineering) 吸引了许多研究人员的关注[Varshney 和 Surla,2023;Mesk´o,2023;Wang,2023]。

  • 提示工程是典型的经验科学,主要涉及提示设计和提示优化。由于 LLM 具备自然语言理解能力,可以通过非结构化的自然语言指令直接要求 LLM 执行任务。在此基础上,研究人员首先探索并总结出了一些优化提示的技巧。[Bsharat等人,2023年]介绍了26条指导原则,旨在让 LLMs 表现得更好。除了这些直接作用于提示的优化技巧外,一些研究人员还基于历史数据的提出了提示优化方法。[Sun 等人,2023a] 引导 LLM 从不正确的推理中得出特定实例的新提示,然后总结每个实例的对应提示,作为优化原始提示的参考。[Pryzant等人,2023年]定义了自然语言"梯度",利用小批量数据求解该"梯度"并利用波束搜索和 Bandit 选择程序,按照梯度的相反语义方向编辑当前提示。[Fan 等人,2023 年]对一个大型提示数据库进行分析,并提出了一个自动提示优化框架。

  • 基于历史数据的直接提示优化原则和方法需要丰富的经验。因此,这些方法通常只在特定任务或领域中表现良好。为了提高通用性,一些研究人员提出了自适应提示优化方法。[Guo 等人,2023 年] 将 LLM 与进化算法联系起来,提出了一种新的离散提示优化框架,称为 EvoPrompt。[Li等人,2023a]设计了一种多轮对话对齐策略,并利用GPT-4[Achiam等人,2023]生成易读的提示集。同时,他们还提出了一种高效的提示筛选指标,能以线性复杂度筛选出高质量的提示。[Wang等人,2023b]引入了PromptAgent,它可以反思模型错误并产生建设性的错误反馈,以诱导精确的专家级见解和深入的指导。[Hao等人,2022] 和 [Cheng等人,2023] 还从协调人类和 LLM 偏好风格的角度优化了提示。

  • 提示优化可以大大提高 LLM 的性能,但由于缺乏系统性设计,高质量提示的可复用性很差。因此,一些研究人员设计了构建提示的规则。[Nigh, 2023]收集了大量高质量提示,并总结了用于提示设计的 CRISPE 规则。[ZamfirescuPereira等人,2023年]以基于LLM的聊天机器人设计工具原型为设计探针,支持非人工智能专家参与"终端用户提示工程"。此外,一些研究人员为不同领域的应用设计了提示构建规则。[Cao 等人,2023 年]为 ChatGPT 提出了各种利用深度学习执行程序修复任务的提示模板。[Yeh等人,2022年]将生物医学关系提取任务重新表述为简单提示表述下的 cloze 测试任务,从而系统地生成全面的提示语。[Liu和Chilton,2022年]在文生图任务的五个实验中评估了涵盖51个主题和51种风格的5493个生成提示,并总结了提示设计指南。

  • 这些方法以AI专家大量的使用经验为基础,主要依赖列出的设计规则,缺乏系统性。此外,这些规则具有较强的领域相关性和模型相关性,但通用性、灵活性和可复用性较低。为了进一步释放 LLM 的性能,一些研究人员定义了 Agent。Agent 赋予 LLMs 使用工具、获取领域知识、保留长期或短期记忆以及制定计划的能力[Xu 等人,2023;Xi 等人,2023;Park 等人,2023]。虽然Agent [Chase,2022;Hong 等人,2023;Wu 等人,2023]系统地设计了提示的关键组件并预留了灵活的自定义接口,但学习成本非常高。此外,非 AI 专家很难修改 Agent 设计,可复用性较差。

为了推广基于 LLM 的应用,进一步激发 LLM 的潜力,希望设计一个高质量、可复用的提示模板。该模板应具有通用性和可扩展性。此外,该模板还应该易学易用。受 prompt 是 LLM 时代的编程语言这一观点的启发 [Alouani, 2023; Mund, 2023],设计了一种面向 LLM 的编程语言,即一种 prompt 设计框架 Language for GPT-like LLMs (LangGPT)。LangGPT 具有编程语言的系统性、规范性和可复用性的特点,并保留了自然语言的灵活性和可扩展性。首先分析了自然语言和编程语言之间的差异,以确定提示模板应具备的属性。LangGPT 设计为双层结构,由模块和内部元素组成。LangGPT 中的模块可分为两类:内置模块和扩展模块。对于内置模块,详细设计了每个模块的必要内部元素,并给出了示例模板。此外,对于扩展模块,统一了基本内部元素的设计。实验证明,在引导 LLM 方面,LangGPT 比基线提示更好。此外,LLM 可以利用这一框架自动生成提示,就像生成代码一样。

这项工作的主要贡献为:

  • 提出了双层结构的提示设计框架 LangGPT,以提高提示的通用性和可复用性。还在 LangGPT 的基础上编写了详细的提示设计规则,从而降低了提示设计的学习成本,使 LLM 能够自动生成高质量的提示语。此外,提供了基于 LangGPT 的常见场景的通用提示模板,进一步简化了提示设计成本。
  • 通过实验证明,基于 LangGPT 设计的提示可以更好地引导 LLM 执行任务。同时,举例说明了 LangGPT 可以帮助 LLM 生成高质量的提示。
  • 建立了一个基于 LangGPT 的在线社区,提供使用文档和提示设计界面。此外,收集和分享优秀的提示案例也促进了 LLM 应用的交流。在社区中进行了用户体验调查,验证了 LangGPT 的易用性和可复用性。

2. 参考编程语言构造提示设计规则

与自然语言相比,编程语言更具标准化和可复用性。为了设计高质量的可复用的提示,分析了自然语言和编程语言之间的差异,并提出了提示设计原则。

2.1 自然语言与编程语言的区别

自然语言主要用于交流,而编程语言则是为机器执行任务定义的指令[GeeksforGeeks, 2023]。不同的应用目的导致这两种语言的创造和演变背景截然不同。

  1. 目标受众:自然语言是由人类对人类说的[Grune等人,2012],而编程语言是由人类为机器准备的[Chakray,2018]。
  2. 结构:计算机只能理解固定的指令,这要求编程语言具有严格、严谨的语法和语义。相反,自然语言具有宽松而灵活的语法和语义,允许创造和变化,并具有高度的容错性。
  3. 模糊性:自然语言更加模棱两可,但人类有能力明确自然语言表达的意思。例如,顺序混乱和打字错误等问题对阅读的影响较小,发音错误也可以理解[Chakray,2018;Aho,2007]。编程语言比较准确,因为它们需要为计算机提供明确的指令[GeeksforGeek,2023]。
  4. 演变与更新:自然语言通过人类的使用和交流,随着时间的推移自然演变[Sipser,1996]。自然语言在增加新词与新的意义,以及摒弃过时用法方面是比较灵活的[Fromkin等人,2018年]。相反地,编程语言是专门为与机器通信而设计的[Sebesta,2012],新的语法规则和功能需要明确的升级或正式发布[Pratt等人,1984]。

总而言之,这两种语言的主要区别在于,自然语言更模糊、更灵活,而编程语言更规范、更精确。LLM本质上执行大量计算,与机器有许多相似之处。因此,借鉴了编程语言的特点,结合自然语言的优势,提出了一种面向 LLM 的自然语言编程框架–LangGPT。

2.2 提示设计规则

参考编程语言的设计思想来优化提示。在分析了编程语言和自然语言的区别之后,提出了提示的设计原则:

  • (1)提示应具有规范化的格式。灵活和模糊的自然语言对于LLM来说是很难理解的。格式规范的提示使用户的目的和要求更加突出。
  • (2)提示的结构应该是可扩展的。自定义结构便于用户根据自己的领域和任务设计合适的提示。
  • (3)具体要求必须明确、完整。指令和附加要求都应明确和完整,以避免误解或偏见。
  • (4)语言要灵活。在需求明确的情况下,灵活的语言可以更好地适应不同的领域。此外,灵活的语言也便于用户学习。

3 面向大语言模型的自然语言编程框架

基于这些设计规则,提出了一种面向 LLM 的双层自然语言编程框架–LangGPT。

3.1 整体双层结构

为了系统地设计符合规则的提示,充分参考了面向对象编程语言的设计思想和结构[Rentsch,1982;Lutz,2010]。将提示视为一个软件项目,并将提示设计过程类比为软件开发过程。对应关系如图1所示。

图 1:编程语言和自然语言提示之间的类比。依据层次结构分析了两种语言之间的相似性。不同大小的圆圈表示不同的层。较小的圆圈表示更靠近内层,对应于较深的颜色。

通过类比分析可以发现,自然语言提示与编程语言具有相似的多层次结构。因此,参考编程语言的结构,提出了提示设计的双层结构,并定义了提示的模块和元素的概念。

一个完整的提示包含几个模块。模块类似于编程语言中的类,每个模块代表要求LLM的一个方面。例如,可以在Constraint、Goal、Profile等方面增加提示。在一个模块中,包括许多内部元素。元素类似于编程语言中的函数和属性,表示对LLM的直接和特定指令的内容。例如“输出不应超过500字”可以是提示中属于Constraint模块的元素。

双层结构可以很好地标准化提示的格式。然而,如果过于严格地要求提示遵循预定义的内置模块和基本元素,无法利用自然语言的灵活性的优势。此外,还会降低LangGPT对不同领域不同任务的通用性,不利于高质量提示的复用。为了解决这些问题,将模块和元素的类型进行了划分。首先定义了内置模块和基本元素作为预定义的双层提示模板。此外,还构建了支持自定义的扩展模块和自定义元素。为内置模块和扩展模块提供Markdown[Gruber,2012]和JSON[Pezoa等人,2016]格式。此外,为不同的模块编写了基本元素,并定义了编写自定义元素的规则。

3.2 内置模块的构造

该模块作为完整提示和指令单元之间的连接部分,对于控制提示的结构有非常重要的作用。

为几乎所有提示所需的关键方面定义了内置模块。此外,还针对与应用程序相关的某些场景定义了内置模块,以便于学习和使用。表1展示了为某些场景定义的内置模块。

  • Prof. (Profile)指出了用户对LLM在角色方面的要求,包括个人简介、人物肖像等。
  • Cons. (Constraint)表示约束或突出,即不允许LLM超出的范围以及生成回复时必须满足的要求等。
  • Goal列出了用户想要实现的目标,这就是LLM需要完成的目标。Init. (Initialization)即初始化,以告知LLM即将开始对话。有时,该模块中还会给出指定的第一句话。
  • Ex. (Example)给出了输入-输出对作为供LLM学习的例子。
  • Wkflo. (Workflow)指示了执行任务时的工作流程,类似于 CoT 方法 [Wei 等人., 2023]。当任务需求比较复杂时,往往需要实例化这个模块。
  • Skill用于向LLM表明他们拥有的技能。经过工具学习的LLM,可以指导他们调用工具,更准确地执行任务。另外,计划在未来的工作中提供使用该模块下工具的能力,参考代理工具的设计[Chase, 2022;洪等人,2023]。
  • Sug. (Suggestion)包括对LLM的建议和行为规划。该模块重点列出常见场景,并告诉LLM在此类情况下可以采取的行为或应对措施。
  • Bkgrd. (Background)表示LLM在执行任务时需要具备的背景信息和记忆。
  • Style限定了LLM生成回复的风格。
  • Outf. (Output Format)定义了LLM的输出格式。指定输出格式可以提高某些任务中结果提取的效率和准确性。

表 1:内置模块定义的状态。该表列出了目前定义的8类应用场景以及为这些场景定义的模块。 ✓表示已经针对该场景设计了相应的模块。相反, ✗ 表示没有设计。

3.3 内部基本元素

  • 提示通常包含三个目的:
    1. 向LLM传递某种信息;
    2. 让LLM执行某个有输出或无输出的任务;
    3. 前两者的结合。

第一个与编程语言中属性或变量的定义非常相似。相应地,后两类类似于编程语言中的函数。因此,构建了这三种类型的基本元素。使用“⟨PROPERTY⟩ 是⟨VALUE⟩”语句来模拟赋值操作。对于后两种情况,需要指定输入信息、任务和输出,其中输入和输出可以省略。使用“对于给定的⟨VALUE⟩的⟨PROPERTY⟩,请执行以下操作:⟨ACTIONS⟩;返回⟨RESULT⟩。”的形式来模拟函数。在提供的基本元素模式中,尖括号中包含的内容需要根据模块和使用场景来填充。需要注意的是,提供的模式仅指定了编辑内部元素的想法。为了提高提示的通用性和灵活性,可以调整语言来表达关键信息。在表 2 中,展示了一些模块中基本元素的一些示例。

表2:写作场景中内置模块的基本内部元素示例。该提示属于写作场景,其目的是为给定的文章生成标题。选择了五个模块作为示例——Profile、Goal、Constraint、Workflow和Style——并展示了每个模块的一个内部元素。特别是,对于Workflow模块,展示了一个类似函数的基本元素。

3.4 扩展模块和自定义元素

定义的内置模块已经尽可能全面地涵盖了提示的许多方面。此外,还添加了LangGPT涵盖的应用场景和模块。但受限于自身的能力和领域知识,无法考虑LLM的所有应用场景。

因此,除了内置模块和基本元素之外,还定义了扩展模块和自定义元素,以提高提示的通用性和复用性。扩展模块和自定义元素的设计流程如图2所示。

这个过程可以帮助用户快速分析他们的需求并提出提示中需要包含的要点。基于LangGPT提供的设计模板以及设计流程,可以优化高质量提示以快速匹配应用场景。

图 2:扩展模块和自定义元素的设计流程。对于内置模块无法覆盖所有方面的应用场景,可以根据需要定义新的扩展模块。定义了扩展模块后,还应该根据扩展模块的要求来设计内部元素。另外,如果内置模块能够满足应用场景需求,但基本元素无法满足所有需求,可以直接在内置模块中添加自定义元素。需要注意的是,扩展模块和内置模块应尽可能相互排斥,以最大限度地减少修改成本。

4. 实验

为了验证提出的LangGPT的先进性,在两个方面进行了实验:LLM执行任务的效果和LangGPT的可用性调研。在的实验中,选择了两种类型的应用场景:写作和角色扮演。对于每个场景,选择了五个由社区用户构建和共享的具体的任务助手。

4.1 Baseline

为了进行比较,选择了两个baseline。

  • 直接指令:提示仅包含对LLM提出的说明以及所需的必要信息。
  • CRISPE:提示设计规则 [Night,2023]。该框架从宏观角度前瞻性地定义了提示的组成部分。它需要一个完整的提示,包含Capacity和Role、Insight、Statement、Personality和Experiment。

直接指令提示非常直观,可最大限度地节省token。但这种方式内容太少,往往不能全面传达需求,也难以抓住重点。 CRISPE提供了一个相对完整的设计框架,而不是一些零散的规则。但它没有清晰的结构化设计,不利于学习和高质量提示的复用。另外,CRISPE对提示中包含的元素有严格的规范,泛化能力较低。由于这些方法在提示设计上的缺点,设计了LangGPT。然而,除了这些直观的优势之外,还需要验证提示能否引导LLM执行任务,这才是提示设计最本质的目的。

4.2 大语言模型

选择了表 3 中所示的这些LLM进行评估,实验中的所有任务均于2024年1月18日前完成。

表 3:实验中使用的LLM。“unk”表示不知道这些模型的规模。

4.3 评估指标

由于任务场景的复杂性,缺乏客观的评价指标。因此,使用人工评估和LLM评估来评估LLM执行任务的能力。为了更好地保证评估的合理性,针对两种场景设定了评估标准。

对于写作任务,要求评估者从3个维度评估LLM执行任务的有效性:文本连贯性、格式规范和内容丰富度。生成主题连贯的内容的能力很重要。然而,发现LLM在生成任务中通常能够保持主题一致性,因此没有针对这方面设计评估指标。对于角色扮演任务,同样设计了3个维度的评价指标:语言风格、角色相关性和主题一致性。对于每个评估指标,定义了从0到5的分数来表示不同的级别,并解释了每个整数分数对应的情况的描述。此外,允许评估者在不同级别之间打 .5 分。

该评估框架还可以指导高性能LLM,例如GPT-4和Ernie Bot-4,自动评估其表现。由于LLM作为评估者的一致性较低[Liu et al., 2023],实验中也发现LLM评分的区分度很低,因此仅采用了人工评估的结果。

4.4 结果

提示引导LLM执行任务能力最直观的体现是LLM在执行提示引导的任务时的表现。因此,评估了LLM在两种情况下的表现,结果如表 4 及表 5 所示。

表 4:引导LLM执行任务的不同提示的结果。粗体字体表示在当前场景中效果最佳的提示类型。 I、C、L 分别表示三种提示符,即Instruction-only、CRISPE、LangGPT。 s1到s3分别代表两种场景的三个评估指标。对于写作场景来说,s1是文本连贯性,s2是格式规范,s3是内容丰富度。对于角色扮演场景,s1是语言风格,s2是角色相关性,s3是主题一致性。

从结果可以看出,LangGPT更擅长引导LLM执行任务。此外,还注意到一个有趣的现象。某些具有特别严格安全限制的LLM将拒绝回答,例如关于吹牛和暴躁等话题的问题或请求。 LangGPT可以让这些LLM认识到这只是一种说话方式,而不是真正具有破坏性的行为,并引导LLM生成回复。其他两个baseline都无法做到这一点。

为了评估 LangGPT 的易用性,在在线社区进行了一项用户调查。该社区已经运行了六个多月,已经聚集了来自各行各业的数千名用户,包括制造、建筑、信息技术、金融和娱乐。因此,调查结果的客观性能够得到保证。设计了一份关于 LangGPT 体验的完整调查问卷,以确保答案的质量。调查问卷包括关于易用性的评分问题。用户评分结果如图3所示。从图3可以看出,87.81%的用户给出了3分或更高的分数,这表明用户对LangGPT的易用性表示认可。此外,LangGPT在用户调查中的总体满意度得分为8.48分(满分10分)。

图 3:用户调查中的易用性评分。最低分是0分,表示非常难用,最高分是5分,表示非常容易使用。 “:”用于分隔分数和百分比。

表 5:不同LLM在两种情况下的平均得分。

4.5 案例研究

为了更直观地展示LangGPT的效果,从实验中筛选了具体案例。除了直接的效果比较之外,还尝试使用LangGPT来指导LLM生成质量提示。

提示引导LLM

在的实验中,使用三种提示来引导LLM扮演马屁精,图 4 中给出了一个示例。

在此示例中,直接指令提示和 CRISPE 提示引导的 ChatGPT 都只是回复用户的话语。相比之下,LangGPT 引导的 ChatGPT 在针对用户给定主题进行了更加夸张的吹嘘。此外,它从更广泛的角度表达赞美,也更有个性。

LangGPT引导LLM编写提示

在实验中,还尝试让LLM使用 LangGPT 构建提示。图 5 展示了一个示例。

图 4:马屁精的案例。 ChatGPT-3.5 在三种不同提示下对用户的回复。需要注意的是,明远大学是虚构的。

图 5:ChatGPT-3.5 使用 LangGPT 生成提示的示例。为了便于演示,一些模块被省略。

如果直接要求LLM生成有关 MBTI 评估的提示,他们可能会拒绝。然而,LangGPT 可以指导LLM生成无害的高质量提示。

5 结论

在本文中,提出了 LangGPT,一个用于提示设计的结构化且可扩展的框架。 LangGPT具有类似于面向对象编程语言的系统结构,易于学习和复用。实验表明,LangGPT 在指导LLM执行任务方面比baseline方法表现更好。还在LangGPT构建的社区中进行了用户调查,以验证LangGPT的易用性和可复用性。在未来的工作中,将进一步优化LangGPT的设计,减少LangGPTtoken消耗。此外,还将添加对LLM使用第三方工具和自定义工具的支持。

  • 伦理声明

在LLM的应用过程中,可能会出现伦理争议,但LangGPT的设计及本文的写作过程避免了可能出现的伦理问题。

更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。

  • 论文地址:https://arxiv.org/abs/2402.16929
  • 项目地址:https://github.com/EmbraceAGI/LangGPT
  • 社区地址:https://www.langgpt.ai/
  • 作者:Ming Wang, Yuanzhong Liu, Xiaoming Zhang, Songlian Li, Yijie Huang, Chi Zhang, Daling Wang, Shi Feng, Jigang Li

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

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

相关文章

【PyTorch][chapter 22][李宏毅深度学习]【无监督学习][ WGAN]【理论一】

简介: 2014年Ian Goodfellow提出以来,GAN就存在着训练困难、生成器和判别器的loss无法指示训练进程、生成样本缺乏多样性等问题。从那时起,很多论文都在尝试解决,但是效果不尽人意,比如最有名的一个改进DCGAN依靠的是对…

【嵌入式高级C语言】9:万能型链表懒人手册

文章目录 序言单向不循环链表拼图框架搭建 - Necessary功能拼图块1 创建链表头信息结构体 - Necessary2 链表头部插入 - Optional3 链表的遍历 - Optional4 链表的销毁 - Necessary5 链表头信息结构体销毁 - Necessary6 获取链表中节点的个数 - Optional7 链表尾部插入 - Optio…

RFID-科技的“隐秘耳语者”

RFID-科技的“隐秘耳语者” 想象一下,你身处一个光线昏暗的环境中,周围的一切都被厚厚的阴影笼罩。这时,你需要识别并获取一个物体的信息,你会选择怎么做?是点亮灯光,用肉眼仔细观察,还是打开扫…

Haproxy实验搭建

1.yum本地源安装Haproxy [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 [rootlocalhost ~]# yum install haproxy -y2.yum网络源安装Haproxy 关闭防火墙和selinux ###先把安装包拖进来[rootlocalhost ~]# yum install rh-haproxy18-haproxy-1…

Linux操作系统的vim常用命令和vim 键盘图

在vi编辑器的命令模式下,命令的组成格式是:nnc。其中,字符c是命令,nn是整数值,它表示该命令将重复执行nn次,如果不给出重复次数的nn值,则命令将只执行一次。例如,在命令模式下按j键表…

[java基础揉碎]继承

为什么需要继承: > 继承就可以解决代码复用的问题 继承的基本介绍: 继承的使用细节: 1.子类继承了所有的属性和方法,但是私有属性和方法不能在子类直接访问,要通过公共的方法去访问 解决, 提供公共的方法返回: 2.子类必须调用父类的构造器,完成父…

Linux系统——LVS、Nginx、HAproxy区别

目录 一、LVS 1.负载均衡机制 1.1负载均衡——NAT模式 1.2负载均衡——DR模式 1.3负载均衡——隧道模式 1.4负载均衡——总结 2.LVS调度算法 3.LVS优点 4.LVS缺点 二、Nginx 1.传统基于进程或线程的模型 2.Nginx架构设计 3.Nginx负载均衡 4.Nginx调度算法 5.Ngi…

Jmeter 测试使用基本组件结构

JMeter简介 Apache组织开发的开源免费压测工具纯Java程序,跨平台性强源程序可以从网上下载高扩展性可对服务器、网络或对象模拟巨大的负载,进行压力测试可以用于接口测试支持分布式、多节点部署 JMeter安装 下载位置 官网https://jmeter.apache.org/ …

Java中SpringBoot四大核心组件是什么

一、Spring Boot Starter 1.1 Starter的应用示例 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> <dependency><groupId>org.mybatis.sprin…

深度学习与人类的智能交互:迈向自然与高效的人机新纪元

引言 随着科技的飞速发展&#xff0c;深度学习作为人工智能领域的一颗璀璨明珠&#xff0c;正日益展现出其在模拟人类认知和感知过程中的强大能力。本文旨在探讨深度学习如何日益逼近人类智能的边界&#xff0c;并通过模拟人类的感知系统&#xff0c;使机器能更深入地理解和解…

高级语言讲义2016计专(仅高级语言部分)

1.斐波那契序列的第n项可以表示成以下形式&#xff0c;编写一个非递归函数&#xff0c;返回该数列的第n项的数值 #include <stdio.h>int func(int n) {if(n1||n2)return 1;int p1,q1,num;for(int i3; i<n; i) {numpq;qp;pnum;}return num; } 2.在MXN的二维数组A中&am…

瑞_23种设计模式_模板方法模式

文章目录 1 模板方法模式&#xff08;Template Pattern&#xff09; ★ 钩子函数1.1 介绍1.2 概述1.3 模板方法模式的结构1.4 模板方法模式的优缺点1.5 模板方法模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;InputStre…

【测试工具系列】压测用Jmeter还是LoadRunner?还是其他?

说起JMeter&#xff0c;估计很多测试人员都耳熟能详。它小巧、开源&#xff0c;还能支持多种协议的接口和性能测试&#xff0c;所以在测试圈儿里很受欢迎&#xff0c;也是测试人员常用的工具&#xff0c;但是在企业级性能场景下可能会有性能瓶颈&#xff0c;更适合测试自己使用…

Grafana二次开发环境搭建

1 Grafana环境搭建 1.1 搭建后端服务 下载windows安装版文件grafana.com 1&#xff09;选择版本号&#xff1a;此处我选的8.3.3版本 2&#xff09;安装完成后&#xff0c;请记住安装目录 &#xff0c;我的是在 D:\software\Gragana833 安装完成后会自动运行, 3&#xff09;此…

2024年软考重大改革

中国计算机技术职业资格网 考试日期 考试级别 考试资格名称 5月25日至28日 高级 系统分析师 系统架构设计师 信息系统项目管理师 中级 软件设计师 网络工程师 软件评测师 电子商务设计师 嵌入式系统设计师 数据库系统工程师 信息系统管理工程师 初级 程序员 …

MySQL之体系结构和基础管理

前言 本文以linux系统的MySQL为例详细介绍MySQL的体系结构&#xff0c;因为在实际生产环境中MySQL的运行环境都是linux系统。同时介绍MySQL的基础管理&#xff0c;包括用户管理和权限管理等。 MySQL体系结构 MySQL客户端/服务器工作模型 MySQL是C/S架构&#xff0c;工作模型…

物联网,智慧城市的数字化转型引擎

随着科技的飞速发展&#xff0c;物联网&#xff08;IoT&#xff09;已成为推动智慧城市建设的关键力量。物联网技术通过连接各种设备和系统&#xff0c;实现数据的实时采集、传输和处理&#xff0c;为城市的智能化管理提供了强大的支持。在数字化转型的浪潮中&#xff0c;物联网…

VUE_nuxt启动只能通过localhost访问,ip访问不到:问题解决

修改项目根目录下的 package.json "config": {"nuxt": {"host": "0.0.0.0","port": "3000"} } 这样项目启动后就可以通过ip进行访问了

AutoDev 自定义 Agent:快速接入内部 AI Agent,构建 IDE 即 AI 辅助研发中心

在开源 AI IDE 插件 AutoDev 的 #51 issue 中&#xff0c;我们设计了 AutoDev 的 AI Agent 能力&#xff0c;半年后我们终于交付了这个功能。 在 AutoDev 1.7.0 中&#xff0c;你将可以接入内部的 AI Agent&#xff0c;并将其无缝与现有的 AI 辅助能力结合在一起。 本文将使用 …

使用awk和正则表达式过滤文本或字符串 - 详细指南和示例

当我们在 Linux 中运行某些命令来读取或编辑字符串或文件中的文本时&#xff0c;我们经常尝试将输出过滤到感兴趣的特定部分。这就是使用正则表达式派上用场的地方。 什么是正则表达式&#xff1f; 正则表达式可以定义为表示多个字符序列的字符串。关于正则表达式最重要的事情之…