Redian新闻
>
规范即治理函数:LLM 赋能的软件架构治理与架构设计

规范即治理函数:LLM 赋能的软件架构治理与架构设计

科技

在我们设计架构治理平台 ArchGuard 2.0 的架构时,一直在强调的点是:基于规范 + 模式的工具化。简单来说,规范是架构设计的共时也是架构知识的显性化。所以,在让 AI 设计架构时,规范是我们要考虑的第一要素,第二要素是:基于现有实现地设计。

在 ArchGuard 里,我们遇到的其中一个挑战是:如何识别不可言表的设计?于是,我们尝试构建 ArchGuard Co-mate 来理解这些设计,挑战也变为:如何让 AI 基于规范和架构已有上下文设计?因此,在这篇文章里,我们将介绍 Co-mate 分析过程与实现方式:基于 AI 原子能力的动态函数生成

TL;DR 版本:

简单来说,本文就是要解释上图的过程。

经典工具的局限性:无法识别不可言表的设计

在年初的 QCon 上,我和同事雨青在《组织级架构治理的正确落地方式》总结了架构治理的现状和挑战。

这种现状,我们总结称之为“小”团队、“大”能量的架构治理模式:
  • Think Big。通常来说,组织架构治理的顶层目标和范围都是比较大的,比如整合管理整个组织的应用资产、实现整体IT成本降低、效能提升等等。

  • Start Small。这里的 small 指的是架构治理团队,可能有的叫架构办、有的叫技术委,大多是 3-5 人这个数量级,也有十多人的比较少。和整体研发组织规模相比,很多是属于 1:100 的这个比例,也就是 1 个架构治理人员对应 100 个研发人员,甚至更多。

  • Move on foot。即徒步前行,指的是架构治理工作很多都是手工完成的,包括大规模的架构现状盘点、持续的架构评审等活动,很少有工具支撑的。

尽管,ArchGuard 2.0 能解决一部分问题,但是依旧有问题没有解释:不可言表的设计。这个问题出现在:ArchGuard 一直难以对一个项目的架构建模,有太多抽象的内容无法建模,而这些对于 LLM 是很容易的:

  • 当前(As-Is)架构或者未来(To BE)架构。系统本身是一直在变化的,变化的原因可能出自于多种上下文。

  • 分层架构不规范。如果分层架构(三层架构、DDD/四层架构)本身是规范的,那么工具可以识别出来;然而现实是不规范的分层架构,导致人也难以知道原先是三层还是四层的。

  • 技术栈的百花齐放。过多的技术栈,使得我们难以用工具识别架构的核心所在,而种总结对于人类和 LLM 来说轻而易举。

所以,我们转换了一下思路:如果 LLM 能否抽象这些不可言表的设计呢?所以,如何能否动态生成系统上下文的治理函数?

规范即函数:基于 LLM 原子能力的动态函数生成

在先前的一系列文章里,我们已经介绍了结合 LLM 设计软件架构,需要的是一系列的 DSL。即可以由 LLM 来动态生成,又可以是我们设计的。但是,我并不相信 LLM 的代码能力,所以我更愿意的做法是:让 LLM 来理解文档、DSL,以编排 DSL 来治理架构。

这也是基于 LLM 原子能力来动态生成治理函数的核心所在。

要素一:围绕 LLM 原子能力的设计

回到某个 AIGC 的闭门会议上,路宁老师提到了一个 AI 应用架构设计的要点:我们需要考虑分解 LLM,提取原子能力(类似于微服务)。再基于约束好的工程化步骤,构建完我们的上下文,可以构建出更理想的 AI 应用。

简单来说:结合 AI 的能力,看能解决我们的哪些问题。LLM 擅长什么,不擅长的点是否直接给 ArchGuard 完成。

比如说,在 Co-mate 的 REST API 治理场景下,我们使用的 LLM 能力包括了:

  • 分类:让 LLM 分析 API 文档,让我们后续根据 URI、HTTP Action、安全等几个不同的能力维度来选择适合的工具。

  • 逻辑推理:让 LLM 分析 API 文档的 URI Construction 部分,生成用于检查的 URI 正则表达式部分,以及适合于人类阅读的 by example 部分。当然了,也包含了其它场景之下的推理。

  • 提取:由 LLM 按 API 规范的不同维度来提取一些关键信息。

  • 分类:由 LLM 来总结哪些部分难以简单的通过代码总结,诸如于安全等不适合于所有的 API 场景。

  • ……

由此构成了 “能力映射” 的左图部分,这种方式适用于不同的规范分解。尽管如此,对于当前方式来说,依然还有一系列的可优化的空间,诸如于对 security、 misc 进行进一步的能力分解。

要素二:丰富基于规范的架构治理 “函数”

再回到我们的 API 规范上,我们从网上找了一个 API 规范示例(可以见 ArchGuard Co-mate 源码里的 docs/ ),初步将其分解为五个维度:HttpActionRule、StatusCodeRule、UriConstructionRule、MiscRule、SecurityRule。前三者由传统的规则检查工具来处理,后两者则由 LLM 进行二次的检查。

