浅谈Agent

news2024/11/26 9:47:26

目录

什么是大模型 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博客


 

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

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

相关文章

NAT网络工作原理和NAT类型

NAT基本工作流程 通常情况下,某个局域网中,只有路由器的ip是公网的,局域网中的设备都是内网ip,内网ip不具备直接与外部应用通信的能力。 处于内网的设备如何借助NAT来实现访问外网的应用? 对于开启了NAT功能的局域网…

Jenkins插件使用问题总结

Git Push插件 插件介绍 主要是用于git推送代码到远程仓库中使用,插件地址 pipeline中使用 官方说明中只有一句代码gitPush(gitScm: scm, targetBranch: env.BRANCH_NAME, targetRepo: origin) 流水线语法中也做的不齐全所以一开始我老是设置错,导致代…

GPT-5 终于来了 —— 人们的预期与现实

高智慧人工智能的两面性,利用AI和被AI利用 前言:人工智能的热度持续升温,似乎已无处不在,但大家对它的感知却并不显著。这种状况有点像美国 2024 年的总统大选,投票前人们彼此不清楚支持谁,直到最终计票才发…

微服务透传日志traceId

问题 在微服务架构中,一次业务执行完可能需要跨多个服务,这个时候,我们想看到业务完整的日志信息,就要从各个服务中获取,即便是使用了ELK把日志收集到一起,但如果不做处理,也是无法完整把一次业…

Matlab实现鲸鱼优化算法优化随机森林算法模型 (WOA-RF)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鲸鱼优化算法(Whale Optimization Algorithm, WOA)是受座头鲸捕食行为启发而提出的一种新型元启发式优化算法。该算法通过模拟座头鲸围绕猎物的螺旋游动和缩小包围圈的方式,在…

【学习笔记】网络设备(华为交换机)基础知识 10 —— 信息中心 ① 简介

提示:学习华为交换机信息中心的概述( 包括信息中心的概念、功能、以及信息的分类、分级、和输出 ) ;还包括信息中心常用的命令 ( 使能信息中心、命名信息通道、配置信息过滤、清除统计信息、查看信息中心相关信息的命令…

【unity】unity2021 URP管线下 SceneView没有MipMaps选项了怎么办?扩展Rendering Debugger工具

一、前言 之前项目 Unity打开后 Scene窗口 有一个MipMaps选项模式, 可以查看哪些贴图正常距离下发红 ,说明用不到那么大,可以缩一下尺寸。 但 新的项目在Unity2021上,用了URP, 就没见过这个选项。 查了一篇介绍详细的…

前端代码分析题(选择题、分析题)——JS事件循环分析、await和作用域分析

Promise其实也不难-CSDN博客 Promise 的执行顺序分析 Promise 对象的执行是异步的,但其执行器函数内部的代码是立即执行的,而 then方法注册的回调函数则是在 Promise 状态改变后执行的。 const myPromise new Promise((resolve, reject) > {conso…

DAY24|回溯算法Part03|LeetCode:93.复原IP地址、78.子集、90.子集II

目录 LeetCode:93.复原IP地址 基本思路 C代码 LeetCode:78.子集 基本思路 C代码 LeetCode:90.子集II 基本思路 C代码 通过used实现去重 通过set实现去重 不使用used和set版本 LeetCode:93.复原IP地址 力扣代码链接 文字讲解:LeetCode:93.复原IP地…

ts 将100个元素,每行显示9个元素,然后显示出所有行的元素,由此我们延伸出一个项目需求的简单算法实现。

1、先看一下baidu ai出的结果&#xff1a; 2、我们将上面的代码修改下&#xff0c;定义一个数组&#xff0c;然后记录每行的行号及相应的元素&#xff1a; <template><div>console</div> </template> <script setup lang"ts"> import …

17、论文阅读:VMamba:视觉状态空间模型

前言 设计计算效率高的网络架构在计算机视觉领域仍然是一个持续的需求。在本文中&#xff0c;我们将一种状态空间语言模型 Mamba 移植到 VMamba 中&#xff0c;构建出一个具有线性时间复杂度的视觉主干网络。VMamba 的核心是一组视觉状态空间 (VSS) 块&#xff0c;搭配 2D 选择…

用 Python 从零开始创建神经网络(三):添加层级(Adding Layers)

添加层级&#xff08;Adding Layers&#xff09; 引言1. Training Data2. Dense Layer Class 引言 我们构建的神经网络变得越来越受人尊敬&#xff0c;但目前我们只有一层。当神经网络具有两层或更多隐藏层时&#xff0c;它们变成了“深度”网络。目前我们只有一层&#xff0c…

推荐一款功能强大的视频修复软件:Apeaksoft Video Fixer

Apeaksoft Video Fixer是一款功能强大的视频修复软件&#xff0c;专门用于修复损坏、不可播放、卡顿、画面失真、黑屏等视频问题。只需提供一个准确且有效的样本视频作为参考&#xff0c;该软件就能将受损视频修复到与样本视频相同的质量。该软件目前支持MP4、MOV、3GP等格式的…

Web前端开发--HTML语言

文章目录 前言1.介绍2.组成3.基本框架4.常见标签4.1双标签4.1.1.标题标签4.2.2段落标签4.1.3文本格式化标签4.1.4超链接标签4.1.5视频标签4.1.6 音频标签 4.2单标签4.2.1换行标签和水平线标签4.2.2 图像标签 5.表单控件结语 前言 生活中处处都有网站&#xff0c;无论你是学习爬…

[ DOS 命令基础 2 ] DOS 命令详解-网络相关命令

&#x1f36c; 博主介绍 &#x1f468;‍&#x1f393; 博主介绍&#xff1a;大家好&#xff0c;我是 _PowerShell &#xff0c;很高兴认识大家~ ✨主攻领域&#xff1a;【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 &#x1f389;点赞➕评论➕收藏 养成习…

gitlab无法创建合并请求是所有分支都不显示

点击Merge Requests ------> New merge request 创建新的合并请求时&#xff0c;在Source branch和Target branch中一个分支都不显示 排查思路&#xff1a; 1.怀疑是权限问题。 发现只有我的一个账号出现&#xff0c;检查了账号的权限&#xff0c;尝试了master、develop角色…

【温度表达转化】

【温度表达转化】 C语言代码C代码Java代码Python代码 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; 利用公式 C5∗(F−32)/9 &#xff08;其中C表示摄氏温度&#xff0c;F表示华氏温度&#xff09; 进行计算转化。 输出 输出一行&#x…

「QT」几何数据类 之 QPoint 整型点类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…

[Linux]:高级IO

1. IO 理解 1.1 IO 的基本概念 I/O即输入/输出&#xff08;input/output&#xff09;&#xff0c;是计算机系统中极为关键的操作环节。 在经典的冯诺依曼体系结构框架下&#xff0c;其核心在于数据的传输流向界定了输入与输出的概念。具体而言&#xff0c;当把数据从诸如键盘…

【GeoJSON在线编辑平台】(2)吸附+删除+挖孔+扩展

前言 在上一篇的基础上继续开发&#xff0c;补充上吸附功能、删除矢量、挖孔功能。 实现 1. 吸附 参考官方案例&#xff1a;Snap Interaction 2. 删除 通过 removeFeature 直接移除选中的要素。 3. 挖孔 首先是引入 Turf.js &#xff0c;然后通过 mask 方法来实现挖孔的…