研究12 分鐘來源已查證 2026 年 7 月 26 日

從 @Generable 到 SwiftData:裝置上的報價品質管道

RiseHush 基礎模型產生器背後的生產架構:類型化流、分層拒絕、本地工具、參與者安全持久性以及重要的故障路徑。

從 @Generable 到 SwiftData:裝置上的報價品質管道 — RiseHush editorial illustration — risehush.comrisehush.com

約束不是“讓模型寫一個報價”

單一提示可以產生一個句子。它無法確定係統模型是否準備就緒、保持介面響應、區分生成的行與歷史報價、防止接近重複的內容進入庫,或在推理失敗時使產品保持有用。那些周圍的決定就是特徵。

RiseHush 沒有推理後端。 在支援的 Apple Intelligence 裝置上,該應用程式會向 Apple 裝置上的系統語言模型發送有界提示,並將接受的結果儲存在本機 SwiftData 中。面向產品的智慧頁面解釋了人們所看到的內容;本文記錄了實現路徑及其限制。 蘋果自己的可用性 API 仍然是該模型現在是否可以運行的權威。

這裡的「可重複」意味著另一位工程師可以重複準備矩陣、拒絕裝置、超時路徑和持久性檢查。這並不意味著非確定性語言模型將逐位返回相同的散文。此頁面報告已檢查的來源架構,而不是新的實體設備品質指標;沒有從測試腳本推斷基準測試結果。

  • 推論: Apple 的系統語言模型,在裝置上。
  • 輸出合約:引導式 Swift 類型,然後進行確定性驗證。
  • 儲存:本機 SwiftData 行標記為已產生。
  • 網路路徑:無 RiseHush 生成伺服器或第三方模型。

[1][2]

從提示到庫:生產路徑

這是 RiseHush 裝置上報價產生器背後的架構,如目前應用程式原始碼中所檢查的那樣。它記錄了大門、故障路徑,並檢查開發人員是否可以重現;它不是一個模型基準,也不是聲稱每個草稿都很好。

排序是經過深思熟慮的。在更多推理之前運行廉價、可解釋的檢查;在每個所需的門都接受了候選者之前,不會發生寫入。串流回答是臨時介面文本,而不是已儲存的報價。

  1. 證明已準備就緒

    該服務在建立會話之前檢查系統模型的可用性和請求的區域設定。設備資格、Apple 情報狀態、模型資產準備情況和語言支援是單獨的結果。

  2. 約束草稿

    @Generable Swift 類型要求一個原始句子,通常為 10-16 個單詞,但絕不會超過 18 個,並且沒有出處、markdown、主題標籤、表情符號或換行引號。

  3. 直播主要演員

    一個新的 LanguageModelSession 已針對請求進行預熱。部分結構化快照可以更新介面,而基礎模型循環仍然不參與主要參與者。

  4. 拒絕明顯的失敗

    在進行任何基於模型的判斷之前,確定性門會檢查句子和字數限制、語言一致性、禁止片段、換行標點符號和多語言陳詞濫調模式。

  5. 測試新穎性和品質

    當比較嵌入可用時,倖存者將面臨語義近乎重複的檢查,然後是單獨的指導判斷和獨特性評分。未達到所需閾值的串流草稿將被丟棄,而不是默默地保留。

  6. 堅持倖存者

    元數據是在遠離主要參與者的情況下計算的。 SwiftData 插入返回主要參與者,將行標記為已產生且不是公共域,並在儲存失敗時回滾瞬時插入。

  7. 重複使用本地狀態

    應用程式和系統介面使用儲存的報價。小部件讀取持久性資料;它們不會在擴展時間軸內喚醒語言模型。

[2][3][4][5]

引導輸出縮小形狀;程式碼仍然擁有策略

該草案是標記為@Generable的 Swift 類型。它的指南要求提供一個原始句子,通常為 10-16 個單詞,硬提示最多為 18 個單詞,並禁止歸屬、引號、主題標籤、表情符號、降價和換行符。生產選項使用溫度 0.7 和 40 個令牌上限:為結構化包裝和短句提供足夠的空間,而不需要段落長度的輸出。

