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

LLM学习笔记(15)LangChain、LlamaIndex、LlamaIndex

Transformer 和 PyTorch 是什么关系?

TransformerPyTorch可以很好地配合使用,但它们并不是同一层面的工具。具体来说:

  • Transformer是一个神经网络的架构,最初用于自然语言处理,但也可以扩展到其他任务(如视觉)。它是一种模型结构。
  • PyTorch是一种深度学习框架,用于构建和训练神经网络,类似的框架还有TensorFlow。

在Hugging Face中,Transformer库实际上是基于PyTorch和TensorFlow的,它提供了一系列预构建的Transformer模型,这些模型可以用PyTorch或TensorFlow来进行训练和推理。因此,Transformer库中的模型可以与PyTorch一起使用,但它本身不是一个训练框架,而是一种利用这些训练框架来方便地构建和使用大模型的工具。

所以,PyTorch是深度学习的基础框架,而Transformer是一个具体的模型架构,二者不是对等的,但可以结合使用。

基础框架(Framework)

基础框架,比如PyTorchTensorFlow,就像是你盖房子时使用的工具和原材料的组合。你可以把它想象成建筑工地上的工具箱,里面有各种必备工具,比如锤子、钻头、测量工具,还有原材料,比如钢筋、水泥、砖块等等。

这些框架为你提供了:

  1. 工具:像自动微分张量操作等,帮助你计算梯度,构建神经网络,并优化模型。
  2. 库和函数:你可以用这些工具非常灵活地搭建神经网络,就像用砖块和水泥盖房子一样。

PyTorch和TensorFlow的主要功能是帮助你完成神经网络的实现、训练、调优等过程。因此,它们是提供构建和训练模型的基础工具和环境

具体的模型架构(Model Architecture)

具体的模型架构,比如Transformer,可以比喻成房屋的设计图纸。设计图决定了房子的整体结构,比如有几层楼、房间的布局、门窗的设计等等。

对于机器学习中的模型架构:

  • Transformer是一个特定的设计图,描述了神经网络是如何组织的,比如它有多少层,每一层做什么样的计算。
  • 它定义了神经网络的结构,例如哪些层相连,数据如何在层之间流动,以及模型如何处理输入和输出。

Transformer模型告诉你如何组织网络层,注意力机制如何应用在序列数据上,以及如何从中得到有效的表征。因此,模型架构是关于如何设计和组织模型的。

总结

深度学习框架(如 PyTorch)确实更加“底层”,因为它是用于构建和训练神经网络模型的工具,而Transformer只是一个具体的神经网络架构,它需要通过深度学习框架(如 PyTorch 或 TensorFlow)来实现和训练。因此,Transformer 是在 PyTorch 之上实现的。

深度学习框架 vs. 神经网络架构

  • 深度学习框架(PyTorch、TensorFlow)

    • 深度学习框架可以理解为工具箱,提供了各种底层工具,帮助开发者方便地实现神经网络的构建、训练、优化等步骤。
    • PyTorch 提供了对张量操作(类似于 NumPy 的高效数学运算)自动微分(方便梯度计算)、以及用于搭建神经网络的各种模块化组件。可以理解为在深度学习的世界里,PyTorch 是所有模型的基础构建工具。
  • 神经网络架构(Transformer)

    • Transformer 是一种具体的模型架构,用于解决特定的任务,例如自然语言处理(NLP)中的文本翻译、文本生成等。
    • 它描述了网络的层次结构(例如注意力机制、多头自注意力、前馈层等),以及这些层次如何连接和作用。
    • 要实现和训练 Transformer 模型,就需要使用深度学习框架,比如 PyTorch 或 TensorFlow。

例子

