在Web界面设计领域,从创意构想到可交付原型的全链路,往往要经历繁琐流程,迭代速度慢,严重影响团队效率。而AI设计工具的不断升级,不仅支持智能生成可编辑的UI界面、快速搭建带交互的原型,还支持灵活迭代,大幅提升设计效率。下面就为大家梳理六款兼顾实用性与专业性的AI设计工具,帮助设计创意更快落地、创造价值。

  1. UXbot
    核心定位:国内AI原型设计的实用标杆工具,能打通“文字提需求-高保真原型-界面设计-Web前端开发”全环节,实现一站式智能协作。
    UXbot能精准理解文字需求、拆解业务逻辑,不管是网站、移动应用还是平板端界面,都能直接生成高保真设计稿,不用人工搭建基础框架。同时还能自动生成可视化PRD,不用再分开做设计和写文档,解决了两者脱节的问题,大大减少重复工作量。生成的界面还能直接设置复杂交互和页面跳转,完整还原用户使用流程。
    它有两种编辑方式可选:既能通过AI对话微调局部设计,也能用自带的专业编辑器精细化打磨,不管是快速验证想法,还是深度优化设计,都能满足需求,精准度能达到像素级控制。
    另外,还支持把高保真界面转换成Web前端代码,通过云端服务器完成全流程测试,生成的代码可导出为Vue格式,直接导入开发环境使用。
    这套“需求-设计-交互-开发”的完整流程,能帮中文语境下的产品和设计团队,高效推进网站开发落地。
    image.png
  2. Galileo AI
    核心定位:主打视觉美感的高保真UI生成工具,适合探索设计风格、制作视觉原型。
    Galileo AI的视觉渲染效果很出色,生成的界面既美观又有细节,用来做情绪板、快速尝试不同设计风格非常合适。设计好的内容可以直接同步到Figma里,进行可无限放大不失真的编辑,方便进一步优化打磨,精准落地设计想法。
    不过它也有不足:对中文指令的理解不够准,处理复杂业务逻辑时不如UXbot好用。所以更适合以视觉设计为主、常用英文指令的场景,要是涉及复杂中文需求或业务流程,还需要人工调整校准。
    image.png
  3. Uizard
    核心定位:能把手绘创意转成数字界面的工具,降低非设计人员做原型的门槛。
    Uizard最核心的功能就是识别手绘草图,把纸上的创意快速数字化。只要拍下手绘稿上传,AI就能自动识别按钮、输入框、图片等元素,生成可编辑的数字UI界面。工具操作特别简单,不用具备专业设计技能,就能把白板上的想法落地成原型,很适合创业者、跨部门团队在需求评审后,快速验证创意是否可行。
    image.png
  4. Relume
    核心定位:专注网页结构设计的AI工具,擅长快速搭建营销官网和SaaS产品着陆页。
    Relume做网页设计时,会先理清逻辑再动手:根据需求生成站点地图,梳理好网页层级和信息排布,再用海量Web组件拼装线框图,既能保证页面逻辑清晰,又能兼顾视觉统一。上千种组件可灵活组合,既不耽误设计效率,又能保留创意空间,能快速做出实用又美观的网页原型,为后续优化打下基础。
    image.png
  5. Vev AI
    核心定位:融合可视化编辑与AI生成功能的全流程网页工具,打通设计与开发的衔接瓶颈。
    只要用文字描述需求,Vev AI就能生成分图层、可编辑的网页界面,还自带基础交互效果,能快速验证用户体验。平台内置可视化编辑模块,可精准调整设计细节,同时支持一键导出HTML/CSS代码,直接交付开发使用,大幅缩短设计到开发的转化时间,很适合网页设计与前端开发协同工作的场景。
    image.png
  6. Framer AI
    核心定位:践行“设计即代码”理念,能把设计稿快速转成可访问的网页。
    Framer AI的代码生成能力很强,可直接把UI设计元素转换成HTML、CSS或React组件,让设计和开发无缝衔接。同时支持制作高保真动效和微交互,设计时就能预览实际呈现效果,让网页体验更生动。设计完成后,还能直接发布成可访问的网页链接,跳过中间转化步骤,加快产品上线速度,适合以前端开发为核心的高效落地项目。
    image.png

工具选型战略指南
上述六款工具覆盖了手绘转数字、视觉设计、代码输出等全场景设计需求,能满足不同团队的多样化需求。如果团队侧重中文语境下的全流程高效落地,想从文字需求直接做出可交付的交互原型,还能同步生成设计和产品资料,UXbot会是最优选择,它能打通全流程环节,帮团队高效实现从创意到落地的转化。

生成式 AI 的投资回报远超预期?Snowflake 调研全球 1900 位企业与 IT 专业人士后发现平均 ROI 高达 41%!点击下载完整报告

在 2025 年稳步发展的基础上,2026 年将成为智能体 AI 在企业中实现真正落地的关键之年。

 

回顾 2025 年初,行业曾普遍预测智能体 AI 将迎来爆发式增长与颠覆性普及。尽管技术进步显著且持续加速,但这一年的更深层意义在于,它重塑了我们对技术可行性的理解。各类组织已超越简单的聊天机器人应用场景,开始积极探索能够自主规划、执行任务并持续迭代的智能体系统。如今,核心智能体能力显著提升,已可胜任一年前仍难以处理的复杂多步骤任务。随着市场的迅速扩张,投资与创新正形成叠加效应,持续推动着该领域的发展。

 

为制定本年度的 Snowflake 数据与人工智能预测报告,我与十余位 Snowflake 的领导者共同梳理了对未来一年的行业展望。报告的核心观点是:智能体将在企业级应用中取得实质性突破。以下摘录本年度报告中的部分预测要点:

 

上下文窗口与记忆能力将成为提升智能体性能的关键:未来一年,上下文窗口与记忆能力的重大改进将使智能体能够基于更宏观的情境理解,以更高的自主性应对复杂挑战。Snowflake 工程与支持高级副总裁 Vivek Raghunathan 指出:“这是一种更趋近于人类的能力——能够记住更广泛的情境信息以解决当前问题。”

 

工作者需精通人与 AI 的协作与沟通:人类仍将处于决策闭环之中,部分原因是驱动决策的数据并非全部对 AI 开放。Snowflake 产品副总裁 Chris Child 强调,AI 能对其掌握的数据进行深度分析,但人类直觉仍不可或缺。他表示:“AI 模型将深入理解您的数据,但您仍需学会何时存疑、何时在行动前进行深度追问。”

 

数据战略将决定 AI 就绪度与最终成效:Snowflake 首席信息官 Mike Blandina 指出:“当 AI 提供准确答案时,还必须确保私有或专有数据不被泄露。用户是否拥有查看此答案的权限?您的营销聊天机器人是否在泄露员工的社保号或客户的信用卡信息?这并非 AI 本身的问题,而是关乎如何治理与保护数据。”

 

到 2026 年末,核心问题将不再是人工智能能做什么,而是人与人工智能如何协同工作。换言之,重点将转向角色如何演变、决策权如何分配,以及领导者在自主性日益增强的环境中如何建立信任与明确责任。

 

十年前,首席数据与分析官(CDO)的职责主要聚焦于数据治理。但随着智能体化人工智能的到来,这一角色已扩展至统筹企业内智能体的协同运作。首席数据与分析官需负责保障智能体所依赖数据的质量与合规性,设计智能体嵌入的工作流程,并对这些系统在现实场景中的表现承担最终责任。这使得首席数据与分析官的职能更接近真正的“人工智能首席运营官”——其职责横跨工程技术、合规监管、安全防御、运营维护及产品团队,确保人工智能运行模型具备稳定性、可信度以及与业务目标的高度一致性。

 

到 2026 年,企业面临的挑战将不再局限于将智能体简单部署至生产环境。管理者需要围绕智能体建立起系统化的管理体系,这意味着必须构建可靠的验证框架、厘清人机协同的职责边界,并实现全链路的可观测性,确保每个智能体的行为皆可审计、可解释、可信任。这一趋势将催生正式的 AI 质量控制职能,通过持续监测与评估,保障智能体行为始终与商业意图保持一致。对于注重可靠性的企业而言,这已成为必然的演进方向。

 

实现此类管控体系,依赖于坚实且集中的数据基础与治理架构。在早期实验阶段行之有效的联邦模型虽有助于提升开发效率,但随着智能体系统的扩展,必须确保跨工作流的高度一致性:统一的语义规范、严格的权限管理以及不容妥协的安全保障,已成为系统规模化运作的必要条件。

 

随着企业推进流程与决策权限的重构,建立贯穿组织全局的反馈闭环至关重要。此类闭环可协助团队优化规则边界、改进模型行为,并确保责任机制始终保持清晰。短期来看,智能体系统将最适用于边界明确、结构化程度高且风险可控的工作流程。随着数据成熟度、治理体系以及组织适配能力的持续提升,智能体将逐步进入更复杂的决策链路,获得更高自主权,并产生更具战略价值的影响。

 

智能体 AI 并非替代人类工作,而是重塑工作模式,开拓新的机遇维度与规模化潜力。若需深入了解更多前沿趋势,敬请参阅《Snowflake 数据与 AI 预测报告(2026)》

原文地址:https://www.snowflake.com/en/blog/data-ai-predictions-2026/

AI 时代,“眼高手低”不一定是缺点,很多时候反而会赢。别急着反驳,我说的不是那种“只会嫌弃、从不动手”的嘴强王者,而是另一种人:标准很高、判断很快、方向感很强,只是过去“手艺活”跟不上,所以经常被一句“你行你上”堵死。问题是,现在这个“你行你上”,AI 可以替你上了。

过去社会奖励什么?奖励“能做出来”。你会写代码、会剪视频、会画图、会做 PPT 、会写文案,你就有产出,你就更值钱。所以“眼高手低”被当成毛病——想得大、做不到、拖延、烂尾、焦虑。可现在的变化是,AI 正在把“做出来”这件事变成低门槛,甚至变成“基础工种”。你不会写? AI 写。你不会剪? AI 剪。你不会画? AI 出十个版本给你挑。产出这件事开始廉价,开始泛滥,开始像自来水一样拧开就有。那接下来真正稀缺的是什么?不是“谁更能干活”,而是“谁更知道该干什么、怎么才算好、哪里该删、哪里必须保留、什么是有效、什么是垃圾”。

我觉得很多人没意识到一个很刺耳的事实:AI 正在把“会做”贬值,把“会挑”升值。以前你挑剔会被当成事儿多,因为你挑完也做不出来;现在你挑剔如果挑得对,那叫审美、叫标准、叫判断力、叫总导演。AI 能一口气给你十个版本,但十个版本里九个半都只是“像那么回事”,离“真对”永远差半口气。那差的半口气是谁补?就是那个“眼高”的人——一眼能看出来哪里不对,知道怎么改,知道改到什么程度就停,知道为谁服务、为啥服务。未来越来越像这样:AI 负责堆产出、跑流程、填细节,人负责方向、标准、取舍、验收。执行不再稀缺,判断开始稀缺。

