🚦iOS 本地 AI:用 PromptBuilder 動態組合 Foundation Models 的 Prompt
既然 Foundation Models framework 具備結構化輸出的功能,那麼輸入提示詞有沒有類似的機制?有的,Apple 提供了 PromptBuilder,讓開發者輕鬆依照程式條件來調整 prompt,並且能與結構化輸出的 Generable protocol 整合。
在上一篇文章中,我們介紹了 structured output 這個強大的功能,使用 @Generable macros 大幅減少開發者自行撰寫 prompt 來控制輸出結構的麻煩。
這篇文章則是要介紹能夠進一步控制輸入提示詞的工具:PromptBuilder。它透過簡便的語法,讓開發者動態地依照條件來調整 prompt,特別適合提供範例輸出給模型。
Swift 的 Result Builder
熟悉 SwiftUI 的讀者,對於 Swift 的 Result Builder 功能應該不陌生。@ViewBuilder 就是使用 Result Builder 建立的 DSL,設計出 SwiftUI 專門的語法。
而為了簡化建立 prompt 的麻煩,Foundation Models framework 使用 Result Builder,提供了 PromptBuilder 給開發者簡單的語法。
PromptBuilder 語法
我們要輸入給 Foundation Model 的 prompt(提示詞)一律是字串,所以 PromptBuilder 的核心功能,就是要讓組成字串變得容易。
Swift 要組合字串不算困難,但是我們可能會想要在特定條件時,把提示詞加長。概念很像是在特定條件下,才要 SwiftUI 顯示某個元件在畫面上。
以前一篇文章的例子來說,我們可以把原本的 prompt 從單純的 String 改成用 Prompt closure 來組合: