研究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