【论文精读】A Survey on Large Language Model based Autonomous Agents

news2024/12/28 19:21:07

A Survey on Large Language Model based Autonomous Agents

  • 前言
  • Abstract
  • 1 Introduction
  • 2 LLM-based Autonomous Agent Construction
    • 2.1 Agent Architecture Design
      • 2.1.1 Profiling Module
      • 2.1.2 Memory Module
        • Memory Structures
        • Memory Formats
        • Memory Operations
      • 2.1.3 Planning Module
      • 2.1.4 Action Module
        • Action Goal
        • Action Production
        • Action Space
        • Action Impact
    • 2.2 Agent Capability Acquisition
      • Capability Acquisition with Fine-tuning
      • Capability Acquisition without Fine-tuning
  • 3 LLM-based Autonomous Agent Application
    • 3.1 Social Science
    • 3.2 Natural Science
    • 3.3 Engineering
  • 4 LLM-based Autonomous Agent Evaluation
    • 4.1 Subjective Evalution
    • 4.2 Objective Evaluation
  • 5 Related Surveys
  • 6 Challenges
    • 6.1 Role-playing Capability
    • 6.2 Generalized Human Alignment
    • 6.3 Prompt Robustness
    • 6.4 Hallucination
    • 6.5 Knowledge Boundary
    • 6.6 Efficiency
  • 7 Conclusion
  • 阅读总结

前言

一篇来自人大高瓴的综述,详细介绍了基于LLM的智能体的发展和应用,以及对未来的预测。作为AI当前最火的领域,智能体上手容易,操作简单,本质上就是框架+prompt,但是其效果惊艳,能够完成很多LLM无法完成的简单任务,其在未来一定大有可为。

Paperhttps://arxiv.org/pdf/2308.11432.pdf
Codehttps://github.com/Paitesanshi/LLM-Agent-Survey
FromarXiv 7 Sep 2023

Abstract

自主智能体一直都是学术界和工业界的重点研究焦点。先前的研究关注于具有有限知识的智能体在隔绝环境下的训练,这与人类学习方式大相径庭,因此很难像人类一样做决策。最近,LLMs通过获取的丰富web知识,在完成人类等级只能上展现出非凡的潜力。本文对该领域研究进行了全面的调查,作者首先讨论了基于LLMs的自主智能体的构建,提出一个大一统的框架,接着作者阐述了基于LLMs的自主智能体在社科、自然科学和工程领域的各种应用,最后作者深入研究了基于LLMs的自主智能体常用的评估策略。基于这些研究,作者也提出了这个领域的一些挑战和未来方向。

1 Introduction

自主智能体一直都被认为是解决AGI的有前途的方法,它有望通过自我指导的规划和行动来完成任务。但是之前的工作,智能体都在隔绝的环境中,基于简单启发式策略函数来学习,这与人类学习方式大相径庭,因此它们无法复刻人类的决策。
image.png
近年来,LLMs基于海量数据和模型参数获得了类人类智能,取得显著的成效。因此越来越多研究将LLMs作为中央控制器,来指导自主智能体获取人类决策的能力。其关键是为LLMs配备记忆和规划等关键能力,让它们像人类一样完成任务。
本文对基于LLMs的自主智能体提做了一个全面的综述,具体来说,作者将综述分为三个部分:构建,应用和评估。构建主要关注如何设计更好的智能体框架,以及激发和增强智能体完成不同任务的能力。应用主要关注智能体在社会科学、自然科学和工程上的应用。评估部分作者深入研究了评估基于 LLM 的自主代理的策略,重点关注主观和客观策略。
总的来说,本文对基于LLM的自主智能体领域进行了系统的回顾,建立了全面的分类法。主要关注:智能体创建,应用和评估。基于之前的研究,作者确定了领域的挑战,讨论了未来发展方向。

2 LLM-based Autonomous Agent Construction

