🍱iOS 本地 AI:用 Structured Output 功能讓 Foundation Models 回傳你想要的型別
就像從 App 端直接定義 Server 回傳的 JSON schema。
接續前篇,我們來介紹 Foundation Models framework 的 structured output 功能。這是個非常重要的功能,是讓 LLM 能夠變成好用的 App 體驗開發工具的關鍵。
許多人看到 LLM 可能會直接聯想到 ChatGPT,接著就聯想到聊天功能。事實上,LLM 能處理自然語言,所以絕不是只能聊天。
如果我們把 LLM 當成一台伺服器,丟給它字串型別的 request,得到字串型別的 response,這確實還滿像在聊天的。但這對於大部分的 App 使用情境來說都不實用。
所以,有些開發者會試著要 LLM 回傳 JSON 格式或特定格式,方便 App 處理。背後的想法,就是希望 LLM 輸出結構化的結果。
為了方便開發者使用,Foundation Models framework 直接提供了結構化輸出(structured output)的能力與非常簡便的語法工具。
就像我在前一篇文章結尾提示的,structured output 功能的開發體驗,很像你在 client 端直接定義了 server API 回傳的 JSON 格式,而且還不用自己 decode。
我們可以要求 Foundation Models 回傳自訂的 struct 或 enum。只需要兩招:
- 在 custom type 加上
@Generablemacro - 如果想針對屬性給出多一點提示或限制,可以加上用
@Guidemacro
使用 @Generable macros 定義結構化輸出結果
以前一篇文章提到的「學習 Swift 程式語言的策略?」問題來說,Foundation Models 輸出了一大段文字。這或許適合用來寫文章或教材,但是不適合直接放在 App 裡。
我們可以定義自己的「步驟」型別: