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

如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)

在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。

然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质?

作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入研究而闻名。

该公司开发的Claude是目前最先进的大语言模型之一,凭借其强大的理解能力、逻辑推理能力和工具使用能力,在AI助手领域占据重要地位。
在这里插入图片描述

在本文解读的这份研究中,Anthropic团队基于其在开发Claude及帮助众多企业构建AI代理系统的丰富经验,为我们揭示了高效AI代理系统设计的关键原则。

这些见解不仅来自理论研究,更是源于实践检验,具有极强的参考价值,让我们重新思考LLM AI Agent 系统设计的本质。

一、返璞归真:简约设计的崛起

在当前AI领域,各类框架和工具如雨后春笋般涌现,开发者们往往会陷入一种迷思:越复杂的框架是否意味着越强大的能力?

Anthropic的研究给出了一个出人意料的答案:

恰恰相反。通过深入研究数十个行业领域的LLM代理实践案例,研究团队发现,那些最成功的实现往往采用简单、可组合的模式,而不是复杂的框架体系。

文章开篇说道:

"在过去一年里,我们与数十个团队合作,帮助他们在各个行业构建大语言模型(LLM)代理系统。

我们发现一个一致的现象:最成功的实施案例并非采用复杂的框架或专门的库,而是使用简单、可组合的模式进行构建。

在这篇文章中,我们将分享从与客户合作以及自身构建代理系统过程中获得的经验,并为开发者提供构建有效代理系统的实用建议。"

这个发现具有几个层面的重要意义:

首先, 它挑战了行业中普遍存在的一种认知——即构建复杂的AI系统需要依赖复杂的工具和框架。

这种"以复杂应对复杂"的思维定式在实践中被证明并非最佳选择。

其次 ,“simple, composable patterns”(简单、可组合的模式)这个短语透露出一种模块化、积木式的系统设计思维。

这种设计理念强调的是基础构建块的简单性和组合的灵活性,而不是整体框架的复杂性。

再次 ,这段话也体现了Anthropic的研究方法论——将实践经验转化为可操作的开发建议。

"practical advice"这个承诺表明,这篇文章不是纯理论的学术探讨,而是基于真实案例的实践指南。

最后 ,这个开篇也暗示了一个重要的技术发展趋势:

在AI代理系统设计领域,我们可能正在经历一个从"框架驱动"向"模式驱动"的转变。

这种转变可能会对整个行业的技术栈选择和系统架构设计产生深远影响。

这段开篇简短但信息量丰富,它不仅为整篇文章定下了基调,也为我们理解当前AI代理系统设计的最佳实践提供了一个重要的视角。

正如爱因斯坦所说:“不应否认任何理论的终极目标都是尽可能让基本元素变得更加简单且更少,但也不能放弃对任何一个简单数据的合理阐释。” 这似乎正是Anthropic在AI代理系统设计中发现的真理。

这个发现对于当前正在规划或开发AI代理系统的团队具有重要的指导意义:

也许我们需要放下对复杂框架的依赖,回归到更简单、更灵活的设计模式上来。

这让我想起了 Unix 设计哲学中著名的KISS原则(Keep It Simple, Stupid) ,强调在系统设计和操作过程中应该尽量避免不必要的复杂性 ,并以简单性为核心,这样能减少出错风险,提高系统的稳定性和可用性。

在软件工程领域,简单性往往是可靠性和可维护性的基石。而在LLM代理系统的设计中,这个原则似乎又一次得到了新的印证。

二、架构思维的革新:解构AI Agents系统的双重范式

在探讨具体实现之前,研究团队提出了一个富有洞见的架构区分:AI 工作流 (AI Workflows) 和智能体 (AI Agents)

这不仅仅是技术层面的分类,更是反映了两种截然不同的系统设计理念。

