直接回答
macOS 上的 Apple Foundation Models 应在运行时检查,而不能仅凭框架名称或项目编译成功就认为设备可用。Apple 文档将 SystemLanguageModel 描述为 Apple Intelligence 使用的端侧文本模型,但实际可用性可能取决于设备资格、地区、系统设置、模型准备状态和请求语种。框架提供了可用状态与语种检查接口,应用应根据结果展示就绪、不可用或可重试状态。某项功能还可能通过 Private Cloud Compute 或其他服务路线处理,因此“使用 Foundation Models”本身不能证明特定请求留在 Mac 上。首先记录准确的 Mac 和系统构建、应用配置、地区、选择的模型路径和请求语言;若产品承诺本地运行,再在断网环境测试固定任务,并保留错误与回退记录。本文不发布 Mac 兼容列表或速度结果,只提供验证具体配置的检查清单。
场景:为 Mac 笔记应用添加本地摘要功能
开发者为 Mac 应用增加了一个短笔记摘要操作,并希望不把笔记内容发到服务器。开发机可以编译该框架,但用户可能使用不同的设备资格状态、地区、语言设置或模型就绪状态。
决策
在运行时检查模型可用状态和请求语言支持,明确选择本地系统模型路线,并为模型不可用时设计合理状态。用合成的隐私安全样例断网测试任务;若要切换云端路线,必须作为独立路径说明并征得用户同意。
预期结果
应用能告诉用户本地任务当前已就绪、暂不可用还是可以重试。公开支持说明限定到已测的系统版本、设备状态、地区、语言和任务,而不是仅凭 API 编译通过。
需要收集的证据
只有将以下证据与同一模型文件和测试运行关联起来,结论才可复核:
- Mac、macOS 和地区配置
- SystemLanguageModel 可用状态与语言检查
- 离线任务、回退和失败证据
发布结论只对所记录的配置和验收集有效;扩大适用范围需要更多记录。
实施流程
- 固定系统版本和设备环境. 记录准确的 macOS 构建版本、Mac 型号系列、地区和语言设置、应用版本,以及构建所用 Xcode 与 SDK。不要把一台 Mac 的成功结果推广到所有 Mac,也不要将 API 引入版本当成完整的支持设备清单。运行时检查应以 Apple 当前可用性文档为准。
- 运行时检查 SystemLanguageModel 是否可用. 只有读取模型的运行时可用状态后,才能把本地操作显示为就绪。分别处理文档中描述的不可用原因,例如设备不符合资格、系统功能未启用或模型尚未准备好。代码能够通过 SDK 编译,只证明构建时可访问该 API,不证明用户当前系统可以开始推理。
- 核实请求语种,而不只看系统主语言. 针对任务实际请求的语言,使用框架提供的 locale 支持接口或受支持语言列表。应用单独配置的语言可能与 Mac 主语言不同。对于相似语种间的回退,应按文档记录并测试,不要据此推断所有方言或翻译方向都能达到可接受结果。
- 明确区分本地和远程路由. 追踪实际任务使用的是 SystemLanguageModel、Private Cloud Compute 还是第三方提供方。如果产品要求隐私或断网可用,模型不可用时不得静默切换路线。应显示本地不可用状态,或在另行说明并征得同意后提供远程路线。
- 用固定验收集评估任务质量. 使用保护隐私的合成笔记和有版本记录的预期属性,检查遗漏、虚构细节、格式错误、不支持语种、取消和恢复行为。模型可用性检查只说明系统表示可以接收请求,并不证明该任务达到了应用的质量或安全要求。
- 断网复测并限定支持结论. 在准确目标配置上关闭网络,从用户输入到最终可见结果执行完整任务。记录初始化依赖、所有失败以及是否尝试备用路线。写明测试过的 Mac、系统版本、地区、语种和任务;没有证据时不要泛称“所有 Mac 都能用”或发布速度结论。
让每个阶段的状态都可观察。失败信息应指出阶段、模型、运行时和恢复动作,同时避免记录用户私密内容。
验收标准
- 记录设备、macOS 构建、地区、语言设置、SDK 和应用版本。
- 分别检查运行时模型可用状态和请求语言支持,并处理各自失败。
- 能够区分本地 SystemLanguageModel、Private Cloud Compute 和其他服务路径。
- 在准确配置上测试任务质量与断网完成情况,并覆盖不可用和失败状态。
决策对照表
| 维度 | 选择或证据 | 解读方式 |
|---|---|---|
| 框架 API 可编译 | 所用 SDK 在构建期提供 API | 只证明构建时可调用,不证明运行时模型已就绪。 |
| 系统模型可用 | 读取当前设备与地区的运行时可用状态 | 表明系统是否准备接受请求,但仍不代表任务质量。 |
| 语种受支持 | 针对请求 locale 检查 supportsLocale 或 supportedLanguages | 只支持语言能力检查;具体任务输出仍需评估。 |
| 任务已验证离线 | 断网完成固定验收集并记录执行路线 | 仅支持对该配置作出范围明确的本地运行声明。 |
需要避免的失败模式
- 把 API 可见性当成模型就绪
- 用一个语种或一台 Mac 推广到所有用户
- 隐藏 Private Cloud Compute 或其他服务路由
还要避免静默回退、版本未固定、缺少取消处理,以及把不同配置的结果混在一起下结论。失败运行也应与成功记录一并保存。
最小复现记录
| 层级 | 记录内容 |
|---|---|
| 设备 | 厂商、型号、芯片、内存档位、操作系统版本 |
| 软件 | 应用版本和 Git 提交号 |
| 模型 | 系列、变体、版本、格式、文件长度、摘要、量化方式 |
| 运行时 | 名称、版本、请求后端及实际后端证据 |
| 工作负载 | 样例版本、输入摘要、提示词摘要、输出策略 |
| 结果 | 完成、失败、取消、回退及保护隐私的诊断信息 |
发布检查表
- ☐ 主要搜索问题已回答,且没有未经支持的数字。
- ☐ 所有模型文件和运行时版本均已固定。
- ☐ 代表性任务和失败处理策略均有说明。
- ☐ 生命周期、取消、清理和回退均已测试。
- ☐ 用户内容与网络边界均有说明。
- ☐ 结论只适用于被记录的配置。
- ☐ 新增测试结果时链接到原始方法或证据。
来源与相关证据
- Apple SystemLanguageModel 官方文档
- Cove 基准测试方法
- Apple SystemLanguageModel 可用性与端侧模型概览
- Apple Foundation Models 语言和地区支持
- Apple Foundation Models availability 属性文档
中文部署与排错专题见。奇连 AI 端侧专题。
常见问题
使用 Apple Foundation Models 就能保证 Mac 请求留在本机吗?
不能仅凭框架名称作此结论。Apple 将 SystemLanguageModel 记录为端侧模型,同时也介绍了 Private Cloud Compute 和其他模型提供方。应追踪准确请求的执行路线;如本地执行是要求,则进行断网测试并明确任何远程回退。
为什么应用能编译 Foundation Models,却显示模型不可用?
构建时 API 可用与运行时模型就绪是两件事。Apple 文档中的运行时状态可能反映设备资格、Apple Intelligence 设置、地区或模型尚未准备好。应用应处理这些状态,而不是把编译通过当作运行能力证明。
怎样检查某种语言是否受支持?
对用户请求的确切语种,使用 Apple 文档提供的 locale 检查或 supportedLanguages 列表,并继续测试真实任务输出。语言检查只能证明框架报告了相关支持,不代表每条提示或翻译方向都已经达到某个质量水平。
一台 Mac 上的测试能证明所有 Mac 都支持吗?
不能。结果只适用于记录的设备状态、macOS 版本、地区、语种、应用配置和任务。模型可用性也会随系统版本及用户设置变化,因此应在代表性目标环境中测试并准确说明支持边界。