在验证了 LLM 基于文档的检查能力之后,我们将其转换为工具化的一部分。而把所有的 API 直接扔给 LLM 来检查是不合理的,也是不科学的。所以,结合 LLM 的能力、API 分类、检查频率等,将其划分了多个维度:

  1. rest_api {

  2. uri_construction {

  3. rule("/api\\/[a-zA-Z0-9]+\\/v[0-9]+\\/[a-zA-Z0-9\\/\\-]+")

  4. example("/api/petstore/v1/pets/dogs")

  5. }

  6. http_action("GET", "POST", "PUT", "DELETE")

  7. status_code(200, 201, 202, 204, 400, 401, 403, 404, 500, 502, 503, 504)

  8. security("""Token Based Authentication (Recommended) Ideally, ...""")

  9. misc("""....""")

  10. }

如在 API 场景下,我们需要对其进行分类。诸如于可以分为通用的 HTTP 资源型 API,登录等其它 API。

  • 通用 HTTP 资源治理。大部分可以直接由本地治理函数来完成。

  • 杂项 API。往往需要通过人或者 LLM 来进行分解,诸如于鉴权、health 等 API。

也因此,在未来我们需要的其实是大语言模型友好的架构规范。而这也是现阶段大部分文档不友好的地方,它们本身对于人是不友好的,工具编写时也缺乏一定的条理性。

要素三:构建实时的、动态的架构治理功能

在由 LLM 分析规范文档、分类的 spec,并生成基本的治理函数之后,我们需要结合两种不同的动态能力,以使它们有机的结合在一起。

在 ArchGuard Co-mate 里,我们依旧使用的是基于 DSL + Kotlin REPL Runtime 的方式来实现这个功能。

  • 治理 DSL。即步骤二的代码示例。其基于 Kotlin 的 Type-safe builders 实现。

  • Kotlin REPL。与之前的 ArchGuard 架构治理工作台一样,基于 Kotlin Jupyter Runtime 构建,并把 Co-mate 的相关依赖添加到进去,以实现直接的函数调用。

在由 ArchGuard API 提取了 API 之后,剩下的部分就可以交由 LLM 来实现,即交由神奇的 prompt 去进行分析:

作为一个黑盒的函数,调试 prompt 真是一件痛苦的事情。

小结:LLM 编排架构治理函数

对于本文而言,我们主要是通过 LLM 来进行治理函数的提取与编排,进而进行架构的治理。与需要大量上下文的编码相比,LLM 在编排上做得更好,只需要基本的推理和逻辑能力即可。

更详细的内容请阅读源码:https://github.com/archguard/co-mate 

微信扫码关注该文公众号作者

戳这里提交新闻线索和高质量文章给我们。
相关阅读
浅谈复杂业务系统的架构设计基于Kaldi的语音识别引擎后端架构设计ChatGPT提示词方法实战:探索一个系统架构设计的案例LOuiS VitTOn太难了!50家以上IPO申报未拿到受理函,IPO审核可能提前至受理环节!案例分享:To B产品商业化,架构设计和项目管理是关键智算中心网络架构设计实践(2023)Hadoop 上云: 存算分离架构设计与迁移实践复杂业务系统的通用架构设计我的X档案 - 不可思议之事 3(无人察觉的老人尸体)(请勿上城头)《三年》LLM底座模型:LLaMA、Palm、GLM、BLOOM、GPT结构对比T晨,男 ,陕西师范大学,软件研发与架构设计,年入税前40万+,95年,高181,深圳港股IPO的“老钱新贵”瑞凯集团:投资要靠纪律、制度与架构打胜仗重温《the newsroom》,看十年间三届总统把美国干沉了!如何做架构设计?大语言模型友好的 API:借助集体智慧构建更好的软件架构【公开课预告】元宇宙直播的终端架构设计和关键技术LLM 与架构新纪元:适应代码生成模式,突破软件开发瓶颈复杂业务系统的通用架构设计法则【今晚7点】元宇宙直播的终端架构设计和关键技术Large函数还可以这样玩?这个90%的人不知道的统计函数也太牛了!面向数字化提质提效的低代码架构设计 | 低代码技术内幕ArchGuard Co-mate:一次关于大语言模型与架构治理、架构设计的探索GPT-4,Llama2,ChatGLM2,PaLM2共聚一堂 | LLM Day @KDD 2023这3种优雅的嵌入式软件架构,你值得拥有!从业务出发,K8S环境自建和非自建整体架构设计比较热情奔放的野花盛宴十年经验总结:不同类型国际 SaaS 公司的组织架构设计谷歌PaLM 2弱爆:LLM大排名屈居第六,准中文倒数第二|UC伯克利排行榜新鲜榜出炉破局之作:首部开源 AIGC 软件工程应用电子书《构筑大语言模型应用:应用开发与架构设计》关于高可用、高性能、可扩展架构设计的14大要点详解 | 极客时间聚焦基础设施与软件架构,深入探讨底层技术,GOTC 2023 来咯LLM 赋能的研发效能:如何探索软件开发新工序?热点探测技术架构设计与实践
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。