我们期待基于LLM的自主智能体能够利用LLM的类人类能力来解决各种问题,为了实现这个目标,有两个重要的方面:

  1. 什么样的架构可以更好使用LLMs。
  2. 如何让智能体获取解决具体任务的能力。

作者首先整合了一个全面的统一框架,接着根据是否对LLM进行微调,总结智能体获取能力的策略。下面是详细的介绍。

2.1 Agent Architecture Design

image.png
LLMs在QA任务上展现巨大的潜力,但是自主智能体和QA又远远不同,因为它们需要根据指定的角色,像人一样自主感知环境并从环境中学习。为了建立LLM和智能体的桥梁,关键在于设计合理的智能体架构帮助LLM最大化其能力。本文提出的大一统框架如上图所示,由画像模块、记忆模块、规划模块和动作模块组成。画像模块用于识别智能体的角色,记忆模块和规划模块让智能体在动态环境中可以根据历史的行为计划未来的动作。动作模块将智能体的决策付诸于行动。画像模块影响记忆和规划模块,三者共同影响动作模块。

2.1.1 Profiling Module

自主智能体通过承担特定的角色来执行任务,而这一角色很大程度取决于具体的应用场景。那么如何为智能体创建特定的画像呢,现有的方法通常采用如下三种策略:

  1. 手动构建方法。手动为智能体赋予角色信息的方法灵活,但是劳动密集型。
  2. LLM生成方法。智能体的画像通过LLM进行生成得到,可以选择一些智能体的画像作为小样本。LLM生成方法可以大大节省时间,但是无法精准调控。
  3. 数据集对齐方法。智能体的画像从真实世界的数据集中获取,可以准确捕获真实人群的属性,从而让智能体的行为更能反映现实世界。

作者认为,将上述三种方法结合起来可能有额外的好处,比如数据对齐可以让画像更真实,再加上手动构建可以丰富画像的信息。画像模块作为智能体设计的基础,对智能体的记忆、规划和动作过程都有很大的影响。

2.1.2 Memory Module

记忆模块存储从环境中获取的信息,并利用已有的记忆帮助未来的动作。记忆模块帮助智能体积累经验,自我提升,从而以有效、合理、一致的方式行事。本小节关注于记忆模块的结构、格式和操作。

Memory Structures

基于LLM的自主智能体通常结合人类记忆的原理和机制。具体来说,人类有长期记忆和短期记忆,在智能体中,也有类似的机制,长期记忆类似于外部向量存储,智能体可以根据需求快速检索查询,短期记忆类似于受Transformer架构约束的上下文窗口的输入信息。下面将介绍两种智能体中常见的架构:

  • 统一记忆。仅仅模拟人类的短期记忆,通常通过上下文学习的方式将记忆信息直接写入prompt中。统一记忆的方法简单直接,同时又能增强智能体感知上下文行为和观察的能力。
  • 混合记忆。模拟了人类的长短期记忆方式,短期记忆包含在智能体的上下文中,长期记忆存储智能体过去的行为和想法,可以根据当前的事件进行检索。长期记忆常常用过向量数据库实现。长期记忆提供稳定的知识,短期记忆则允许灵活的规划。在实践中,整合长短期记忆可以增强智能体的长期推理额积累经验的能力,这在复杂环境中完成任务至关重要。

只有长期记忆的方法很少出现在文献中,因为智能体在与环境交互的过程中总是需要短期记忆捕获动作之间的连续性。

Memory Formats

从格式上来看,记忆又可以分为自然语言记忆和embedding记忆等,下面进行列举:

  • 自然语言:这种形式的记忆存储了智能体的行为和观察等,它的好处有灵活易懂,丰富语义可以指导智能体。
  • embedding:记忆信息编码为embedding向量,这种方式可以提升记忆检索和阅读效率。
  • 数据库:记忆信息存储在数据库中,智能体可以全面、高效操纵记忆。
  • 结构化列表:这种形式的记忆信息被组织成列表,可以高效简洁表达语义。

