網(wǎng)易云音樂(lè)低代碼 + ChatGPT 實(shí)踐方案與思考

      后臺(tái)-系統(tǒng)設(shè)置-擴(kuò)展變量-手機(jī)廣告位-內(nèi)容正文頂部
      隨著大語(yǔ)言模型(LLM)不斷涌現(xiàn)的各種能力,生成式 AI 的應(yīng)用場(chǎng)景變得越來(lái)越廣闊。諸如 ChatGPT 這類大語(yǔ)言模型在生成代碼方面非常的高效,因此對(duì)于如何將 LLM 的能力與低代碼產(chǎn)品進(jìn)行結(jié)合,業(yè)界已經(jīng)有了很多的討論和實(shí)踐,但都距離實(shí)際的生產(chǎn)場(chǎng)景有一定的距離。本文將會(huì)介紹的是,網(wǎng)易云音樂(lè)大前端團(tuán)隊(duì)是如何借助 LLM 的能力來(lái)擴(kuò)展和增強(qiáng)低代碼產(chǎn)品的研發(fā)體驗(yàn)的,本文所涉及的內(nèi)容均已在內(nèi)部生產(chǎn)環(huán)境中上線并得到應(yīng)用。

      LowCode Copilot 功能預(yù)覽

      首先,給大家快速地預(yù)覽一下我們?cè)诰W(wǎng)易云音樂(lè)內(nèi)部的低代碼平臺(tái)中上線的 AI Copilot 功能,目前提供了包括智能創(chuàng)建頁(yè)面、智能修改頁(yè)面、智能屬性配置、智能代碼片段生成、智能問(wèn)答和編程助手等多種能力,下面是具體的演示內(nèi)容。

      智能創(chuàng)建頁(yè)面

      在云音樂(lè)低代碼平臺(tái) Tango Studio 中,我們集成了 LLM 的能力來(lái)加速前端應(yīng)用的開發(fā)流程和體驗(yàn),開發(fā)者可以借助于簡(jiǎn)單的自然語(yǔ)言描述的方式快速生成表單、表格、詳情、儀表盤等頁(yè)面,而無(wú)需記憶大量的組件配置和功能點(diǎn),有效地提升了低代碼平臺(tái)的使用效率。
      例如,在 AI 對(duì)話面板中,可以輸入 “創(chuàng)建一個(gè)審批表單頁(yè)面,字段包括審批人,審批時(shí)間,審批意見”,短暫的等待,就可以直接生成整個(gè)表單應(yīng)用,用戶只需要進(jìn)行邏輯上的微調(diào),即可完成整個(gè)前端應(yīng)用的構(gòu)建。

      create page

      智能修改頁(yè)面

      如果生成的頁(yè)面不是你想要的,也可以通過(guò)聊天面板通過(guò)自然語(yǔ)言輸入的方式對(duì)頁(yè)面內(nèi)容進(jìn)行微調(diào),例如增刪改表單或列表的字段,修改頁(yè)面標(biāo)題,自定義組件樣式等等,為用戶提供低成本高容錯(cuò)的交互體驗(yàn)。
      例如,“增加一個(gè)是否同意的字段”。

      update page

      智能組件屬性配置

      除了使用 AI 對(duì)話面板,用戶還在在選中某個(gè)組件后快速喚起 AI 輸入框,通過(guò)簡(jiǎn)單的自然語(yǔ)言描述方式對(duì)當(dāng)前組件的配置進(jìn)行微調(diào),例如組件的樣式,大小,狀態(tài)等屬性的設(shè)置。
      例如,“背景色改為淡黃色”,“使用垂直布局” 等。

      set config

      form layout

      智能代碼片段生成

      在云音樂(lè)低代碼平臺(tái)中,用戶有很多地方可以直接編寫代碼而不是使用可視化 UI,因此我們將 LLM 生成代碼的能力集成進(jìn)來(lái),幫助用戶快捷的編寫表達(dá)式代碼,為開發(fā)者提供比可視化拖拽更高效的研發(fā)體驗(yàn)。
      例如,“過(guò)濾掉返回值中 name 不是 alice 的數(shù)據(jù)”。

      code generate

      智能問(wèn)答和編程助手

      由于 B 端產(chǎn)品的特殊性,通常會(huì)有一定復(fù)雜度的流程和功能模塊,用戶需要閱讀使用文檔才能完全掌握系統(tǒng)的使用。借助 LLM 的能力,我們可以將軟件文檔分片后存儲(chǔ)到向量數(shù)據(jù)庫(kù),并借助 LLM 來(lái)構(gòu)建基于上下文的問(wèn)答系統(tǒng),為用戶提供全新的問(wèn)答體驗(yàn)。同樣,我們將這種能力融入到系統(tǒng)的問(wèn)答過(guò)程中,為用戶提供比關(guān)鍵詞搜索更良好的答疑體驗(yàn)。

      Q&A

      構(gòu)建思路與實(shí)現(xiàn)原理

      此前曾經(jīng)分享過(guò)對(duì)于網(wǎng)易云音樂(lè)低代碼體系的建設(shè)思考和實(shí)踐,結(jié)合業(yè)務(wù)和團(tuán)隊(duì)的現(xiàn)狀和痛點(diǎn),團(tuán)隊(duì)構(gòu)建了一套基于源碼的低代碼研發(fā)體系,支持開發(fā)者使用 LowCode 和 ProCode 雙模式在線混合開發(fā),并且支持兩者的雙向同步,為業(yè)務(wù)場(chǎng)景提供足夠的靈活性,借此推動(dòng)低代碼研發(fā)方式在云音樂(lè)大前端場(chǎng)景的漸進(jìn)式覆蓋。
      云音樂(lè)低代碼平臺(tái)實(shí)現(xiàn)的核心思路是:將源代碼解析為 AST ,在 AST 的基礎(chǔ)上進(jìn)一步抽象和建立 文件模型 和 節(jié)點(diǎn)模型,通過(guò)將視圖的拖拽配置行為轉(zhuǎn)為對(duì) AST 的操縱和修改,進(jìn)而將變化后的 AST 重新還原為源代碼。具體如下圖所示。

      LowCodeEngine
      以源碼為核心的低代碼平臺(tái)構(gòu)建方案為我們?cè)趦?nèi)部大力推廣低代碼開發(fā)提供了很大的便利,因?yàn)樵趯?shí)際的使用過(guò)程中,大量的需求變化仍然依賴于開發(fā)者對(duì)組件和邏輯的自定義,傳統(tǒng)的低代碼方案對(duì)于這種需求變化的支持并不友好,而以源碼為核心的低代碼平臺(tái)則可以很好的解決這個(gè)問(wèn)題。
      此外,以 GPT 為代表的這類大語(yǔ)言模型在文本生成方面具有非常高的效率,因此將其應(yīng)用在代碼生成方面具有非常高的準(zhǔn)確性。結(jié)合我們?cè)谠埔魳?lè)采用的源碼驅(qū)動(dòng)的低代碼開發(fā)方案,我們很順利的將 GPT 的能力集成到了云音樂(lè)低代碼平臺(tái)中。

      tango-ai-flow
      具體的原理如圖所示,對(duì)于用戶的輸入指令,首先會(huì)被組裝為標(biāo)準(zhǔn)化的 Prompt 模版,進(jìn)而解析用戶指令中的用戶意圖,借助于向量數(shù)據(jù)庫(kù)進(jìn)行近似度匹配,將關(guān)聯(lián)的信息合并到 Prompt 中,然后借助預(yù)訓(xùn)練的 GPT 大模型推理生成代碼,最后將 GPT 返回的代碼合并到當(dāng)前工程中,觸發(fā)應(yīng)用視圖重新渲染。
      通過(guò)構(gòu)建基于源碼的低代碼開發(fā)能力,可以為一線業(yè)務(wù)開發(fā)同學(xué)提供全新的線上線下一體化混合開發(fā)流程。傳統(tǒng)的實(shí)現(xiàn)方案線上與線下流程獨(dú)立,不互通;資產(chǎn)獨(dú)立,不共享;并且低代碼應(yīng)用出碼流程也是單向不可回流的。結(jié)合于大語(yǔ)言模型的能力,我們進(jìn)一步構(gòu)建了云音樂(lè)的混合開發(fā)方案,支持使用同一份前端資產(chǎn)和代碼庫(kù),支持用戶通過(guò)低代碼 IDE、ChatBot、本地 IDE 三種方式開發(fā)同一個(gè)前端工程。具體的效果如下圖所示。

      mixed flow

      從編程語(yǔ)言到提示工程(Prompt Engineering)

      在云音樂(lè)低代碼平臺(tái)中,我們將自然語(yǔ)言推理作為一個(gè)獨(dú)立的底層服務(wù)。在用戶輸入指令后,會(huì)將用戶的輸入指令和當(dāng)前工程的信息組裝為一個(gè)標(biāo)準(zhǔn)化的 Prompt 模版,然后將 Prompt 模版發(fā)送給自然語(yǔ)言推理服務(wù),并基于底層大語(yǔ)言模型服務(wù)推理生成代碼,進(jìn)而再將生成的代碼合并到當(dāng)前工程中。使用提示工程進(jìn)行低代碼編程的基本流程如下圖所示。

      借助提示工程實(shí)現(xiàn)低代碼編程的基本流程示意圖
      可以說(shuō)提示工程已經(jīng)成為了一種新型的平民化編程語(yǔ)言,借助于大語(yǔ)言模型的能力,可以低成本的實(shí)現(xiàn)代碼的生成。類似于 AutoGP, Self-INSTRUCT 這類產(chǎn)品,則是直接基于結(jié)構(gòu)化的 Prompt 來(lái)驅(qū)動(dòng) GPT 實(shí)現(xiàn)自動(dòng)任務(wù)調(diào)度。AutoGPT 使用 GPT-4 生成、優(yōu)先排序和執(zhí)行任務(wù),使用插件進(jìn)行互聯(lián)網(wǎng)瀏覽和其他訪問(wèn)操作。它使用外部?jī)?nèi)存來(lái)跟蹤自己正在做什么并提供上下文,這使得它能夠評(píng)估自己的情況、生成新任務(wù)或自我糾正,并將新任務(wù)添加到隊(duì)列中,然后對(duì)其進(jìn)行優(yōu)先排序,具體的流程如下圖所示。

      Auto GPT

      編程語(yǔ)言的平民化

      我認(rèn)為,以 GPT 為代表的大模型服務(wù)必將改變未來(lái)所有產(chǎn)品的構(gòu)建思路和用戶使用方式,LLM 也將成為新一代的互聯(lián)網(wǎng)基礎(chǔ)設(shè)施。借助于生成式 AI 的能力,可以顯著地改善低代碼產(chǎn)品的可用性和易用性問(wèn)題,并且讓軟件開發(fā)的過(guò)程更加簡(jiǎn)單且富有趣味性。

      同時(shí)也不得不讓我們重新思考低代碼產(chǎn)品的設(shè)計(jì)與構(gòu)建過(guò)程,因?yàn)?GPT 為代表的這類生成式 AI 在代碼編寫方面尤為擅長(zhǎng),它將顯著的提升編程語(yǔ)言的平民化速度。相較于編程語(yǔ)言,自然語(yǔ)言具有更高的容錯(cuò)性,而傳統(tǒng)的代碼編程則非常依賴于精準(zhǔn)地使用編程語(yǔ)法。在 ChatGPT 中,你甚至可以利用偽代碼進(jìn)行編程。

      使用 ChatGPT 進(jìn)行偽代碼編程

      對(duì)未來(lái)的思考

      對(duì)于低代碼產(chǎn)品而言,私有協(xié)議和復(fù)雜的 DSL 設(shè)計(jì)會(huì)導(dǎo)致系統(tǒng)的可擴(kuò)展性變得越發(fā)艱難,且難以利用社區(qū)龐大的開源代碼資產(chǎn)。而 GPT 這類大語(yǔ)言模型利用了數(shù)量龐大的開源數(shù)據(jù)集進(jìn)行訓(xùn)練,在生成主流編程語(yǔ)言代碼方面具比一般程序員更強(qiáng)的編程能力,如果能夠?qū)?LLM 的能力與低代碼的能力相結(jié)合,將會(huì)極大地降低軟件系統(tǒng)的開發(fā)成本。因此,系統(tǒng)的設(shè)計(jì)需要考慮主流的社區(qū)生態(tài)和方案,否則將很難具有持續(xù)性。因此,更加明智的選擇是擁抱開源社區(qū)的主流生態(tài),最大化地利用開源資產(chǎn)和公司內(nèi)部資產(chǎn)的結(jié)合來(lái)提升產(chǎn)品的功能和體驗(yàn)。
      此外,借助于大語(yǔ)言模型能力的能力,我們也需要重新思考軟件交互界面的設(shè)計(jì),自然語(yǔ)言界面將會(huì)成為新的人機(jī)交互的必備界面。對(duì)于低代碼產(chǎn)品的構(gòu)建而言,過(guò)度的可視化交互邏輯反而會(huì)增加系統(tǒng)的復(fù)雜度,諸如 Retool 這類低代碼產(chǎn)品也在越來(lái)越強(qiáng)調(diào)邏輯表達(dá)的靈活性,某些情況下圖形界面并不比少量的表達(dá)式代碼更高效。對(duì)于產(chǎn)品構(gòu)建而言,需要找準(zhǔn)目標(biāo)用戶,為用戶提供更加符合直覺和心智的產(chǎn)品。

      最后,以 ChatGPT 為代表的生成式 AI 可以大大提高信息處理和決策的效率,將會(huì)對(duì)我們對(duì)工作和生活帶來(lái)深刻的影響,身處其中,我們需要不斷探索和應(yīng)用這些新的變化。
       

      參考資料

      1. ChatGPT在代碼生成方面的應(yīng)用:
      https://openai.com/blog/openai-codex
      2. 基于結(jié)構(gòu)化Prompt實(shí)現(xiàn)GPT自動(dòng)任務(wù)調(diào)度:https://community.openai.com/t/dissecting-auto-gpts-prompt/163892
      3. ChatGPT偽代碼編程:
      https://community.openai.com/t/prompts-as-psuedo-code-where-are-the-limits/223
       

      未經(jīng)允許不得轉(zhuǎn)載:RPA中國(guó) | RPA全球生態(tài) | 數(shù)字化勞動(dòng)力 | RPA新聞 | 推動(dòng)中國(guó)RPA生態(tài)發(fā)展 | 流 > 網(wǎng)易云音樂(lè)低代碼 + ChatGPT 實(shí)踐方案與思考

      后臺(tái)-系統(tǒng)設(shè)置-擴(kuò)展變量-手機(jī)廣告位-內(nèi)容正文底部
      主站蜘蛛池模板: 通河县| 临城县| 定襄县| 兴安县| 沙坪坝区| 明溪县| 尼玛县| 洛隆县| 娱乐| 乌拉特中旗| 靖西县| 苍梧县| 科技| 平安县| 民丰县| 宣威市| 噶尔县| 赫章县| 资溪县| 大石桥市| 怀安县| 蓬安县| 邹城市| 新巴尔虎左旗| 阳谷县| 镇宁| 肇庆市| 东城区| 曲水县| 崇义县| 石河子市| 睢宁县| 云梦县| 行唐县| 古田县| 修武县| 玉林市| 玛曲县| 安国市| 滦平县| 阳高县|