這並不使驗證成為可選的。 Apple 將引導產生描述為產生結構化 Swift 資料的一種方式,而不是保證內容符合每個產品規則。因此,RiseHush 將模型的鍵入值視為不受信任的草稿。下面的簡化草圖保留了生產順序和閾值,同時省略了特定於應用程式的提示和持久性細節。

Architecture sketch — abridged from the current app sourceswift
@Generable
private struct GeneratedQuoteDraft {
    @Guide(description: "One original sentence; 10–16 words; no attribution")
    var text: String
}

guard availability(locale: locale) == .available else {
    throw GenerationError.unavailable
}

let stream = session.streamResponse(
    to: prompt,
    generating: GeneratedQuoteDraft.self,
    options: generationOptions
)

for try await snapshot in stream {
    yield(snapshot.content.text)          // interface update
}

guard deterministicGate.passes(text, locale: locale),
      await noveltyGate.isNearDuplicate(text) == false,
      await judge.score(text).overall >= 6,
      distinctiveness.score(text).overall >= 5
else {
    throw GenerationError.noCandidate
}

return try persistAsGeneratedQuote(text)

This is explanatory code, not a drop-in package. It intentionally omits app-private prompt construction, error mapping, and SwiftData model definitions.

[4][5]

為什麼第二遍仍然不夠

第一個拒絕層是確定性的:空輸出、禁止提示殘留、換行引號、單字和句子限制、語言分歧和多語言陳腔濫調。本地 Core ML 味道過濾器可以添加英語、德語、西班牙語、法語、義大利語和葡萄牙語的學習訊號;它是故意跳過的,而不是在這些校準區域之外誤用的。

接下來,當比較嵌入可用時,語意新穎性門將候選者與有界本地目錄進行比較,並以餘弦相似度閾值 0.90 拒絕近似重複項。如果目錄為空或無法產生嵌入,則該層將通過,而不是聲稱新穎性已被證明。然後,新的基礎模特兒課程會對整體品質、原創性和溫暖度進行評分。該法官是使用相同系統模型的單獨會議,而不是獨立模型,也不是人工審查。如果它不可用、拒絕或無法產生結構化輸出,則確定性分數提供有限的後備。

最後,獨特性分數獎勵具體的意象、行動、情緒特異性和能動性,同時懲罰公式和最近的負面錨點。目前,驗收要求評審分數至少為 6 分,獨特性至少為 5 分。這些是產品門檻,而不是全球原創性或安全性的證明。

生產決策和每一項都可以預防的故障
關注實施為什麼存在
可用性在每個生成路徑之前檢查模型狀態和區域設定支援;記錄準備失敗的原因。「支援 Apple Intelligence」並不意味著該模型現已準備就緒或支援訪客的活動語言。
結構使用 @Generable 和 @Guide 作為草稿形狀,而不是解析發明的 JSON 回應。Swift 類型是輸出契約,而確定性程式碼仍然擁有產品規則。
並發性讓模型流和元資料工作遠離主要參與者;交叉返回僅用於本地模型持久性。基礎模型的轉變可能需要幾秒鐘的時間,而 SwiftData 模型物件仍然與參與者綁定。
品質分層確定性規則、語意新穎性、單獨的判斷和獨特性閾值。引導生成縮小形狀;它不保證真實性、原創性、基調或產品品質。
延遲僅在能夠產生的前景表面上預熱並應用有限的預算:介面中 45 秒,Siri 20 秒,背景池 120 秒。面向使用者的請求不能永遠等待資產、速率限製或緩慢的模型轉換。
堅持將接受的行儲存為本地產生的記錄,而不是公共領域的作者引用;保存失敗後回滾。生成的作品需要持久的出處,並且絕不能繼承真人的歸屬。

[7]

讓模特兒遠離主要演員

公共服務傳回 SwiftData 模型對象,因此其入口點仍受主要參與者限制。昂貴的基礎模型響應循環則不然。每個請求都擁有一個新的LanguageModelSession;流和元資料計算遠離主要參與者,對於參與者綁定的提示信號和持久性有小的顯式跳躍。

串流傳輸會產生介面的部分結構化快照,然後將最終文字通過與池路徑相同的門、新穎性、判斷和獨特性欄。完成的流程透過持久標識符跨越參與者,而不是移動不可發送的 SwiftData 模型。呼叫者在自己的參與者上解析該標識符。

僅插入接受的文字。該記錄創作為 RiseHush,標記為source = .generateisPublicDomain = false,用其區域設定標記,並使用本地計算的元資料進行豐富。如果儲存失敗,則在錯誤返回之前刪除臨時插入。

[5][10]

使用三個唯讀工具為禮賓服務奠定基礎

不允許 RiseHush 發明一個人的圖書館狀態。 Apple 的工具呼叫 API 允許會話請求狹窄的應用程式功能並合併其傳回的資料。該應用程式公開了三個有界的唯讀工具;沒有一個到達 RiseHush 伺服器。

工具參數和輸出大小受到限制。已儲存報價尋找最多回傳 8 個結果,目錄搜尋最多回傳 5 個結果,且總工具輸出有上限。保存的報價工具可以返回最近的匹配項,但它不接受日曆範圍,因此該產品不應承諾模型可以回答“我上週保存了什麼?”

  • 目錄報價搜尋

    依心情、類別或主題搜尋捆綁的報價目錄。它不要求模型發明一個來源。

  • 儲存的報價查找

    在本地儲存中尋找此人自己保存的和最喜歡的引言。

  • 連勝狀態

    閱讀當地的靈感來源,以便 Ask RiseHush 可以回答有限的個人問題。

[6]

故障行為是架構的一部分

可用性不是布林值。相容裝置可能仍停用 Apple Intelligence、準備模型資產或系統模型不支援的語言。運行時產生也可能會拒絕、撞上護欄、超出上下文、受到限制、遇到並發請求、結構化解析失敗或逾時。

RiseHush 將這些情況對應到有限產品行為。前台產生的預算為 45 秒,Siri 為 20 秒,後台池生成為 120 秒。精心策劃的圖書館仍然是誠實的後備。該應用程式從不儲存佔位符散文,就好像模型成功了一樣。

觀察到的分支和由此產生的產品行為
訊號行為
裝置不符合條件或 Apple Intelligence 已停用一代不可用。現有的精選庫仍然可用,而無需假裝發生了模型回應。
模型資源尚未準備好該請求報告未就緒狀態。一旦 Apple 的模型資產存在,推理本身就不需要 RiseHush 伺服器。
請求的區域設定不受支援具有翻譯功能的路徑可以完全控制英文草稿,並在 Apple 的翻譯框架支援的情況下進行本地翻譯;否則,應用程式將保留策劃的後備。檢查翻譯文字是否有非空結果,但不會重複完整的目標語言門、新穎性和判斷堆疊。
Guardrail、拒絕、速率限制、解析、上下文、並發或逾時錯誤流路徑不會透過無限制的內聯重試旋轉。它不返回生成的候選者,並讓產品乾淨地回落。
草稿未達到品質閾值有限池路徑可以嘗試另一個草稿;直播流中止而不是動畫第二個答案。被拒絕的文字不會被保存。
SwiftData 儲存失敗該服務刪除其瞬態插入並顯示持久性故障,而不是留下半保存的報價。

[2][3][7]

重現性實驗方案,無需發明結果

下面的協議將源頭檢查與即時設備證明分開。記錄每次運行的硬體、作業系統建置、區域設定、Apple Intelligence 狀態、模型準備、提示裝置、經過的時間、終端分支、拒絕原因和持久結果。 Apple 的 Foundation Models Instruments 可以在真實會話期間公開提示、工具、令牌和延遲行為。

機器可讀版本可用作基礎模型評估協定 (JSON)。它包含矩陣和現場合同,而不是捏造的測量結果。噹噹前實體設備運行獲得批准後,附加其匿名行並發布具有確切設備和作業系統的聚合接受度、逾時和延遲值。

  1. 使用具有支援的作業系統的相容硬體。測試 Apple Intelligence 已啟用並準備就緒、已停用且仍在下載。
  2. 對受支援的區域設定和不受支援的區域設定重複此操作;驗證應用程式是否區分型號支援和一般設備資格。
  3. 模型資產準備好後,在飛行模式下重複並確認不需要 RiseHush 產生端點。
  4. 與介面互動時觀察部分文字;確認滾動和控制在模型轉動過程中保持反應。
  5. Feed 內容是空的、多句話、太長、用引號括起來、語言錯誤、陳腔濫調或近乎重複;沒有一個應該成為保存的生成行。
  6. 觸發判斷拒絕和有限超時;確認沒有保留任何被拒絕的草稿,並且策劃的體驗仍然可用。
  7. 在測試儲存中強製本地保存失敗;確認插入的模型已回滾。
  8. 使用較短的時間預算來練習 Siri,並驗證小部件僅讀取持久數據,而不是在擴展中開始生成。