更反直觉的是,未来最容易被淘汰的,可能不是懒人,而是“勤奋但没标准”的人。以前你只要肯做,多少都会有回报;现在你肯做? AI 比你更肯做,24 小时不休息,版本比你多十倍,你靠“我更努力”去跟服务器拼耐力?这比赛从一开始就输了。你唯一能赢的是:你能提出更好的问题,你能给出更清晰的目标,你能设定更高的标准,你能在一堆“差不多”里挑出“对的”,你能决定什么值得做、什么不值得做。说白了,人类的价值正在从“做事”迁移到“做决定”。而“眼高”这件事,本质上离“做决定”更近。

“眼高手低”会不会逐渐变成优势?我的答案是:会,甚至会成为分水岭。因为当“手”被技术托底之后,“眼”决定上限、决定方向、决定值不值钱。未来会出现一种很不公平但很真实的局面:所有人都能产出,但只有少数人能产出值钱的东西。那少数人靠的往往不是更会干活,而是更会判断、更会取舍、更敢设标准、更能把标准讲清楚并坚持验收。

引言

在数字化转型的浪潮中,企业信息化建设面临的核心挑战已从“是否转型”转变为“如何高效推进”。然而,数据孤岛问题成为阻碍企业发展的普遍难题——系统割裂、数据无法互通、业务流程低效。传统解决方案如外包开发或Excel管理,往往成本高、周期长且难以适应快速变化的业务需求。

活字格低代码开发平台通过可视化开发、跨系统集成、AI增强等能力,帮助企业将开发周期缩短60%,实现数据互通与流程自动化。本文将深入解析其技术原理、实践案例及行业价值,为企业的数字化转型提供新思路。

一、数据孤岛的成因与行业痛点

1. 系统割裂的典型场景

  • 多系统并存:集团与子公司使用独立ERP、OA系统,数据需人工导出导入。
  • 工具依赖:Excel管理导致版本混乱、权限失控,如某制造企业因表格版本错误损失百万订单。
  • 接口开发成本高:传统集成需编写复杂API,平均耗时3-6个月,且维护困难。

2. 传统解决方案的局限性

  • 外包开发:周期长(平均6个月)、灵活性差,需求变更时需重新付费。
  • 定制化集成:成本高昂,某零售企业集成CRM与供应链系统花费超200万元。

案例:某能源集团因数据孤岛导致决策延迟,月度报表汇总需5天,错失市场机会。

二、活字格的技术突破:如何破解孤岛?

1. 可视化数据集成:WebAPI与SSO

  • HTTP-based WebAPI:通过配置化服务端命令调用远程API,无需编写底层代码。

    • 优势:比数据库直连安全,比消息队列易管理,支持实时数据同步。
    • 实践:某物流企业集成TMS与WMS系统,数据同步效率提升90%。
  • 单点登录(SSO):统一入口访问多系统,用户无需重复登录。

2. 类Excel设计器:业务人员也能开发

  • 拖拽式表单构建:支持动态规则、数据验证,如某医院1天内搭建疫情填报系统。
  • 简化的BPMN流程引擎:支持加签、回退等复杂逻辑,审批流程上线时间缩短70%。

代码示例:配置服务端命令调用API

// 活字格中调用远程WebAPI  
Forguncy.Command.executeWebAPI({  
  url: "https://api.erp.com/sales",  
  method: "GET",  
  onSuccess: (data) => { console.log(data); }  
});  

三、效率提升:从“月”到“周”的飞跃

1. 开发周期缩短60%的底层逻辑

  • 模块化复用:预置模板库(如CRM、进销存)覆盖80%通用场景。
  • 运行时热更新:修改流程或表单无需重新发布,某电商促销系统迭代速度提升3倍。

2. 行业对比数据

方案平均周期成本灵活性
外包开发6个月50万+
传统低代码2个月20万
活字格2周5万起
案例:某汽车经销商用活字格2周上线售后工单系统,传统开发需3个月。

四、扩展性与AI赋能:面向未来的架构

1. 混合开发模式

  • 低代码+编码:JavaScript插件扩展复杂逻辑,如封装高性能数据清洗API。
  • 一键迁移:将Access应用转为Web系统,某政府单位3天完成老旧系统升级。

2. AI增强全流程

  • 设计时:自然语言生成SQL查询(如“查询2023年销售额TOP10客户”)。
  • 运行时:AI助手自动检测数据异常,某银行风控系统误报率降低40%。

结论

活字格低代码平台通过四大核心能力——可视化集成、敏捷开发、混合扩展、AI增强,为企业提供了一条高效破解数据孤岛的路径。其价值不仅体现在“开发周期缩短60%”的效率提升,更在于重构了企业数字化的协作范式:

  1. 从被动响应到主动创新:业务部门可直接参与系统搭建。
  2. 从孤立系统到生态协同:ERP、OA、CRM等无缝互通。
  3. 从固定流程到智能进化:AI持续优化业务流程。

在数字化转型的竞赛中,活字格正成为企业赢得敏捷性的关键引擎。

上次写程序还是三年前,早上给当教师的小妹爬点数据,用了 chatgpt 和 github 内置 ai 问答,没想到一个几百行的爬虫代码+调试,半个小时就搞定了。真的不得不感叹 ai 进步神速。
说下步骤:
1 、说清诉求,例如我要的是爬取列表页和详情页数据,并最后输出 markdown 字符串。
2 、介绍环境,给出列表页、详情页的 html 结构和个字段对应关系
3 、由于只有 10 多页,我告诉它我希望的大概流程,即我在 list 页面执行脚本,给我输出当前所有 list 的 detail 信息,并组装成 markdown 格式。然后我手动执行十多遍。
4 、输出代码,调试。。。

虽然解决了问题,但姿势感觉还是比较山寨,离开发工作久了,想看看大家平时是怎么用 ai 进行编程的。

一、背景

得物经过10年发展,计算任务已超10万+,数据已经超200+PB,为了降低成本,计算引擎和存储资源需要从云平台迁移到得物自建平台,计算引擎从云平台Spark迁移到自建Apache Spark集群、存储从ODPS迁移到OSS。

在迁移时,最关键的一点是需要保证迁移前后数据的一致性,同时为了更加高效地完成迁移工作(目前计算任务已超10万+,手动比数已是不可能),因此比数平台便应运而生。

二、数据比对关键挑战与目标

关键挑战一:如何更快地完成全文数据比对

现状痛点:

在前期迁移过程中,迁移同学需要手动join两张表来识别不一致数据,然后逐条、逐字段进行人工比对验证。这种方式在任务量较少时尚可应付,但当任务规模达到成千上万级别时,就无法实现并发快速分析。

核心问题:

  • 效率瓶颈:每天需要完成数千任务的比对,累计待迁移任务达10万+,涉及表数十万张。
  • 扩展性不足:传统人工比对方式无法满足大规模并发处理需求。

关键挑战二:如何精准定位异常数据

现状痛点:

迁移同学在识别出不一致数据后,需要通过肉眼观察来定位具体问题,经常导致视觉疲劳和分析效率低下。

核心问题:

  • 分析困难:在比对不通过的情况下,比对人员需要人工分析失败原因。
  • 复杂度高:面对数据量庞大、加工逻辑复杂的场景,特别是在处理大JSON数据时,肉眼根本无法有效分辨差异。
  • 耗时严重:单次比对不通过场景的平均分析时间高达1.67小时/任务。

比数核心目标

基于以上挑战,数据比对系统需要实现以下核心目标:

  • 高并发处理能力:支持每天数千任务的快速比对,能够处理10万+待迁移任务和数十万张表的规模。
  • 自动化比对机制:实现全自动化的数据比对流程,减少人工干预,提升比对效率。
  • 智能差异定位:提供精准的差异定位能力,能够快速识别并高亮显示不一致的字段和数据。
  • 可视化分析界面:构建友好的可视化分析平台,支持大JSON数据的结构化展示和差异高亮。
  • 性能优化:将用户单次比对分析时间从小时级大幅缩短至分钟级别。
  • 可扩展架构:设计可水平扩展的系统架构,能够随着业务增长灵活扩容。

三、解决方案实现原理

快速完成全文数据比对方法

比数方法调研

待比对两表数据大小:300GB,计算资源:1000c


经过调研分析比数平台采用第二种和第三种相结合的方式进行比数。

先Union再分组数据一致性校验原理

假如我们有如下a和b两表张需要进行数据比对

表a:


表b:


表行数比较:

select count(1) from a ;
select count(1) from b ;

针对上面的查询结果,如果数量不一致则退出比对,待修复后重新比数;数量一致则继续字段值比较。

字段值比较:

第一步:union a 和 b

select 1 as _t1_count, 0 as _t2_count, `id`, `name`, `age`, `score`
from a
union all
select 0 as _t1_count, 1 as _t2_count, `id`, `name`, `age`, `score`
from b

第二步:sum(_t1_count),sum(_t2_count) 后分组

select sum(_t1_count) as sum_t1_count, sum(_t2_count) as sum_t2_count, `id`, `name`, `age`, `score`
from (
select 1 as _t1_count, 0 as _t2_count, `id`, `name`, `age`, `score`
from a
union all
select 0 as _t1_count, 1 as _t2_count, `id`, `name`, `age`, `score`
from b
) as union_table
group by `id`, `name`, `age`, `score`


第三步:把不一致数据写入新的表中(即上面表中sum_t1_count和sum_t2_count不相等的数据)

drop table if exists a_b_diff_20240908;
create table a_b_diff_20240908 as select * from (
select sum(_t1_count) as sum_t1_count, sum(_t2_count) as sum_t2_count, `id`, `name`, `age`, `score`
from (
select 1 as _t1_count, 0 as _t2_count, `id`, `name`, `age`, `score`
from a
union all
select 0 as _t1_count, 1 as _t2_count, `id`, `name`, `age`, `score`
from b
) as union_table
group by `id`, `name`, `age`, `score`
having sum(_t1_count) <> sum(_t2_count)
) as tmp

如果a_b_diff_20240908没有数据则两张表没有差异,比数通过,如有差异如下:

第四步:读取不一致记录表,根据主键(比如id)找出不一致字段并写到结果表中。

第五步:针对不一致字段的数据进行根因分析,如 json 、数组顺序问题、浮点数精度问题等,给出不一致具体原因。

哈希值聚合实现高效一致性校验

针对上面union后sum 再 group by 方式 在数据量大的时候还是非常耗资源和时间的,考虑到比数任务毕竟有70%都是一致的,所以我们可以先采用哈希值聚合比较两表的的值是否一致,使用这种高效的方法先把两表数据一致的任务过滤掉,剩下的再采用上面方法继续比较,因为还要找出是哪个字段哪里不一致。原理如下:

SELECT count (*),SUM(xxhash64(cloum1)^xxhash64(cloum2)^...) FROM tableA 
EXCEPT 
SELECT count(*),SUM(xxhash64(cloum1)^xxhash64(cloum2)^...) FROM tableB

如果有记录为空说明数据一致,不为空说明数据不一致需要采用上面提到union 分组的方法去找出具体字段哪里不一样。

通过哈希值聚合,单个任务比数时间从500s降低到160s,节省大约70%的时间。

找到两张表不一致数据后需要对两张的数据进行分析确定不一致的点在哪里?这里就需要知道表的主键,根据主键逐个比对两张表的其他字段,因此系统会先进行主键的自动探查,以及无主键的兜底处理。

精准定位异常数据实现方法

自动探查主键:实现原理如下

刚开始我们采用的前5个字段找主键的方式,如下:

针对表a的前5个字段 循环比对
select count(distinct id) from a 与 select count(1) from a 比较 ,如相等主键为id ,不相等继续往下执行
select count(distinct id,name) from a 与 select count(1) from a比较,如相等主键为id,name ,不相等继续往下执行
select count(distinct id,name,age) from a 与 select count(1) from a比较,如相等主键为id,name,age ,不相等继续往下执行,直到循环结束

采用上面的方法不一致任务中大约有49.6%任务自动探查主键失败:因此需重点提升主键识别能力。

针对以上主键探查成功率低的问题,后续进行了一些迭代,优化后的主键探查流程如下:

一、先采用sum(hash)高效计算方式进行探查:

1.先算出两张表每个字段的sum(hash)值  。

select sum(hash(id)),sum(hash(name)),sum(hash(age)),sum(hash(score)) from a 
union all 
select sum(hash(id)),sum(hash(name)),sum(hash(age)),sum(hash(score)) from b;

2.找出值相等的所有字段,本案例中为 id, name。

3.对id,name 可能是主键进一步确认,先进行行数校验,如 select count(distinct id,name) from a 的值等于select count(1) from a 则进一步校验,否则进入到第二种探查主键方式。

4.唯一性验证,如果值为0则表示探查主键成功,否则进入到第二种探查主键方式。

slect count(*) from ((select id,name from a ) expect (select id,name from b))

二、传统distinct方式探查:

针对表a的前N(所有字段数/2或者前N、后N等)个字段 循环比对:

1.select count(distinct id) from a与select count(1) from a比较 ,如相等主键为id ,不相等继续往下执行。

2.select count(distinct id,name) from a 与 select count(1) from a比较,如相等主键为id,name ,不相等继续往下执行。

3.select count(distinct id,name,age) from a 与 select count(1) from a比较,如相等主键为id,name,age ,不相等继续往下执行,直到循环结束。

三、全字段排序模拟:

如果上面两种方式还是没有找到主键则把不一致记录表进行全字段排序然后对第一条和第二条记录挨个字段进行分析,找出不一致内容,示例如下:

slect * from a_b_diff_20240908 order by id,name,age,score asc limit 10;


通过以上结果表可以得出两表的age字段不一致 ,score不一致(但按key排序后一致)。

如果以上自动化分析还是找不到不一致字段内容,可以人工确认表的主键后到平台手动指定主键字段,然后点击后续分析即可按指定主键去找字段不一致内容。

通过多次迭代优化找主键策略,找主键成功率从最初的50.4%提升到75%,加上全字段order by排序后最前两条数据进行分析,相当于可以把找主键的成功率提升到90%以上。

根因分析:实现原理如下

当数据不一致时,平台会根据主键找出两个表哪些字段数据不一致并进行分析,具体如下:

  • 精准定位: 明确指出哪条记录、哪个字段存在差异,并展示具体的源数据和目标数据值。
  • 智能根因分析: 内置了多种差异模式识别规则,能够自动分析并提示不一致的可能原因,例如:
  • 精度问题:如浮点数计算1.0000000001与1.0的差异。
  • JSON序列化差异:如{"a":1, "b":2}与{"b":2, "a":1},在语义一致的情况下,因键值对顺序不同而被标记为差异。同时系统会提示排序后一致。
  • 空值处理差异:如NULL值与空字符串""的差异判定。
  • 日期时区转换问题:时间戳在不同时区下表示不同。

  • 比对结果统计: 提供总数据量、一致数据量、不一致数据量及不一致率百分比,为项目决策提供清晰的量化依据。
  • 比数人员根据平台分析的差异原因,决定是否手动标记通过或进行任务修复。
  • 效果展示:

四、比数平台功能介绍

数据比对基本流程

任务生成:三种比对模式

  • 两表比对: 最直接的比对方式。用户只需指定源表与目标表,平台即可启动全量数据比对。它适用于临时比对的场景。
  • 任务节点比对: 一个任务可能输出多个表,逐一配置这些表的比对任务繁琐且易遗漏,任务节点比对模式完美解决了这一问题。用户只需提供任务节点ID,平台便会自动解析该节点对应的SQL代码,提取出所有输出表,并自动生成比对任务,极大地提升任务迁移比对效率。
  • SQL查询比对: 业务在进行SDK迁移只关心某些查询在迁移后数据是否一样,因此需要对用户提交的所有查询SQL进行比对,平台会分别在ODPS和Spark引擎上执行该查询,将结果集导出到两张临时表,再生成比对任务。

前置校验:提前发现问题

在启动耗时的全量比对之前,需要对任务进行前置校验,确保比对是在表结构一致、集群环境正常的情况下进行,否则一旦启动比数会占用大量计算资源,最后结果还是比数不通过,会影响比数平台整体的运行效率。因此比数平台一般会针对如下问题进行前置拦截。

  • 元数据一致性校验: 比对双方的字段名、字段类型、字段顺序、字段个数是否一致。
  • 函数缺失校验: 针对Spark引擎,校验SQL中使用的函数是否存在、是否能被正确识别,避免因函数不支持而导致的比对失败。
  • 语法问题校验: 分析SQL语句的语法结构,确保其在目标引擎中能够被顺利解析,避免使用了某些特定写法会导致数据出现不一致情况,提前发现语法层面问题,并对任务进行改写。

更多校验点如下:




通过增加以上前置校验拦截,比数任务数从每天3000+下降到1500+, 减少50% 的无效比数,其中UDF缺失最多,有效拦截任务1238,缺少函数87个(帮比数同学快速定位,一次性解决函数缺失问题,避免多次找引擎同学陆陆续续添加,节省双方时间成本)。

破解比数瓶颈:资源分配与任务调度优化

由于比数平台刚上线的时候只有计算迁移团队在使用,后面随着更多的团队开始使用,性能遇到了如下瓶颈:

1.资源不足问题: 不同业务(计算迁移、存储迁移、SDK迁移)的任务相互影响,基本比数任务与根因分析任务相互抢占资源。

2.任务编排不合理: 没有优先级导致大任务阻塞整体比数进程。

3.引擎参数设置不合理: 并行度不够、数据分块大小等高级参数。

针对以上问题比数平台进行了如下优化:

  • 按不同业务拆分成多个队列来运行,保证各个业务之间的比数任务可以同时进行,不会相互影响。
  • 根因分析使用单独的队列,与数据比对任务的队列分开,避免相互抢占资源发生“死锁”。
  • 相同业务内部按批次分时段、分优先级运行,保障重要任务优先进行比对。
  • 针对Spark引擎默认调优了公共参数、并支持用户自主设置其他高级参数。

通过以上优化达到到了如下效果:

  • 比数任务从每天22点完成提前至18点前,同时支持比数同学自主控制高优任务优先执行,方便比数同学及时处理不一致任务。
  • 通过优化资源队列使用方式,使系统找不到主键辅助用户自主找主键接口响应时间从58.5秒降到 26.2秒。

五、比数平台收益分享

平台持续安全运行500+天,每日可完成2000+任务比对,有效比数128万+次,0误判。

  • 助力计算迁移团队节省45+人日/月,完成数据分析、离线数仓空间任务的比对、交割。
  • 助力存储迁移团队完成20%+存储数据的迁移。
  • 助力引擎团队完成800+批次任务的回归验证,确保每一次引擎发布的安全及高效。
  • 助力SDK迁移团队完成80%+应用的迁移。

六、未来演进方向

接下来,平台计划在以下方面持续改进:

智能分析引擎: 针对Json复杂嵌套类型的字段接入大模型进行数据根因分析,找出不一致内容。

比对策略优化: 针对大表自动切分进行比对,降低比数过程出现因数据量大导致异常,进一步提升比对效率。

通用方案沉淀: 将典型的比对场景和解决方案能用化,应用到更多场景及团队中去。

七、结语

比数平台是得物在迁移过程中,为了应对海量任务、大数据量、字段内容复杂多样、异常数据难定位等挑战,确保业务迁移后数据准确而专门提供的解决方案,未来它不单纯是一个服务计算迁移、存储迁移、SDK迁移、Spark版本升级等需要的数据比对工具,而是演进为数据平台中不可或缺的基础设施。

往期回顾

1.得物App智能巡检技术的探索与实践

2.深度实践:得物算法域全景可观测性从 0 到 1 的演进之路 

3.前端平台大仓应用稳定性治理之路|得物技术

4.RocketMQ高性能揭秘:承载万亿级流量的架构奥秘|得物技术

5.PAG在得物社区S级活动的落地

文 /Galaxy平台

关注得物技术,每周更新技术干货

要是觉得文章对你有帮助的话,欢迎评论转发点赞~

未经得物技术许可严禁转载,否则依法追究法律责任。