如果你要实现一个 Transformer 模型,你可以用 PyTorch 的基本组件来实现。例如:

  • PyTorch 的 nn.Linear 类来实现全连接层(前馈网络)。
  • PyTorch 的 torch.matmul 来实现矩阵乘法,用于计算注意力得分。
  • 自动微分功能(torch.autograd 来计算模型参数的梯度,从而优化模型。

所有这些基础操作都是由 PyTorch 提供的,而 Transformer 只是利用这些底层组件来定义自己的独特结构和计算逻辑。因此,Transformer 需要 PyTorch 来实现具体的神经网络层、训练过程,以及数据流的计算。

Prompt Engineering

一旦 Transformer 架构搭建完成并且模型经过训练,它就可以执行多种自然语言处理(NLP)任务,例如问答、情感分析、翻译、生成等等。

  • Prompt Engineering 是对与模型交互时输入的设计和优化。它在你使用 Transformer 模型时,帮助你构建合适的输入,确保模型生成你所期望的输出。
  • 例如,当你使用一个预训练的 Transformer 模型进行问答时,你需要给模型一个合理的问题描述,这个描述就是Prompt。通过设计不同的 Prompt,可以显著影响模型生成的回答质量。
  • 也就是说,Prompt Engineering 是在模型调用(运行时)阶段使用的,而不是在模型架构的实现阶段。

LLM Agent

什么是LLM Agent?

LLM Agent 是一种基于大语言模型(LLM)的智能代理系统,它不仅具备生成文本的能力,还能够通过执行复杂任务,充当主动交互的智能助手。虽然大语言模型(LLM)本身有着强大的文本生成和理解能力,但在实际应用中,单靠 LLM 本身是无法全面满足多样化和复杂的任务需求的。

主要特点和功能

  • 任务执行能力:LLM Agent 不仅能回答问题,还能执行多步骤任务,比如查找信息、生成文档、调用外部 API,甚至控制某些系统的行为。
  • 主动性:与普通的 LLM 不同,LLM Agent 更加主动,可以根据用户的请求做出一系列操作,而不只是简单的对话。它会结合现有的 LLM 模型和其他外部工具(例如搜索引擎、数据库查询、外部程序等)来完成任务。
  • 集成外部资源:LLM Agent 通常集成了多种工具和能力,如搜索工具、网络浏览工具等,可以根据用户的要求做出更为复杂的反应,而不仅限于生成语言。

不是取代,而是配合

LLM Agent 的引入并不是要取代 LLM,而是要与 LLM 配合,使 LLM 的潜力得以更好地发挥。以下是一些具体的例子:

  • 知识更新:LLM 只能基于它训练时的数据回答问题,但 LLM Agent 可以与在线信息源交互,从而为 LLM 提供最新的信息,补足 LLM 无法更新知识的缺陷。

  • 增强实用性:LLM Agent 可以决定使用哪种工具完成任务,从而增强 LLM 的实际应用能力。例如,对于数学计算,LLM Agent 可以调用计算器 API,而不是让 LLM 自己尝试去生成计算结果,这样不仅更准确,效率也更高。

  • 无缝集成多种能力:LLM Agent 可以把多种任务结合起来,而这些任务可能不只是语言生成。例如:

    • 调用 LlamaIndex 来高效查询企业内部的文档。
    • 使用 LangChain 来管理一系列任务的执行顺序,使得 LLM 调用和外部工具交互结合在一起,形成一个完整的自动化流程。

例子

假设你想开发一个智能助理系统,可以帮助你安排旅行计划,包括:

  1. 查询航班信息
  2. 分析航班的票价并推荐最优选择
  3. 生成一个包含旅行行程的摘要

在这种情况下,LLM 单独运行是无法实现全部需求的,原因是它无法主动调用外部服务或处理这些复杂的任务链条。而 LLM Agent 可以做到:

  • 首先主动调用航班 API,获取相关数据。
  • 接着使用 LLM 对这些数据进行分析。
  • 最后生成一个关于旅行行程的报告。

这种多步骤的复杂任务需要任务的主动执行、工具的集成以及信息的动态获取,而这些都是智能代理系统所擅长的。

实现方式

  • 在哪一步被实现?:LLM Agent 是在 LLM 实现之后的下一步,它是基于 LLM 的应用层。
  • 如何被实现?:LLM Agent 是在代码中实现的,它可以控制 LLM 的行为,并结合外部工具执行任务。例如,你可以用 Python 编写一个代理程序,利用预训练的 LLM 执行对话、调用 API、甚至控制某些设备的动作。
  • 实现什么功能?:LLM Agent 使 LLM 不再局限于单一的对话或文本生成,而可以被动地接受指令并主动执行更复杂的任务,甚至可以调用其他程序。例如,它可以和数据库、搜索引擎等结合,完成多步骤的任务。

LangChain

什么是LangChain?

  • LangChain 是一个框架,旨在帮助开发人员使用 LLM 来创建复杂的应用程序。它可以把多个步骤的操作链接在一起,形成一个连贯的工作流,从而更好地利用 LLM 的能力。
  • 它的目标是让开发者能够构建和管理多个 LLM 的调用以及与外部工具集成的复杂工作流
  • 它的核心作用是把 LLM 的能力整合进任务执行的链条中,比如通过 LLM 先分析一个输入,再生成查询,接着调用一个外部 API,最后再根据返回的数据生成最终的答案。
  • 比喻LangChain 就像是“高级自动化管道”,把办公室(即 LLM)的各个功能通过精心设计的流程连接起来,比如先接待访客,再帮助整理文件,然后联系其他部门完成任务,使得各个环节有条不紊地进行。

主要特点和功能:

  • 工作流管理:LangChain 可以将多个 LLM 的调用组织起来,使它们以逻辑步骤顺序进行。这些步骤可以包括 LLM 的调用,也可以包括外部操作,如数据库查询、API 请求等。
  • 任务链条(Chain):LangChain 通过将任务组织成一条“链”来完成复杂任务,这些链条中的每个步骤可以是一个不同的 LLM 调用或者是对某种工具的调用。
  • 模块化和可扩展性:LangChain 提供了一个模块化的方式来开发和管理 LLM 的应用,它允许开发者灵活地将 LLM 与其他功能模块集成,比如数据处理、API 调用等。

例子

假设你想要构建一个对话机器人,用户问的问题需要多个步骤来回答。比如:

  1. 用户:请告诉我今天的天气,并帮我生成一个关于天气的推文。
  2. 机器人工作流程:
    • 第一步:调用一个天气 API 来获取天气数据。
    • 第二步:使用一个 LLM(比如 GPT-3)来生成有关天气的描述性文本。
    • 第三步:生成推文格式的文本,并将其发送给用户。

LangChain 的作用就是将这些步骤按逻辑顺序进行组织,并通过调用 LLM 和其他工具,实现从原始输入到最终输出的整个过程。

实现方式

  • 在哪一步被实现?:LangChain 是在 LLM 和 LLM Agent 实现之后的应用工具。它不是用来训练 LLM 的,而是用来创建完整的任务链条
  • 如何被实现?:LangChain 将多个 LLM 调用与其他工具整合在一起,开发者通过编写工作流,控制 LLM 以及与外部工具(如 API、数据库)之间的交互。它会将多个 LLM 的调用组织成工作链(chain),实现连续的任务执行。
  • 实现什么功能?:LangChain 主要是为了方便开发者使用 LLM 完成复杂任务,例如一个任务需要多个步骤的对话、搜索和生成,它将这些步骤组织起来,实现从输入到输出的全自动化工作流。

LangChainLLM Agent 之间的关系

LangChainLLM Agent 的功能确实有一些重合的地方,特别是在处理复杂任务、集成外部工具、以及构建多步骤工作流的方面。但是,它们的应用侧重点和功能目标有所不同,各自解决的问题也有所不同,下面我们详细分析一下它们的相似点和不同点。

相似点

  1. 集成外部工具

    LLM AgentLangChain 都能够集成外部工具,例如数据库查询、API 调用等。它们都旨在让 LLM 不再局限于语言生成的任务,而是能够执行各种复杂的操作,尤其是在与外部资源结合时。
  2. 管理复杂的工作流

    LLM AgentLangChain 都能处理多步骤的复杂任务。无论是 LLM Agent 在执行任务的过程中分解步骤,还是 LangChain 将多个模型调用和工具整合起来形成任务链,二者都试图解决 LLM 在单一调用时处理复杂任务的局限性。
  3. 扩展 LLM 的功能

    它们都可以扩展 LLM 的功能,使得 LLM 不仅仅是对单个 Prompt 做出反应,而是能够更智能地与外部系统协作,以完成多样化的任务。

不同点

尽管它们有一些相似的功能,但 LangChain 和 LLM Agent 在概念和实现的侧重点上还是有显著差异的:

1. LLM Agent 的主要目标:任务自动化与执行

  • 主动执行任务:LLM Agent 是一个主动的智能系统,它可以在用户下达命令后,自主决定执行哪些任务,并与外部资源交互。它的目标是成为一个可以执行完整任务的“智能助理”。
  • 决策能力:LLM Agent 通常带有一定的“决策逻辑”,它能理解用户的高层次需求,并决定如何调用 LLM、如何执行外部任务。例如,当用户要求某个复杂任务时,LLM Agent 能够自主地选择最合适的外部工具,甚至可以和其他 Agent 协作来完成目标。

2. LangChain 的主要目标:构建任务链条和工作流

  • 模块化的任务链条:LangChain 的设计重点是让开发者可以构建和管理一系列任务的工作流,这些任务可能是 LLM 的调用,也可能是外部工具的交互。LangChain 并没有赋予模型主动执行的能力,而是提供了一种方式,让开发者定义复杂任务的执行步骤。
  • 工作流管理和灵活性:LangChain 侧重于提供一种框架,让开发者能够定义每个任务步骤的逻辑,并以链条的形式将它们连接起来。换句话说,LangChain 更像是流程编排工具,帮助开发者按照指定的顺序执行任务。这种模块化使得开发者可以灵活地组合不同的 LLM 和工具来实现目标。

举个例子说明差异

假设你想要创建一个智能客服系统,用户可以通过这个系统获得信息,并由系统帮助他们完成一些具体任务,例如预定机票、查询天气等。

  • LLM Agent 的实现方式

    • 用户输入:我想预订从北京到纽约的航班,并且想知道纽约的天气。
    • LLM Agent 会自主地理解这个输入,然后:
      1. 首先查询航班信息,获取从北京到纽约的可选航班。
      2. 然后调用天气 API 来获取纽约的天气情况。
      3. 最后把这些信息整理好,并向用户汇报结果。
    • LLM Agent 通过内置的逻辑和决策能力,主动调用合适的工具,最终完成整个任务。
  • LangChain 的实现方式

    • 开发者使用 LangChain 来定义任务链条。
      1. 第一步:调用一个外部 API 来获取航班信息。
      2. 第二步:调用另一个 API 获取天气信息。
      3. 第三步:将航班信息和天气信息整合在一起,通过 LLM 生成一段汇报给用户的自然语言。
    • 在这个过程中,LangChain 提供了一个框架,帮助开发者定义这些任务的执行顺序以及每一步的调用逻辑,但它本身并不会主动执行这些任务,而是开发者预先定义好工作流,LangChain 按照指定步骤去执行

总结:二者的侧重点和应用场景

  • LLM Agent 侧重于主动任务执行,结合 LLM 的语言能力以及外部工具的访问,成为一个可以“自主做决策”的智能助手。它通常应用于需要更高智能性、主动决策、与外部环境持续交互的场景。

  • LangChain 则更侧重于帮助开发者设计和管理复杂任务的执行流程,是一种工作流管理工具,用于组织和串联多个 LLM 或工具的调用。它适合那些需要开发者预先定义工作流程,并按照既定逻辑顺序执行的场景。

因此,尽管它们在集成外部工具和管理复杂任务上有相似之处,但 LLM Agent 更加强调自主性和主动执行,而 LangChain 则侧重于提供模块化的工作流构建框架,让开发者更灵活地安排和控制任务步骤。在很多应用场景中,这两个工具也可以协同使用,形成更强大的 LLM 应用系统。

LlamaIndex

什么是LlamaIndex?

LlamaIndex(之前称为 GPT Index)是一个工具,它的作用是让 LLM 更好地利用结构化或非结构化的数据。它主要通过创建数据的索引,帮助 LLM 高效地从中查找和利用信息。

可以理解为对数据集或数据库进行管理的工具,它的主要功能是为大语言模型(LLM)提供高效的数据访问和管理机制,使 LLM 可以更好地利用大型数据集中的信息,尤其是在需要从大量文本或其他数据中查找相关内容时。

主要特点和功能:

  • 数据索引创建:LlamaIndex 可以对大量的文档、数据集等创建索引,使得 LLM 可以快速访问和利用这些信息。
  • 知识检索:LlamaIndex 的主要任务是提高 LLM 的知识检索能力,帮助它在需要的时候快速查找并应用相关的数据。
  • 加速查询过程:当 LLM 面对大量数据(例如几百个文档)时,通过 LlamaIndex,可以避免逐个文档地逐字查找,而是利用索引快速找到相关内容,从而提高模型响应的效率。

例子

假设你有一个公司内部的知识库,包括大量的文档、指南和报告。如果你想让 LLM 变得足够智能,能够回答公司内部的各种问题,那么就可以使用 LlamaIndex 对这些文档建立索引。当用户提问时,LLM 会利用 LlamaIndex 提供的索引,快速找到最相关的信息,而不是从头开始阅读每个文档。这就类似于一个搜索引擎,用于高效查询内容。

实现方式

  • 在哪一步被实现?:LlamaIndex 是在你有大量信息要管理并供 LLM 使用时的一种工具。通常被集成到 LLM Agent 或 LangChain 中。
  • 如何被实现?:LlamaIndex 通过创建数据的索引,使 LLM 能够高效地从大量数据中查找和利用信息。开发者会使用它来对非结构化数据(比如一堆文本文件)建立索引,方便 LLM 进行快速查询。
  • 实现什么功能?:LlamaIndex 的作用是增强 LLM 的知识查询能力。如果 LLM 需要回答一个涉及到特定知识库的问题,它可以利用 LlamaIndex 快速查找到相关信息,而不是在大量非结构化文本中逐字查找。

三者之间的关系与作用场景

  1. LLM AgentLangChainLlamaIndex 都是用于增强 LLM 功能的工具,但它们的侧重点有所不同。
  2. LLM Agent 是为了让 LLM 更加主动,能够与外部资源结合,执行多步骤任务。
  3. LangChain 是用来构建工作流的工具,帮助 LLM 完成多步骤的任务,通过整合 LLM 调用和其他工具实现自动化操作。
  4. LlamaIndex 是为了提高 LLM 对数据的检索效率,使得 LLM 在面对大量数据时,能够快速找到需要的内容。

示例

假设你想要建立一个智能对话系统,用户可以问一些复杂的问题,比如“请帮我生成一个关于公司未来项目的预测报告”。为了实现这个目标:

  1. LLM Agent 可以理解用户的问题,并主动进行一系列步骤来完成这个任务。例如,它会分解任务:先查找公司现有的项目计划,然后生成预测报告。
  2. LangChain 可以帮助定义这些任务的执行顺序,组织整个任务链,比如“先检索数据,然后分析,最后生成报告”。
  3. LlamaIndex 则用来帮助 LLM 快速查找公司内部的大量项目计划文档,让信息检索变得更高效。

关系总结

  • PyTorch 提供了深度学习的基础工具,帮助开发者实现 Transformer 这样的神经网络架构。
  • 基于 Transformer 架构,可以训练出 LLM,它具备强大的自然语言理解和生成能力。
  • Prompt Engineering 在使用 LLM 时优化交互输入,确保 LLM 按照预期生成高质量的回答。
  • LLM Agent 扩展了 LLM 的能力,使它不仅能够对话,还能执行更复杂的任务。
  • LangChain 帮助将 LLM 的不同调用以及工具整合成工作链条,实现多步骤任务自动化。
  • LlamaIndex 增强了 LLM 对于大量数据的检索能力,使它在回答需要特定知识时更高效。

相关文章:

LLM学习笔记(15)LangChain、LlamaIndex、LlamaIndex

Transformer 和 PyTorch 是什么关系? Transformer和PyTorch可以很好地配合使用,但它们并不是同一层面的工具。具体来说: Transformer是一个神经网络的架构,最初用于自然语言处理,但也可以扩展到其他任务(…...

springai结合ollama

目录 ollama 介绍 使用 下载: 安装: 点击这个玩意next就行了。 运行 spring ai使用ollama调用本地部署的大模型 加依赖 配置yml 写代码 ollama 介绍 官网:Ollama Ollama是一个用于部署和运行各种开源大模型的工具; …...

扫描IP段内的使用的IP

扫描IP段内的使用的IP 方法一:命令行 命令行进入 for /L %i IN (1,1,254) DO ping -w 1 -n 1 192.168.3.%iarp -a方法二:python from scapy.all import ARP, Ether, srp import keyboarddef scan_network(ip_range):# 创建一个ARP请求包arp ARP(pds…...

ai即可一键生成ppt解决烦恼

在快节奏的职场环境中,制作PPT已经成为许多人日常工作的一部分。尽管PPT看似简单,却常常让人耗费大量时间。好在技术的进步为我们带来了全新的解决方案,比如智能生成PPT,让那些深夜加班的人看到了曙光。 从“手动排版”到“一键生…...

三、【docker】docker和docker-compose的常用命令

文章目录 一、docker常用命令1、镜像管理2、容器管理3、容器监控和调试4、网络管理5、数据卷管理6、系统维护7、实用组合命令8、常用技巧二、docker-compose常用命令1、基本命令2、构建相关3、运行维护4、常用组合命令5、实用参数 一、docker常用命令 1、镜像管理 # 查看本地…...

「Mac畅玩鸿蒙与硬件43」UI互动应用篇20 - 闪烁按钮效果

本篇将带你实现一个带有闪烁动画的按钮交互效果。通过动态改变按钮颜色,用户可以在视觉上感受到按钮的闪烁效果,提升界面互动体验。 关键词 UI互动应用闪烁动画动态按钮状态管理用户交互 一、功能说明 闪烁按钮效果应用实现了一个动态交互功能&#xf…...

小白爬虫——selenium入门超详细教程

目录 一、selenium简介 二、环境安装 2.1、安装Selenium 2.2、浏览器驱动安装 三、基本操作 3.1、对页面进行操作 3.1.1、初始化webdriver 3.1.2、打开网页 3.1.3、页面操作 3.1.4、页面数据提取 3.1.5、关闭页面 3.1.6、综合小案例 3.2、对页面元素进行操作 3.2.…...

斯坦福李飞飞《AI Agent:多模态交互前沿调查》论文

多模态AI系统很可能会在我们的日常生活中无处不在。将这些系统具身化为物理和虚拟环境中的代理是一种有前途的方式,以使其更加互动化。目前,这些系统利用现有的基础模型作为构建具身代理的基本构件。将代理嵌入这样的环境中,有助于模型处理和…...

Wordpress ElementorPageBuilder插件存在文件读取漏洞(CVE-2024-9935)

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

多模态视频大模型Aria在Docker部署

多模态视频大模型Aria在Docker部署 契机 ⚙ 闲逛HuggingFace的时候发现一个25.3B的多模态大模型,支持图片和视频。刚好我有H20的GPU所以部署来看看效果,因为我的宿主机是cuda-12.1所以为了防止环境污染采用docker部署,通过一系列的披荆斩棘…...

【网盘系统】递归删除批量文件

为何需要用到递归? 在网盘系统中,文件的类型分为文件和文件夹两种类型。当我们想要批量删除文件时,不乏其中会包含文件夹,而想要删除这个文件夹,自然其中所包含的文件都要删除,而其中所包含的文件也有可能…...

产品转后端?2

产品经理的视角能让你成为更好的后端工程师: 理解业务需求转换为技术方案的过程知道为什么要这样设计API明白数据结构的选择如何影响用户体验了解性能指标对业务的实际影响 在实习过程中可以有意识地向后端倾斜: 常规产品经理工作: "…...

电子商务人工智能指南 2/6 - 需求预测和库存管理

介绍 81% 的零售业高管表示, AI 至少在其组织中发挥了中等至完全的作用。然而,78% 的受访零售业高管表示,很难跟上不断发展的 AI 格局。 近年来,电子商务团队加快了适应新客户偏好和创造卓越数字购物体验的需求。采用 AI 不再是一…...

CSS中要注意的样式效果

1. 应用过渡效果 transition: var(--aa); 2.告诉浏览器元素可能会发生变换,从而优化性能。 will-change: transform; 3.使元素不响应鼠标事件。 pointer-events: none; 4.隐藏水平方向上的溢出内容 overflow-x: hidden; 5.定义一个元素的宽度和高度之间的比…...

CTFshowPHP特性

目录 web89 代码分析 playload web90 代码分析 playload web91 代码分析 playload web92 代码分析 playload web93 代码分析 playload web94 代码分析 playload web95 web96 代码分析 playload web97 代码分析 playload web98 代码分析 playload w…...

基于Springboot+Vue的电子博物馆系统

基于SpringbootVue的电子博物馆系统 前言:随着信息技术的不断发展,传统博物馆的参观方式逐渐向数字化、在线化转型。电子博物馆作为这一转型的重要组成部分,能够通过信息化手段为用户提供更丰富、更便捷的博物馆参观体验。本文基于Spring Boo…...

HarmonyOS:使用HTTP访问网络

HTTP 一、导入http模块 module.json5里添加网络权限 导入http模块 二、创建http请求 创建http请求 import { http } from kit.NetworkKitfunction getNetData() {// 创建数据请求对象let httpRequest http.createHttp() }三、发起请求 请求方法 四、请求示例 GET请求 PO…...

sqlmap --os-shell的原理(MySQL,MSSQL,PostgreSQL,Oracle,SQLite)

1. MySQL 条件 数据库用户需要具备高权限(如 FILE 权限)。数据库服务运行用户需要对目标目录有写权限。Web 服务器有可写目录,且支持执行上传的脚本(如 PHP、JSP 等)。 原理 利用 MySQL 的 SELECT ... INTO OUTFIL…...

浅谈网络安全态势感知

一、基本概念 前美国空军首席科学家Endsley博士给出的动态环境中态势感知的通用定义是: 态势感知是感知大量的时间和空间中的环境要素,理解它们的意义,并预测它们在不久将来的状态。 在这个定义中,我们可以提炼出态势感知的三个要素&#xf…...

【大模型】ChatGPT 提示词优化进阶操作实战详解

目录 一、前言 二、ChatGPT 提示词几个基本的优化原则 2.1 明确的提示词 2.1.1 提示词具体而清晰 2.1.1.1操作案例演示 2.2 确定焦点 2.2.1 操作案例演示 2.3 保持提示词的相关性 2.3.1 什么是相关性 2.3.2 提示词相关性操作案例一 2.3.2 提示词相关性操作案例二 三…...

【计算机网络】实验11:边界网关协议BGP

实验11 边界网关协议BGP 一、实验目的 本次实验旨在验证边界网关协议(BGP)的实际作用,并深入学习在路由器上配置和使用BGP协议的方法。通过实验,我将探索BGP在不同自治系统之间的路由选择和信息交换的功能,理解其在互…...

【Linux系统】System V 的 IPC 机制在 Linux 系统中的实现

System V 的 IPC(Inter-Process Communication,进程间通信) 机制是 UNIX 系统中的一大特色,用于在不同进程之间共享数据或同步操作。Linux 系统完整实现了 System V 的 IPC 机制,并在其基础上进行了优化和扩展。这些机…...

计算机网络安全

从广义来说,凡是涉及到网络上信息的机密性、报文完整性、端点鉴别等技术和理论都是网络安全的研究领域。 机密性指仅有发送方和接收方能理解传输报文的内容,而其他未授权用户不能解密(理解)该报文报文完整性指报文在传输过程中不…...

30.100ASK_T113-PRO 用QT编写视频播放器(一)

1.再buildroot中添加视频解码库 X264, 执行 make menuconfig Target packages -->Libraries --> Multimedia --> X264 CLI 还需要添加 FFmpeg 2. 保存,重新编译 make all 3.将镜像下载开发板...

攻防世界 ctf刷题 新手区1-10

unserialize3 因为我上个笔记写了 php返序列化 所以先趁热打铁 看这个题目名字 我们就知道是 反序列化呀 因为flag有值所以 我们先输个 111 看看有没有线索 没线索但是这边 有个发现就是他是使用get方式传参的 可能他会把我们的输入 进行传入后台有可能进行反…...

DAY35|动态规划Part03|LeetCode:01背包问题 二维、01背包问题 一维、416. 分割等和子集

目录 01背包理论基础(一) 基本思路 C代码 01背包理论基础(二) 基本思路 C代码 LeetCode:416. 分割等和子集 基本思路 C代码 01背包理论基础(一) 题目链接:卡码网46. 携带研究材料 文字…...

三款电容麦的对比

纸面参数 第一款麦克风 灵敏度: -36 dB 2 dB(0 dB1V/Pa at 1 kHz) 灵敏度较低,需要更高的增益来拾取同样的音量。频率响应: 40 Hz - 18 kHz 响应范围较窄,尤其在高频区域。等效噪音级: ≤18 dB(A计权) 噪…...

【实战攻略】如何从零开始快速实现深度学习新想法?——四步走战略

标题 【实战攻略】如何从零开始快速实现深度学习新想法?——四步走战略 【核心结论】 通过四步走战略,即找到baseline论文、深入baseline代码、搭建自己的pipeline、融入核心算法,新手也能快速实现深度学习新想法。 【通俗解释&#xff0…...

Python+OpenCV系列:入门环境搭建、图像读写、像素操作、色彩空间和通道、

入门环境搭建、图像读写、像素操作、色彩空间和通道 **Python与OpenCV环境搭建、图像处理与色彩空间介绍****引言****1. Python和OpenCV的环境搭建****1.1 安装Python和OpenCV****1.2 配置开发环境** **2. 图像的读取、显示与保存****2.1 图像的读取****2.2 图像的显示****2.3 …...

如何在鸿蒙API9和x86模拟器中使用MQTT

目录 引言 安装MQTT软件包 避免MQTT软件包自动升级 程序的编写 运行测试 结语 引言 虽然我的课主要是OpenHarmony南向开发的,但是结课时有个同学说他在写鸿蒙APP时无法将MQTT库加入到设备中,希望我帮忙看看。由于他没有鸿蒙的真机,只能…...

http multipart/form-data 数据如何分块传输是一次传输还是多次

multipart/form-data 是一种用于 HTTP 协议中传输数据的格式,它用于传输数据量较大的数据,如文件等。在 multipart/form-data 中,数据可以被分成多个部分(chunk),这些部分之间通过特定的分隔符进行分隔。 …...

️️耗时一周,肝了一个超丝滑的卡盒小程序

前言 先看看成品效果: 在上个月,我出于提升自己的英语造句能力的目的,想要找一个阅读或者练习造句类的英语学习 APP,但是最终找了几个 APP 不是不太好用就是要付费。于是我转换思路,找到了一本书,叫《36…...

ubuntu的matlab使用心得

1.读取视频 v VideoReader(2222.mp4);出问题,报错: matlab 错误使用 VideoReader/initReader (第 734 行) 由于出现意外错误而无法读取文件。原因: Unable to initialize the video properties 出错 audiovideo.internal.IVideoReader (第 136 行) init…...

vscode插件 live-server配置https

背景:前端有时候需要在本地搭建https环境测试某些内容(如https下访问http资源,下载) 步骤: 1.vscode集成开发软件(应该所有前端开发同学都安装了,我用webstorm,vscode备用) 2.vscode安装live…...

腾讯最新图标点选验证码

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 如有侵犯,请联系作者下架 本文识别已同步上线至OCR识别网站: http://yxlocr.nat300.top/ocr/iconclick/9 注意:后续点选验证码内容我不会再讲那么详细,毕竟点选验证训练很多读者都会,而…...

安防视频监控平台Liveweb视频汇聚管理系统管理方案

智慧安防监控Liveweb视频管理平台能在复杂的网络环境中,将前端设备统一集中接入与汇聚管理。国标GB28181协议视频监控/视频汇聚Liveweb平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级联、磁盘阵列存储、视频集中存储、…...

VBA信息获取与处理第四个专题第二节:将工作表数据写入VBA数组

《VBA信息获取与处理》教程(版权10178984)是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互…...

神经网络入门实战:(六)PyTorch 中的实用工具 SummaryWriter 和 TensorBoard 的说明

(一) SummaryWriter 这里先讲解 SummaryWriter ,TensorBoard 会在第二大点进行说明。 SummaryWriter 是 PyTorch 中的一个非常实用的工具,它主要用于将深度学习模型训练过程中的各种日志和统计数据记录下来,并可以与 TensorBoard 配合使用&am…...

SpringBoot的validation参数校验

文章目录 前言一、引入validation 依赖二、validation中的注解说明 (1)Validated(2)Valid(3)NotNull(4)NotBlank(5)NotEmpty(6)Patte…...

RPC与HTTP调用模式的架构差异

RPC(Remote Procedure Call,远程过程调用)和 HTTP 调用是两种常见的通信模式,它们在架构上有以下一些主要差异: 协议层面 RPC:通常使用自定义的二进制协议,对数据进行高效的序列化和反序列化&am…...

R语言机器学习论文(六):总结

文章目录 介绍参考文献介绍 本文采用R语言对来自进行数据描述、数据预处理、特征筛选和模型构建。 最后我们获得了一个能有效区分乳腺组织的随机森林预测模型,它的性能非常好,这意味着它可能拥有非常好的临床价值。 在本文中,我们利用R语言对来自美国加州大学欧文分校的B…...

工业—使用Flink处理Kafka中的数据_ProduceRecord2

使用 Flink 消费 Kafka 中 ProduceRecord 主题的数据,统计在已经检验的产品中,各设备每 5 分钟 生产产品总数,将结果存入HBase 中的 gyflinkresult:Produce5minAgg 表, rowkey“...

【嵌套查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…...

SpringBoot整合JWT

一. JWT简介 1. 什么是JWT? JWT(JSON Web Token)是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准。 它将用户信息加密到token里,服务器不保存任何用户信息。服务器通过使用保存的密钥验证token的正确性,只要正确即通过验证&…...

使用docker创建cloudstack虚拟主机

文章目录 概要 环境准备: 1.使用rockyLinux:8镜像 2.配置yum源 3.添加vim cloudstack.repo为以下内容 4.前期我们已经搭好了cloudstack平台,这里需要映射几个目录到容器里面, 5.创建Dockerfile 6.构建镜像 7.使用命令创建…...

mybatis-xml映射文件及mybatis动态sql

规范 XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。 XML映射文件的namespace属性为Mapper接口全限定名一致。 XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致…...

Qt | TCP服务器实现QTcpServer,使用线程管理客户端套接字

点击上方"蓝字"关注我们 01、QTcpServer >>> QTcpServer 是 Qt 网络模块中的一个类,用于实现TCP服务器。它允许创建一个服务器,可以接受来自客户端的连接。QTcpServer 是事件驱动的,这意味着它将通过信号和槽机制处理网络事件。 常用函数 构造函数: QT…...

rustdesk远程桌面使用

文章目录 简介1.客户端rustdesk使用2.基于 S6-overlay 的镜像 服务端部署3.声明 简介 为什么使用rustdesk,因为向日葵,todesk,免费版本的有各种各样的坑,比如限制你的登录,需要你重新登录使用,画面模糊&am…...

C#中图片的Base64编码与解码转换详解

在C#中,我们可以使用Base64编码将图片转换为字符串,也可以将Base64编码的字符串转换回图片。这通常用于在需要文本表示图像数据的场合(例如在Web开发中传输图像数据)。 将图片转换为Base64字符串 要将图片文件转换为Base64字符串…...

瑞芯微方案主板Linux修改系统串口波特率教程,触觉智能RK3562开发板演示

遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。 温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或…...