面向AIGC的开发组件体系设计

这篇具有很好参考价值的文章主要介绍了面向AIGC的开发组件体系设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们知道,AI大模型可以通过提示来编写代码,因为它经过了GitHub中的许多优秀代码的训练。但是这些代码都是由不同的优秀程序员所编写,同一种功能有许多不同的实现方式,基础的组件和框架也是为人类程序员开发和设计的。

也就是说AIGC虽然很优秀,但程序员拥有的缺点它都具有。也许我们可以针对AIGC的特点,为其专门设计合适的组件体系来进一步提高AI与程序员沟通的效率,从而充分发挥AI大模型的能力。

这里主要面向信息管理系统的开发,对其应用的组件体系进行分析。先讨论一下面向AIGC组件体系的设计原则,再对常用的前后端组件进行梳理。后端采用的语言为Java语言,框架是Spring框架,前端为JavaScript,采用Vue/React框架。

面向AIGC的开发组件体系设计

 设计原则 ​

1、前后端一体化

显然对于AI大模型,必然是拥有全栈能力。目前,基于Web的信息管理系统的主要开发技术都采用的是前后端分离,前后端采用独立的语言和技术框架,交互通过Http的服务接口进行定义。

这里的一体化不是对技术和框架进行统一,而是在前后端分离的基础上,对数据和逻辑进行统一。采用约定大于配置的原则,将前端和后端组件交互的数据和接口进行统一:统一数据模型,统一接口定义,统一使用方式。

前端组件的使用依赖于后端的框架体系,后端的组件能够为前端提供更加高效统一的数据模型和服务接口。

这样虽然从实现上分离,但是在内在逻辑上保持一致,从而可以有效地避免重复设计,有利于减少代码量和保持代码可读。同时将软件的关注点不再拘泥于前端和后端,而是技术和业务,尽可能的封装技术,简化业务实现。

值得说明的是,对于大多数的软件系统,代码量是越少越好,而不是越多越好。

2、面向对象机制

面向对象原则也是组件设计的重要策略。面向对象从一开始就是简化编程思路,封装实现细节的重要方式。可以整个组件体系都采用面向对象的设计方式,对属性、方法和样式进行最简的优化设计。

后端的技术选项通常都采用面向对象的编程语言,如Java,C#,Python,Go等。以Java为例,主要的类库框架都是以面向对象为主。

继承和多态是面向对象的两个重要特性,通过继承可以有效的减少冗余,对组件进行更高维度的抽象。通过多态可以增加子类实现的灵活性,兼顾了易用性和灵活性的平衡。

而以JavaScript为主的前端技术,由于JavaScript本身是一门动态语言,虽然可以模拟面向对象的特性,但是由于过于灵活,一直作为操作HTML的DOM树的辅助语言存在,很少用到面向对象的设计,以JQuery为代表达到了顶峰。

随着以React、Vue、Angular等前端框架的出现,面向对象的设计再次被重新重视,特别是React框架,前端的组件实现可以被完美地面向对象化,继承和多态以非常自然的方式得到体现,这使得前端组件体系用面向对象的设计实现成为可能。

参考很多C/S架构的组件体系设计,如C#的WinForm和WPF组件框架,C++的QT等,这些组件的设计思路和架构都具有很多的借鉴价值。

3、无以复减的属性和方法

无以复减的原则就是对组件的属性和方法要尽可能的少,同时尽可能的简单,屏蔽其中的技术细节。就像汽车一样,留给用户的只有方向盘,油门、刹车和后视镜,用户无需知道发动机的原理,也无需知道更多的技术实现细节,只专注于业务目的地即可。

要做到更少的属性和方法就需要对组件进行合理的分类。以前端组件为例,原生的HTML组件的属性重复性非常高,同样的场景可以说使用任意组件都有无数种实现方式。这一方面是历史原因,另一方面也是为了更多的灵活性,这也符合互联网应用的特点。

但是对于信息管理系统,我们应更关注业务的复杂性,减少技术实现的多样性,所以对组件进行分类封装。目前很多组件框架的分类方式还是以互联网的思维方式为主,从组件的显示特点进行分类,如导航,按钮,图表,表格,录入等等。这样的分类虽然直观,组件的属性和方法延续了原生的设计并不能减少,而且对于信息管理系统还是存在一定的困惑。

我们从组件和后端数据模型的内在一致性出发,对组件进行重新分类,分为显示组件,编辑组件和布局组件。属性和方法更偏重于与后端服务接口和数据模型一致,这样就可以有效的统一前后端设计,减少组件本身的实现细节,更多的关注于业务。

同时无以复减也代表了少即是多的理念,虽然组件的属性和方法变少,但组件的数量变多,面对的业务变多,从而有更多的业务实现可能性。

4、基于数据类型分类

组件的分类规则通常是以功能作为依据。对于一些功能特殊的组件往往难以划分,造成分类复杂而且不够清晰。这里主要根据数据类型对组件进行分类,前后端采用一致的数据模型,后端组件通过继承“基础数据模型”和“基础服务模型”,提供了一致的对外服务接口。

返回的数据类型主要有三种,分别为:单值,键值和数组。对应于数据库设计中,数据表的某个属性值,数据库的单条记录和数据表的多条记录。在实体映射中,对应一个实体类的属性,一个实体的实例和一个实体的数组。

前端组件根据数据模型的类型分为三类:编辑组件,显示组件和布局组件。编辑组件对应于对象类型数据,相当于数据库表中的单条记录,如输入类组件主要是对单值进行录入,选择类组件对键值数据类型进行选择;显示组件对应于列表类型数据,相当于数据库表中的多条记录,如表格的数据源。布局组件则不对应任何数据类型。

因此,根据单值,键值和数组这三种基础数据类型,既统一了前后端的交互格式,同时也对组件的分类进行划分,使得组件的边界更加清晰,组件的使用也更加方便。

5、合理的设计模式

在J2EE的技术规范和指南中,一般分表现层,控制器层,业务逻辑层,数据访问对象层和领域对象层。但是在具体的使用过程中,往往非常冗余,且对于领域模型的表达也非常不清晰。

而传统的三层架构来源于经典的设计模式MVC模式,即模型层,视图层和控制层,通过对MVC的改造,可以使得组件的职能更加单一,具有“高内聚低耦合”的特点。

后端组件分为模型层和控制层。模型层对数据进行建模,负责数据库的操作和业务逻辑的处理;控制层即服务层,一方面负责提供服务接口与前端组件进行交互,另一方面通过调用模型进行数据库操作和业务逻辑处理。前端组件则为表现层,只负责用户的交互和数据展示。

反过来,我们将表现层拆解出各种前端组件,将业务逻辑处理和数据访问功能进行合并为领域模型。通过对业务的不断分解,进一步设计出整个后端组件体系。

6、开放集成能力

开放性是组件设计的重要原则,应该是保证在一定规则之下的。规则过于严格,会导致开放性不足;但过于宽泛,则过犹不及。

在很多拖拉拽的可视化设计系统中,组件的设计往往会比较复杂,需要顾及整个可视化体系。虽然在使用上比较简单,但是扩展性不足,能够达到的效果也受限于系统提供的组件。而在其他一些快速开发框架中,由于缺少统一的设计规则,组件以堆叠的方式组合到一起,也会造成难以修改并导致各种问题的出现。

因此需要合理的设计才能保证组件的开放性,尽可能利用成熟的组件生态体系,如React、Vue等框架,利用统一的设计原则对组件进行封装,规范组件的使用,同时支持对原生组件的扩展,保证原生组件的完整性和可用性。

 后端组件 

后端组件的核心是采用面向对象的基类继承体系,封装了模型的主要属性和方法,包括基础模型,基础层次模型,基础查询模型,基础模型服务,基础统计模型,基础统计服务等,其列表如下:

面向AIGC的开发组件体系设计

 前端组件 

前端组件的类型系统采用TypeScript,渲染实现框架采用React或Vue框架,底层融合了一些开源组件如antd,material ui等。通过基类组件对前端的组件进行统一抽象,与后端的基类模型相对应,从而保证了前后端的一体化。

前端的基类组件包括基础组件,基础样式,基础显示组件,基础编辑组件,基础布局组件和基础页面组件等。

面向AIGC的开发组件体系设计


原创 | 作者 | 薛丹,国防科技大学博士,资深程序员。版权所有,转载须联系授权并注明来源。

 文章来源地址https://www.toymoban.com/news/detail-488298.html

到了这里,关于面向AIGC的开发组件体系设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AIGC大模型必备知识——LLM ,你知道它是如何训练的吗?小白必读深度好文

    Look!👀我们的大模型商业化落地产品 📖更多AI资讯请👉🏾关注 Free三天集训营助教在线为您火热答疑👩🏼‍🏫 近年来,人工智能(AI)领域经历了令人瞩目的增长,尤其是自然语言处理(NLP)。你知道是什么推动了NLP领域的这种飞速发展吗?没错,那就是大型语言模型

    2024年01月25日
    浏览(42)
  • 破局之作:首部开源 AIGC 软件工程应用电子书《构筑大语言模型应用:应用开发与架构设计》...

    TL;DR 版; 在线:https://aigc.phodal.com 下载 1:https://github.com/phodal/aigc/releases 下载 2:https://pan.baidu.com/s/1wGc75vVHaZwvZyHeltyt8w?pwd=phod 2023 年的上半年里,我(@phodal)和 Thoughtworks 的同事们(如:@tianweiliu、@teobler、@mutoe 等)、 开源社区的同伴们(如:卷王@CGQAQ、@genffy、 @liruifengv 等

    2024年02月15日
    浏览(47)
  • 要将基于AIGC的技术与低代码平台相结合以提高开发效率,我们可以采取以下几个步骤

    1. 集成Chat-GPT API:首先,需要将Chat-GPT API与低代码平台集成,使用户能够从平台直接与AI进行交互。这将使得Chat-GPT能够理解用户的需求,并为他们提供相应的编程建议和解决方案。 2. 自定义预训练模型:根据低代码平台的特点和目标用户群体,对Chat-GPT模型进行微调,使其能

    2024年02月16日
    浏览(51)
  • 大数据之路—数据架构体系及模型设计

    一、阿里巴巴数据整合及管理体系 实施工作流: 1、划分数据域 :根据业务过程抽象出数据域。 2、构建总线矩阵 :明确每个数据域下有哪些业务过程,业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。 3、规范定义 :定义度量/原子指标、修饰类型、修饰

    2024年02月06日
    浏览(36)
  • 分享AIGC前沿论文系列二 面向区域级图像理解的端到端多模态大模型GPT4RoI

    面向区域级图像理解的端到端多模态大模型 带来了超越图像级理解的全新对话和交互体验 进行丝滑的人机互动,不仅仅是文字级别的人机互动 本文提出对感兴趣区域进行Instruction Tuning,并提出GPT4RoI: 一种区域级视觉-语言模型,带来了超越图像级理解的全新对话和交互体验,

    2024年02月15日
    浏览(35)
  • OpenTiny 前端组件库正式开源啦!面向未来,为开发者而生

    华为开发者大会2023(HDC.Cloud 2023)于7月7日-9日在东莞拉开帷幕,本届大会以“每一个开发者都了不起”为主题。OpenTiny作为前端企业级组件库解决方案,在本次大会上正式进行发布。 ​项目发展历程:从自研走向开源的 TinyVue 组件库 OpenTiny 是一套企业级组件库解决方案,适配

    2024年02月17日
    浏览(55)
  • 【AIGC】Stable Diffusion原理快速上手,模型结构、关键组件、训练预测方式

    在这篇博客中,将会用机器学习入门级描述,来介绍Stable Diffusion的关键原理。目前,网络上的使用教程非常多,本篇中不会介绍如何部署、使用或者微调SD模型。也会尽量精简语言,无公式推导,旨在理解思想。让有机器学习基础的朋友,可以快速了解SD模型的重要部分。如

    2024年02月08日
    浏览(63)
  • 面向大模型的存储加速方案设计和实践

    这是 AI 大底座系列云智公开课的第三期内容。前两期我的两位同事已经向大家介绍了高性能网络和 GPU 容器虚拟化的相关内容。今天我们把目光聚焦在存储方向,一起来看看面向大模型的存储加速方案的设计和实践。 今天将从以下三个方面来展开这次分享: 介绍大模型全流

    2024年02月14日
    浏览(33)
  • 【AI大模型开发者指南】书生·浦语大模型全链路开源体系

    https://intern-ai.org.cn/home https://github.com/InternLM 书生·浦语 - 语言大模型来自上海ailab、商汤科技,是国内领先的AI相关开源社区 其中许多开发者都来自OpenMMLab,相信接触过cv领域的朋友或多或少都使用过旗下的产品,例如mmpretrain、mmdet、mmseg等一系列开箱即用的cv炼丹框架。 可以

    2024年04月09日
    浏览(83)
  • 我们在SqlSugar开发框架中,用到的一些设计模式

    我们在《SqlSugar开发框架》中,有时候都会根据一些需要引入一些设计模式,主要的目的是为了解决问题提供便利和代码重用等目的。而不是为用而用,我们的目的是解决问题,并在一定的场景下以水到渠成的方式处理。不过引入任何的设计模式,都会增加一定的学习难度,

    2024年02月21日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包