[8]

這個架構沒有證明什麼

高品質的管道可以使失敗變得可見並減少不良的持久性。它無法將裝置上的小型語言模型轉變為歷史來源,無法證明句子從未在任何地方寫過,也無法保證品味。因此,生成的線條永遠不會歸屬於歷史作者,也永遠不會進入公共領域目錄。

翻譯值得單獨警告。對於 Foundation Models 不直接支援的語言環境,可選路徑完全門控英文草稿,然後使用 Apple 的裝置上翻譯框架(如果有該對)。檢查翻譯結果是否有非空響應,並使用新的元資料進行持久化,但目前它不會在翻譯後重複完整的目標語言門、新穎性和判斷序列。這條道路是一種後備措施,而不是同等直接發電品質的證據。

模型和作業系統更新可能會改變可用性、延遲、拒絕行為和輸出分佈。 Apple 建議隨著基礎模型的變化重新審視提示和評估。因此,RiseHush 的測試矩陣必須在材料平台更新後重新運行,而不是將此頁面視為永久基準證明。

  • 系統模型不用作歷史引用事實或作者歸屬的來源。
  • 結構化輸出和第二個模型透過減少故障模式;它們並不能證明某條路線是深刻的、具有全球意義的原創性或適合所有人。
  • 當語意新穎層的有界目錄為空或比較嵌入不可用時,語意新穎層就會通過;它減少了已知的近似重複,但不證明全球原創性。
  • 離線產生取決於相容的硬體、啟用的 Apple Intelligence、支援的語言行為以及已經準備好的模型資產。
  • 可選的學習 Core ML 口味過濾器針對英語、德語、西班牙語、法語、義大利語和葡萄牙語進行了校準;其他語言環境仍然接收支援它們的確定性和基於模型的層。
  • 本地翻譯後備並不等於直接產生目標語言:目前翻譯結果不會重複翻譯後的每個品質層。
  • 作業系統和模型更新可能會改變延遲和輸出分佈,因此在重大平台變更後必須重新運行裝置矩陣。
  • 本頁面描述了目前的架構,並不承諾每個平台表面都運行基礎模型。小部件有意消耗持久結果。

[3][9][11]

RiseHush 是否向自己的伺服器發送報價產生提示?

不會。在系統模型可用的受支援設備上,報價草稿和品質通行證與 Apple 的裝置上框架一起運行。 RiseHush 沒有此路徑的推理端點。

@Generable 能否保證良好的或原創的報價?

不。它限制了結構化輸出的形狀。 RiseHush 仍然應用確定性格式和語言規則、比較嵌入可用時的語義近似重複檢測、單獨的評審會議、獨特性評分和有限拒絕行為。

其他開發人員可以重現生成的確切句子嗎?

不可靠。語言模型輸出是不確定的,可能會隨著模型或作業系統更新而改變。可複製的單元是準備、固定、門、超時和持久性協議,而不是完全相同的散文。

每種受支援的語言是否都獲得相同的品質路徑?

不會。直接支援的語言環境接收通用生成路徑,而學習的 Core ML 過濾器則針對六種語言進行校準。可選的本地翻譯後備從封閉的英語草稿開始,但翻譯後不會重複每個目標語言品質層。

  1. Apple Developer Documentation — Foundation Models framework overview: direct access to Apple’s on-device language model
  2. Apple Developer Documentation — SystemLanguageModel availability and unavailable reasons
  3. Apple Developer Documentation — supporting languages and locales with Foundation Models
  4. Apple Developer Documentation — generating Swift data structures with guided generation
  5. Apple Developer Documentation — LanguageModelSession, responses, and streaming
  6. Apple Developer Documentation — expanding generation with tool calling
  7. Apple Developer Documentation — improving the safety of generative model output
  8. Apple Developer Documentation — analyzing Foundation Models runtime performance
  9. Apple Developer Documentation — Foundation Models framework updates
  10. Apple Developer Documentation — SwiftData
  11. Apple Developer Documentation — Translation framework