正如在开篇:软件工程3.0实践之路(一)中介绍道,LLM在软件需求定义、开发和测试上应用比较普遍,但在设计上比较薄弱,应用比较少。现在AIGC火热,文生图、图生图比较流行,LLM在艺术作画、宣传海报设计上能发挥作用,甚至让不少平面设计人员下岗了,但在软件设计(如UI设计、架构设计、数据库设计、接口设计等)上似乎不能大显身手,在这方面也难以见到精彩的分享。
今天我知难而上,聊聊LLM如何赋能软件设计。
我先问问最近火起来的Google的Gemini:LLM如何赋能软件设计?
从其回答来看,LLM在软件设计中还是比较乐观的,可以应用于架构设计、UI设计、数据库设计和接口设计等。那我们下面就尝试这方面实践,检验能否达成Gemini所说的状态。
1. 创建智能体:架构设计助手
我还是尝试用智谱清言来创建一个智能体,然后和智能体进行对话来帮忙完成软件设计。
我们还可以给它上传知识库文件,只是这部分,我缺乏足够的文档去构建知识库,我相信一家企业会有足够的文档来支撑架构设计的知识库。
2. 整体设计和架构设计
有了智能体“技术架构师”助手,我就可以和它一起来完成架构设计中的一些任务。
首先我上传了一个业务需求文档《某银行催收系统业务需求》,然后让它基于这个文档来完成系统的整体设计。
让它根据文字生成架构图是有挑战的·,我试试多家基于LLM的应用,看看哪家可以支撑架构图的生成。GPT-4/GPT-3.5 Turbo不支持架构图的生成,我还是不得不问我的智能体“技术架构师助手”,它画了一张简单的架构图,它能画但画得过于简单:
这不能算画,而是靠文字拼成。试了百度的文心一言,也是靠文字拼成,但效果好一些:
两份架构设计都谈到API网关,那就让它们帮忙设计API网关。先看在智谱清言中定义的智能体给出的详细设计。
然后再看文心一言给的设计。
设计是自顶向下分解的过程,我们可以继续针对所关注的某项内容或某个组件,让智能体或文心一言继续帮助进行设计。上面是第一次生成的结果,如果觉得有问题,我们还是可以指出问题,并通过更好的提示词(表达)来获得更好的结果。正如我常说的,“人机交互”是常态,发挥各自的优势,让人机智能1+1大于2。
前面,我们试图让LLM完成系统设计方案、生成架构图等。如果图的素材不适合LLM的训练,也可以借助UML语言工具(PlantUML,详见https://plantuml.com/zh/guide)的转换,通过类似程序语言的DSL素材来训练/微调LLM,从而生成UML,来辅助我们完成软件设计,包括序列图、部署图等。这样借助单模态的LLM就能完成软件设计,而不需要多模态的LLM。
但多模态的LLM已经出现了,未来生成架构图或UML图,也不会是问题。最近两天,OpenAI的文生视频大模型Sora被刷屏,效果惊艳,人们预测离AGI(人工通用智能)不远了,也许2-3年就到来。当AGI到来时,架构设计、详细设计等问题就迎刃而解了。
,时长01:00
(已经精准生成我们所设想的画面,from OpenAI)
除了生成设计图,我们也可以反过来,让LLM帮忙审查架构图,指出架构设计的问题。
我上传了一张相对复杂的、银行某系统的架构设计图(英文),让Google Gemini帮忙评审、指出问题。
分析得清清楚楚。我再上传一张国内银行的系统架构图,让智能体帮忙分析。
“然而,该系统的缺点可能是” 没有另起一行,格式不够理想,但效果还是不错的。由于篇幅所限,其它一些好的实践案例,就不放上来了。
在设计工作上,其实可以借助多个LLM来帮忙,例如让文心一言帮忙设计架构图,然后我们设计人员在此基础上丰富设计图,然后再输入给Gemini,让它评审,相当于在多个智能体上进行博弈,最终获得相对完美的设计。
国内也有一些专家在进行这方面探索,例如架构副驾驶ArchGuard co-mate(帮助架构的设计与治理,详见https://github.com/unit-mesh/co-mate)设计了一套 DSL,让 LLM 根据不同的场景填空和编写 DSL。
(放松一会,看一个广告,然后继续精彩内容)
3. UI设计
其实,当人们讨论AIGC时,特别是文生图,自然我们就想到,让LLM帮助完成软件的UI设计,虽然不能一步到位,但可以给我们一些设计的灵感或出一张设计草图。
我们可以先让智能体帮我们生成设计草图或给出设计指导意见,如下:
......
然后把这要求给文生图工具或插件,让它帮忙生成设计图:
虽然不能直接使用,但可以作为参考样例。另外,有相关的一些工具或开源项目,例如:https://github.com/oobabooga/text-generation-webui。
按照昨天的文章 全面解读OpenAI Sora,揭秘AI技术的未来 中说道:产品设计师可以使用 Sora 将他们的概念变为现实,直接从他们的描述中呈现产品设计的逼真视频演示,获得设计效果,然后设计师再完成产品的真实设计。
,时长00:20
(真实呈现空间和艺术品,from OpenAI)
再介绍这一领域探索、获得初步成果的两篇论文。
论文1: PromptInfuser: Bringing User Interface Mock-ups to Life with LLMs
-
大型语言模型(LLMs)和提示编程降低了原型设计人工智能功能的障碍,使新手能够通过自然语言提示快速创建定制的人工智能功能。
-
将LLM提示整合到用户界面模拟中可以显著加快功能原型的创建速度,让设计师更早地了解他们的设计将如何与人工智能集成,并在设计过程的早期阶段使用功能原型进行用户研究。
-
PromptInfuser是一个Figma插件,可以让设计师将LLM功能融入用户界面模拟中,引入了两种新颖的LLM交互方式:输入-输出和框架更改。
-
将LLM提示整合到用户界面设计中可以通过紧密整合UI和AI原型设计来改变设计流程,但可能需要额外支持提示编写,以确保更顺畅的原型设计体验。
论文2:Exploring Mobile UI Layout Generation using Large Language Models Guided by UI Grammar
-
本文探讨了利用大型语言模型(LLMs)生成移动用户界面(UI)布局,并引入了UI语法的概念,以指导LLMs的生成能力,提高生成过程的可解释性和可控性。
-
讨论了LLMs在UI布局生成方面的潜力,以及应用UI语法来表示UI元素中固有的分层结构,旨在改进生成过程和生成结果的质量。
-
文中介绍了使用GPT-4进行的初步实验,展示了LLMs通过上下文学习产生高质量UI布局的潜力,以及UI语法在改进生成质量的某些方面上的潜力。
-
概述了用于UI布局生成的提示设计,包括表示上下文学习中的UI元素和将分层结构整合为UI语法以指导生成过程。
-
讨论了使用LLMs和UI语法对未来研究的影响,包括生成高保真度UI原型的潜力,以及在UI布局生成方面需要进一步改进和评估的需求。
除了LLM可以做这些工作,它还可以评审UI设计,指出我们设计中的问题。下面就是一个比较具体、生动的实例。
4. 设计咨询
LLM,自然是一个很好的设计顾问,我们可以向它了解架构设计、UI设计、数据库设计、设计模式等相关的知识或实践经验。这个无需多演示,这里就给一个设计模式咨询的结果,
给了这么多例子,我相信你开始相信LLM能很好地赋能软件设计。