多Agent框架及协作机制详解
文章目录
- 一、多智能体系统介绍
- 1.1 多智能体系统定义
- 1.2 多智能体协作
- 1.3 协作类型
- 1.4 协作策略
- 1.5 通信结构
- 1.6 协调与编排
- 1.3 多智能体与单智能体对比
- 1.4 应用场景
- 二、多Agent开发框架
- AutoGen
- MetaGPT
- LangGraph
- Swarm
- CrewAI
- 三、多智能体协作方式
- 3.1 MetaGPT:SOP驱动Agent的代表
- 3.2 AutoGen:LLM驱动Agent的代表
- 3.3 XAgent:Agent 并行计算, LLM 汇总
- 四、多Agent实战样例
- 参考资料
一、多智能体系统介绍
参考资料:多智能体协作机制:大语言模型综述
1.1 多智能体系统定义
多智能体系统(Multi-Agent System, MAS)是由多个相互作用的智能体组成的计算机化系统。这些智能体具有自主性,能够感知环境、与其他智能体交互,并通过协作解决复杂的任务。MAS 的关键组成部分包括:
- 智能体:系统中的核心参与者,具有角色、能力、行为模式和知识模型。智能体的能力包括学习、规划、推理和决策制定,这些能力赋予了智能体和整个系统智能。
- 环境:智能体所处的外部世界,智能体可以感知并作用于环境。环境可以是模拟的或物理空间,如工厂、道路、电网等。
- 交互:智能体之间通过标准的智能体通信语言进行通信。智能体的交互包括合作、协调、协商等,具体取决于系统的需求。
- 组织:智能体可以按照层次结构进行控制,或基于涌现行为进行组织。
MAS 的显著特征包括灵活性、可靠性、自组织和实时操作,使其成为解决复杂任务的有效解决方案。通过将复杂任务分解为多个子任务,每个子任务由不同的智能体处理,MAS 能够以较低的成本和较高的可靠性完成任务。
1.2 多智能体协作
在 LLM 驱动的 MAS 中,智能体之间的协作至关重要。每个协作都有一个通信通道 c c c,协作包括:
- 任务分配:根据智能体的独特专业知识和资源,将任务分配给多个智能体。
- 协作机制:定义智能体之间的协作机制,使它们能够共同工作。
- 决策制定:智能体之间的决策制定,以达到最终目标。
协作通道通过特定的属性进行表征,包括参与者(涉及的智能体)、类型(如合作、竞争或竞合)、结构(如点对点、集中式或分布式)和策略(如基于角色、基于规则或基于模型)。任何属性的差异都会导致不同的协作通道。
1.3 协作类型
(1)合作
合作是 LLM 多智能体系统中最常见的协作类型。当智能体将其个体目标 oi与共享的集体目标 Ocollab对齐时,它们会共同努力实现互利的结果。合作在需要协作问题解决、集体决策和互补技能的任务中尤为重要。
(2)竞争
竞争发生在智能体的个体目标 oi与其他智能体的目标冲突或资源有限的情况下。竞争可以推动智能体发展更高级的推理能力和创造性问题解决能力,增强系统的适应性。
(3)竞争与合作
竞合是合作与竞争的结合,智能体在某些任务上合作,而在其他任务上竞争。竞合机制在需要权衡和妥协的场景中尤为有效。
1.4 协作策略
(1)基于规则的协议
基于规则的协议通过预定义的规则严格控制智能体之间的交互,确保智能体按照系统范围内的约束协调行动。这种策略在任务程序明确且变化有限的情况下非常有效,但在面对意外情况时缺乏适应性。
(2)基于角色的协议
基于角色的协议通过为每个智能体分配特定的角色或分工,使智能体能够专注于其专业领域内的子任务。这种策略提高了系统的效率和结构,但在角色定义不明确时可能导致冲突或功能缺陷。
(3)基于模型的协议
基于模型的协议在输入感知存在不确定性的环境中提供了决策制定的灵活性。智能体根据对环境的感知、共同目标和固有的不确定性做出概率性决策。这种策略在动态环境中表现出色,但设计和部署复杂,计算成本较高。
1.5 通信结构
(1)集中式结构
集中式结构中,所有智能体都连接到一个中央智能体,中央智能体负责管理和协调智能体之间的交互。集中式结构在资源分配和任务协调方面具有优势,但中央节点的故障可能导致整个系统崩溃。
(2)分布式结构
分布式结构中,控制权和决策权分布在多个智能体之间,每个智能体基于本地信息和有限的通信进行操作。分布式结构在系统容错性和可扩展性方面具有优势,但资源分配效率较低,通信开销较大。
(3)分层结构
分层结构中,智能体按层次组织,每个层次的智能体具有不同的功能和权限。分层结构在任务分配和资源管理方面具有优势,但边缘设备的故障可能导致系统失效。
1.6 协调与编排
(1)静态架构
静态架构依赖于领域知识和预定义的规则来建立协作通道。这种架构在任务执行一致性和利用领域知识方面具有优势,但在面对动态环境时缺乏灵活性。
(2)动态架构
动态架构能够适应变化的环境和任务需求,通过管理智能体或自适应机制实时分配角色和定义协作通道。动态架构在处理复杂和动态任务时表现出色,但资源使用较高,动态调整可能失败。
1.3 多智能体与单智能体对比
MAS的核心思想是通过多个Agent的协作与协调,共同完成一个复杂任务,从而实现单个Agent无法完成的复杂目标。相比单Agent系统,Multi-Agent系统具备以下优势:
- 分布式处理:MAS支持分布式应用,可以将大型复杂系统分解为多个小型、易于管理的子系统。这使得MAS具有良好的模块性、易于扩展性和设计灵活性,降低了系统的总成本和维护难度。
- 协同工作:MAS中的Agent可以相互通信、协商和协作,共同完成一个任务。通过这种协同工作方式,MAS能够处理单个Agent无法解决的问题,从而提高系统的整体性能和鲁棒性。
- 自适应性:MAS中的Agent可以根据环境变化自主调整行为和策略,这种自适应性使得MAS具有优秀的稳定性和灵活性,能够应对各种复杂场景。
1.4 应用场景
Multi-Agent System 主要的应用场景包括:
- 软件编写:在软件项目中,由多个Agents分别扮演项目经理、产品经理、UI设计师、开发人员、测试人员等等,从而将一个复杂的软件项目拆解成多个子任务,更高效地完成软件的编写。
- 智能营销:在消费者营销场景中,可以构建多个Agents,比如营销计划Agent、内容生产Agent、人群管理Agent、营销触达Agent和效果分析Agent。
- 智慧供应链:在供应链场景中,通过Multi-Agent提升上下游协同效率,包括销售计划Agent、采购计划Agent、仓储计划Agent、采购订单Agent等等,从销量预测、安全库存、供应链响应等环节,构筑供应链的多道防线。
- 智能客服:在智能客服领域,针对不同的产品和服务领域,构建不同的专属Agent,比如处理产品售后投诉的Agent、解答用户产品疑问的Agent、处理营销活动咨询的Agent、追踪物流进度的Agent等。同时在最上层构建一个Top Agent,用Top Agent统一对客,再根据消费者的问题自动路由到最匹配的专属Agent。
- 智能电网:在智能电网领域,MAS可以实现多个传感器、控制器和执行器之间的协同工作,实现对电网的实时监控、预测和优化调度,提高电网的稳定性和可靠性。
二、多Agent开发框架
AutoGen
MetaGPT
LangGraph
Swarm
CrewAI
三、多智能体协作方式
参考资料:一文读懂Multi-Agent System的概念、场景和实现框架
3.1 MetaGPT:SOP驱动Agent的代表
SOP驱动Agent是一种非常易于理解的多智能体设计模式,SOP(Standardized Operating Procedures, SOP)即代表了在现实世界中标准的业务流程和分工,流程中的各个环节都有相应的角色进行处理。MetaGPT就是将这一理念搬到了AI Agent领域,由AI Agent来扮演业务流中的各个角色。
比如在软件开发过程中,设计到的角色包括产品经理、架构师、项目经理、工程师和质量保证工程师等,每个角色都有其独特的职责和专业知识。这些Agent遵循SOP来分解任务,确保每个步骤都能高效且准确地完成,产品经理负责分析需求并创建产品需求文档,架构师负责将需求转化为系统设计,项目经理负责任务分配,工程师负责编写代码,而质量保证工程师则负责测试和确保代码质量。
MetaGPT具体的工作原理包括以下六个环节:
- 角色定义与分工:MetaGPT首先定义了一系列Agent角色,每个角色都有特定的职责和任务。这些角色模拟了真实世界中的工作流程,使得每个Agent都能专注于其擅长的领域。
- 标准化操作程序(SOPs):MetaGPT将SOPs编码成提示序列,用于指导Agent如何执行任务。SOP确保了任务执行的一致性和质量,类似于人类团队中的工作指南。
- 结构化通信:为了提高通信效率,MetaGPT采用了结构化的通信方式。Agent通过共享消息池发布和订阅信息,这样每个Agent都能获取到完成任务所需的必要信息。
- 可执行反馈机制:在代码生成过程中,MetaGPT引入了可执行反馈机制。这意味着Agent在编写代码后,会执行代码并检查其正确性。如果发现错误,Agent会根据反馈进行调试,然后再次执行,直到代码满足要求。这个过程类似于人类开发者在开发过程中的迭代过程。
- 任务分解与协作:MetaGPT将复杂任务分解为多个子任务,每个子任务由一个或多个Agent负责,这种分解策略使得复杂项目可以被有效地管理和执行。同时,Agent之间的协作是通过角色间的信息交换和任务依赖来实现的,确保了整个项目按计划推进。
- 持续学习与优化:MetaGPT支持Agent从过去的经验中学习,通过自我修正和迭代来优化其行为,这种自我改进机制可以让系统随着时间推移越来越智能。
3.2 AutoGen:LLM驱动Agent的代表
重磅上线!AiDocZh.com发布全新AutoGen中文文档,带你解锁大模型多Agent对话新时代
Autogen 是一个由 Microsoft 推出的框架,支持创建和管理多个自主Agent,协同完成复杂的任务。这个框架的灵活性极高,我们可以根据自己的需求定义不同的Agent和对应的角色,特别是在编程、规划和创意写作等领域。
- AutoGen 官方文档:https://microsoft.github.io/autogen/stable/
- AutoGen 中文文档:https://www.aidoczh.com/autogen/stable/
Autogen框架分为非常简单的三步,开发人员要做的就是明确任务,创建Agent,把这些Agent融合到一起。
第一步,创建Agent:
- 支持创建和管理不同类型的 Agent,包括特定任务的专家、通用助手、策略制定者等。
- 能够为每个 Agent 指定不同的角色、任务和权限,以确保分工明确。
- 提供 Agent 定制选项,以满足不同任务的特定需求。
第二步,提供对话环境:
- 提供一个虚拟的对话空间,让 Agent 之间可以相互沟通和协作。
- 支持多方对话和协作,包括文本、音频或视频形式。
- 自动记录对话内容和决策过程,以便回顾和审查。
第三步,对话内容管理:
- 引导 Agent 的讨论方向,以确保讨论围绕目标进行。
- 提供实时监控工具,帮助发现潜在问题,并及时给予纠正和调整。
- 设置规则和约束条件,以保持对话和协作的质量和效率。
- 提供对对话内容的搜索和过滤功能,以便快速查找相关信息。
AutoGen设计了一个通用ConversableAgent类,它们能够通过交换消息来相互对话以共同完成任务。Agent可以与其他Agent进行通信并执行操作,不同的Agent在收到消息后执行的操作可能有所不同。
AutoGen中包含两种Agent(AssitantAgent、UserProxyAgent)和一种Manager(GroupChatManager),通过相互协作,一起处理问题。
- AssistantAgent 的主要作用是作为中枢大脑提供理解、分析;
- UserProxyAgent 主要处理由中枢大脑给出的决策。
- GroupChatManager 是能够让多个Agent进行分组的管理者,类似于把团队拆分为多个Team进行管理。
3.3 XAgent:Agent 并行计算, LLM 汇总
XAgent 是一个开源、基于大型语言模型(LLM)的通用自主Agent,可以自动解决各种复杂任务。该框架采用双环机制,外循环用于高层任务管理,起到规划(Planning)的作用,内循环用于底层任务执行,起到执行(Execution)的作用。
(1)外循环
外循环作为高层规划器和整个问题解决序列的主要协调者,充当整个问题解决序列的管理,它的职责可以分解如下。
-
初始计划生成: PlanAgent首先生成一个初始计划,为任务执行制定基本策略。该部分会将给定的复杂任务分解为更小、更易管理的子任务,其表现为一个任务队列,可以直接地执行。
-
迭代式计划优化: 在初始规划之后,PlanAgent通过从任务队列中释放出第一个任务,然后将该子任务传递给内循环,PlanAgent持续监视任务的进展和状态。在每个子任务执行后,内循环会返回来自ToolAgent的反馈。根据反馈,PlanAgent触发适当的处理机制,如优化计划或继续执行后续子任务。直到队列中没有剩余的子任务为止,外循环结束。
(2)内循环
内循环负责执行外循环分配的各个子任务。基于外循环给定的子任务,内循环会指定一个合适的ToolAgent,确保任务达到预期的结果。内循环的主要职责包括:
-
Agent调度和工具获取: 根据子任务的性质,派遣合适的ToolAgent,该Agent具备完成任务所需的能力。
-
工具执行: ToolAgent首先从外部系统中获取工具以帮助完成任务。然后,Agent使用ReACT来解决子任务,寻找最佳的一系列工具调用来完成子任务。
-
反馈和反思: 在一系列动作之后,ToolAgent可以发出一个名为“subtask_submit”的特定动作,以完成当前子任务的处理,并将反馈和反思传递给PlanAgent。这个反馈可以指示子任务是否成功完成,或者强调潜在的改进。
(3)PlanAgent
PlanAgent赋予Agent不断制定和修订计划的能力,以适应多变的环境和突发需求。这些能力对于确保灵活性、弹性和效率以应对未预见的挑战至关重要。PlanAgent专用于外循环,其通过生成初始计划和不断修订计划来实现这一目标。PlanAgent包含四个函数来优化计划:
-
子任务拆分: 使系统能够将特定的子任务分解为粒度更细、更易管理的单元。只有当前正在执行或尚未启动的子任务才有资格进行此操作。
-
子任务删除: 删除尚未开始的子任务。已经在进行中或已完成的子任务不具备删除资格。这确保了一定的灵活性,可以修剪多余或不相关的任务,以优化整体执行。
-
子任务修改: 修改子任务的内容。要修改的子任务不能是已经开始或已经完成,以保持整体计划的完整性。
-
子任务添加: 在特定子任务之后插入新的子任务。只能在当前处理的子任务或其后继任务之后添加子任务。这确保了新任务按顺序编排,简化了执行流程,并保持了一致性。
(4)ToolAgent
ToolAgent使用ReACT寻找最佳的一系列工具来完成子任务。在每一轮中,Agent根据先前的交互生成一个动作,对于每个动作,在同一个函数调用中将智能体的推理和行动协同起来,即推理跟踪和将要执行的动作都被视为特定函数的参数。具体而言,每个函数调用具有以下组件:
- 思考:Agent关于任务的洞察力的概括。
- 推理:跟踪Agent通过的逻辑轨迹,以得出其思考。
- 批评:捕捉Agent对其行动的自我反思,作为一个反馈回路。它强调潜在的疏忽或改进的领域。
- 指令:根据推理决定Agent下一步要采取的动作。
- 参数:列举要执行的动作的具体参数或细节。
四、多Agent实战样例
- Multi Agents协作机制设计及实践
参考资料
- 多智能体协作机制:大语言模型综述
- 一文读懂Multi-Agent System的概念、场景和实现框架
- CSDN-July-智能体AI Agent的极速入门:从ReAct、AutoGPT到AutoGen、QwenAgent、XAgent、MetaGPT
相关文章:
多Agent框架及协作机制详解
文章目录 一、多智能体系统介绍1.1 多智能体系统定义1.2 多智能体协作1.3 协作类型1.4 协作策略1.5 通信结构1.6 协调与编排 1.3 多智能体与单智能体对比1.4 应用场景 二、多Agent开发框架AutoGenMetaGPTLangGraphSwarmCrewAI 三、多智能体协作方式3.1 MetaGPT:SOP驱…...
Cribl 对Windows-xml log 进行 -Removing filed-06
Removing Fields Description The Eval Function can be used to add or remove fields. In this example we will remove the extracted fields while preserving _raw, _time,index,source, sourcetype. Steps - Adding an Eval Function...
Linux 常用指令用户手册
Linux 常用指令用户手册 适合新手入门 & 日常速查 目录 基础操作文件与目录管理权限与所有权文本处理压缩与解压系统监控网络操作进程管理实用小技巧 1. 基础操作 1.1 查看系统信息 # 查看内核版本 uname -a# 查看系统发行版信息(适用于 Debian/Ubuntu&…...
Java EE(20)——线程安全——ThreadLocal
1.前言 在面的线程安全相关的博文中,解决线程安全问题的方法主要使用synchronized和volatile两个关键字。引发线程安全问题的根本原因是多个线程同时对共享变量进行写操作,而上述两个关键字并没有改变"多个线程写同一个变量"这个情况。以sync…...
树莓派超全系列教程文档--(36)树莓派条件过滤器设置
树莓派条件过滤器设置 条件过滤器[all] 过滤器型号过滤器[none] 过滤器[tryboot] 过滤器[EDID*] 过滤器序列号过滤器GPIO过滤器组合条件过滤器 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 条件过滤器 当将单个 SD 卡(或卡图像&am…...
Vue3核心源码解析
/packages/complier-core 定位:编译时核心,处理 Vue 模板的编译逻辑。核心功能: 模板解析:将 .vue 文件的模板语法(HTML-like)解析为 抽象语法树 (AST)。转换优化…...
JavaScript解密实战指南:从基础到进阶技巧
JavaScript加密技术广泛应用于数据保护、反爬虫和代码混淆,但掌握解密方法能帮助开发者突破技术壁垒。本文结合爬虫实战与安全分析场景,系统梳理JS解密的核心方法与工具。 一、基础解密方法 1. Base64解码 适用于简单编码场景,如Cookie加密…...
指针(2)
1.数组名的理解 使用指针访问数组的内容时,有这样的代码: int arr[10]{1,2,3,4,5,6,7,8,9,10}int * p&arr[0]; &arr[0] 的方式拿到了数组的第一个元素的地址,但是其实数组名本来就是地址,而且还是首元素的地址…...
Android开发中广播(Broadcast)技术详解
在 Android 开发中,广播(Broadcast) 是一种广泛使用的组件通信机制,它允许应用程序在不直接交互的情况下传递消息。本文将详细讲解 Android 广播的基本概念、类型、发送与接收流程、使用场景及注意事项,并结合具体的代…...
Python网络爬虫设计(三)
目录 一、需要登录的爬虫 二、pyppeteer与requests库结合 1、cookie和session 三、其他 1、绝对网址和相对网址 2、sleep函数 一、需要登录的爬虫 在众多种类的页面中,不同的页面有不同的功能,有的是进行展示的,而有的则是登录类的。在…...
【深度学习—李宏毅教程笔记】各式各样的 Attention
目录 一、普通 Self-Attention 的痛点 二、对 Self-Attention 的优化方式 1、Local Attention / Truncated Attention 2、Stride Attention 3、Global Attention 4、知名的 Self-Attention 的变形的应用 (1)Longformer (2)…...
leetcode 1143. Longest Common Subsequence
目录 题目描述 第一步,明确并理解dp数组及下标的含义 第二步,分析明确并理解递推公式 第三步,理解dp数组如何初始化 第四步,理解遍历顺序 代码 题目描述 这道题和第718题的区别就是,本题求的是最长公共子序列的长…...
Unity C\# 实战:从零开始为游戏添加背景音乐与音效 (AudioSource/AudioClip/AudioMixer 详解)
Langchain系列文章目录 01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…...
【代码解读】开源模型 minimind之pretrain
minimind原模型地址: https://github.com/jingyaogong/minimind 本文解读下开源模型minimind的预训练代码 train_pretrain.py,解释以代码注释的形式添加 1. 参数配置代码 parser argparse.ArgumentParser(description"MiniMind Pretraining") parser.ad…...
wordpress独立站的产品详情页添加WhatsApp链接按钮
在WordPress外贸独立站的产品展示页添加WhatsApp链接按钮,可以帮助客户更方便地与你联系。以下是实现这一功能的步骤: 方法一:使用HTML代码添加按钮 编辑产品展示页 进入WordPress后台,找到需要添加WhatsApp按钮的产品展示页。…...
从入门到精通汇编语言 第五章(流程转移与子程序)
参考教程:通俗易懂的汇编语言(王爽老师的书)_哔哩哔哩_bilibili 一、“转移”概述 1、转移的概念 (1)般情况下指令是顺序地逐条执行的,而在实际中,常需要改变程序的执行流程,这就…...
Redis下载
目录 安装包 1、使用.msi方式安装 2.使用zip方式安装【推荐方式】 添加环境变量 配置后台运行 启动: 1.startup.cmd的文件 2.cmd窗口运行 3.linux源码安装 (1)准备安装环境 (2)上传安装文件 (3&…...
硬件工程师笔记——电子器件汇总大全
目录 1、电阻 工作原理 欧姆定律 电阻的物理本质 一、限制电流 二、分压作用 三、消耗电能(将电能转化为热能) 2、压敏电阻 伏安特性 1. 过压保护 2. 电压调节 3. 浪涌吸收 4. 消噪与消火花 5. 高频应用 3、电容 工作原理 (…...
第一章,HCIA复习
抽象语言---->电信号抽象语言---编码 编码------二进制 二进制----电信号 OSI参考模型 TCP/IP模型(4参考5对等) 应用层:程序的编译过程;人机交互的接口。 表示层:数据格式化--->二进制 会话层:维护网…...
在 Debian 12 中恢复被删除的 smb.conf 配置文件
https://forum.ubuntu.com.cn/viewtopic.php?t494763 本文结合ai输出,内容中可能有些错误,但确实解决了我的问题,我采取保留完整输出的方式摘录。 在 Debian 12 中恢复被删除的 smb.conf 配置文件,需结合 dpkg 和 ucf(…...
Java开发软件
Main.java // 主类,用于测试学生管理系统 public class Main { public static void main(String[] args) { StudentManagementSystem sms new StudentManagementSystem(); // 添加学生 sms.addStudent(new Student(1, "Alice", 20)…...
SSRF学习
靶场 fofa搜:“重庆橙子科技”,里面找SSRF。 SSRF基础知识 绕过127限制 要查看127.0.0.1/flag.php,但是127被过滤。 绕过方法:使用不同的进制表示127.0.0.1即可。 二进制:01111111.00000000.00000000.00000001 八…...
使用virtualbox的HostOnly建立共享网络-实现虚拟机上网
目录 环境描述解决方案具体步骤1.新建一个virtual host-only ethernet adapter2.设置windows的wifi信号网络共享3.确认winows宿主网络信息3.1.wifi适配器的信息3.2.虚拟网卡的信息3.3.确认virtualbox中虚拟网卡的ip地址 4.虚拟机网卡设置5.虚拟机网络设置5.1.本地连接设置5.2.u…...
RNN的理解
对于RNN的理解 import torch import torch.nn as nn import torch.nn.functional as F# 手动实现一个简单的RNN class RNN(nn.Module):def __init__(self, input_size, hidden_size, output_size):super(RNN, self).__init__()# 定义权重矩阵和偏置项self.hidden_size hidden…...
Transformers是一种基于自注意力机制的神经网络模型
概述与发展历程 背景介绍 Transformers是一种基于自注意力机制的神经网络模型,最早由Google团队在2017年的论文《Attention Is All You Need》中提出。该模型旨在解决传统循环神经网络(RNNs)在处理长距离依赖关系时的低效性问题,…...
leetcode0078. 子集-medium
1 题目:子集 官方标定难度:中 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入࿱…...
C++编程 希尔排序
步骤: 1.先选定一个小于N的整数gap作为第一增量,然后将所有距离为gap的元素分在同一组,并对每一组的元素进行直接插入排序。然后再取一个比第一增量小的整数作为第二增量,重复上述操作… 2.当增量的大小减到1时,就相当…...
网络操作系统与应用服务器
1.通过PTR实现IP地址到主机域名的映射 2.在windows中,可以使用事件查看器来游览日志文件 3.IMAP即交互式邮件存取协议,邮件客户端可以使用其同步服务器和客户端之间的邮件列表 4.DHCP Discover ->DHCP Offer->DHCP Request->DHCP Ack 5.在DNS的资源记录中,类型A表…...
不确定与非单调推理的模糊推理
模糊推理是利用模糊性知识进行的一种不确定性推理。 模糊推理与前面讨论的不确定性推理的概率方法、可信度方法、D-S理论有着实质性的区别。前面那几种不确定性推理的理论基础是概率论,它所研究的事件本身有明确而确定的含义,只是由于发生的条件不充分,使得在条件与事件之间…...
Vite打包原理: Tree-shaking在Vue3项目中的实际效果
Vite打包原理: Tree-shaking在Vue3项目中的实际效果 随着前端开发技术的不断进步,Vue框架在国内外都备受青睐。而在Vue3项目中,Vite作为一款新型的构建工具,其支持的Tree-shaking技术成为了开发者关注的焦点之一。那么,Vite中Tree…...
LangChain4j语言模型选型指南:主流模型能力全景对比
LangChain4j语言模型选型指南:主流模型能力全景对比 前言 在大语言模型应用开发中,选择合适的底层模型提供商是架构设计的关键决策。LangChain4j作为Java生态的重要AI框架,其支持的20模型提供商各有独特的优势场景。本文通过功能矩阵深度解…...
聚宽策略----国九条后中小板微盘小改,年化135.40%
最近在研究的聚宽策略,一般技术分析的我直接转qmt了,财务因子有一点麻烦,我直接利用我开发强大的服务器系统,直接读取信号,最近在优化一下系统,最近在开发对接bigquant的交易系统,完成了api数据…...
FreeRTOS中断管理
中断优先级 任何中断的优先级都大于任务! 在我们的操作系统,中断同样是具有优先级的,并且我们也可以设置它的优先级,但是他的优先级并不是从 0 ~ 5 ,默认情况下它是从 5 ~ 15 , 0 ~ 4 这5个中断优先级不是FreeRTOS控…...
键入网址到网页显示,期间发生了什么?
文章目录 2.键入网址到网页显示,期间发生了什么?2.1真实地址查询DNS:2.2**协议栈:**上半部分是负责收发数据的TCP和UDP协议,下面一半是用IP协议控制网络包收发操作,在互联网上传数据时,数据会倍…...
代理模式(Proxy Pattern)
文章目录 1. 概述1.1 基本概念1.2 为什么需要代理模式1.3 代理模式的四个角色2. 代理模式的类型2.1 静态代理2.2 JDK动态代理2.3 CGLIB动态代理3. 代理模式的UML类图和基本实现3.1 UML类图3.2 基本实现3.2.1 静态代理基本实现3.2.2 JDK动态代理基本实现3.2.3 CGLIB动态代理基本…...
9.QT-显示类控件|Label|显示不同格式的文本|显示图片|文本对齐|自动换行|缩进|边距|设置伙伴(C++)
Label QLabel 可以⽤来显⽰⽂本和图⽚ 属性说明textQLabel中的⽂本textFormat⽂本的格式.• Qt::PlainText 纯⽂本• Qt::RichText 富⽂本(⽀持html标签)• Qt::MarkdownText markdown格式• Qt::AutoText 根据⽂本内容⾃动决定⽂本格式pixmapQLabel 内部包含的图⽚.scaledCo…...
Python多任务编程:进程全面详解与实战指南
1. 进程基础概念 1.1 什么是进程? 进程(Process)是指正在执行的程序,是程序执行过程中的一次指令、数据集等的集合。简单来说,进程就是程序的一次执行过程,它是一个动态的概念。 想象你打开电脑上的音乐播放器听歌,…...
【英语语法】词法---副词
目录 副词1. 副词的核心功能2. 副词的分类(1) 按意义分类(2) 按形式分类 3. 副词的构成(1) 形容词变副词的规则(2) 不规则变化 4. 副词的位置(1) 修饰动词时的位置(2) 多个副词的排列顺序 5. 副词的比较级与最高级(1) 规则变化(同形容词)(2) 不规则变化(…...
51c大模型~合集119
我自己的原文哦~ https://blog.51cto.com/whaosoft/13852062 #264页智能体综述 MetaGPT等20家顶尖机构、47位学者参与 近期,大模型智能体(Agent)的相关话题爆火 —— 不论是 Anthropic 抢先 MCP 范式的快速普及,还是 OpenAI…...
Day3:个人中心页面布局前端项目uniapp壁纸实战
接下来我们来弄一下个人中心页面布局user.vue <template><view class"userLayout"><view class"userInfo"><view class"avatar"><image src"../../static/Kx.jpg" mode"aspectFill"></im…...
多元协同网络拓扑模型
一、组织逻辑架构解构 1.1 多元协同网络拓扑模型 (1)产业链价值链重构图谱 阶段核心节点技术耦合系数商业转化周期基础层云服务供应商(阿里云/ECS集群)0.8512-24个月中台层开发者生态(百炼平台/API网关)…...
基于 Elasticsearch 8.12.0 集群创建索引
索引创建 创建一个产品的索引 解释: productId: 产品的唯一标识符,使用 keyword 类型,适合精确匹配和聚合操作。name: 产品名称,使用 text 类型进行全文搜索,同时包含一个 keyword 子字段用于精确匹配。description:…...
LeetCode283.移动零
给定一个数组 arr,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 请注意 ,必须在不复制数组的情况下原地对数组进行操作 示例 1: 输入: nums [0,1,0,3,12] 输出: [1,3,12,0,0] 示例 2 输入: nums [0] 输出: [0…...
select、poll、epoll实现多路复用IO并对比差异
目录 一、select实现多路复用 1.select函数介绍 2.select优缺点 3.select使用示例 二、poll实现多路复用 1.poll函数介绍 2.poll优缺点 3.poll使用示例 三、epoll实现多路复用 1.epoll函数介绍 2.epoll工作原理 3.epoll工作模式 (1)水平触发LT模式 (2)边缘触发ET模…...
FastAPI-MCP
介绍 开源地址: https://github.com/tadata-org/fastapi_mcp FastAPI-MCP 是一个开源项目,旨在简化 FastAPI 应用与现代 AI 代理(如基于大语言模型的系统)之间的集成。它通过自动将 FastAPI 的所有 API 端点暴露为符合 Model Co…...
Matlab 复合模糊PID
1、内容简介 Matlab 209-复合模糊PID 可以交流、咨询、答疑 2、内容说明 略摘 要:在并联型模糊 PID 复合控制器设计中,必须根据偏差大小及时地调整模糊控制部分和 PID 控制 部分的比例,而这种较为复杂的控制策略利用普通的 Simulink 模块是很难实现的.采用S-函数来解决 这个问…...
javaSE.队列
链表:屁股入队,头部出队 链尾入队👇 是while(tail.next!null) 👇 链首出队(head.next)👇 仅获取队首👇...
c++基础·左值右值
一、左值与右值的本质特征 1. 基础定义 左值 (lvalue) ✅ 可出现在赋值运算符左侧 ✅ 可被取地址(有明确存储位置) ✅ 通常为具名变量(如int a 10;中的a) 右值 (rvalue) ❌ 不可出现在赋值左侧 ❌ 不可取地址(无持久…...
From RAG to Memory: Non-Parametric Continual Learning for Large Language Models
从RAG到记忆:大语言模型的无参数持续学习 原文链接:https://arxiv.org/pdf/2502.14802 Code: https://github.com/OSU-NLP-Group/HippoRAG 🧠 HippoRAG 2 流程概述 1. 离线索引(Offline Indexing) 在此阶段,HippoRAG 2 构建一个开放式知识图谱(Open KG)以存储知识…...
STM32配置系统时钟
1、STM32配置系统时钟的步骤 1、系统时钟配置步骤 先配置系统时钟,后面的总线才能使用时钟频率 2、外设时钟使能和失能 STM32为了低功耗,一开始是关闭了所有的外设的时钟,所以外设想要工作,首先就要打开时钟,所以后面…...