什么是 AI Agents
“”Agents“”可以有多种定义方式。一些客户将 AI Agents 定义为完全自主的系统,这类系统能够在较长时间内独立运行,使用各种工具来完成复杂任务。
另一些客户则用这个术语来描述更具规范性的实现,即遵循预定义工作流程的系统。
在Anthropic,我们将所有这些变体都归类为Agents 系统,但在工作流智能体之间划分了一个重要的架构区别:

  • 工作流是通过预定义的代码路径来编排LLM和工具的系统。
  • 智能体则是由LLM动态指导自身流程和工具使用的系统,能够自主控制任务完成的方式。

这段文字实际上揭示了AI代理系统领域的一个重要概念框架。

让我们从几个关键层面来解读:

2.1 概念的多元性

文章首先承认了"Agents "概念的多样性,这反映了当前行业对AI Agents 的理解仍处于演进阶段。

有趣的是,这种多样性主要体现在两个维度:自主程度(完全自主 vs 预定义流程)和运行时长(长期运行 vs 特定任务)

2.2 架构的二分法

Anthropic提出的工作流与智能体的区分极具洞见。

这种区分不是基于功能或复杂度,而是基于系统的决策自主性

  • AI Workflows 工作流就像是一条预先规划好的铁轨,LLM在其上运行
  • AI Agents 智能体则更像是一个能够自主导航的系统,可以根据情况动态选择路径

2.3 控制权的分配

这个区分实际上反映了一个深层的设计哲学:如何在系统中分配控制权。

AI Workflows 工作流将控制权交给预定义的流程,而AI Agent 智能体则将控制权赋予LLM本身。

这种差异会导致两种完全不同的系统行为模式。

2.4 实践的指向性

通过提到附录中的实际应用案例,文章暗示这种理论框架不是纯粹的学术分类,而是源于实践并服务于实践的洞察。

这种理论与实践的结合使得这个框架具有更强的指导意义。
在这里插入图片描述

2.5 设计的启示

这种分类为系统设计提供了清晰的指引:

  • 对于流程明确、需要高度可控的场景,AI Workflows 工作流模式更合适
  • 对于开放性问题、需要灵活应对的场景,AI Agents 智能体模式可能更有优势

这个概念框架不仅帮助我们理解不同类型的AI代理系统,更重要的是为选择合适的系统架构提供了理论基础。

它提醒我们,在设计AI系统时,不应简单地追求自主性的最大化,而是要根据具体应用场景选择合适的控制模式。

AI Workflows 工作流 就像一个精心编排的交响乐团,每个乐手(组件)都有其预定的谱子(代码路径)。

这种方式特别适合那些规则明确、流程固定的场景。

想象一个企业的文档处理系统,从收件、分类、处理到归档,每个环节都有其明确的规则和步骤。
在这里插入图片描述

AI Workflows 工作流系统在这种场景下能够提供稳定可靠的表现。

相比之下,AI Agents 智能体更像是一个富有创造力的即兴演奏家。

它能够根据当前情境动态决策,选择最适合的工具和方法来完成任务。

这种灵活性使得代理系统特别适合处理开放性问题和需要创造性思维的场景。

例如,在软件开发中,AI Agents 智能体可以根据具体的bug描述,动态决定需要修改哪些文件,以及如何修改。
在这里插入图片描述

三、权衡之道:AI Agents 系统的取舍艺术

何时(以及何时不)使用Agents

在构建LLM应用时,我们建议寻找最简单可行的解决方案,只在必要时才增加复杂性。
这可能意味着完全不需要构建Agent系统。
Agent系统通常用更好的任务表现来换取延迟和成本的增加,你需要考虑这种权衡是否值得。

当确实需要更复杂的系统时,工作流能为明确定义的任务提供可预测性和一致性,
而当需要大规模的灵活性和模型驱动的决策时,Agents则是更好的选择。
然而,对于许多应用来说,优化单个LLM调用,配合检索和上下文示例通常就足够了。

3.1 简约至上:重新思考Agent系统的必要性

这段文字首先提出了一个极具洞见的观点:在追求技术方案时,最简单的解决方案往往是最好的。

这不仅是一种技术层面的建议,更是一种工程设计哲学。

在当前 AI 大模型技术和GPU 算力集群快速向着更大规模和更加复杂的方向发展的背景下,这种返璞归真的思维显得尤为珍贵。
在这里插入图片描述

3.2 性能与成本的平衡

文章揭示了Agents 系统中一个关键的权衡:任务表现与系统开销之间的此消彼长关系。

这种权衡涉及三个关键维度:

  • 延迟(系统响应时间)
  • 成本(资源消耗)
  • 任务表现(输出质量)

3.3 场景驱动的技术选择

文章提供了清晰的技术选择指南:

  • 对于明确定义的任务,AI Workflows 工作流是更好的选择,因为它能提供可预测性和一致性
  • 需要灵活性和智能决策时,AI Agents系统的优势才真正显现
  • 大多数简单应用场景,优化单个LLM调用就已足够

3.4 最小可行方案的智慧

文章的核心在于提倡一种渐进式的系统构建方法:

  1. 从最简单的解决方案开始
  2. 通过实际需求驱动复杂度的增加
  3. 在每个阶段评估复杂性带来的收益是否值得

这种考虑权衡的思维方法提醒我们:

技术方案的选择不应该被炫技或跟风所驱动,而应该立足于实际需求和具体场景。

在AI系统设计中,找到正确的平衡点往往比盲目追求复杂性更重要。

这个发现对于当前正在规划或开发AI系统的团队具有重要的指导意义。

这段文字本质上是在讨论工程设计中的一个永恒主题:

如何在简单性和功能性之间找到最佳平衡点。

它提醒我们,在追求技术创新的同时,不要忘记"够用就好"的工程智慧。

四、AI Workflows工作流实践:在复杂与简约之间寻找平衡

何时以及如何使用AI Workflows工作流

目前已有许多AI Workflows工作流可以让Agent系统的实现变得更简单。比如

  • LangChain的LangGraph、
  • 亚马逊Bedrock的AI Agent工作流、
  • 用于拖放式GUI的LLM工作流构建器Rivet,
  • 以及另一个用于构建和测试复杂工作流的GUI工具Vellum。

这些工作流通过简化标准的底层任务(如调用LLM、定义和解析工具、链接调用等),让开发者能够轻松起步。
然而,它们往往会创建额外的抽象层,这可能会模糊底层的提示和响应,增加调试难度。
在一些本可以用简单设置解决的场景中,它们也可能诱使开发者增加不必要的复杂性。

我们建议开发者从直接使用LLM API开始: 许多模式只需要几行代码就能实现。
如果你确实要使用工作流,请务必理解底层代码。
对底层机制的错误假设常常是开发者最容易犯的错误。

在这里插入图片描述

4.1 回归本源:重新思考技术选择

在这个工具和平台层出不穷的时代,我们常常会迷失在众多选择中无法自拔。有句老话怎么说来着:“选择太多,所以迷惑。”

Anthropic的这篇研究为我们带来了一个清醒的视角:

技术的价值不在于其复杂程度,而在于解决问题的效果。

现代AI Workflows 确实能带来便利,让开发过程变得更加流畅,但这种便利背后潜藏着值得深思的问题。

4.2 简约之美:追寻工程的本质

当我们谈论工作流的选择时,往往容易被表面的便利性所吸引。

然而,正如研究所指出的,过度依赖工作流可能会带来意想不到的复杂性。

这就像一个魔术师的工具箱,看似能解决所有问题,但实际上可能让简单的问题变得更加复杂。

最朴素的解决方案,反而可能是最优雅的答案。

4.3 求本溯源:深入 AI 系统的底层逻辑

这里让我们关注原文中的一段深刻洞察:

“然而,它们往往会创建额外的抽象层,这可能会模糊底层的提示和响应,增加调试难度。”

这段话道出了现代 AI 开发中的一个核心难题:

AI Workflows 工作流虽然提供了便捷的开发体验,却可能在便利的表象下掩盖了系统的本质。

