过去1年,LLM-based已经成为AI的新范式,于此同时,自然语言生成图片、视频、数字人等一系列关联领域都取得了巨大突破。在今年2月,出现了被称为史上第一个全能AI程序员的Devin,而上周也有消息称阿里入职了工号为AI001的全智能程序员。通过AI替代以往的编程工作,已经是被验证的可行路径,只不过目前的成熟度还不够,后续的发展仍然有待观察。对于前端开发者而言,我们需要有警惕感的同时,也应该思考,如何利用AI技术,提升自己的开发效率,以在激烈的竞争中出类拔萃。今天,我们就要来聊一聊有关AI生成UI的话题。
在前端,我们在某一个无法用单一词汇来描述的领域,有着非常执着的追求,那就是尽可能的减少代码层面的编写,快速完成UI输出。在这一追求下,从古至今衍生出来很多技术,例如最早的网页制作工具frontpage以及其继承者dreamweaver,其后的H5编辑工具及其继承者页面编辑器,过去几年这一路径演变为风靡一时的低代码运动,以及D2C(Design To Code)运动。
前端界一直在寻求一种可以根据需要自动生成UI界面及其交互效果的一劳永逸的方法,但即使出现了低代码这样的方案后,仍然无法成为新的主流范式,直接通过code编程写UI还是目前的主流。在低代码方案中,核心问题在于,低代码平台无法满足灵活的UI效果需求,以及无法满足复杂的逻辑判断需求,而一旦一个平台尝试去解决这些问题,就会发现低代码平台的使用困难度指数级上升,这种使用学习成本,以及使用所消耗的时间,不亚于直接使用代码来编写UI。
由此可见,在低代码的发展中,我们不能一味的追求理想化的全能平台的目标,一旦追求全能,就会陷入成本指数级上升的窘境。而通过低成本搭建一个可以满足当前业务需要场景的低代码实现,虽然不能复用到其他场景中,但是只要能在当下场景中被反复使用,赚回成本,就是不错的选择。因此,在过去两年中,我们鲜有再见全能型低代码平台的产品出现,因为任何全能型低代码平台,都无法绝对满足真实的业务需求。
在低代码运动中,我们收获了一些成果。而这些成果的沉淀,却在今天带来了转机。
前几天,一个名为open webui的项目引爆了社区,这个项目基于LLM,让开发者可以通过自然语言来描述搭建web页面。和以往D2C等一次性生成UI不同,openwebui支持通过自然语言实时的连续的反复的调整UI,以对话的形式逐步调整界面,最终获得你满意的效果。
告诉它哪里应该放什么元素,颜色是什么,高度如何……有没有回忆起产品或设计同学站在你的身后指着屏幕指导你修改界面的场景。基于openwebui,你可以换一个身份体验一下。
不过目前来看,openwebui还只能通过语言描述来工作,而不能把图像(设计稿)、鼠标动作等因素囊括起来,功能上感觉还是比较初级,毕竟语言所表达的往往不够准确。
但是,我之所以对这个项目如此感兴趣,在于它基于LLM-based AI提供了一种在AI时代进行UI生成的模式雏形。接下来,我将基于我自己的一些经验和想法,分解利用LLM-based AI实现UI生成的技术原理。
我们都知道,web UI界面是靠HTML5、CSS3和ES标准完成的,我们用ui框架,如react、vue等就是把这些最底层的原生实现封装为高级的框架,从而提升开发效率。而在这些框架的基础上,我们又出现了很多组件,这些组件包含了UI的结构和样式,甚至交互效果都固定了,因此,这些组件可以被抽象化,只要有组件名和对应的props参数,即可得到对应的UI效果。而低代码平台则可以利用这些组件,在平台上完成布局,以及组件props参数的配置,从而输出对应组件体系的界面。在低代码平台上,我们通过某种Schema数据结构来描述布局和组件调用规则,在实际渲染或生成代码是按照该数据结构真实的载入组件来完成渲染。而这里的Schema,往往可以是纯文本的,因此,一个低代码应用原理,可以被认为本质上就是一种配置文件的生成。既然是纯文本,那么也就意味着我们可以让LLM来生成它。
没错,讲了这么多,我们终于让LLM登场。现在,我们的目标切换成了,如何让我们的AI系统,可以通过LLM应用,实现从自然语言描述到Schema数据的生成过程。
LLM应用的发展过程有好几个阶段,你可以关注我的公众号 wwwtangshuangnet 阅读相关文章了解。如果是早期,我们主要强调的是 prompt 工程,利用大模型的推理、思维链等特性,想尽办法让大模型可以在推理过程中按照Schema的特征进行生成。但是,这种方法效果非常差,一方面我们需要提供庞大的example和schema描述,toekns太多,性能扛不住,另一方面我们必须让自然语言是在描述schema,而非描述UI,这显然是不符合预期的。后来,我们尝试使用lora、fine-tune等微调方案来让模型更懂schema,这样就可以用更少token,但是这种方案仍然是要求用户自然语言描述中,必须是在熟知schema的前提下进行,否则很难对应到schema中。
可见,这一时期,想直接通过描述UI长什么样子,到我们获得Schema文件之间,存在着巨大的鸿沟,通过描述Schema信息来生成Schema,虽然比拖拉拽看上去更快,但准确性却并不理想。总而言之,少那么点意思。
今年,也就是2024年,LLM的应用进入到一个新阶段,通过设计大型工作流架构来完成任务目标成为新范式。过去,我们往往希望通过LLM一次或几次对话就能一步到位得到我们想要的数据,在经过这1年的社会毒打之后,发现是不可行的,纯粹的LLM交互是无法提升效果的。吴恩达在其研究中发现,如果只是单独依靠一两次对话就想获得想要的目标,其成功率,GPT-3.5能打3分,GPT-4能打6分,但是如果设计出恰到好处的工作流,即使GPT-3.5也能打到9分。
什么是工作流呢?简单讲,就是不妄想通过简单的1个步骤就立马得到结果,而是有规划有策略的进行多轮对话,让不同的Agent担任不同的角色,分工合作,再加入一些验证、调整等环节,从而让走完整个流程后出来的结果更逼近我们想要的结果。
可以说,2024年所有的AI应用都在利用这个思路,包括最新的大模型底座架构,也在强调多专家模型的网络结构。也就是说,整个业界都意识到,单纯靠一个LLM单打独斗是无法高效实现目标的,通过系统化的任务拆分能让效果瞬间翻倍。这种分工协作思想,是今年AI应用架构的核心思想,也是我们这段时间看到各类效果不错的AI产品令人惊艳的原因。
回到我们的主题,当用户在对UI进行描述时,openwebui将整个任务进行了划分,通过不同的阶段、不同的模型调用、不同的任务目标、不同的工具调用,最终让生成的代码更为逼近用户描述的目标。如果再结合我们上文提到的,我们通过微调,可以让大模型可以根据用户描述获得更逼近与我们Schema结构的输出。这个过程本身就有点像一个开发团队的工作过程,产品描述需求,产出交互稿,设计根据需求产出设计稿,开发根据需求和设计稿产出代码。通过这种分工协作,虽然用户不懂专业的编码过程,但是只要他可以描述正确自己的需求,就可以得到对应的结果。
由于我们已经有低代码的成果,因此,利用低代码平台现有的能力,把低代码平台作为一个第三方工具,挂载在AI系统上,当上述工作流运行到某个节点时,把低代码平台作为工具进行调用,就形成了符合眼下Agent架构的合理模式。
这里其实有一个细节,就是workflow执行调用工具任务时,需要向工具传参,而这个参数往往是上游的节点中的LLM生成的,这个参数应该就是我们需要的Schema文件。
这样,就形成了一个完整的闭环。
不过这里我没有详细展开当下业界主流的workflow架构模式,以后有机会的话,会专门做一起节目来讲。
可以看到,从路径上讲,用自然语言描述来生成UI是完全可以实现的,而且openwebui还有一个特点,就是可以通过自然语言来对界面进行调整,这一点也是非常友好。如果可以在加入鼠标控制的能力,配合上语音识别,那就更加有意识了,我们可以通过鼠标点击某处,然后说话“这个地方改为蓝色”,就可以修改出我们需要的效果。这样的场景相信也并不难实现。
好了,本期详细阐述了用AI生成UI的技术实现原理。随着LLM技术的不断发展,我们前端会逐渐受到影响,只有不断学习和进步,才能重复利用更为先进的工具提升我们的开发效率,让我们的开发更加有意思。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。