上面只是有代表性的记忆形式,还有很多其它的形式。不同的记忆形式有自己优势的场景。

Memory Operations

记忆模块通过与环境交互去获取、积累和使用,这一般涉及三个操作:记忆存储,记忆读取和记忆反思。

  • 记忆读取:从记忆中提取有用信息增强智能体行动。关键在于如何提取有用信息,一般最近的、相关的、重要的信息会被提取。
  • 记忆存储:存储通过环境交互获得的信息。这要求信息是有价值的,能够为未来检索丰富的记忆奠定基础。该部分的关键在于如何存储与现有记忆相似的信息(去重),以及内存到达存储上限,如何删除信息(溢出)。
  • 记忆反思:让智能体根据经验信息进行总结,得到更广泛和抽象的见解,这个过程的目标是为智能体提供独立总结和推断更抽象、复杂和高级信息的能力。

传统LLM和Agent的一个显著区别是后者必须在动态环境中学习和完成任务的能力,这个区别的体现主要在记忆模块和规划模块。

2.1.3 Planning Module

当面对复杂 的任务时,人类会倾向将复杂任务分解为多个简单的子任务并单独解决。规划模块即赋予智能体这种能力。具体来说,作者根据是否接受反馈将现有研究分类如下:

  • 没有反馈的规划。智能体执行任务不会接收到反馈。

image.png

  • 单一路径推理。一个任务会分解成多个中间步骤,以级联方式连接。
  • 多路径推理。生成计划的推理步骤被组织成树状结构。它和单一路径推理的区别见上图。
  • 外部规划。LLM对特定领域生成计划仍然具有挑战性。为应对这种挑战,研究人员求助于外部工具,它可以识别出最优的计划。
  • 有反馈的规划。现实场景中,有反馈的计划才是更合理的。因为任务可能会在执行过程中发生改变(如出错),这就需要反馈来修改计划。
    • 环境反馈。从客观世界或者虚拟环境中获取。
    • 人类反馈。直接与人类交互,可以让智能体符合人类的偏好,缓解幻觉问题,从而实现更明智的规划和推理。
    • 模型反馈。模型内部也可以设计反馈机制,比如自我优化模块,通过与LLMs不断交互来提高输出的质量直到达到要求。

总的来说,没有反馈的规划只能适用于某些简单的任务,而有反馈的规划需要更为细致的设计,但是能够解决更多复杂的任务。

2.1.4 Action Module

动作模块用于将智能体的决策转换为具体的结果,直接与环境交互。它受到画像,记忆和规划模块的影响。本节从动作目标,动作产生,动作空间,动作影响四个方面对动作模块进行介绍。

Action Goal

智能体可以执行具有任何目标的动作。这样的目标有:

  • 完成任务。
  • 沟通。
  • 环境探索。
Action Production

与传统的LLM不同,智能体会通过不同的策略和来源来采取动作。有两种常见的动作产生策略:

  • 通过记忆采取动作。智能体根据存储的记忆信息采取相关动作。
  • 通过计划采取动作。智能体严格遵循计划采取动作。
Action Space

动作空间是指智能体可以执行的一组可能的动作。这些动作主要分为两类,外部工具和LLMs内部知识。

  • 外部工具。有些领域的任务需要专家知识,此外LLMs容易出现幻觉问题,因此调用外部工具执行动作可以增强智能体的能力。这些外部工具包括:
    • APIs。利用外部的API来补充和扩展动作空间。
    • 数据库和知识库。连接到外部数据库或知识库可以帮助智能体获取特定领域的信息以生成更合理的动作。
    • 外部模型。利用外部模型来扩大动作空间的范围。
  • 内部知识。除了利用外部的知识,智能体可以依靠智能体内部的知识来指导它们采取动作。这些内在的知识基于LLM一些关键的能力:
    • 规划能力。LLM可以自己对任务进行分解。
    • 对话能力。LLM通常可以产生高质量的对话来采取行动。
    • 常识理解能力。LLM可以很好理解人类的常识并做出类似人类的决策。