读到这句话时,我看着桌上的iPhone,突然让人想起已故的苹果公司创始人乔布斯的产品设计理念:

把简单留给用户,把复杂留给自己。

iPhone看似简约优美的操作界面背后,是iOS系统极其复杂的设计逻辑。
在这里插入图片描述

但关键在于,苹果的工程师们始终对这些系统底层的复杂性保持着清晰的认知和掌控。

反观AI系统开发,当我们过度依赖 AI Workflows 工作流时,就像是在自己与系统之间竖起了一道磨砂玻璃——虽然能看到轮廓,却难以捕捉细节的真实样貌。

这种情况恰恰违背了乔布斯的设计哲学:我们不是主动拥抱并掌控复杂性,而是被工作流刻意营造的"简单假象"所蒙蔽。

在AI技术迭代加速的今天,这种对根本原理的探究显得尤为珍贵。

正如中国古人在《礼记‧大学》中所言:“致知在格物”,真正的技术掌握不在于熟练使用工具,而在于深入理解其运作原理。

直接使用LLM API这种看似"原始"的方式,实际上是一种掌控复杂性的明智选择。

它能帮助开发者建立对系统的透彻理解,在遇到问题时洞察根源,找到最优解决方案。

如果你确实要使用工作流,请务必理解底层代码。
对底层机制的错误假设常常是开发者最容易犯的错误。

这种追本溯源的开发方式,体现的是一种真正的工程智慧。

在人工智能这个日新月异的领域,只有真正理解并掌控了复杂性,我们才能为用户创造出简单易用且可靠的系统。

这不仅是一种技术选择,更是一种追求卓越的专业态度。

正如iPhone手机系列产品的成功一样,真正的技术创新,在于将复杂的技术转化为简约优美的用户体验,而不是简单地逃避复杂性。

它提醒我们,在技术日新月异的今天,一些永恒的系统工程原则仍然闪耀着智慧的光芒。

简单性、可控性、深入理解,这些看似古老的价值观,在AI时代反而显得更加重要。

在快速发展的AI领域,这种返璞归真的思维方式格外珍贵。

它告诉我们,真正的创新不在于再产品上不断堆砌复杂的功能,而在于找到问题的本质并给出优雅的解决方案。

正如我们这个宇宙的数学、物理规律一样,最深刻的真理往往有着最简单的表达方式。

让我们用乔布斯这段经典的话作为上篇的结尾:
在这里插入图片描述

"简约是最高层次的精致。要让事物变得简单需要付出大量努力,这意味着你必须真正理解问题的本质,并找到优雅的解决方案。
简约并不仅仅是极简主义,也不是简单地去除杂乱。相反,它需要你深入钻研,探索事物的复杂性。
要达到真正的简约,你必须深入到问题的本质。你必须深刻理解一个产品的精髓,才能判断出哪些部分是非必需的,并将它们去除。"
—— 史蒂夫·乔布斯

今天先解读到这里,敬请期待下篇解读。

原文链接:https://www.anthropic.com/research/building-effective-agents

相关文章:

如何构建有效的AI Agents:从复杂到简约——深度解读Claude实践总结《Building effective agents》(上)

在人工智能技术日新月异的今天,大语言模型(LLM)已经成为技术创新的热点。 然而,在追逐技术前沿的热潮中,我们是否忽视了工程设计的本质? 作为全球人工智能领域的领军企业之一,Anthropic以其在AI安全和伦理方面的深入…...

mybatis基础学习

JDBC Mysql java基础 maven Junit 一、简介 1. 什么是mybatis MyBatis 是一款优秀的持久层框架;它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原…...

【1224】数据结构(sizeof/数组的长度定义/读取字符串函数/线性表长度/左值右值/静态变量/指针与引用)

1.对一维整型数组a的正确说明是 #define SIZE 10 (换行) int a[SIZE];说法是否正确? 正确 数组的SIZE可以用宏定义,但不能用变量 2.如有定义:char str[20];,能将从键盘输入的字符串“How are you”保存到 str 数组的语句是&#x…...

解决PS 撤销卡顿

1. 关闭Windows Ink - 打开触控笔设置 - 禁用Windows Ink功能 2. 创建 PSUserConfig.txt(注意Win10/11 可能隐藏文件扩展名) - 位置:C:\Users\[用户名]\AppData\Roaming\Adobe\Adobe Photoshop CC 2019\Adobe Photoshop CC 2019 Se…...

Java 中 Stream 流的使用详解

Java 中 Stream 流的使用详解 什么是 Stream? Stream 是 Java 8 引入的一种全新的操作集合的方式。它支持通过声明性方式对集合进行复杂的数据操作(如过滤、排序、聚合等),避免使用大量的 for 循环,提高代码的可读性…...

助你通过AI培训师中级考试的目录索引

嘿,各位看官!在您正式踏入接下来的知识小宇宙之前,咱先唠唠几句… 家人们,我跟你们说,我脑一热报名了那个 AI 培训师考试。本想着开启一场知识的奇幻之旅,结果呢,学视频内容的时候,那…...

【期末复习】JavaEE(下)

1. MVC开发模式 1.1. 运行流程 1.2. SpringMVC 核心组件 1.3. 注解解释 2. ORM与MyBatis 2.1. ORM—对象关系映射 2.2. MyBatis 2.2.1. 创建步骤 会话是单例的,不能跨方法。(单例的原因主要是从数据安全角度出发) import org.apache.ibatis…...

HarmonyOS Next 实现登录注册页面(ARKTS) 并使用Springboot作为后端提供接口

