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

网站建设前 需要准备的/网推什么意思

网站建设前 需要准备的,网推什么意思,电商数据网站,九台区建设银行网站目录 什么是大模型 Agent ? 大模型Agent 有哪些部分组成? 规划(Planning) Planning类型 不依赖反馈的计划 基于反馈的计划 拆解子目标和任务分解方法 COT TOT GOT LLMP 反思和完善 ReAct(融合推理与执行的能力) Reflexion(动态…

目录

什么是大模型 Agent ?

大模型Agent 有哪些部分组成?

规划(Planning)

Planning类型

不依赖反馈的计划

基于反馈的计划

拆解子目标和任务分解方法

COT

TOT

GOT

LLM+P

反思和完善

ReAct(融合推理与执行的能力)

Reflexion(动态记忆和自我反思)

记忆(Memory)

结构划分

格式划分

操作划分

工具(Tools) 

Tools use

1. 函数描述【工具声明】

2. 调用 LLM 获得函数的请求参数【工具(集合)初始化】

3. 调用函数【执行工具】

行动(Action)

Agent的挑战

角色适应性问题

上下文长度限制

提示的鲁棒性

知识边界的控制

效率和成本问题

参考



什么是大模型 Agent ?

大模型 Agent,作为一种人工智能体,是具备环境感知能力自主理解决策制定执行行动能力的智能实体。智能体是一种通用问题解决器。从软件工程的角度看来,智能体是一种基于大语言模型的,具备规划思考能力记忆能力自主调用函数的能力,能自主完成给定任务的计算机程序。

大模型Agent 有哪些部分组成?

在基于 LLM 的智能体中,LLM 的充当着智能体的“大脑”的角色,同时还有 4 个关键部分:如下图所示,Agent 共由4个关键部分组成:规划(Planning)记忆(Memory)工具(Tools)行动(Action),下面详细剖析。

规划(Planning)

智能体会把大型任务分解为子任务,并规划执行任务的流程。智能体会对任务执行的过程进行思考和反思,决定是继续执行任务,或判断任务完结并终止运行。

Planning类型

大致分为两种类型,一种是不依赖反馈的计划,另一种则是基于反馈的计划。

不依赖反馈的计划

特点

  • 不参考执行反馈:在计划制定和执行过程中,不依赖于任务执行后的即时反馈。
  • 预先确定:计划在执行前就已经完全确定,不随执行过程中的变化而调整。

常用策略

  1. 单路径推理
    • 类似于决策树中的单路径探索,每一步都基于当前状态预定规则或策略选择下一步行动,直到达到目标状态。
    • 优点:简单直接,计算量相对较小。
    • 缺点:对不确定性和动态变化的环境适应性差。
  2. 多路径推理
    • 生成多个可能的计划路径,并考虑不同路径之间的转换可能性。
    • 优点:灵活性高,能应对一定的不确定性。
    • 缺点:计算复杂度高,需要更多的计算资源。
  3. 使用外部规划器
    • 利用专门的规划算法(如A*、Dijkstra算法等)或规划系统(如HTN规划器)来搜索最优或可行的计划。
    • 优点:能够找到高质量的解决方案,适用于复杂问题。
    • 缺点:依赖于外部系统和算法的性能,可能需要大量的预处理和计算。
基于反馈的计划

特点

  • 动态调整:根据任务执行过程中的实时反馈来动态调整计划。
  • 适应性强:能够很好地应对不确定性和动态变化的环境。

反馈来源

  1. 任务执行结果的客观反馈:如传感器数据、任务完成状态等。
  2. 人的主观判断:在人类参与的任务中,根据人类的评价和指示来调整计划。
  3. 辅助模型提供的反馈:通过模拟、预测或分析等手段生成的反馈,用于优化计划。

优势

  • 提高系统在不确定性和复杂环境中的适应性和鲁棒性。
  • 能够更好地应对突发情况和意外事件。

挑战

  • 需要实时处理和分析反馈数据,对系统的实时性要求较高。
  • 在高度动态和复杂的环境中,反馈可能不完全准确或存在延迟,增加了规划的难度。

我们希望智能体也拥有类似人类规划能力的思维模式,因此可以通过 LLM 提示工程,为智能体赋予这样的思维模式。

在智能体中,最重要的是让 LLM 具备这以下两个能力:

  1. 子任务分解;
  2. 反思和完善。

拆解子目标和任务分解方法

通过大模型提示工程,比如:ReAct、CoT 推理模式,可赋予智能体类似思维模式,精准拆解复杂任务,分步解决。

COT

原论文:https://arxiv.org/pdf/2201.11903.pdf

关于使用COT:在现在应该是大模型本身就应该具备的能力,只需要在Prompt 中添加了一句 “Let's Step by Step” ,将艰难的任务分解成更小,更简单的步骤。CoT将大型任务转化为多个可管理的任务,并对模型的思维过程进 行了阐释。

Self-consistency with CoT(CoT的自我一致性)

原论文:https://arxiv.org/pdf/2203.11171.pdf

一种CoT在实际应用中的方案是:Self-consistency with CoT(CoT的自我一致性)。简单地要求模型对同一提示进行多次回答,并将多数结果作为最终答案。 它是CoT(Chain of Thought)的后续方法。

TOT

原论文:https://arxiv.org/pdf/2305.10601.pdf

具体结构图如下:虚线左边为基本PromptCoT以及CoT Self Consisitency,虚线右边为ToT

从原始输入开始,在思维链的每一步,采样多个分支。逐渐形成树状结构,对每一个分支进行评估,然后在合适的分支上进行搜索。这就是ToT思维树的基本过程,进一步扩展CoT,在每一步都探索多种推理的可能性。它首先将问题分解为多个思考步骤,并在每个步骤中生成多个思考,从而创造一个树形结构。搜索过程可以是BFS(广度优先搜索)或DFS(深度优先搜索),每个状态由分类器(通过一个prompt)或少数服从多数的投票原则来决定。

任务分解可通过以下几种方式实现:

a. 给LLM一个简单的提示词“Steps for XYZ.\n1.”,“What are the subgoals for achieving XYZ?”;

b. 使用针对具体任务的指令,例如对一个写小说的任务先给出“Write a story outline.”指令;

c. 使用者直接输入;

GOT

原论文:https://arxiv.org/pdf/2308.09687

Graph of Thoughts:同时支持多链、树形以及任意图形结构的Prompt方案,支持各种基于图形 的思考转换,如聚合、回溯、循环等,这在CoT和ToT中是不可表达的。将复杂问题建模为操作图 (Graph of Operations,GoO),以LLM作为引擎自动执行,从而提供解决复杂问题的能力。某种程度上,GoT囊括了单线条的CoT和多分枝的ToT。

无论是CoT还是ToT,本质上是通过Prompt的精心设计,激发出模型原有的Metacognition,只是如何通过某条神经元的线索能更加精准的调动出大脑中最擅长Planning的部分

LLM+P

原论文:https://arxiv.org/pdf/2304.11477

通过借助一个外部的经典Planner来进行一个更加长序列的整体规划。这种方法利用规划域定义语言(Planning Domain Definition Language, PDDL)作为中间接口来描述规划问题。这是第一个将经典规划器的优点纳入 LLM 的框架。LLM+P 接收一个规划问题的自然语言描述,然后用自然语言返回一个解决该问题的正确(或最优)计划。LLM+P的做法是,首先将语言描述转换为用规划域定义语言(Planning Domain Definition Language)编写的文件,然后利用经典规划器快速找到一个解决方案,再将找到的解决方案翻译成自然语言。根本上讲, Planning Step是外包给外部工具的,当然也有一个前提:需要有特定领域的PDDL和合适的 Planner。

作者还定义了一组不同的基准问题,这些问题取自常见的规划场景。通过对这些基准问题的全面实验,作者发现LLM+P能够为大多数问题提供最优的解决方案,而 LLM 甚至不能为大多数问题提供可行的计划。

  1. LLM的强项: 大语言模型(如GPT、BERT等)在处理自然语言理解、生成以及处理非结构化问题上表现突出。它们可以推理、生成文本,并根据已有的上下文生成合理的方案,特别适合处理灵活且复杂的任务。

    但是,LLM在面对长序列规划问题时(需要多步骤的复杂推理和任务执行)存在一定的局限性。由于LLM是概率模型,随着推理步骤的增加,预测错误的累积会导致模型在长序列任务中的性能下降。

  2. Planner的强项: 经典规划器(如A*算法、基于图的规划器等)在处理结构化问题和长序列任务上具有优势。它们可以精确地规划和推理,确保在给定条件下找到最优的执行步骤,但它们往往需要明确的规则和约束来进行规划,对非结构化问题的处理能力较弱。

  3. LLM+P 的协作

    • LLM作为任务的高层次决策器,用于理解自然语言描述的复杂任务,识别任务的核心要素,并生成一个初步的任务框架或序列。这一过程涉及到从任务描述中推断出目标、子目标和可能的策略。
    • Planner则接管具体的规划细节部分,借助经典规划算法,完成复杂任务的长序列规划。在这个阶段,Planner会优化由LLM生成的高层次策略,确保每一步的合理性,并对长序列任务进行整体优化。

经典的Planner算法种类繁多,每种算法都有其特定的应用场景和优势:

  • A*、DijkstraBellman-Ford等算法适用于图搜索和路径规划问题。
  • RRTPRM在处理复杂、高维空间中的机器人运动规划方面表现出色。
  • HSPSTRIPSSAT规划器以及PDDL等用于处理更加复杂、基于任务执行的自动规划问题。

反思和完善

上述规划模块不涉及任何反馈,这使得实现解决复杂任务的长期规划变得具有挑战性。为了解决这一挑战,可以利用一种机制,使模型能够根据过去的行动和观察反复思考和细化执行计划。目标是纠正并改进过去的错误,这有助于提高最终结果的质量。同时反思任务是否已经完成,并终止任务。这在复杂的现实世界环境和任务中尤其重要,其中试错是完成任务的关键。这种反思或批评机制的两种流行方法包括 ReAct 和 Reflexion

ReAct(融合推理与执行的能力)

个人理解一下:CoT、ToT 都是作用在大模型本身的内在推理(Reason)过程上,而 ReAct 则是统筹整个系统,从推理过程,结合外部工具共同实现最终的目标(Reason + Action),通过结合推理(Reasoning)和行动(Acting)来增强推理和决策的效果。

  • 推理(Reasoning): LLM 基于「已有的知识」或「行动(Acting)后获取的知识」,推导出结论的过程。
  • 行动(Acting): LLM 根据实际情况,使用工具获取知识,或完成子任务得到阶段性的信息。

原论文:https://arxiv.org/pdf/2210.03629

以ReAct论文中那张图来看,可以更清晰的理解ReAct与CoT、ToT的区别:

对于ReAct这个框架可以理解为是一种结合了推理和行动的新型人工智能框架,主要用于增强AI系统在复杂环境中的决策能力和执行效率。ReAct框架的核心思想是通过实时检索相关信息和执行基于这些信息的行动,来辅助AI系统进行更准确的推理和决策。

为什么结合推理和行动,就会有效增强 LLM 完成任务的能力?

  • 仅推理(Reasoning Only):LLM 仅仅基于已有的知识进行推理,生成答案回答这个问题。很显然,如果 LLM 本身不具备这些知识,可能会出现幻觉,胡乱回答一通。
  • 仅行动(Acting Only): 大模型不加以推理,仅使用工具(比如搜索引擎)搜索这个问题,得出来的将会是海量的资料,不能直接回到这个问题。
  • 推理+行动(Reasoning and Acting) LLM 首先会基于已有的知识,并审视拥有的工具。当发现已有的知识不足以回答这个问题,则会调用工具,比如:搜索工具、生成报告等,然后得到新的信息,基于新的信息重复进行推理和行动,直到完成这个任务。其推理和行动的步骤会是如下这样:

在ReAct框架中,AI系统不仅依赖于其预训练的知识,还会在遇到新情况时,主动检索外部信息(如数据库、网络资源等),并将这些信息整合到其决策过程中。这一过程可以看作是AI系统在“思考”(Reasoning)和“行动”(Acting)之间的循环,其中:

  1. 思考(Reasoning):AI系统基于当前状态和目标,进行推理和规划,确定下一步需要采取的行动或需要检索的信息。
  2. 行动(Acting):根据推理结果,AI系统执行相应的行动,如检索信息、执行任务等。
  3. 反馈:AI系统根据行动的结果,更新其状态和知识,然后再次进入思考阶段,形成一个闭环。

ReAct框架的优势在于,它使AI系统能够适应不断变化的环境,处理之前未见过的情况,而不仅仅是依赖于预训练数据。通过实时检索和整合新信息,AI系统可以做出更准确、更灵活的决策,提高其在复杂任务中的表现。

Reflexion(动态记忆和自我反思)

Reflexion是一个框架,旨在通过赋予智能体动态记忆和自我反思能力来提升其推理技巧。该方法采用标准的强化学习(RL)设置,其中奖励模型提供简单的二元奖励,行动空间遵循ReAct中的设置,即通过语言增强特定任务的行动空间,以实现复杂的推理步骤。每执行一次行动后,智能体会计算一个启发式评估,并根据自我反思的结果,可选择性地重置环境,以开始新的尝试。启发式函数用于确定轨迹何时效率低下或包含幻觉应当停止。效率低下的规划指的是长时间未成功完成的轨迹。幻觉定义为遭遇一系列连续相同的行动,这些行动导致在环境中观察到相同的结果。详细可以参考【Reflextion论文总结】-CSDN博客

原论文:https://arxiv.org/pdf/2303.11366

记忆(Memory)

Memory在Agent系统中扮演重要角色,它存储和组织从环境中获取的信息,以指导未来行动

结构划分

结构上,内存模块通常包含短期记忆长期记忆两个部分。短期记忆暂存最近的感知,长期记忆存储重要信息供随时检索。

  • 短期记忆:指在执行任务的过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空;例如,记住一个电话号码直到拨打完毕。
  • 长期记忆:指长时间保留的信息(为Agent提供保留和召回长期信息的能力),一般是指外部知识库,通常用向量数据库来存储和检索。【长期记忆可以进一步分为显性记忆和隐性记忆。显性记忆,可以有意识地回忆和表达的信息,显性记忆又可以分为
    情景记忆(个人经历的具体事件)和语义记忆(一般知识和概念)。隐性记忆,这种记忆通常是无意识的,涉及技能和习惯,如骑自行车或打字。】

短期记忆和长期记忆的对比

特性短期记忆长期记忆
生命周期对话或任务期间,短期有效跨对话和任务,长期有效
存储位置内存、缓存、内存数据库、对话管理器上下文存储关系型数据库、NoSQL、向量存储、知识图谱、对象存储
访问速度快速访问(通常在内存中)稍慢(通常持久化存储在数据库)
数据类型当前上下文、临时信息用户偏好、历史记录、关系信息等
典型应用场景多轮对话中的上下文追踪跨会话的个性化服务、个性偏好、长期用户信息
示例技术Redis、内存数据库、对话管理上下文MySQL、MongoDB、FAISS、Neo4j、ES

格式划分

格式上,内存信息可以用自然语言表达,也可以编码为向量嵌入提高检索效率,还可以利用数据库存储,或组织为结构化列表表示内存语义。

  • 自然语言:内存信息有时可以用自然语言表达,这种方式对于人类易于理解和解释,但在机器处理时可能效率较低。
  • 向量嵌入:为了提高检索效率,内存信息常被编码为向量嵌入(Vector Embeddings)。向量嵌入能够将信息映射到高维空间中的点,通过计算点之间的距离来评估信息的相似度,从而实现高效的检索和匹配。
  • 数据库和结构化列表:对于需要精确管理和高效查询的信息,可以使用数据库或结构化列表来组织内存。这种方式不仅便于信息的存储和检索,还能够清晰地表达内存信息的语义关系。

操作划分

操作上,主要通过记忆读取、写入和反射三种机制与环境交互。读取提取相关信息指导行动,写入存储重要信息,反射总结见解提升抽象水平。

  • 记忆读取(Read):Agent通过读取内存中的信息来提取相关知识,以指导其行动。以确保Agent能够获取到最相关和最有用的信息。
  • 记忆写入(Write):当Agent从环境中获取到新信息或学习到新知识时,它需要将这些信息写入到内存中。写入操作可以是对短期记忆的更新,也可以是将重要信息存储到长期记忆中,以便将来使用。
  • 记忆反射(Reflection):记忆反射是Agent对内存信息进行总结和抽象的过程。通过反思过去的经验和知识,Agent可以提炼出更高层次的见解和规律,从而提升其决策能力和适应性。这种过程类似于人类的反思和学习过程,是Agent实现智能的关键环节之一。

工具(Tools) 

LLM 是数字世界中的程序,想要与现实世界互动、获取未知的知识,或是计算某个复杂的公式等,都离不开不工具。所以我们需要为智能体配备各种工具以及赋予它使用工具的能力。

为智能体配备工具 API,比如:计算器、搜索工具、日历、数据库查询工具、调用外部API获取额外信息、 也可以是函数(function)、软件开发工具包(sdk)、ChatPDF 解析文档插件、Midjourey 文生图多模态等。有了这些工具 API,智能体就可以是物理世界交互,解决实际的问题。

在智能体中,工具就是函数(Function),工具使用就是调用函数(Call Function)。在 LLM 中实现函数调用,使用到 LLM 的Function Calling能力。

Tools use

Function Calling 是一种实现大型语言模型连接外部工具的机制。通过 API 调用 LLM 时,调用方可以描述函数,包括函数的功能描述、请求参数说明、响应参数说明,让 LLM 根据用户的输入,合适地选择调用哪个函数,同时理解用户的自然语言,并转换为调用函数的请求参数(通过 JSON 格式返回)。调用方使用 LLM 返回的函数名称和参数,调用函数并得到响应。最后,如果需求,把函数的响应传给 LLM,让 LLM 组织成自然语言回复用户。

function calling 具体工作流程如下图所示:

不同 LLM 的 API 接口协议会有所不同,一文带你了解大模型——智能体(Agent)中详细展示了如何以OpenAI 的 API 协议为例,实现 Function Calling。下面简单的概述一下使用Function Calling需要的步骤:

1. 函数描述【工具声明】

假设你的函数(可以自行编码实现,也可以通过调用外部 API 实现)已经被实现,我们需要向 LLM 描述这个函数,函数描述的必备要素:

  • 函数名
  • 函数的功能描述
  • 函数的请求参数说明
  • 函数的响应参数说明(可选)
2. 调用 LLM 获得函数的请求参数【工具(集合)初始化】

Function Calling 是通过请求 LLM 的 chat API 实现的,在支持 Function Calling 模型的 chat API 参数中,会有一个 functions 参数 (或 tools,不同 LLM 的参数会有所不同) ,通过传入这个参数,大模型则会知道拥有哪些参数可供使用。并且会根据用户的输入,推理出应该调用哪些函数,并将自然语言转成函数的请求参数,返回给请求方。

3. 调用函数【执行工具】

调用方获得 LLM 返回的函数调用信息(函数名称和调用参数)后,自行调用函数,并得到函数执行的响应。如果有需要,还可以把函数执行的响应追加到 chat API 的对话中传给 LLM,让 LLM 组织成自然语言回复用户。

除了使用Function calling,还有MRKL、Toolformer、HuggingGPT等方法,详细可以参考——“AI”科普丨一文带你了解基于大模型的Agent。

行动(Action)

职责是依规划与记忆,使用工具执行具体行动。包括与外部互动或工具调用,实现输入至输出的转化。比如:智能客服回复、查询天气预报、预约会议等。

将抽象的决策转化为具体的行动,它就像是一个桥梁,连接了Agent的内部世界与外部环境。在执行任务时,需要考虑行动的目标、生成方式、应用范围以及可能产生的影响。

理想的行动应当是有目的,例如完成特定任务、与其他代理进行交流或者探索环境。行动的产生可以依赖于查询过去的记忆经验,或者遵循预设的计划。而行动的范围,不仅可以通过利用如API和知识库等外部工具来扩展,还需要发挥大型语言模型(LLM)的内在能力,例如规划、对话及理解常识等。架构就像PC的硬件,但仅依赖架构设计是不够的,我们还需要赋予Agent完成不同任务的能力,这些被视为“软件”资源。

在https://browse.arxiv.org/pdf/2308.11432论文中提出了几种方法,包括模型微调、提示工程和机械工程。其中提示工程应该是最为常见的一种形式了,我们常听说的提示词工程师就是在这个语境下的角色。

  1. 模型微调。使用特定任务数据对模型进行微调,提升相关能力。数据可以来自人类注释、LLM生成或实际应用中收集。这可以使Agent行为更符合人类价值观。
  2. 提示工程。通过自然语言描述向LLM灌输所需的能力,然后将描述作为提示指导Agent操作。这可以让Agent快速获得指定的软件能力。
  3. 机械工程。主要涵盖:
  • 众包法:整合多个Agent的见解,形成更新的集体响应。
  • 试错法:Agent先执行操作,根据效果调整行动,逐步优化。
  • 经验积累法:Agent通过不断探索积累经验,逐步提升软件能力。
  • 自我驱动法:Agent自主设置目标并在环境中不断探索,最终获得软件能力。

Agent的挑战

构建基于大型语言模型(LLM)的智能体是一个新兴领域,面临着众多挑战和限制。以下是几个主要的挑战及可能的解决方案:

角色适应性问题

智能体需要在特定领域内有效工作,对难以表征或迁移的角色,可以通过针对性地微调LLM来提高性能。这包括代表非常见角色或心理特征的能力提升。

上下文长度限制

有限的上下文长度限制了LLM的能力,尽管向量存储和检索提供了访问更大知识库的可能性。系统设计需要创新,以在有限的通信带宽内有效运作。

提示的鲁棒性

智能体的提示设计需要足够鲁棒,以防微小的变化导致可靠性问题。可能的解决方案包括自动优化调整提示或使用LLM自动生成提示。

知识边界的控制

控制LLM的内部知识,避免引入偏见或使用用户不知道的知识,是一个挑战。这要求智能体在处理信息时更加透明和可控。

效率和成本问题

LLM处理大量请求时的效率和成本是重要考量因素。优化 推理速度 和 成本效率 是提升多智能体系统性能的关键。

总的来说,基于LLM的智能体构建是一个复杂且多面的挑战,需要在多个方面进行创新和优化。持续的研究和技术发展对于克服这些挑战至关重要。

参考

https://www.51cto.com/article/766462.html

https://zhuanlan.zhihu.com/p/656683532

“AI”科普丨一文带你了解基于大模型的Agent

https://zhuanlan.zhihu.com/p/697706325

一文彻底理解大模型 Agent 智能体原理和案例_大模型agent-CSDN博客

Al Agent:大模型时代重要落地方向 - 大模型知识库|大模型训练|开箱即用的企业大模型应用平台|智能体开发|53AI

Agent : 一文读懂LLM Agent架构,详解Profile,Memory,Planning,Action模块作用-CSDN博客

“AI”科普丨一文带你了解基于大模型的Agent

LLM+P:赋予大语言模型最佳机器人规划能力-CSDN博客

Agent : 一文读懂LLM Agent架构,详解Profile,Memory,Planning,Action模块作用-CSDN博客

https://zhuanlan.zhihu.com/p/642360366

【Reflextion论文总结】-CSDN博客


 

相关文章:

浅谈Agent

目录 什么是大模型 Agent ? 大模型Agent 有哪些部分组成? 规划(Planning) Planning类型 不依赖反馈的计划 基于反馈的计划 拆解子目标和任务分解方法 COT TOT GOT LLMP 反思和完善 ReAct(融合推理与执行的能力) Reflexion(动态…...

绿色能源发展关键:优化风电运维体系

根据QYResearch调研团队最新发布的《全球风电运维市场报告2023-2029》显示,预计到2029年,全球风电运维市场的规模将攀升至307.8亿美元,并且在接下来的几年里,其年复合增长率(CAGR)将达到12.5%。 上述图表及…...

Sparrow系列拓展篇:对调度层进行抽象并引入IPC机制信号量

前言 在笔者更新完Sparrow手把手教学系列后,原本是不打算继续更新的。但关于Sparrow系列的读者又渐渐增多,作为作者,总感觉这个系列的文章还是稍微有些不圆满,恐怕多少会让读者有些意兴阑珊。 最近又恰好有一点空闲时间&#xf…...

天塌了!!!SQL竟也可以做预测分析?| 商品零售额的预测

目录 0 问题背景 1 数据准备 2 问题解决 2.1 模型构建 (1)符号规定 (2)基本假设 (3)模型的分析与建立 2.2 模型求解 3 小结 0 问题背景 1960年—1985年全国社会商品零售额如图1 所示 表1全国社…...

VSCode本地C/C++环境配置

基本环境下载 1.我的系统是windows,自己先下载安装VSCode,网上视频实在太多,我建议跟着B站视频操作。 2.下载安装好后你需要明白:VSCode只是一个编辑工具,我们要写C/C代码得编译运行,所以我们要配置它在w…...

【智能算法应用】淘金优化算法求解二维路径规划问题

摘要 本文基于智能算法的淘金优化算法(Gold Panning Optimization, GPO)求解二维路径规划问题。该算法模拟淘金过程中个体寻找最优金矿路径的行为,利用适应度函数优化路径规划,能够在复杂环境下实现从起点到目标点的最优路径搜索…...

Linux挖矿病毒(kswapd0进程使cpu爆满)

一、摘要 事情起因:有台测试服务器很久没用了,突然监控到CPU飙到了95以上,并且阿里云服务器厂商还发送了通知消息,【阿里云】尊敬的xxh: 经检测您的阿里云服务(ECS实例)i-xxx存在挖矿活动。因此很明确服务器中挖矿病毒…...

【java】ArrayList与LinkedList的区别

目录 1. 说明2. 内部实现2.1 ArrayList2.2 LinkedList 3. 性能特点3.1 插入和删除操作3.2 访问操作3.1 遍历操作 4. 使用场景5. 扩容机制6. 空间开销 1. 说明 1.Java中的ArrayList和LinkedList是两种常用的集合实现类,都属于Java集合框架的一部分,但它们…...

【LangChain系列6】【Agent模块详解】

目录 前言一、LangChain1-1、介绍1-2、LangChain抽象出来的核心模块1-3、特点1-4、langchain解决的一些行业痛点1-5、安装 二、Agent模块详解2-0、Agent核心思想——React介绍2-0-1、React的介绍以及由来2-0-2、伪代码介绍React的执行顺序 2-1、Agent介绍2-1、Self ask with se…...

JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用

JavaScript Cookie 与 服务器生成的 Cookie 的区别与应用 Cookie是一种甜点,同时也是web前端开发中一种非常常见且重要的技术,它用于在客户端和服务器之间存储和传递信息。用户身份验证、会话管理,还是用户个性化设置,都离不开Coo…...

深入了解Git、GitHub、GitLab及其应用技巧

在现代软件开发中,掌握版本控制系统(VCS)是至关重要的,其中Git是最流行的分布式版本控制工具之一。本文将详细介绍Git的用途及其基本操作,并深入探讨GitLab、GitHub、和Git Desktop的使用方法,同时总结Git的…...

ctfshow(316,317,318)--XSS漏洞--反射性XSS

反射型XSS相关知识 Web316 进入界面: 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题,看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台,…...

Visual Studio2022版本的下载与安装

1-首先打开微软的官网,下面就是链接 下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux免费下载 Visual Studio IDE 或 VS Code。 在 Windows、Mac 上试用 Visual Studio Professional 或企业版。https://visualstudio.microsoft.com/zh-hans/downloads/?…...

nodeJS程序如何引入依赖包

在 Node.js 运行时中引入依赖包通常通过以下步骤完成: 初始化项目: 首先,你需要初始化一个 Node.js 项目。如果你还没有 package.json 文件,可以使用 npm init 命令来创建它。运行以下命令并按提示输入相关信息: npm i…...

建网站怎么建?只需几个步骤

在这个网络飞速发展的时代,越来越多的人都渴望拥有自己的网站。然而,对于大多数新手来说,如何建立自己的网站可能充满了挑战。本文将为您详细介绍建网站的关键步骤,让您能够轻松搭建自己的网站。 选择适合的建站工具 虽然市面上有…...

机器学习课程总结(个人向)

前言 通过看课件PPT整理的笔记,没有截图 由于大部分内容已经耳熟能详了,故记录比较简略,只记录了一些概念和需要记忆的地方。 里面有较多的个人观点,未必正确。如有错误,还请各位大佬指正 正文 绪论 机器学习的定…...

数据分析-43-时间序列预测之深度学习方法GRU

文章目录 1 时间序列1.1 时间序列特点1.1.1 原始信号1.1.2 趋势1.1.3 季节性和周期性1.1.4 噪声1.2 时间序列预测方法1.2.1 统计方法1.2.2 机器学习方法1.2.3 深度学习方法2 GRU2.1 模拟数据2.2 数据归一化2.3 生成滞后特征2.4 切分训练集和测试集2.5 模型训练2.6 模型预测3 参…...

Pandas | 数据分析时将特定列转换为数字类型 float64 或 int64的方法

类型转换 传统方法astype使用value_counts统计通过apply替换并使用astype转换 pd.to_numericx对连续变量进行转化⭐参数:返回值:示例代码: isnull不会检查空字符串 数据准备 有一组数据信息如下,其中主要将TotalCharges、MonthlyC…...

Elasticsearch的自定义查询方法到底是啥?

Elasticsearch主要的目的就是查询,默认提供的查询方法是查询全部,不满足我们的需求,可以定义查询方法 自定义查询方法 单条件查询 我们查询的需求:从title中查询所有包含"鼠标"这个分词的商品数据 SELECT * FROM it…...

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法:需要安装Maven项目插件 输入​Maven Integration plugin​...

怎么更换IP地址 改变IP归属地的三种方法

要更换自己的IP地址,您可以按照以下步骤进行操作: 1. 了解IP地址类型:首先,您需要了解您当前使用的IP地址类型。IP地址分为静态IP和动态IP两种。静态IP地址是固定的,使用第三方软件比如S深度IP转换器;而使用…...

C#-异步查询示例

文章速览 CancellationTokenSource 概述代码示例 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ CancellationTokenSource 概述 使用System.Threading下的CancellationTokenSource类,进…...

设计模式之适配器模式(从多个MQ消息体中,抽取指定字段值场景)

前言 工作到3年左右很大一部分程序员都想提升自己的技术栈,开始尝试去阅读一些源码,例如Spring、Mybaits、Dubbo等,但读着读着发现越来越难懂,一会从这过来一会跑到那去。甚至怀疑自己技术太差,慢慢也就不愿意再触碰这…...

vue+exceljs前端下载、导出xlsx文件

首先安装插件 npm install exceljs file-saver第一种 简单导出 //页面引入 import ExcelJS from exceljs; import {saveAs} from file-saver; export default {methods: { /** 导出操作 */async handleExportFun() {let that this// 获取当前年月日 用户下载xlsx的文件名称设…...

算法定制LiteAIServer摄像机实时接入分析平台烟火检测算法的主要功能

在现代社会,随着人工智能技术的飞速发展,智能监控系统在公共安全领域的应用日益广泛。其中,烟火检测作为预防火灾的重要手段,其准确性和实时性对于减少火灾损失、保障人民生命财产安全具有重要意义。而算法定制LiteAIServer烟火检…...

用 Python 从零开始创建神经网络(二)

用 Python 从零开始创建神经网络(二) 引言1. Tensors, Arrays and Vectors:2. Dot Product and Vector Additiona. Dot Product (点积)b. Vector Addition (向量加法) 3. A Single Neuron with …...

嘉吉连续第七年亮相进博会

以“新质绿动,共赢未来”为主题,嘉吉连续第七年亮相进博会舞台。嘉吉带来了超过120款产品与解决方案,展示嘉吉在农业、食品、金融和工业等领域以客户为中心的创新成果。这些产品融合了嘉吉在相关领域的前瞻性思考,以及对本土市场的…...

设计模式之单列模式(7种单例模式案例,Effective Java 作者推荐枚举单例模式)

前言 在设计模式中按照不同的处理方式共包含三大类;创建型模式、结构型模式和行为模式,其中创建型模式目前已经介绍了其中的四个;工厂方法模式、抽象工厂模式、生成器模式和原型模式,除此之外还有最后一个单例模式。 单列模式介绍…...

多个服务器共享同一个Redis Cluster集群,并且可以使用Redisson分布式锁

Redisson 是一个高级的 Redis 客户端,它支持多种分布式 Java 对象和服务。其中之一就是分布式锁(RLock),它可以跨多个应用实例在多个服务器上使用同一个 Redis 集群,为这些实例提供锁服务。 当你在不同服务器上运行的…...

100种算法【Python版】第59篇——滤波算法之扩展卡尔曼滤波

本文目录 1 算法步骤2 算法示例2.1 示例描述2.2 python代码3 算法应用:机器人位姿估计扩展卡尔曼滤波(EKF)是一种处理非线性系统的状态估计算法。它通过线性化非线性系统来实现类似于线性卡尔曼滤波的效果。 1 算法步骤 (1)初始化 初始状态: x ^ 0 ∣ 0 \hat{x}_{0|0}...