Action Impact

动作执行后会产生很多的结果。这些结果可以分为如下类别:

  • 环境变化。
  • 改变内部状态。
  • 触发新的动作。

2.2 Agent Capability Acquisition

上面的框架相当于智能体的硬件,但是仅仅依靠硬件资源不足以实现有效的任务性能,因为智能体可能缺乏必要的特定任务的能力、技能和经验,这些可以视作软件资源。为了让智能体配备这些资源,主要根据是否微调分为两种策略。

Capability Acquisition with Fine-tuning

增强智能体完成任务能力的直接方法是在任务相关的数据集上进行微调。这些方法如下:

  • 在人工标注的数据集上微调。需要人工标注,成本高昂,但质量高。
  • 在LLM生成的数据集上微调。质量略差,但成本低,标注数量多。
  • 在真实世界数据集上微调。从真实世界中获取数据(比如互联网数据爬虫)。噪声多,但真实。

Capability Acquisition without Fine-tuning

image.png
在智能体时代,模型的能力可以通过模型微调,prompt工程和机制工程获取。机制工程是一个宽泛的概念,涉及开发专门模块、引入新的工作规则以及其它增强智能体能力的策略。上图是模型在获取能力上策略的转变过程。

  • Prompt工程:以自然语言的形式与LLM进行互动,从而增强其能力。常见的有上下文学习,此外还有CoT。
  • 机制工程:这是一种独特的增强智能体能力的策略,常见方法如下:
    • Trial-and-error。智能体首先执行一个动作,然后预定义的批判者会对动作进行评估,如果不满意,智能体会根据评估结果生成响应。
    • Crowd-sourcing。利用群体智慧来增强智能体的能力。
    • Experience Accumulation。将成功完成任务的动作保存下来,从而累积经验。
    • Self-driven Evolution。智能体通过自主设定目标,根据环境探索和接受奖励函数反馈来逐步提高能力。通过这种方式,智能体可以根据自己的喜好获取知识并发展能力。

微调的方式虽然能够通过调整参数来提高智能体的能力,但是只能应用在开源的LLM,无需微调的方式通常基于精细的Prompt工程和机制工程来增强智能体。它们不受开源闭源的限制,但是受到上下文窗口的限制。
上面这些小节就是基于LLM的智能体构建细节,主要在于架构和能力获取两个方面。相关的工作见下表。
image.png

3 LLM-based Autonomous Agent Application

基于LLM的智能体在很多领域展现出显著的潜力。本节基于前面的研究将应用场景分类为三种:社会科学,自然科学和工程。
image.png

3.1 Social Science

社会科学致力于研究社会以及社会人与人之间的关系。基于LLM的智能体可以利用其出色的人类理解能力、思考和任务解决能力来促进这个领域的发展。下面是几个典型的领域:

  • 心理学。智能体可以通过模拟实验来提供心理健康的支持。实验表明更好的模型往往能提供更真实的结果,可以帮助用户应对焦虑、抑郁等问题,但是都有可能会产生有害信息。
  • 政治学与经济学。基于LLM的智能体也可以用于学习政治学与经济学, 通过解析言论的结构或者赋予他们特定的特征(天赋,偏好,个性),以模拟人类的行为。
  • 模拟社交。基于LLM的智能体可以模拟在线社区,模拟虚拟城镇中人类的生活,或者模拟课堂场景等。
  • 法律体系。基于LLM的智能体可以为法律决策过程提供更明智的判断,有的工作采用多语言模拟多个法官,通过收集不同意见,以投票机制整合。为了减少LLM的幻觉问题,ChatLaw支持数据库和关键字检索来缓解。
  • 研究助手。基于LLM的智能体可以协助科研人员完成各种任务, 如文章摘要,提取关键字等,或者充当写作助理。

3.2 Natural Science

在自然科学中,基于LLM的智能体也有很多的应用:

  • 文档与数据管理。自然科学领域通常涉及大量文献的收集、组织和整合,需要耗费大量的时间和人力,而智能体利用自己强大的理解能力和文本处理能力,可以回答问题和制定实验计划。
  • 实验助手。智能体拥有独立进行实验的能力。现有的工作包括利用智能体设计实验计划,提供实验的建议等。
  • 自然科学教育。由于基于LLM的智能体可以和人类流畅交流,因此通常被用来开发基于智能体的教育工具。比如帮助学生理解学习数学、提高学生编程水平等。对于幻觉问题,可以采用丰富的prompt或者检索解决。

3.3 Engineering

基于LLM的智能体在工程研究和应用上也展现了强大的潜能:

  • 土木工程。智能体可以帮助设计和优化复杂的结构。
  • 计算机科学与软件工程。智能体提供了自动化编码、测试、调试和文档生成的潜力。比如设计端到端的框架进行通信和协作,或者抽象出不同角色监督代码生成过程来提高输出代码的质量。
  • 工业自动化。工业自动化领域,可以利用智能体实现生成过程中的智能规划和控制。
  • 机器人与人工智能。在该领域,重点是增强智能体在具体环境中进行规划、推理和协作的能力。

为了推动基于LLM的智能体的应用,研究人员还引入了开源库,帮助其他开发人员根据自己的需求快速实现和评估智能体。例如开源框架LangChain,可以自动编码、测试、调试和文档生成。基于语言模型和数据源集成,LangChain通过自然语言通信和多角色智能体协作来实现高效的软件开发。此外还有自动化智能体AutoGPT、通过对话完成任务的WorkGPT,利用大语言模型的能力,再加上爬虫获取的外部知识来总结和汇总摘要。
当然,基于智能体的LLM虽然支持上面的一系列应用,但也会带来一定的风险与挑战。一方面,大模型本身会易出现幻觉问题,导致提供错误的答案,因此用户必须采取适当的措施。另一方面,基于LLM的智能体可能会被恶意使用,比如发展化学武器。需要采取适当的安全措施。
image.png

4 LLM-based Autonomous Agent Evaluation

有两种常见的评估策略,即第三节图中的客观评估和主观评估。

4.1 Subjective Evalution

主观评估主要基于人类的判断,通常适用于没有评估数据集或者难以量化的场景。下面是两种常用的主观评估策略:

  • 人类标注。让人类评测者直接对不同智能体的输出结果进行评估或排名。
  • 图灵测试。在该方法中,人类评测者需要区分智能体和真实人类的产生结果。如果在给定任务上无法区分,则表明智能体可以在该任务上达到类似人类的表现。

基于LLM的智能体通常设计用于服务人类,因此主观评估方法非常重要,但是这种方法仍需面对高昂成本、低效和人口偏差。为了解决这个问题,很多研究者采用LLM作为主观评估的代理,随着LLM模型能力的提升, 这样的评估策略会越来越可信可用。

4.2 Objective Evaluation

客观评估是采用定量指标来评估基于LLM的智能体的能力。客观评估旨在为智能体提供具体的、可测量的见解。它包括三个重要方面:评估指标、协议和基准。
常见的评估指标如下:

  • 任务成功指标。
  • 人类相似度度量。
  • 效率指标。

如何利用这些评估指标也很重要,通常有如下的评估协议:

  • 真实世界模拟。智能体在游戏或者交互式模拟器等沉浸环境进行评估。
  • 社会评估。利用指标来估计基于模拟社会中智能体交互的社会智能。
  • 多任务评估。采用不同领域的任务来评估智能体。
  • 软件测试。让智能体执行软件测试任务来评估智能体。