1. HarmonyOS next ArkTS ArkTS围绕应用开发在 TypeScript (简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集 ArkTS在TS的基础上扩展了struct和很多的装饰器以达到描述UI和状态管理的目的 以下代码是一个基于…...

《HelloGitHub》第 105 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...

适配器模式概述

大体介绍 适配器模式(Adapter Pattern)是一种结构型设计模式,其核心目的是通过提供一个适配器类来使得原本接口不兼容的类可以一起工作。它通过将一个类的接口转换成客户端所期望的接口,使得原本因接口不兼容而无法一起工作的类可…...

跟着问题学3.1——R-CNN模型详解

R-CNN解决什么问题 前面我们介绍了经典的网络模型如AlexNet,VGG,ResNet等,这些模型要解决的任务都是分类问题,即输入一张图片,判断图片上是什么类别的物体,而且一般是单个物体。但实际中,我们会遇到一张图片上有多个或…...

微服务-1 认识微服务

目录​​​​​​​ 1 认识微服务 1.1 单体架构 1.2 微服务 1.3 SpringCloud 2 服务拆分原则 2.1 什么时候拆 2.2 怎么拆 2.3 服务调用 3. 服务注册与发现 3.1 注册中心原理 3.2 Nacos注册中心 3.3 服务注册 3.3.1 添加依赖 3.3.2 配置Nacos 3.3.3 启动服务实例 …...

25秋招面试总结

秋招从八月底开始,陆陆续续面试了不少,现在也是已经尘埃落定,在这里做一些总结一些我个人的面试经历 腾讯 腾讯是我最早面试的一家,一开始捞我面试的是数字人民币,安全方向的岗位,属于腾讯金融科技这块。…...

【C#学习——特性】

前言 C#特性学习、主要是用在数据库连接时如何动态创建对应的表,正常开发应该使用如Entity Framework等ORM框架实现自动创建生成。 代码 1、声明特性 [AttributeUsage(AttributeTargets.Property)] public class PrimaryKeyAttribute : Attribute { }[AttributeUs…...

Appscan扫出API成批分配问题解决方案

漏洞条件: 请求json参数不是接收参数的javabean及其父类中的任意属性。 意思就是:我javaben里面没有这个参数 你缺传递过来了 例如我只需要pageNum pageSize 你还传了role:admin 那么这样就有可能导致致特权升级、数据篡改、绕过安全机制 解决方案&am…...

STM32-笔记14-排队控制系统

一、项目需求 1. 红外传感器检测有人通过并计数; 2. 计数值显示在LCD1602 3. 允许通过时,LED1闪烁,蜂鸣器不响,继电器不闭合; 4. 不允许通过时,LED2闪烁,蜂鸣器响,继电器闭合&#…...

【时间之外】IT人求职和创业应知【80】-特殊日子

目录 北京冬季招聘会 OpenAI CEO炮轰马斯克 英伟达推出全新AI芯片B300 莫欢喜,总成空。本周必须要谨行慎言。 感谢所有打开这个页面的朋友。人生不如意,开越野车去撒野,会害了自己,不如提升自己。提升自己的捷径就是学习和思考…...

【GlobalMapper精品教程】090:合并多个面状图斑(以一个镇的多个村不动产宗地为例)

本文讲述在Globalmapper中,合并多个面状图斑的方法,以一个镇的多个村不动产宗地为例(假设一个镇的多个村的不动产宗地数据是分别存储在不同的村子矢量数据中,此时需要合并),点状和线状的操作方法类似。 文章目录 一、加载数据二、数据分析三、合并图斑四、注意事项一、加…...

ffmpeg之播放一个yuv视频

播放YUV视频的步骤 初始化SDL库: 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 创建窗口用于显示YUV视频: 目的:…...

在国产电脑上运行PDFSAM软件使用pdf分割合并交替混合处理pdf文档

软件下载地址: https://sourceforge.net/projects/pdfsam/files/ 需要注意事项,系统需要java环境,确认系统有java环境,根据软件版本需求安装对应的java运行环境。 下载pdfsam-4.3.4-linux.tar.gz安装包,解压,将runt…...

总结一下本次使用docker部署遇到的问题

1.Invalid bound statement (not found):异常 解决:原因是Dao层与动态Sql映射文件名字没有对应 2.element-plus的upload组件文件上传不成功 因为是直接请求后端不是统一的api前缀,所以nginx需要额外配置跨域 3.文件上传问题 描述:当时文…...

c#泛型学习

使用泛型的优点:使用泛型的好处包括类型安全、代码重用和性能优化。 在C#中,泛型是一种强大的工具,它允许你在编写类、接口、方法和委托时定义类型参数。这些类型参数在实例化泛型类型或调用泛型方法时被具体的类型所替代。 1. 泛型类 泛型…...

十二月第五周python

第一个程序,熟悉转换器,把加法计算器变成exe# // 1,制作加法计算器, # 输入两个数字得到相加结果并输出aint(input("输入数字:"))#int()是把输入的内容转换成整数, bint(input("输入数字:&…...

Unity中如何修改Sprite的渲染网格

首先打开SpriteEditor 选择Custom OutLine,点击Genrate 则在图片边缘会出现边缘线,调整白色小方块可以调整边缘 调整后,Sprite就会按照调整后的网格渲染了。 如何在UI中使用? 只要在UI的Image组件中选择Use Sprite Mesh 即可 结果&#xff1…...

修复OpenHarmony系统相机应用横屏拍照按钮点不到的问题

适配OpenHarmony系统相机应用横屏UI, 相关pr: https://gitee.com/openharmony/applications_camera/pulls/233/files 适配效果 如何安装 编译好的hap提供在附件中 1.预置在源码,随固件安装 2.安装hap hdc shell "mount -o remount,rw /"…...

keepass实现google自输入_SSH_TELNET_RDP联动

涉及到的是使用开源密码管理工具KeePass结合特定插件实现自动化密码填充的功能,特别是在谷歌浏览器中的应用。KeePass是一款强大的密码管理软件,它允许用户安全地存储各种账号的用户名和密码,并通过加密保护这些敏感信息。 1. keepass安装及配…...

电脑缺失sxs.dll文件要怎么解决?

一、文件丢失问题:以sxs.dll文件缺失为例 当你在运行某个程序时,如果系统提示“找不到sxs.dll文件”,这意味着你的系统中缺少了一个名为sxs.dll的动态链接库文件。sxs.dll文件通常与Microsoft的.NET Framework相关,是许多应用程序…...

Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架

以下是一个使用Python实现机器学习驱动的智能医疗预测模型系统的示例代码框架。这个框架涵盖了数据收集(爬虫)、数据清洗和预处理、模型构建(决策树和神经网络)以及模型评估的主要步骤。 1. 数据收集(爬虫&#xff09…...

Vue3生态: 使用Vite进行高速开发

Vue3生态: 使用Vite进行高速开发 一、Vite概述 什么是Vite 法语意为 "快速")是一个为现代浏览器原生开发提供服务的构建工具。它使用ES模块作为原生浏览器加载工具,利用浏览器去解析 import 的方式加载文件,极大地加快了应用的启动…...

Android MQTT关于断开连接disconnect报错原因

最近项目遇到一个需求,就是在登录状态的时候。才能接收到消息。所有我在上线,下线状态的时候。做了MQTT断开和连接的动作。然后就是发生了。我们标题的这关键点了。直接报错了。报错的内容如下: MqttAndroidClient unregisterRecevicer afte…...

YOLO11全解析:从原理到实战,全流程体验下一代目标检测

前言 一、模型介绍 二、网络结构 1.主干网络(Backbone) 2.颈部网络(Neck) 3.头部网络(Head) 三、算法改进 1.增强的特征提取 2.优化的效率和速度 3.更高的准确性与更少的参数 4.环境适应性强 5.…...

python中函数的用法总结(二阶段)

话接上回,继续讲下函数的用法 10. 函数的注解(Function Annotations) Python 3 引入了函数注解,允许你在函数定义时给参数和返回值添加注解。注解并不影响函数的实际行为,它们更多地用于代码的可读性、文档生成以及静…...

1082 射击比赛

本题目给出的射击比赛的规则非常简单,谁打的弹洞距离靶心最近,谁就是冠军;谁差得最远,谁就是菜鸟。本题给出一系列弹洞的平面坐标(x,y),请你编写程序找出冠军和菜鸟。我们假设靶心在原点(0,0)。 输入格式:…...

模型工作流:自动化的模型内部三角面剔除

1. 关于自动减面 1.1 自动减面的重要性及现状 三维模型是游戏、三维家居设计、数字孪生、VR/AR等几乎所有三维软件的核心资产,模型的质量和性能从根本上决定了三维软件的画面效果和渲染性能。其中,模型减面工作是同时关乎质量和性能这两个要素的重要工…...

力扣题目解析--两数相除

题目 给你两个整数,被除数 dividend 和除数 divisor。将两数相除,要求 不使用 乘法、除法和取余运算。 整数除法应该向零截断,也就是截去(truncate)其小数部分。例如,8.345 将被截断为 8 ,-2.…...

Python PyMupdf 去除PDF文档中Watermark标识水印

通过PDF阅读或编辑工具,可在PDF中加入Watermark标识的PDF水印,如下图: 该类水印特点 这类型的水印,会在文件的字节流中出现/Watermark、EMC等标识,那么,我们可以通过改变文件字节内容,清理掉…...

嵌入式AI STM32部署卷积神经网络的魔法棒

基于STM32部署卷积神经网络控制设备方案-AI项目-STM32部署卷积神经网络方案-红外信号复制方案-轨迹识别 项目包含下述内容 硬件部分、PCB制板、BOM表文件等等 (Hardware)外壳、3D打印文件 (3D_print)软件程序、用于电子法棒的软件程序 AI Keil等等(Software)QT上位机动作识别…...

电路元件与电路基本定理

电流、电压和电功率 电流 1 定义: 带电质点的有序运动形成电流 。 单位时间内通过导体横截面的电量定义为电流强度, 简称电流,用符号 i 表示,其数学表达式为:(i单位:安培(A&#x…...

【蓝桥杯——物联网设计与开发】系列前言

前言 本系列博客是博主为准备2024年第十五届蓝桥杯大赛物联网设计与开发赛道而写,经过4个月学习备战,最终获得全国一等奖。 从第十六届蓝桥杯大赛开始,物联网赛道更换竞赛实训平台。之前的博客,可以借鉴代码思想,但引脚…...

Linux -- 从抢票逻辑理解线程互斥

目录 抢票逻辑代码: thread.hpp thread.cc 运行结果: 为什么票会抢为负数? 概念前言 临界资源 临界区 原子性 数据不一致 为什么数据不一致? 互斥 概念 pthread_mutex_init(初始化互斥锁) p…...

免费干净!付费软件的平替款!

今天给大家介绍一个非常好用的电脑录屏软件,完全没有广告界面,非常的干净简洁。 电脑录屏 无广告的录屏软件 这个软件不需要安装,打开就能看到界面直接使用了。 软件可以全屏录制,也可以自定义尺寸进行录制。 录制的声音选择也非…...

Mybatis插件better-mybatis-generator的下载与使用

1.下载 找到设置 插件 搜索better-mybatis-generator 下载并且重启IDEA 2.连接数据库 点击测试连接 连接成功如下图 3.使用插件 选择对应的表 右击选择 注意:mysql8.0驱动一定要勾上mysql_8 其他地方不要动 然后实体类 mapper xml就都生成好了 mapper里有默认增删…...

【测试】接口测试

长期更新好文,建议关注收藏! 目录 接口规范接口测试用例设计postmanRequests 复习HTTP超文本传输协议 复习cookiesession 实现方式 1.工具 如postman ,JMeter(后者功能更全) 2.代码 pythonrequests / javahttpclient【高级】 接…...

靶机系列|VULNHUB|DC-2

免责声明: 笔记只是方便各位师傅学习知识,以下代码、网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 泷羽sec官网:https://longyusec.com/ 泷羽sec B站地址:https://s…...

上手教程:使用Terraform打造弹性VPC架构

最近Akamai发布的虚拟专用云(VPC)功能提供了一种隔离的网络,让云资源可以用私密的方式进行通信。 关于Akamai VPC功能,最棒的地方在于它有着极高的灵活性。用户可以通过Cloud Manager、开发人员工具(如CLI&#xff09…...

详解VHDL如何编写Testbench

1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…...

Kafka为什么要放弃Zookeeper

1.Kafka简介 Apache Kafka最早是由Linkedin公司开发,后来捐献给了Apack基金会。 Kafka被官方定义为分布式流式处理平台,因为具备高吞吐、可持久化、可水平扩展等特性而被广泛使用。目前Kafka具体如下功能: 消息队列,Kafka具有系统解耦、流…...

python 渗透开发工具之SQLMapApi Server不同IP服务启动方式处理 解决方案SqlMapApiServer外网不能访问的情况

目录 说在前面 什么是 SQLMapAPI 说明 sqlmapApi能干什么 sqlmapApi 服务安装相关 kali-sqlmap存放位置 正常启动sqlmap-api server SqlMapApi-Server 解决外网不能访问情况 说在前面 什么是sqlmap 这个在前面已经说过了,如果这个不知道,就可以…...

go语言的成神之路-筑基篇-gin常用功能

第一节-gin参数绑定 目录 第一节-?gin参数绑定 ShouldBind简要概述 功能: 使用场景: 可能的错误: 实例代码 效果展示 第二节-gin文件上传 选择要上传的文件 选择要上传的文件。 效果展示? 代码部分 第三节-gin请求重定向 第…...

K8S中,pod的创建流程

kubelet创建pod流程 流程图 OCI(Open Container Initiative)是一个由docker社区发起的项目,Docker、containerd CNI(Container Network Interface)网络配置:为容器分配IP地址、配置网络接口、设置路由 C…...