工业AI大模型正逐渐成为现代制造业数字化转型的核心驱动力。与通用型AI模型不同,工业AI大模型深度融合行业知识、工艺流程与多模态数据,为制造企业提供从研发、生产到运营的全链路智能化解决方案。
一、工业AI大模型的发展现状与特点
工业AI大模型的发展并非一蹴而就,它经历了从单一算法应用到平台化、模块化智能体的演进过程。与传统的工业软件或通用AI模型相比,工业AI大模型更加注重场景适配性、多模态融合与知识沉淀能力。
不仅如此,工业AI大模型还表现出强大的自学习与自适应能力。它能够基于实时数据动态调整模型参数,适应不同的生产环境与外部条件变化。例如,在复杂排产场景中,传统方法往往需要人工干预,而工业AI大模型可以通过强化学习与优化算法,在极短时间内生成全局最优解,大幅提升资源利用效率。
然而,工业AI大模型的落地仍面临一些挑战。数据质量不高、行业知识沉淀不足、系统集成复杂度高等问题,限制了其规模化应用。正因如此,平台化与生态化逐渐成为工业AI大模型发展的重要方向。
二、工业AI大模型的核心优势与应用价值
工业AI大模型的核心优势在于其能够实现全局优化与跨环节协同。传统工业软件往往局限于某一特定环节,例如MES系统负责生产执行,ERP系统侧重资源规划,而工业AI大模型可以打通这些系统之间的数据壁垒,实现从订单接收到产品交付的全流程智能化管理。
具体而言,工业AI大模型在以下方面展现出显著价值:
首先,它能够大幅提升生产效率和资源利用率。通过智能排产、能耗优化、质量预测等功能,企业可以实现更精细化的运营管理。
其次,工业AI大模型支持多模态数据的融合处理,这在质量检测、设备健康管理等场景中尤为重要。例如,通过结合视觉识别与传感器数据,AI模型可以实时监测生产线上的异常情况,并提前预警,避免非计划停机。此外,工业AI大模型还表现出较强的泛化与迁移能力。一家企业在某个场景中训练优化的模型,可以通过微调快速适配到其他类似场景中,这大大降低了AI应用的开发与部署成本。
三、工业AI大模型的应用案例与实效分析
在实际应用中,工业AI大模型已经帮助众多制造企业取得了显著成效。以下是几个典型案例:
广域铭岛为领克成都工厂提供的工业互联网平台,是一个典型的全链路智能化应用。该平台通过整合订单管理、生产排程、质量控制和物流调度等环节,实现了工厂级的数据协同与决策优化。其中,基于AI大模型的智能排产系统,能够在考虑设备状态、物料供应和人员安排等多重约束条件下,快速生成高效生产计划。结果显示,该工厂订单交付周期缩短15%,质量损失成本降低13%,物流效率提升10%。
阿里巴巴旗下犀牛智造通过AI大模型实现服装行业的柔性生产,能够根据市场需求快速调整生产计划。
华为云推出的工业智能体方案,则专注于高端制造领域的预测性维护与质量控制。这些案例共同表明,工业AI大模型正在成为制造业转型升级的重要技术支撑。

有个视频网站学习的时候不点暂停或者视频学完,就一直没有任何包,也没有心跳包,也不会更新视频学习进度学时。

点暂停或者视频学习完了,就会更新视频学习的进度学时。

点暂停没有包,点继续就也只会有一个下载 mp4 的包。

有大神知道这是如何更新视频学习进度 的吗

公司的 im 有水印,就不发图了,简单总结一下

  1. 大数据/医疗部门因使用 ai 生成代码导致生产环境服务器负载拉爆且历史数据被大范围覆盖
  2. it 部门排查开发电脑的 ai 相关软件,禁止 ai 自动代码生成
  3. 所有研发部门安排时间重新 review 近半年所有代码
  4. 对应研发部门的开发和测试绩效当月为 D(意味着 2026 年没有年终奖了,但是 2025 还是可以有的)


哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈(先笑一下🤣
他们怎么敢的啊,又不是自己的项目,我用 ai 都只拿当搜索引擎,代码都是我自己的测试确认后才写到项目里面去


我一直强调,ai 真的不能帮你背 D 绩效啊喂!

一、概述

LangGraph是LangChain团队开发的低级别编排框架,专为构建、管理和部署长时间运行的有状态AI代理设计,提供持久化执行、灵活控制流和全面内存管理功能,支持循环和条件分支,是开发复杂AI工作流的理想选择。

1.1 核心特点

  • 持久执行:自动保存执行状态,支持故障恢复和断点续跑
  • 循环与分支:突破传统DAG限制,支持复杂的条件判断和循环逻辑
  • 全面内存:集成短期工作内存和长期持久内存,支持跨会话状态保留
  • 人机协作:内置中断机制,允许人工介入审批或修改代理行为
  • 流支持:实时输出执行结果,包括LLM的token级流式响应
  • 可观察性:无缝集成LangSmith,提供完整的执行轨迹和状态转换可视化

二、核心概念

2.1 状态(State)

共享内存,所有节点都可读写的全局数据结构,是代理的"工作记忆"。

  • 定义为Python的TypedDict或dataclass,包含代理需要的所有信息
  • 存储原始数据而非格式化文本,确保不同节点可灵活使用
  • 示例:

    from typing import TypedDict
    class AgentState(TypedDict):
        messages: list  # 对话消息列表
        search_results: list  # 搜索结果
        user_preferences: dict  # 用户偏好

2.2 节点(Nodes)

图的基本执行单元,是接收状态并返回更新的函数。

  • 类型:

    • LLM节点:调用语言模型进行文本理解或生成
    • 工具节点:执行外部API调用、数据库查询等
    • 数据处理节点:转换或分析数据
    • 人工介入节点:暂停执行等待用户输入
  • 定义示例:

    def greet(state: AgentState) -> dict:
        return {"greeting": f"Hello, {state['user_name']}!"}

2.3 边(Edges)

节点间的连接,定义执行流的路径。

  • 普通边:始终执行固定路径
  • 条件边:根据状态决定下一步执行节点
  • 定义示例:

    # 普通边:从"start"到"greet"
    graph.add_edge("start", "greet")
    
    # 条件边:根据状态判断是执行"search"还是"reply"
    def decide_next(state: AgentState) -> str:
        return "search" if state["needs_info"] else "reply"
    graph.add_conditional_edges("greet", decide_next)

三、架构与工作原理

3.1 图结构

LangGraph使用有向图模型表示代理工作流,包含:

  • 特殊节点

    • START:执行入口点
    • END:执行结束点
  • 执行模型:基于"消息传递"的迭代执行,以离散"超步骤"(super-step)推进

3.2 状态管理

  • 短期内存:线程范围内存,随执行结束自动清除
  • 长期内存

    • 存储于独立的Store系统,支持跨会话、跨线程访问
    • 使用namespacekey组织数据,类似文件系统的目录和文件名
    • 支持多种存储后端:内存(开发)、PostgreSQL(生产)、Redis等

3.3 执行流程

  1. 初始化状态并设置入口节点
  2. 执行入口节点,更新状态
  3. 根据边的类型(普通/条件)决定下一节点
  4. 重复直到到达END或达到递归限制(默认25步)
  5. 执行过程中自动保存检查点,支持故障恢复

四、存储方案

LangGraph支持多种存储后端,满足不同场景需求:

存储类型适用场景特点配置示例
InMemoryStore开发测试速度快,无持久化store = InMemoryStore()
PostgresStore生产环境高可靠,支持事务store = PostgresStore("postgresql://user:pass@host/db")
RedisStore分布式系统高性能读写,适合缓存store = RedisStore("redis://host:port")
SQLiteStore轻量级应用文件存储,无需服务器store = SQLiteStore("langgraph.db")

长期记忆配置

from langgraph.store.postgres import PostgresStore
from langgraph.backends import CompositeBackend, StateBackend, StoreBackend

# 配置复合存储:/memories/路径下的数据持久化,其他临时存储
def make_backend(runtime):
    return CompositeBackend(
        default=StateBackend(runtime),  # 临时存储
        routes={"/memories/": StoreBackend(runtime, PostgresStore("..."))}  # 持久存储
    )

五、使用方法

5.1 安装

pip install -U langgraph  # Python版本
npm install @langchain/langgraph  # JavaScript版本

5.2 基本使用步骤

1. 定义状态

from typing import TypedDict
class ChatState(TypedDict):
    messages: list  # 对话消息列表

2. 构建图

from langgraph.graph import StateGraph, START, END
from langchain.llms import OpenAI

# 初始化图
graph = StateGraph(ChatState)

# 定义节点:调用LLM生成回复
def call_llm(state: ChatState):
    llm = OpenAI(temperature=0)
    response = llm.invoke(state["messages"])
    return {"messages": state["messages"] + [response]}

# 添加节点和边
graph.add_node("generate_response", call_llm)
graph.add_edge(START, "generate_response")
graph.add_edge("generate_response", END)

3. 编译并执行

# 编译为可执行应用
app = graph.compile()

# 执行
initial_state = {"messages": [{"role": "user", "content": "Hello!"}]}
final_state = app.invoke(initial_state)
print(final_state["messages"][-1]["content"])  # 输出AI回复

5.3 条件执行与循环

# 定义条件函数:检查是否需要调用工具
def needs_tool(state: ChatState) -> Literal["use_tool", "reply"]:
    last_message = state["messages"][-1]
    return "use_tool" if last_message.get("tool_calls") else "reply"

# 添加条件边
graph.add_conditional_edges("generate_response", needs_tool)

# 添加工具节点和循环边
graph.add_node("use_tool", tool_node)
graph.add_edge("use_tool", "generate_response")  # 循环回LLM节点

六、API参考

6.1 Graph API

核心类

  • StateGraph:构建状态驱动的图,需传入状态类型
  • MessageState:预定义的消息状态,适合聊天应用
  • Checkpointer:管理执行状态的保存和恢复

关键方法

  • add_node(name, function, **kwargs):添加节点,支持重试策略等配置
  • add_edge(from_node, to_node):添加普通边
  • add_conditional_edges(from_node, condition_func):添加条件边
  • compile(checkpointer=None):编译图为可执行应用,支持持久化配置
  • invoke(input_state, config=None):执行图,返回最终状态

6.2 Functional API (简化版)

提供更简洁的方式构建小型工作流:

from langgraph import entrypoint, task

@entrypoint
def my_agent():
    state = {"counter": 0}
    while state["counter"] < 3:
        state = task(increment)(state)  # 调用任务函数
    return state

@task
def increment(state):
    state["counter"] += 1
    return state

result = my_agent()  # 执行

七、开发指南

7.1 构建步骤

  1. 设计工作流:将问题分解为离散步骤,确定节点间依赖关系
  2. 定义状态:确定需要在步骤间共享的数据
  3. 实现节点:为每个步骤编写函数,处理输入状态并返回更新
  4. 连接节点:使用边定义执行顺序,添加必要的条件判断
  5. 添加内存:配置检查点和持久化,实现长期记忆
  6. 测试与调试:使用LangSmith可视化执行过程,检查状态转换

7.2 最佳实践

状态设计

  • 只存储必要信息,避免冗余
  • 保持状态原始,在节点内格式化输出
  • 使用描述性键名,提高可读性

节点设计

  • 单一职责:每个节点专注做一件事
  • 错误处理:为不同错误类型设置适当的处理策略(重试/回退/人工介入)
  • 外部调用:将API调用、数据库操作等封装为独立节点,便于添加重试和监控

内存管理

  • 短期数据存于状态,长期数据使用专用存储
  • 定期清理过时数据,优化存储性能
  • 使用命名空间组织长期数据,便于管理和查询

八、调试与监控

8.1 使用LangSmith集成

LangGraph无缝集成LangSmith,提供全面的可观察性:

# 启用LangSmith追踪
import os
os.environ["LANGSMITH_TRACING"] = "true"
os.environ["LANGSMITH_API_KEY"] = "..."

# 编译图时启用追踪
app = graph.compile(checkpointer=checkpointer, trace=True)

监控功能

  • 执行轨迹可视化:查看完整执行路径和状态变化
  • 性能分析:测量各节点执行时间,识别瓶颈
  • 异常检测:自动标记执行错误和异常路径
  • 交互式调试:在LangSmith Studio中检查中间状态

8.2 本地调试技巧

  • 断点打印:在节点函数中添加print语句,输出关键状态
  • 分步执行:使用graph.invoke并传入小输入,逐步验证每个节点
  • 错误处理:为节点添加详细的异常捕获和日志记录:

    def safe_node(state):
        try:
            # 正常逻辑
        except Exception as e:
            return {"error": str(e)}  # 返回错误信息而非崩溃

九、部署方案

9.1 自托管部署

使用Docker

# 安装CLI
pip install -U langgraph-cli

# 构建镜像
langgraph build --name my-agent .

# 运行
docker run -p 8124:8124 my-agent

生产配置建议

  • 使用PostgreSQL作为存储后端,确保数据持久化
  • 配置数据加密,保护敏感信息
  • 设置适当的资源限制,防止滥用
  • 使用负载均衡和水平扩展,提高吞吐量

9.2 LangSmith Cloud (原LangGraph Platform)

提供一键式云部署:

  • Lite版本:免费使用,每年限制100万节点执行
  • Enterprise版本:全功能支持,适合大规模生产环境

优势

  • 自动扩展和高可用性
  • 内置监控和告警系统
  • 开箱即用的安全与合规功能
  • 与LangSmith无缝集成,提供完整的可观察性

十、完整示例:构建天气查询代理

# 1. 安装依赖
pip install langgraph langchain openai

# 2. 导入必要模块
from typing import TypedDict, Literal
from langchain.llms import OpenAI
from langchain_core.messages import HumanMessage, AIMessage
from langgraph.graph import StateGraph, START, END
from langgraph.checkpoint.memory import MemorySaver  # 内存检查点

# 3. 定义状态
class WeatherAgentState(TypedDict):
    messages: list  # 对话消息
    location: str  # 查询的城市
    weather_info: str  # 天气信息

# 4. 定义工具函数
def get_weather(location: str) -> str:
    """简化的天气查询API"""
    if location.lower() == "sf":
        return "60°F, foggy"
    elif location.lower() == "ny":
        return "90°F, sunny"
    else:
        return "Weather data not available for this location"

# 5. 定义节点
def initial_prompt(state: WeatherAgentState) -> dict:
    """询问用户想查询哪个城市的天气"""
    llm = OpenAI(temperature=0)
    response = llm.invoke([HumanMessage(content="Which city's weather would you like to check?")])
    return {"messages": [response]}

def parse_location(state: WeatherAgentState) -> dict:
    """从用户消息中提取城市名"""
    last_message = state["messages"][-1]
    location = last_message.content.strip().lower()
    return {"location": location, "messages": state["messages"] + [AIMessage(content=f"Checking weather for {location}...")]}

def get_weather_info(state: WeatherAgentState) -> dict:
    """调用天气工具获取信息"""
    weather = get_weather(state["location"])
    return {"weather_info": weather, "messages": state["messages"] + [AIMessage(content=f"Weather in {state['location']}: {weather}")]}

# 6. 构建图
graph = StateGraph(WeatherAgentState)

# 添加节点
graph.add_node("initial_prompt", initial_prompt)
graph.add_node("parse_location", parse_location)
graph.add_node("get_weather_info", get_weather_info)

# 添加边定义执行流
graph.add_edge(START, "initial_prompt")
graph.add_edge("initial_prompt", "parse_location")
graph.add_edge("parse_location", "get_weather_info")
graph.add_edge("get_weather_info", END)

# 7. 添加内存支持
checkpointer = MemorySaver()  # 使用内存检查点保存状态
app = graph.compile(checkpointer=checkpointer)

# 8. 执行代理
first_run = app.invoke({})
print("First run output:")
for msg in first_run["messages"]:
    print(f"{msg['role'].capitalize()}: {msg['content']}")

print("\nSecond run (with state persistence):")
# 第二次执行会保留之前的对话状态
second_run = app.invoke({})
for msg in second_run["messages"]:
    print(f"{msg['role'].capitalize()}: {msg['content']}")

十一、总结

LangGraph是构建复杂AI代理的强大框架,通过状态驱动的图结构,提供了持久执行、灵活控制流和全面内存管理能力。使用LangGraph,开发者可以轻松构建具有记忆、能够处理复杂逻辑的AI代理,适用于客服、研究助手、自动化工作流等多种场景。

模型角度

  • T0: claude 默认的、gemini 、chatgpt5.2
  • 国产模型大差不大

在逻辑实现和技术方案制定上,感觉国外的这 3 个更符合我的审美。。。

agent

白嫖了同学的 claude code ,token 管够的情况下很爽。代码接受率很高,业务屎山也改得动,给的技术方案可落地性也很强。应该是用的国内中转的,速度稍慢。

后面换了 glm code plan ,差距挺大的,只能日常处理点简单编码逻辑,尤其在提示词和代码的理解上和原生 claude 差距巨大。需要给特别明确的 prompt 才能做好。

windsurf 出了 idea 的插件,自带的 swe1.5 ,感觉水平不比国产的差,速度极快,体验还不错。但是自动补全经常出不来。直接用 windsurf ide 体验更好。

trae 整体可用,但用多了排队很烦。

JB 家在 AI 时代整体落后了,插件的体验和原生 ide 差距还是有的。不过原生 ai ide 越强,更能体现 JB 在没 AI 时代的强大。windsurf ide 也能写 java ,ai 的配套已经挺强大了,但整个 java+spring 的编码配套还是不如 idea 的。

如果你在做量化研究、实盘盯盘,或者高频信号监控,可能已经遇到过这样的问题:
港股、美股都要看,但行情接口分散在不同平台,字段不统一、时间规则不同,接入成本远高于预期。

一开始你可能会觉得这是“小问题”,多写几层适配就能解决。但真正跑起来后,会发现维护成本会持续放大,尤其是在高频或长时间运行的场景下。

多市场行情接入,难点并不在“拿到数据”

在实际开发中,真正消耗精力的通常是这些地方:

  • 港股、美股 API 结构差异大,需要额外做字段映射
  • tick 数据更新频繁,处理不当容易阻塞
  • 部分接口在行情活跃时延迟明显,甚至丢数据

这些问题往往不会立刻暴露,但会逐渐影响策略判断和系统稳定性。

一个更工程化的思路:统一数据入口

当你需要长期维护系统时,一个覆盖多市场、数据口径一致的行情源会明显降低复杂度。

在实时行情场景下,相比 REST 轮询,用 WebSocket 订阅的方式更接近“监听市场”而不是“反复查询状态”。
你只需要维护一条连接,就能持续接收行情变化,延迟和资源消耗都更可控。

像AllTick这类聚合型行情接口,本质上解决的是“多市场适配”这个工程问题:
同一套接入方式,同时覆盖港股和美股,不需要为不同市场维护多套逻辑。

实战示例:Python WebSocket 订阅港股+美股


下面是我用的一个简单示例,直接抓取港股腾讯(00700.HK)和美股苹果(AAPL.US):

import websocket
import json

# AllTick WebSocket URL
ws_url = "wss://api.alltick.co/realtime"

def on_message(ws, message):
    data = json.loads(message)
    # 简单打印最新行情
    print(f"{data['symbol']} - 最新价: {data['price']} 时间: {data['timestamp']}")

def on_open(ws):
    # 订阅港股和美股行情
    msg = {
        "action": "subscribe",
        "symbols": ["00700.HK", "AAPL.US"]
    }
    ws.send(json.dumps(msg))

ws = websocket.WebSocketApp(ws_url, on_message=on_message, on_open=on_open)
ws.run_forever()

几个要点:

  • symbols 字段可以自由组合港股、美股股票代码
  • WebSocket 推送省去了轮询的麻烦
  • 我通常会在回调里加一点数据缓存和异常处理,保证程序稳定

实际使用后的变化

在把港股和美股行情统一接入之后,几个变化非常直观:

  • 数据结构统一,策略层代码更干净
  • WebSocket 推送减少了延迟和轮询压力
  • 系统稳定性更好,排查问题更容易

很多之前看起来像“策略不稳定”的情况,实际上是数据层噪音造成的。

实战中需要注意的细节

即便使用统一接口,仍然有一些工程细节需要你自己把控:

  • 时间处理:不同市场交易时间不同,时间戳必须统一标准
  • 高频数据控制:tick 数据建议异步处理或限流,避免内存堆积
  • 调试方式:先订阅少量标的跑通流程,再逐步扩展

这些点不复杂,但直接影响系统是否能稳定运行。

总结

港股和美股的实时行情接入,本身并不是难题。
真正拉开效率差距的,是你是否在一开始就选对了数据接入方式。

统一的数据源、实时推送机制、可维护的结构设计,会让你把更多精力放在策略和逻辑本身,而不是反复处理接口差异。

如果你正在做跨市场行情相关的开发,这个方向值得你认真评估一次。

在图像生成领域,扩散模型因其训练稳定和泛化能力强已逐渐走入主流行列。然而,面对海报、PPT、科普图等需要准确传达复杂信息的「知识密集型」场景时, 传统模型存在指令理解与细节刻画难以兼顾的短板。 另一个长期存在的问题是生成图像中的文字经常出现笔画错误或难以辨识,严重影响实用价值。

基于此,智谱于 2026 年 1 月联合华为开源了新一代图像生成模型 GLM-Image。 该模型基于昇腾 Atlas 800T A2 和昇思 MindSpore AI 框架完成全流程训练。其核心特点是采用了创新的 「自回归+扩散解码器」混合架构(9B 自回归模型 + 7B DiT 解码器), 将语言模型的深度理解能力与扩散模型的高质量生成能力相结合。

此外,模型通过改进 Tokenizer 策略,原生支持从1024×1024 到 2048×2048 的任意比例图像生成,无需重新训练。 GLM-Image 的创新性还体现在以下两个方面:

*解决文字渲染难题: 在 CVTG-2K 和 LongText-Bench 权威评测中,其文字准确率等关键指标均位列开源模型第一,显著提升了图像中文字的生成准确性。

*定义高性价比应用: 在 API 调用模式下,生成单张图片的成本仅需 0.1 元,成本仅为主流闭源模型的 1/10 至 1/3,为商业化应用提供了高性价比选择。

目前,「GLM-Image 精准语义高保真图像生成模型」已上线 HyperAI 官网(hyper.ai)的教程版块, 快来输出无限创意吧!

在线体验: https://go.hyper.ai/2jcCU

效果示例:

Demo 运行

1.进入 hyper.ai 首页后,选择「GLM-Image 精准语义高保真图像生成模型」,或进入「教程」页面选择。页面跳转后,点击「在线运行此教程」。


2.页面跳转后,点击右上角「克隆」,将该教程克隆至自己的容器中。

注:页面右上角支持切换语言,目前提供中文及英文两种语言,本教程文章以英文为例进行步骤展示。

3.选择「NVIDIA RTX Pro 6000」以及「PyTorch」镜像,按照需求选择「Pay As You Go(按量付费)」或「Daily Plan/Weekly Plan/Monthly Plan(包日/周/月」,点击「Continue job execution(继续执行)」。

HyperAI 为新用户准备了注册福利,仅需 $1,即可获得 20 小时 RTX 5090 算力(原价 $7),资源永久有效。


4.等待分配资源,当状态变为「Running(运行中)」后,点击「Open Workspace」进入 Jupyter Workspace。

效果演示

页面跳转后,点击左侧 README 页面,进入后点击上方 Run(运行)。


待运行完成,即可点击右侧 API 地址跳转至 demo 页面


以上就是 HyperAI超神经本期推荐的教程,欢迎大家前来体验!

教程链接:

https://go.hyper.ai/2jcCU

前言

在数字化运维与业务监控的实践中,仪表板(Dashboard)与汽车的仪表盘同等重要,它不仅是数据可视化的载体,更是团队快速定位问题、洞察数据趋势的核心工具。观测云在平台中内置了大量通用组件、云服务的仪表板模板。但如果你希望从零开始构建个性化的仪表板,又或者对自己绘制的仪表板不够满意,那么这篇文章将教授你几个小技巧,帮助你有效提升仪表板的质量。

观测云简介

观测云是一个统一实时监测平台,它提供全面的系统可观测性解决方案,帮助用户快速实现对云平台、云原生、应用及业务的监控需求。观测云的核心功能包括:基础设施监测,日志采集和分析,用户访问监测(RUM),应用性能监测(APM),服务可用性监测(拨测),安全监测,智能监控等等。这款产品能够帮助工程师全面了解端到端的用户体验追踪,了解应用服务的每一次调用,以及全面监控云时代的基础设施。此外,观测云还具备快速发现系统安全风险的能力,为数字化时代提供安全保障。更多信息可以访问观测云官网:https://www.guance.com

基础仪表板的绘制

让我们进入到观测云,创建一个属于您自己的仪表板。首先,你需要找到仪表板的入口「场景」-「仪表板」,点击「新建仪表板」-「新建空白仪表板」。

图片

其次,可以从侧滑窗口中选择适合展示数据的图表类型,拖拽到左边的空白画布中。

图片

以常用的「时序图」为例,拖动到画布中即可打开「新建图表」弹窗,此时通过数据筛选控件来选择需要展示的指标。

图片

如图所示,我们已经展示了一条指标曲线,它代表的含义为:指标集为 cpu,指标名为 usage_total,按照 host 进行分组并统计 Avg 平均值,只显示 host=DESKTOP-F9E75IG 的值(过滤条件),点击右下角的保存即可。

图片

此时你已经完成了第一张图表的制作,通过一张张图表的叠加,你很快能得到一个完整的仪表板,不过它看上去有些简陋,我们需要更多技巧对仪表板的美观程度和易读性进行优化。

图片

仪表板的优化

新增标题和描述

恰当的标题能让用户第一时间知道图表展示的指标及其含义,而图表的描述能够起到有效补充说明。我个人的习惯是将图表名设置为指标的英文名,然后在「描述」中补充该指标的中文含义。如下所示:

图片

保存生效的效果如下,图表左上角将展示标题,而鼠标 hover 到帮助按钮上则会悬浮显示描述。

图片

数据单位

一部分指标在采集到观测云后没有单位,因此在绘制仪表板时需要注意补充单位。

图片

别名

图表的曲线会显示对象的名称,并且对象名称会随着分组条件的增多而变得复杂。例如下图,由于添加了 namespace,pod_name 等多个分组条件,对象名称显得很长,很不直观。好在我们可以通过配置「别名」来简化对象名称的显示。

图片

在图表配置的「别名」处,我们选择对应的指标序列,并用 {{}} 将分组条件包起来作为变量,例如下图中的分组条件 pod_name 就写为 {{pod_name}} ,效果如下所示。

图片

我们也支持用多个变量作为别名,写法为 {{分组条件1}}-{{分组条件2}} ,例如 {{namespace}}--{{pod_name}} ,效果如下图所示:

图片

现在,曲线上显示的对象名称已经比原始的名称简洁、清晰了很多。

图例

图表默认没有带上图例,除非将鼠标 hover 上去,否则无法看到什么颜色的曲线代表哪一个对象,如下图的左侧所示。而「图例」则可以将对象的名称和统计值显示到图表中,如下图的右侧所示。

图片

添加图例的方式如下,可选择将图例放置在图表的底部或者右侧,并显示单个或者统计值,将 Avg、Max、Last 一起显示出来是个不错的选择。

图片

分组

当仪表板中需要展示很多张图表时,使用「分组」来将不同含义的图表分门别类地归类就十分有必要了,这会让仪表板的显示更具有条理,用户能通过分组快速找到自己关注的图表,如下图所示。

图片

给仪表板添加分组时,只需要在侧滑菜单中找到「分组」这个图表类型,拖动到左侧画布即可。

图片

取一个有意义的分组名称,选择一个与众不同的颜色,保存即可。

图片

下图即为新创建的分组,后续添加的图表即可拖动到该分组下。

图片

锁定时间

如果你希望每次进入到仪表板,都查看到固定时间区间(例如最近1天)的数据,应该如何实现呢?

我们很容易注意到仪表板的时间控件,可以在这里固定整个仪表板的时间。

图片

如果需要将单个图表的时间进行固定,而其他图表的时间则跟随仪表板的时间控件,也很好实现。我们进入单个图表的编辑窗口,打开「高级配置」,将时间锁定为指定区间即可。

图片

配置完成后,这个图表的右上角会出现你锁定的时间区间,该时间不受仪表板整体的时间区间控制,如下图所示。

图片

视图变量

视图变量允许用户通过下拉菜单来选择特定对象的监控数据,从而根据自身需求动态筛选和分析数据。如下图所示,该仪表板包括了 Cluster、Namespace 和 Node 三个视图变量,用户可以进行自由筛选。

图片

我们首先添加一个简单的视图变量,需求是通过选择 host_ip 来过滤单台主机的数据。在仪表板中点击「添加视图变量」。

图片

图片

host_ip 是 cpu 相关指标数据的一个标签,因此我们从指标类型- CPU指标集里面选择 host_ip 作为视图变量的来源,然后将「变量名」和「显示名」都与之保持一致,保存窗口即可。

图片

此时返回仪表板,就会看到刚才添加的 host_ip 视图变量,从下拉菜单中可以筛选主机 IP。如下图所示:

图片

你可能会发现筛选结果之后,对下方的图表没有任何作用,因为我们还需要在图表中的过滤条件配置变量,使仪表板的额视图变量与图表的过滤条件进行联动。再次进入图表编辑界面,添加一个过滤条件,字段选择为 host_ip,值选择「视图变量」,如下图所示。

图片

返回仪表板,这时仪表板的视图变量 host_ip 就可以与图表中的监控对象 host_ip 进行联动了。我们可以通过下拉菜单来筛选不同的主机,从而观察不同主机的监控指标。

图片

如果是有多个视图变量,且视图变量之间有依赖关系,例如我们针对 Pod 的监控是首先选择 namespace,再选 Pod,那我们又应该如何配置呢?这就要用到「级联」的写法,让我们来再来回顾一下刚才本章开头的那张图片。选择 Cluster 后,Namespace 的值随 Cluster 的取值而联动,Node 的值又随 Namespace 的取值而联动。

图片

我们研究一下这组视图变量的写法,不难发现规律是在 show_tag_value 函数的后面跟随了一个 {key=value} 的过滤条件,其固定写法为 {key='#{value}'} ,key 和 value 都取自上一级的变量名,表示该变量随上一级变量的值而联动。如下图所示,当用户在界面上选择了 cluster_name_k8s 的值后,该值就会传入 namespace 作为过滤条件,从而实现变量联动。

图片

图片

小结

通过上面的几个小技巧,相信你已经跃跃欲试将自己的仪表板更上一层楼了。在得到令自己满意的仪表板后,你可以选择将仪表板开放给团队、配置为定时报告、投放到大屏幕、关联到日志或链路查看器中,又或者在接收到告警时一键查看这张仪表板。我们非常期待你通过仪表板来向你的团队/客户呈现数据的价值。

在现代知识型组织中,企业的核心竞争力正从“单点突破”向“全流程模块化优化”转移。模块化业务拆解软件不仅是项目结束后的总结文档,更是将复杂的业务过程通过结构化的数据回溯,转化为可量化、可进化的动态智力资产的架构引擎。

一、 为什么现代管理必须重视“模块化”拆解?

缺乏有效拆解工具的组织往往陷入“经验黑盒”困境:成功无法被精准复制,失败的根源被掩盖在碎片化的信息中。模块化业务拆解软件的核心价值在于:

  • 消除认知偏误:通过全量数据的客观还原,确保拆解基于真实发生的业务节点,而非参与者的主观记忆。
  • 支撑深层根因探究:支持在拆解过程中下钻子环节,应对长周期、高协作密度的复杂项目评估需求。
  • 实现效能自动度量:无需手动统计,各阶段的投入产出比、耗时偏差自动向上级看板聚合,辅助决策。
  • 拆解成果资产化:将验证有效的改进动作沉淀为标准化模板,实现跨团队、跨项目的快速经验迁移。

---

二、 模块化拆解的技术路径:三层评价架构

构建模块化业务拆解体系需要遵循“过程回溯”与“逻辑重构”的逻辑:

  1. 宏观项目层(Project Context):定义拆解的业务边界、最初目标及最终交付全景。
  2. 效能节点层(Performance Nodes):将业务链条拆解为关键里程碑,各节点记录当时的决策背景、资源投入与实际产出。
  3. 原子行为层(Atomic Insights):拆解的最末端,聚焦于具体动作的得失,具备明确的改进建议和落实跟踪机制。

---

三、 核心技术实现与算法示例

模块化业务拆解软件的底层逻辑涉及效能得分算法、异常趋势捕捉及递归式数据回溯。

1. 基于加权算法的节点效能自动评分

在模块化拆解中,项目的总效能得分由各关键环节的执行质量自动驱动。以下为 JavaScript 实现的效能评分逻辑:

JavaScript

/**
* 根据各环节表现自动计算项目模块化拆解效能得分
* @param {Object} project 项目拆解对象(包含子任务节点数组)
* @returns {number} 聚合后的效能综合得分
*/
function calculateEfficiencyScore(project) {

// 基准情况:如果是原子行动项,返回其预定目标达成度(0-100)  
if (\!project.subNodes || project.subNodes.length \=== 0) {  
    return project.goalAchievementRate || 0;  
}

// 汇总所有效能节点的加权得分  
const totalWeightedScore \= project.subNodes.reduce((sum, node) \=\> {  
    // 每个节点可根据重要性分配权重  
    const weight \= node.weight || (1 / project.subNodes.length);  
    return sum \+ (calculateEfficiencyScore(node) \* weight);  
}, 0);

// 更新项目的模块化拆解效能显示  
project.finalScore \= Math.round(totalWeightedScore);  
return project.finalScore;  

}

2. Python:效能偏离度的动态分析引擎

利用效能模型,自动对比“计划节点”与“实际轨迹”,识别出导致整体效率下降的关键环节:

Python

class EfficiencyAuditEngine:

def \_\_init\_\_(self):  
    \# 预设标准效能库:项目类型 \-\> 预期耗时/资源基准  
    self.benchmarks \= {  
        "Product\_Launch": {  
            "Design": {"time": 48, "resource": 3},  
            "Dev": {"time": 120, "resource": 8},  
            "QA": {"time": 24, "resource": 2}  
        }  
    }

def analyze\_deviation(self, project\_data, project\_type):  
    """对比实际轨迹与基准,识别拆解关键点"""  
    standards \= self.benchmarks.get(project\_type)  
    if not standards:  
        return "未找到匹配的项目效能基准"

    for node, actual in project\_data.items():  
        benchmark \= standards.get(node)  
        if benchmark:  
            time\_deviation \= (actual\['time'\] \- benchmark\['time'\]) / benchmark\['time'\]  
            if time\_deviation \> 0.15:  
                print(f"\[Review Focus\] 节点 '{node}' 存在显著负向偏差: {time\_deviation:.2%}")  
                \# 自动触发根因分析引导  
                self.\_trigger\_root\_cause\_prompt(node)

def \_trigger\_root\_cause\_prompt(self, node\_name):  
    print(f"  \-\> 已生成 '{node\_name}' 环节的 5-Whys 拆解工作单")

3. SQL:跨项目效能瓶颈识别与经验溯源

通过递归查询,识别组织中长期存在的“重复性错误”或“低效环节”:

SQL

WITH RECURSIVE ReviewHierarchy AS (

\-- 初始行:选择需要拆解的顶层项目  
SELECT id, project\_name, parent\_id, efficiency\_score, review\_date   
FROM efficiency\_reviews WHERE parent\_id IS NULL  
UNION ALL  
\-- 递归关联各层级子任务的拆解数据  
SELECT r.id, r.project\_name, r.parent\_id, r.efficiency\_score, r.review\_date  
FROM efficiency\_reviews r  
INNER JOIN ReviewHierarchy rh ON r.parent\_id \= rh.id  

)
SELECT

project\_name,   
AVG(efficiency\_score) as avg\_score,  
COUNT(\*) as review\_count  

FROM ReviewHierarchy
GROUP BY project\_name
HAVING avg\_score \< 70 -- 识别效能持续低迷、亟待流程重塑的领域
ORDER BY avg\_score ASC;

---

四、 工具分类与选型思路

在实施模块化业务拆解时,不同架构的工具侧重点有所不同:

工具优势亮点
板栗看板支持看板式模块化业务拆解管理,可视化流程与状态,便于任务重组与跟踪
Monday.com强大的工作流与自动化功能,支持构建复杂的模块化业务管理视图
Asana灵活的项目与任务数据库结构,适合构建结构化的业务拆解知识库
Jira独特的敏捷看板与问题追踪机制,支持精细化业务模块关联与分析
Trello专为团队业务协作设计,集成清单、附件和自动化规则功能

---

五、 实施中的风险控制与管理优化

  • 防止“形式化拆解”:如果拆解成了文字游戏,会导致团队抵触。应遵循“拆解为了改进,而非为了问责”的文化导向。
  • 确保改进闭环同步:拆解发现的问题必须自动转化为“改进任务”并指派负责人,防止结论被遗忘。
  • 动态调整评价基准:随着团队能力的提升,效能拆解的基准值应定期进行重新对标,驱动组织持续进化。

---

六、 结语

模块化是组织进化的必经之路。 模块化业务拆解软件不仅通过技术手段解决了“盲目总结”的问题,更将组织的每一次经历转化为可以指导未来决策的有效资产。当组织的每一次拆解都能以全景的形式精准呈现时,企业才能真正实现从“低效率重复”向“高水平螺旋上升”的本质跨越。

在早期的Oracle数据库的版本中,一般情况下一个数据库服务器只创建一个数据库。当创建的数据库比较多的时候,就需要更多的数据库服务器。这对服务器资源(CPU、内存、存储)来说是一种浪费。从Oracle数据库 12c开始,Oracle数据库引入了多租户特性,即容器数据库。该特性可以在一个数据库服务器上创建容器数据库,并管理多个可插拔数据库。从而降低了成本并提高了服务器资源的利用率。视频讲解如下:
https://www.bilibili.com/video/BV1fXkeBAEh8/?aid=115920110358...

Oracle Multitenant Container Database(CDB),即多租户容器数据库是从Oracle 12c引入的一个新的特性。它指的是可以容纳一个或者多个可插拔数据库(Pluggable Database,简称PDB)的数据库,这个特性允许在CDB容器数据库中的体系架构创建并且维护多个数据库。在CDB容器数据库中创建的数据库就是PDB数据库,而每个PDB在CDB中是相互独立存在的。在单独使用PDB时,与普通数据库无任何区别。CDB容器数据库也叫作根数据库,其主要作用就是容纳并管理所有相关的PDB数据库及其元数据。CDB也可以单独使用,从操作使用上看,CDB也与普通数据库无任何区别。下图展示了多租户容器数据库的体系架构。
image.png

从图中可以看出,Oracle多租户容器数据库的体系架构由三个部分组成,它们分别是:Root、PDB Seed和PDBs。下表详细说明了每一部分的功能和作用。
image.png

从Oracle数据库 12c R2版本开始,Oracle对多租户容器数据库的功能进行了增强,在CDB root容器中可以创建一个叫做Application Root的容器,可在其内创建多个依赖于Application root的Application PDB。如下图所示。
image.png

要使用Oracle数据库提供的多租户容器数据库的功能,首先就必须要创建CDB的环境。其本质就是创建CDB的根数据库Root。创建CDB中的根数据库Root可以通过DBCA的图形工具来进行创建,也可以通过执行SQL的脚本来创建。

  • 使用DBCA创建根数据库Root
    image.png
  • 使用SQL脚本创建根数据库Root
SQL> create database cdb2  
      user sys identified by password user system identified by password
      logfile group 1 ('/u01/app/oradata/cdb2/redo1a.log',
                       '/u02/app/oradata/cdb2/redo1b.log') size 100m,
              group 2 ('/u01/app/oradata/cdb2/redo2a.log',
                       '/u02/app/oradata/cdb2/redo2b.log') size 100m 
      character set al32utf8 national character set al16utf16  
      extent management local datafile '/u01/app/oradata/cdb2/system01.dbf' size 325m 
      sysaux datafile '/u01/app/oradata/cdb2/sysaux01.dbf' size 325m 
      default temporary tablespace tempts1 tempfile '/u01/app/oradata/cdb2/temp01.dbf' size 20m 
      undo tablespace undotbs datafile '/u01/app/oradata/cdb2/undotbs01.dbf' size 200m
      enable pluggable database 
      seed   file_name_convert = ('/u01/app/oradata/cdb2',
                                  '/u01/app/oradata/cdb2/seed');

在成功创建了CDB环境后,就可以进一步基于根数据库Root来创建多个PDB数据库。

  • 使用DBCA创建PDB
    image.png
  • 使用SQL脚本创建PDB
SQL> create pluggable database cdb1pdb3 admin user pdb3sys identified by password 
     file_name_convert= ('/u01/app/oracle/oradata/CDB1/pdbseed',
                         '/u01/app/oracle/oradata/CDB1/cdb1pdb3'); 

一、什么是国密SSL证书?

国密SSL证书是基于中国自主研发的加密算法(SM2算法)  ,符合国家密码管理局、公安部和工信部的安全标准,旨在提高我国网络通信的安全性和自主可控性。

它的工作原理与传统SSL证书类似,主要用于加密网站通信,确保数据在传输过程中不被第三方窃取或篡改。不同的是,国密SSL证书使用的是国密算法,而非传统的RSA或ECC算法。

二、国密SSL证书的优势

更安全的加密算法

国密SSL证书采用SM2算法,基于椭圆曲线密码技术,相比RSA具有更高的安全性和计算效率。

SM3哈希算法替代SHA系列,避免国际算法的安全隐患。

符合国家政策要求

国密SSL证书由国家认可的机构颁发,符合国内合规要求,适用于政府、金融、医疗等对数据安全要求较高的行业。

双证书兼容性

部分国密SSL证书支持双算法模式(国际算法+国密算法),保证兼容传统国际算法的浏览器,同时在国密环境下运行时使用SM2算法,确保系统过渡平稳。

三、国密SSL证书的申请流程

打开JoySSL官网,注册时填写注册码230970,获取大额优惠跟技术支持。

1. 确定证书类型

根据需求选择合适的国密SSL证书,通常有以下几种类型:

  • 单域名证书(适用于单一网站)
  • 多域名证书(适用于多个站点)
  • 通配符证书(适用于同一主域名下的所有子域名)

2. 生成CSR文件

CSR(证书签名请求)是申请SSL证书时的必要文件,需要在服务器上生成。生成时,需选择SM2算法,并填写组织信息、域名等相关信息。

3. 提交企业认证信息

国密SSL证书需要验证申请者的合法身份,通常需要提供:

  • 企业营业执照或组织机构代码
  • 域名所有权证明
  • 联系人信息(电话、邮箱)

4. 证书颁发与安装

审核通过后,CA机构会签发国密SSL证书,申请者需要将证书安装到服务器上,并配置HTTPS访问。

5. 测试与优化

安装完成后,建议使用SSL检测工具检查证书是否正确安装,同时优化服务器的SSL/TLS配置,确保安全性和兼容性。

四、总结

国密SSL证书基于我国自主的加密算法。相比传统SSL证书,国密SSL证书在数据安全性、合规性和国产化兼容性方面具有明显优势。

申请流程包括选择证书类型、生成CSR文件、提交企业认证信息、证书签发与安装等步骤,整体流程与传统SSL证书类似,但需要确保服务器和应用支持国密算法。

基于YOLOv8的蚊蝇位置智能检测识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

源码包含:完整YOLOv8训练代码+数据集(带标注)+权重文件+直接可允许检测的yolo检测程序+直接部署教程/训练教程

基本功能演示

https://www.bilibili.com/video/BV1zYrhBxEau/

源码在哔哩哔哩视频简介处

项目摘要

本项目基于 YOLOv8 深度学习检测模型,结合 PyQt5 图形界面,实现了对蚊子和苍蝇的自动检测与定位。项目核心特点包括:

  1. 多输入源支持:可处理单张图片、图片文件夹、视频文件以及实时摄像头输入。
  2. 高精度识别:利用定制蚊蝇数据集训练,准确识别蚊子与苍蝇,同时兼顾背景样本,降低误报率。
  3. 开箱即用:提供完整源码、训练数据、预训练权重及部署教程,用户可直接运行检测系统或继续训练自定义模型。
  4. 可视化界面:PyQt5 图形界面直观展示检测结果,支持边框显示、类别标注、置信度显示等功能。
  5. 灵活扩展:项目结构清晰,可快速扩展到其他小型生物检测任务或多分类目标检测场景。

通过本项目,用户可实现蚊蝇数量监测、位置统计及风险评估,为实验室、公共卫生、农业及城市环境管理提供智能化工具。

前言

随着智能视觉技术的发展,小型害虫检测在公共卫生、农作物管理及环境监测中具有重要意义。传统人工检测方法不仅耗时长、效率低,而且容易漏检或误判。借助 YOLO 系列目标检测算法,本项目提供了一种快速、准确、可扩展的蚊蝇检测解决方案。

项目基于无人机或固定摄像头拍摄的实验样本,通过训练专用数据集,使模型能够在复杂背景下自动识别蚊子和苍蝇位置。结合 PyQt5 图形界面,用户无需掌握深度学习底层技术即可完成检测、可视化及数据统计。

一、软件核心功能介绍及效果演示

核心功能

  1. 图片检测

    • 支持单张图片检测,自动标注蚊子和苍蝇位置。
    • 输出标注图与 YOLO 格式检测结果。
  2. 批量图片处理

    • 支持文件夹中所有图片的批量检测。
    • 自动生成检测报告,包括数量统计及置信度分析。
  3. 视频检测

    • 支持本地视频文件输入,实时识别视频中的蚊子与苍蝇。
    • 可选择保存检测后的视频,标注框清晰展示目标。
  4. 摄像头实时检测

    • 支持 USB 摄像头或笔记本内置摄像头实时捕捉并检测蚊蝇。
    • 界面显示实时检测帧,支持帧率与置信度调节。
  5. 检测结果可视化

    • 在 PyQt5 界面中显示目标框、类别及置信度。
    • 支持结果导出,包括图片、视频和 CSV 数据。
  6. 训练与模型管理

    • 提供完整训练代码与数据集标注示例。
    • 可加载自定义权重继续训练或微调模型。
    • 支持 YOLOv8 标准训练流程,包括训练集划分、超参数配置和结果可视化。

效果演示

  • 图片示例

    • 检测后每只蚊子与苍蝇都会被框出,类别和置信度清晰显示。
  • 视频示例

    • 视频播放时,模型实时标注移动的目标,统计目标数量并可导出检测数据。
  • 实时摄像头示例

    • 界面上可即时显示检测框与数量统计,操作简单,无需命令行操作。

二、软件效果演示

为了直观展示本系统基于 YOLOv8 模型的检测能力,我们设计了多种操作场景,涵盖静态图片、批量图片、视频以及实时摄像头流的检测演示。

(1)单图片检测演示

用户点击“选择图片”,即可加载本地图像并执行检测:

image-20260112012732195


(2)多文件夹图片检测演示

用户可选择包含多张图像的文件夹,系统会批量检测并生成结果图。

image-20260112012821538


(3)视频检测演示

支持上传视频文件,系统会逐帧处理并生成目标检测结果,可选保存输出视频:

image-20260112012846148


(4)摄像头检测演示

实时检测是系统中的核心应用之一,系统可直接调用摄像头进行检测。由于原理和视频检测相同,就不重复演示了。

image-20260112012858804


(5)保存图片与视频检测结果

用户可通过按钮勾选是否保存检测结果,所有检测图像自动加框标注并保存至指定文件夹,支持后续数据分析与复审。

image-20260112012943268

三、模型的训练、评估与推理

YOLOv8是Ultralytics公司发布的新一代目标检测模型,采用更轻量的架构、更先进的损失函数(如CIoU、TaskAlignedAssigner)与Anchor-Free策略,在COCO等数据集上表现优异。
其核心优势如下:

  • 高速推理,适合实时检测任务
  • 支持Anchor-Free检测
  • 支持可扩展的Backbone和Neck结构
  • 原生支持ONNX导出与部署

3.1 YOLOv8的基本原理

YOLOv8 是 Ultralytics 发布的新一代实时目标检测模型,具备如下优势:

  • 速度快:推理速度提升明显;
  • 准确率高:支持 Anchor-Free 架构;
  • 支持分类/检测/分割/姿态多任务
  • 本项目使用 YOLOv8 的 Detection 分支,训练时每类表情均标注为独立目标。

YOLOv8 由Ultralytics 于 2023 年 1 月 10 日发布,在准确性和速度方面具有尖端性能。在以往YOLO 版本的基础上,YOLOv8 引入了新的功能和优化,使其成为广泛应用中各种物体检测任务的理想选择。

image-20250526165954475

YOLOv8原理图如下:

image-20250526170118103

3.2 数据集准备与训练

采用 YOLO 格式的数据集结构如下:

dataset/
├── images/
│   ├── train/
│   └── val/
├── labels/
│   ├── train/
│   └── val/

每张图像有对应的 .txt 文件,内容格式为:

4 0.5096721233576642 0.352838390077821 0.3947600423357664 0.31825755058365757

分类包括(可自定义):

image-20260112013102185

image-20260112013042045

3.3. 训练结果评估

训练完成后,将在 runs/detect/train 目录生成结果文件,包括:

  • results.png:损失曲线和 mAP 曲线;
  • weights/best.pt:最佳模型权重;
  • confusion_matrix.png:混淆矩阵分析图。
若 mAP@0.5 达到 90% 以上,即可用于部署。

在深度学习领域,我们通常通过观察损失函数下降的曲线来评估模型的训练状态。YOLOv8训练过程中,主要包含三种损失:定位损失(box_loss)、分类损失(cls_loss)和动态特征损失(dfl_loss)。训练完成后,相关的训练记录和结果文件会保存在runs/目录下,具体内容如下:

image-20260112013024393

3.4检测结果识别

使用 PyTorch 推理接口加载模型:

import cv2
from ultralytics import YOLO
import torch
from torch.serialization import safe_globals
from ultralytics.nn.tasks import DetectionModel

# 加入可信模型结构
safe_globals().add(DetectionModel)

# 加载模型并推理
model = YOLO('runs/detect/train/weights/best.pt')
results = model('test.jpg', save=True, conf=0.25)

# 获取保存后的图像路径
# 默认保存到 runs/detect/predict/ 目录
save_path = results[0].save_dir / results[0].path.name

# 使用 OpenCV 加载并显示图像
img = cv2.imread(str(save_path))
cv2.imshow('Detection Result', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

预测结果包含类别、置信度、边框坐标等信息。

image-20260112013207795

四.YOLOV8+YOLOUI完整源码打包

本文涉及到的完整全部程序文件:包括python源码、数据集、训练代码、UI文件、测试图片视频等(见下图),获取方式见【4.2 完整源码下载】:

4.1 项目开箱即用

作者已将整个工程打包。包含已训练完成的权重,读者可不用自行训练直接运行检测。

运行项目只需输入下面命令。

python main.py

读者也可自行配置训练集,或使用打包好的数据集直接训练。

自行训练项目只需输入下面命令。

yolo detect train data=datasets/expression/loopy.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 batch=16 lr0=0.001

4.2 完整源码

至项目实录视频下方获取:https://www.bilibili.com/video/BV1zYrhBxEau/

image-20250801135823301

包含:

📦完整项目源码

📦 预训练模型权重

🗂️ 数据集地址(含标注脚本)

总结

本项目基于 YOLOv8 深度学习检测模型与 PyQt5 图形界面,实现了蚊子与苍蝇的高效、智能化检测与定位。通过专用数据集训练,系统能够在复杂背景下准确识别目标,同时提供图片、视频及摄像头多种输入方式。

项目核心优势包括:

  1. 高精度识别:模型在小型目标和复杂背景下表现稳定,误报率低。
  2. 多场景适用:支持单张图片、批量图片、视频和实时摄像头输入。
  3. 可视化与易用性:界面直观,标注清晰,用户无需深度学习经验即可使用。
  4. 可扩展性:源码结构清晰,可快速应用于其他小型生物检测任务或扩展目标类别。
  5. 开箱即用:提供完整训练流程、权重文件和部署教程,用户可直接上手或自定义训练。

整体而言,本项目为公共卫生监测、实验室研究和环境管理提供了一个 快速、可靠、可视化的智能检测解决方案,降低人工检测成本,提高数据收集效率,为小型害虫监控提供了可落地的技术工具。

继上次微软免费的 Microsoft 365 E3 全局 https://v2ex.com/t/1172827

看到隔壁有人发,我想起了去年也验证过,方法很简单,当然前提你有 edu 邮箱,没有的话去 google 搜个社区大学注册。

去年起微软针对教育用户(学生)免费提供 2 年的 Microsoft 365 Premium 订阅。按微软价格的话,大概人民币 3000 多。

Microsoft 365 Premium 以每月 19.99 美元的价格,同时提供微软 Office 套件的使用权限与 Copilot Pro 的功能。该订阅包含更高的功能使用限额,以及 Copilot Labs 、Actions 等 Copilot Pro 专属功能的访问权限等。同时你可以通过电子邮件邀请最多 5 个人加入你的 Microsoft 365 家庭版订阅。

截图

具体方法

必备条件 edu 邮箱。
邮箱

登录你的微软个人账号,依次点击下面链接,进入验证,填写你的大学 edu 邮箱。
邮箱
个人版:
https://checkout.microsoft365.com/acquire/purchase?language=EN-US&market=HK&requestedDuration=Month&scenario=microsoft-365-student&client=poc&campaign=StudentFree12M

高级版:
https://checkout.microsoft365.com/acquire/purchase?language=EN-US&market=HK&requestedDuration=Month&scenario=microsoft-365-premium&client=poc&campaign=StudentPremiumFree12M
我的订阅

支付方式支持 paypal ,支付宝等,验证订阅后,你可以直接取消自动续费,就不会扣费风险!