核心概念
本文提出了一種名為 DesignRepair 的新型系統,用於檢測和修復由大型語言模型 (LLM) 生成的網頁前端程式碼中違反設計準則的問題,並透過結合程式碼分析和頁面渲染的雙流方法,以及利用 Material Design 3 準則構建的知識庫,實現自動化的前端程式碼修復,提升使用者體驗和介面品質。
導言
大型語言模型 (LLM) 的興起簡化了前端介面的創建,但同時也帶來了設計品質(例如:可訪問性和可用性)方面的挑戰。
現有解決方案通常受限於其關注點、通用性或數據依賴性,無法完全解決這些複雜問題。
本文介紹 DesignRepair,一個新穎的雙流設計準則感知系統,用於檢查和修復程式碼和渲染頁面中存在的 UI 設計品質問題。
Material Design 準則
Material Design 3 是一個由 Google 設計師和開發人員構建和支持的廣泛設計系統,可在 Android、iOS 和網頁平台上實作。
它涵蓋了從細粒度的設計準則(例如:個別組件的應用和特定含義的顏色使用)到組件的高級組合和常見設計模式等主題。
這些準則由三個主要部分組成:基礎、樣式和組件。
方法
知識庫構建
DesignRepair 採用 Material Design 3 作為評估品質的標準和知識庫的基礎。
為了確保高效和有效的知識檢索,我們將 Material Design 3 重構為兩個有組織的知識庫:組件知識庫和系統設計知識庫。
頁面提取
DesignRepair 首先提取基本資訊,例如:組件和屬性組,然後從我們的知識庫中檢索相關知識。
這種方法同時考慮了原始程式碼和使用者感知體驗,提供了全面而詳細的檢查。
知識驅動的修復
DesignRepair 採用分而治之的方法迭代地修復程式碼。
該過程從關注個別元素到考慮整體設計,確保以全面和系統的方式修復前端程式碼。
實驗
我們進行了一項評估,以衡量 DesignRepair 的有效性和實用性。
我們從 AI 生成的前端程式碼中收集了 196 個設計問題,並從包含 UI 設計及其前端程式碼的 GitHub 專案中收集了 115 個設計問題。
我們的評估表明,DesignRepair 能夠識別和修復設計問題,對於 AI 生成的問題,召回率為 89.3%,準確率為 86.6%,對於 GitHub 問題,召回率為 85.2%,準確率為 90.7%。
此外,我們在每個步驟上的實驗都突出了我們實施的策略的有效性。
最後,一項針對 26 名參與者的使用者研究進一步證實了我們修復的高品質。
貢獻
我們系統地分析了 Material Design 準則,並將其系統地轉換為結構化知識庫,即:低級組件知識庫和高級系統設計知識庫,從而能夠在設計品質保證過程中高效、有效地利用知識。
我們引入了 DesignRepair,這是一種新穎的知識驅動、基於 LLM 的雙流方法,專為系統地檢測和修復前端程式碼中的設計品質問題而設計。這種方法同時考慮了原始程式碼和使用者感知的渲染頁面,確保在設計品質提升方面表現出色。
我們進行了廣泛的實驗和一項針對 26 名參與者的使用者研究,證明了我們方法的有效性和實用性。
相關工作
可訪問性測試工具:Playwright、Google Lighthouse、axe-core
基於規則的 UI 設計檢查工具:UIS-Hunter
基於 LLM 的程式碼修復工具:CoCoNut、Repilot
討論和未來工作
我們的工作提出了一種可擴展的、基於知識的程式碼修復方法,該方法可以有效地利用設計準則,而無需手動構建和開發規則。
這種方法的優勢在於它可以靈活地支持和整合各種準則。
通過利用 LLM 和可擴展的知識驅動框架,我們的方法可以無縫適應不斷發展的準則。
此外,未來的改進可以集中在輕鬆整合準則更新和進一步縮小 LLM 檢查範圍的機制上。
我們已經確定了一個有希望的方向,即將相關規範與相關程式碼、屬性和值相結合,以實現更有效的效能。
我們發現縮短推理過程可以增強程式碼修復能力。
讓 LLM 和傳統分析工具(例如:渲染頁面分析工具)合作並利用各自的優勢,效率更高。
這些進步將確保與最新的行業和公司標準保持一致,從而使組織能夠輕鬆地根據其特定需求定制方法。
此外,我們的工作首次檢查了 LLM 生成的前端程式碼問題及其改進方法,這對於增強生成的程式碼(尤其是前端程式碼)非常有價值。
未來,我們可以在程式碼生成過程中整合 LLM 問題檢測和修復,從而實現早期問題識別和更可靠的程式碼創建。
統計資料
Vercel 的 V0 在發布後三週內吸引了 10 萬名使用者。
截至 2023 年 8 月,GitHub 上有 17.5 萬個 Vercel 的 V0 結果。
從 Vercel 的 V0 精選專案和使用者提交中隨機選擇了 64 個專案。
最終選擇了 20 個由 Vercel 的 V0 生成的、高品質的人工智慧協作前端程式碼專案。
在這些專案中,我們總共精確定位了 669 個組件/屬性組,對應 3,765 條設計準則,其中 196 條被違反。
平均而言,每個專案與 188.25 條設計準則相關聯。
從 GitHub 上最流行的 6 個專案中隨機選擇了 66 個檔案。
在這些專案中,我們總共識別了 1,793 個組件/屬性組,其中 115 個被違反。
Vercel 的 V0 專案的每個檔案有 33.45 個組件/屬性組,每個專案有 9.8 個準則違規。
GitHub 專案的每個檔案有 27 個組件/屬性組,每個專案有 1.74 個準則違規。
UIS-Hunter 在 Vercel 的 V0 專案上的召回率為 32.3%,在 GitHub 專案上的召回率為 22.9%。
DesignRepair 在 Vercel 的 V0 專案上的召回率為 92.1%,在 GitHub 專案上的召回率為 83.3%。
UIS-Hunter 在 Vercel 的 V0 專案上的準確率為 55.4%,在 GitHub 專案上的準確率為 47.8%。
DesignRepair 在 Vercel 的 V0 專案上的準確率為 87.3%,在 GitHub 專案上的準確率為 90.9%。
DesignRepair 在 Vercel 的 V0 專案上的組件提取召回率為 96.7%,準確率為 93.6%。
DesignRepair 在 GitHub 專案上的組件提取召回率為 96.5%,準確率為 91.8%。
DesignRepair 在 Vercel 的 V0 專案上的組件映射召回率為 94.1%,準確率為 90.5%。
DesignRepair 在 GitHub 專案上的組件映射召回率為 94.9%,準確率為 90.2%。
DesignRepair 在 Vercel 的 V0 專案上的違規檢測召回率為 92.9%,準確率為 90.1%。
DesignRepair 在 GitHub 專案上的違規檢測召回率為 87.8%,準確率為 93.5%。
DesignRepair 在 Vercel 的 V0 專案上的違規修復(組件)召回率為 89.9%,準確率為 87%。
DesignRepair 在 GitHub 專案上的違規修復(組件)召回率為 81.7%,準確率為 87.5%。
DesignRepair 在 Vercel 的 V0 專案上的違規修復(屬性)召回率為 87.2%,準確率為 85.4%。
DesignRepair 在 GitHub 專案上的違規修復(屬性)召回率為 89%,準確率為 94.2%。
DesignRepair 在 Vercel 的 V0 專案上的違規修復(軟約束)召回率為 70.4%,準確率為 82.6%。
DesignRepair 在 GitHub 專案上的違規修復(軟約束)召回率為 67.7%,準確率為 77%。
DesignRepair 在 Vercel 的 V0 專案上的違規修復(硬約束)召回率為 92.3%,準確率為 87.2%。
DesignRepair 在 GitHub 專案上的違規修復(硬約束)召回率為 88%,準確率為 92.6%。
DesignRepair 在 Vercel 的 V0 專案上的違規修復(全部)召回率為 89.3%,準確率為 86.6%。
DesignRepair 在 GitHub 專案上的違規修復(全部)召回率為 85.2%,準確率為 90.7%。
使用者研究招募了 26 名參與者(12 名女性,14 名男性),年齡在 25 至 35 歲之間。
參與者的教育背景各不相同:5 人擁有學士學位,15 人擁有碩士學位,6 人擁有博士學位。
他們的隸屬關係也很多樣化,6 人來自科學機構,10 人來自大型網路公司,10 人來自大學。
Wilcoxon 符號秩檢驗產生的 p 值約為 p ≈ 6.99 × 10−9,遠低於 0.05 的標準 alpha 閾值。
平均滿意度得分從修復前的 3.04 上升到修復後的 3.92。
標準差從 1.19 降低到 0.99。
58.7% 的使用者認為修復後的頁面在視覺上更優越。
20.4% 的參與者對修復前後的版本評分相同。
20.1% 的參與者表示更喜歡原始設計。