给定指标和协议,剩下的关键就是采用合适的基准执行评估。过去常用ALFWorld、IGLU和Mincraft等模拟环境作为评估的benchmark,现有的benchmark有AgentBench,它提供了一个全面的框架,用于评估跨环境智能体。SocKET评估LLM社交能力,AgentSims评估基于LLM的智能体在交互环境的有效性。WebShop用于评估基于LLM的智能体的产品搜索和检索能力。此外还有多个benchmark,详见原文。
客观评估采用不同的指标对基于LLM的智能体的能力进行评估,虽然无法完美衡量,但是也是对主编评估的重要补充。image.png

5 Related Surveys

随着大语言模型的蓬勃发展,出现了大量的总数,提供各个方面的见解,比如有介绍LLM的背景和发展,LLM在下游任务上的应用与挑战,LLM的幻觉问题,LLM的对齐方法,LLM推理能力的探索等等,但是一直没有基于LLM的Agent的相关综述。本文整理了超过百篇基于LLM的智能体的相关著作,涵盖其构建、应用和评估。

6 Challenges

虽然基于LLM的智能体取得了很多显著的成功,但是也有很多局限性和挑战。

6.1 Role-playing Capability

角色扮演在智能体对话中至关重要,但是LLM会很难扮演不熟悉的角色(即在预训练过程中很少见的)。此外智能体很难模拟人类的认知心理,导致对话场景缺乏自我意识。潜在的解决方法是微调,但是也很难保证微调后其它角色扮演仍表现良好。此外还有设计量身定制的框架,但是这样的设计空间太大,很难找到最佳。

6.2 Generalized Human Alignment

传统的LLM通过微调来达到符合人类的价值观,但是现有的LLM都是与广义的人类价值观对齐,需要有针对不同场景的人类价值观对齐,比如消极的人类价值观,通过研究这个可以帮助阻止现实中存在的类似问题。可以尝试的方向是设计有趣的Prompt。

6.3 Prompt Robustness

为了确保智能体的合理行为,设计者通常设计不同的模块到LLM中(包含大量的Prompt)来促进一致的操作和有效的沟通。但是Prompt的方式缺乏稳健性,可能会影响别的模块,可行的解决方案有:反复试错,或者GPT自行生成。

6.4 Hallucination

幻觉对LLM提出了根本的挑战,为了解决这个问题,一种可能的方法是讲人类校正反馈纳入到人类与智能体交互的循环中。

6.5 Knowledge Boundary

基于LLM的智能体的一个重要的应用是模拟人类行为。但是LLM通常有强大的知识储备,因此在做判断的时候通常会用到广泛的知识,与真实人类做决策行为不同。如何约束它使用这些知识也是未来的方向。

6.6 Efficiency

LLM推理速度较慢,如果采用密钥部署多个智能体会显著增加时间成本。

7 Conclusion

本文系统总结了基于LLM的智能体现有的研究,从构建、应用和评估三个方面进行介绍和总结。最后作者还提出这个领域的几点挑战,预期该领域的未来方向。

阅读总结

一篇总结非常到位的基于LLM智能体的综述,总结了从22年底到23年9月近百篇智能体的工作,当然后序还是有很多衍生的工作产生,毕竟这个领域实在是太火了。在我看来,真正的智能体就是文章中所提到的四合一,即画像、规划、记忆和动作。画像限定了智能体的角色,也就限定了智能体的活动空间和范围,规划是针对特定任务所设计的步骤,记忆是便于复用以前的经验,而动作是执行计划,是真正与环境的交互,人在执行任务的时候也是同样的过程,首先人本身有自己的角色,是老师、学生还是设计师等等,有了角色,面对当前任务才会采取特定角色的规划策略,执行任务时也会根据自身的技能与环境交互,在交互过程中复用以前的知识。这样的智能体才真正像人类一样行动,才是真正意义上的智能体。
那么对于火热的智能体领域,文章中也提到了未来的发展与挑战,当前很多大公司已经在制定智能体的框架,那么小的研究团队能做的也就是找到特定的应用场景做应用,比如机器人,这就相当于给机器人加上大脑。或者从智能体本身存在的问题出发,设计出通用的方法,比如怎样减少幻觉,如何合理规划,如何更好复用记忆,如何减少通信次数提高效率。面对这一新兴的领域,有许许多多的工作值得我们去做。

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

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

相关文章

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域并放大,Kotlin(3)

Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域并放大,Kotlin(3) 在文章2 Android Canvas图层saveLayer剪切clipPath原图addCircle绘制对应圆形区域,Kotlin(2)-CSDN博客 的基础上&…

上海雏鸟科技无人机灯光秀跨年表演点亮三国五地夜空

2023年12月31日晚,五场别开生面的无人机灯光秀跨年表演在新加坡圣淘沙、印尼雅加达、中国江苏无锡、浙江衢州、陕西西安等五地同步举行。据悉,这5场表演背后均出自上海的一家无人机企业之手——上海雏鸟科技。 在新加坡圣淘沙西乐索海滩,500架…

【Python学习】Python学习11-元组

目录 【Python学习】Python学习11-元组 前言创建语法创建语法特殊形式访问元组操作元组元组运算符元组内置函数Python列表函数&方法参考 文章所属专区 Python学习 前言 本章节主要说明Python的Python 的元组与列表类似,不同之处在于元组的元素不能修改。通过小…

我的 AI 成长星球,邀请你加入

大家好啊,我是董董灿。 2023年终总结时我这个小白坚持写作一整年,赚了多少?提到了一点,2024希望自己创建一个免费星球。 其实一直就想弄一个高质量的 AI 知识交流平台,方便大家一起交流和学习,同时提高对 …

Python虚拟环境轻松配置:Jupyter Notebook中的内核管理指南

问题 在Python开发中,一些人在服务器上使用Jupyter Notebook中进行开发。一般是创建虚拟环境后,向Jupyter notebook中添加虚拟环境中的Kernel,后续新建Notebook中在该Kernel中进行开发,这里记录一下如何创建Python虚拟环境以及添…

关于Vue前端接口对接的思考

关于Vue前端接口对接的思考 目录概述需求: 设计思路实现思路分析1.vue 组件分类和获取数值的方式2.http 通信方式 分类 如何对接3.vue 组件分类和赋值方式, 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your p…

C/C++调用matlab

C/C调用matlab matlab虽然可以生成C/C的程序,但其能力很有限,很多操作无法生成C/C程序,比如函数求解、优化、拟合等。为了解决这个问题,可以采用matlab和C/C联合编程的方式进行。使用matlab将关键操作打包成dll环境,再…

仿蓝奏云网盘 /file/list SQL注入漏洞复现

0x01 产品简介 仿蓝奏网盘是一种类似于百度网盘的文件存储和共享解决方案。它为用户提供了一个便捷的平台,可以上传、存储和分享各种类型的文件,方便用户在不同设备之间进行文件传输和访问。 0x02 漏洞概述 仿蓝奏云网盘 /file/list接口处存在SQL注入漏洞,登录后台的攻击…

代码随想录day20 开始二叉搜索树

654.最大二叉树 题目 给定一个不含重复元素的整数数组。一个以此数组构建的最大二叉树定义如下: 二叉树的根是数组中的最大元素。左子树是通过数组中最大值左边部分构造出的最大二叉树。右子树是通过数组中最大值右边部分构造出的最大二叉树。 通过给定的数组构…

零基础学习数学建模——(二)数学建模的步骤

本篇博客将详细介绍数学建模的步骤。 文章目录 引例:年夜饭的准备第一步:模型准备第二步:模型假设第三步:模型建立第四步:模型求解第五步:结果分析第六步:模型检验第七步:模型应用及…

Kubernets(K8S)启动和运行01 快速入门

