🆙iOS 本地 AI:Foundation Models 的限制、錯誤與 UX 設計技巧

介紹一些提升使用者體驗的方向,把 context window、guardrail 等重要議題視為使用者體驗設計的一環,並整理各種可能發生的錯誤。妥善處理錯誤,就是提升體驗的機會。

我們已經介紹過 Foundation Models framework 的大部分功能了。在本篇文章中,我會整理一些提升使用者體驗的技巧,讓 App 變得更可靠、實用。

在開始之前,我推薦你閱讀 Apple Human Interface Guidelines 的 Generative AI 篇章(英文。另有簡體中文版),學習什麼是良好的生成式 AI 應用體驗。例如給用戶掌控感、包容性設計、實用性、隱私與資料使用透明等。而我覺得最重要的一點是:在設備無法使用或使用者拒絕使用生成式 AI 時,App 仍要保持好的體驗

接下來,我們先「暖身」、複習檢查模型可用,然後談管理 context window 與安全護欄的問題,最後列出其他可能拋出的錯誤類型

這些錯誤往往都能事前加強或事後補救,而危機就是轉機,處理錯誤就是提升使用者體驗的機會

讓模型暖身,縮短初次回應時間

在呼叫模型的時候,我們通常需要等待一段時間才會收到第一個回應,有點像是需要先「集氣」才能輸出火力。

如果根據使用者目前的操作,預料到稍後可能會使用 Foundation Models 來「開火」,我們就可以先集氣,就有機會減少後續的等待時間。

別小看這件事情,如果能讓使用者少等 1 秒就開始看到模型回應的結果,感受會很明顯。搭配 stream response 來漸進顯示介面,效果更佳。很容易產生「這個 AI 功能好快好厲害」的感覺。

使用方法很簡單:呼叫 LanguageModelSessionprewarm()

prewarm() 可以附上 promptPrefix: Prompt 參數,內容通常就會是完整 Prompt 的最前面部分。理論上會對後續的生成會有幫助,但需要自行實驗。

要注意的是,prewarm() 並非萬能。官方文件提到,要在 respondstreamResponse 之前至少 1 秒前使用,畢竟集氣就是需要提早一些時間偷跑才有意義。通時,若系統相關資源忙碌中,則 prewarm() 也不一定會有效果。

所以,開發者的任務是找到適合提早使用 prewarm() 的時機,以及也許能加速後續生成的 promptPrefix(非必要)。進到特定畫面,或是使用者開始打字時,可能會是不錯的時機。

確保模型可用

在使用 Foundation Models 以前,檢查模型是否可用是必要的工作。先前的文章我們已經談過檢查模型可用的方法,這邊簡短回顧:如果是硬體不支援,App 的其他功能應該要能正常使用。如果是 Apple Intelligence 尚未開啟,或系統正在下載模型檔,則可以提示對應的資訊給使用者。

當你忘記先檢查模型是否可用,或是使用過程中模型被刪除(比如在 App 運作中,使用者手動關閉了 Apple Intelligence),就可能會遇到 assetsUnavailable 錯誤。至於處理的方式,應該回到檢查模型是否可用的處理。

管理 Context Window 與處理超過時的錯誤