简介 Kubernetes is an open source orchestrator for deploying containerized applications. It was originally developed by Google, inspired by a decade of experience deploying scalable, reliable systems in containers via application-oriented APIs. Kubernete…

C语言基础语法跟练 day2

题源&#xff1a;牛客网 16、BoBo写了一个十六进制整数ABCDEF&#xff0c;他问KiKi对应的十进制整数是多少。 #include <stdio.h>int main() { //创建变量char arr[] "ABCDEF";int i;int sum0,c; //依次转换十六进制为十进制for(i0; arr[i]!\0; i){char b …

SENet实现遥感影像场景分类

今天我们分享SENet实现遥感影像场景分类。 数据集 本次实验我们使用的是NWPU-RESISC45 Dataset。NWPU Dataset 是一个遥感影像数据集&#xff0c;其中 NWPU-RESISC45 Dataset 是由西北工业大学创建的遥感图像场景分类可用基准&#xff0c;该数据集包含像素大小为 256*256 共计 …

CentOS本地部署SQL Server数据库无公网ip环境实现远程访问

文章目录 前言1.安装GeoServer2. windows 安装 cpolar3. 创建公网访问地址4. 公网访问Geo Servcer服务5. 固定公网HTTP地址 前言 GeoServer是OGC Web服务器规范的J2EE实现&#xff0c;利用GeoServer可以方便地发布地图数据&#xff0c;允许用户对要素数据进行更新、删除、插入…

23种设计模式精讲,配套23道编程题目 ,支持 C++、Java、Python、Go

关于设计模式的学习&#xff0c;大家应该还是看书或者看博客&#xff0c;但却没有一个边学边练的学习环境。 学完了一种设计模式 是不是应该去练一练&#xff1f; 所以卡码网 针对 23种设计&#xff0c;推出了 23道编程题目&#xff0c;来帮助大家练习设计模式&#xff0c;地…

oracle基本用户管理和权限分配

1.用户与模式的关系&#xff0c;一一对应的关系 2.创建与管理用户 2.1创建用户语法 CREATE user wdf IDENTIFIED by tiger--创建用户wdf,密码tiger DEFAULT tablespace users--用户的默认表空间 quota 10M on users;--在表空间的占用最大空间 注意&#xff1a;用户创建以后…

C练习——N个水手分椰子

题目&#xff1a; 五个水手在岛上发现一堆椰子&#xff0c;先由第1个水手把椰子分为等量的5堆&#xff0c;还剩下1个给了猴子&#xff0c;自己藏起1堆。然后&#xff0c;第2个水手把剩下的4堆混合后重新分为等量的5堆&#xff0c;还剩下1个给了猴子&#xff0c;自己藏起1堆。以…

2023-12-30 买卖股票的最佳时机 II和跳跃游戏以及跳跃游戏 II

122. 买卖股票的最佳时机 II 思路&#xff1a;关键点是每一次利用峰值来计算【画图好理解一点&#xff0c;就是计算陡坡的值】&#xff01;每一次累加和的最大! 或者可以这样理解&#xff0c;把利润划分为每天的&#xff0c;如假如第 0 天买入&#xff0c;第 3 天卖出&#xf…

Mybatis之逆向工程

目录 一、逆向工程概述 二、逆向工程的实现 1、创建一个java工程 2、 第一步&#xff1a;mapper生成配置文件&#xff1a; 3、第二步&#xff1a;使用java类生成mapper文件&#xff1a; 4、第三步&#xff1a;拷贝生成的mapper文件到工程中指定的目录中 5、第四步Mapper接…

控制el-table的列显示隐藏

控制el-table的列显示隐藏&#xff0c;一般的话可以通过循环来实现&#xff0c;但是假如业务及页面比较复杂的话&#xff0c;list数组循环并不好用。 在我们的页面中el-table-column是固定的&#xff0c;因为现在是对现有的进行维护和迭代更新。 对需要控制列显示隐藏的页面进…