苹果在 WWDC25 上发布了令人瞩目的 Foundation Models Framework (FMF),标志着其在大模型领域迈出了重要一步。本文将带你快速上手,在 Xcode 26 上体验这项令人兴奋的 端侧 AI 技术,探索如何利用它来生成文本内容,开启属于你的 AI 应用开发之旅。 本文将围绕FMF框架的关键要素,如端侧 AI、Swift API、tool calling和结构化输出等进行深入探讨。
准备工作:解锁 Xcode 26 的端侧 AI 能力
要体验 FMF 的强大功能,首先需要做好准备工作。 确保你的 Mac 设备配备 Apple Silicon 芯片,并且已经安装了最新的 Apple 开发者工具,包括 macOS Tahoe 和 Xcode 26 Beta 版本。 这些工具都可以在你的 Apple 开发者账户中下载。 准备工作就绪后,你就可以开始探索 FMF 框架的奥秘了。由于所有工具都是Beta版本,请务必注意稳定性问题。
Foundation Models Framework 概览:理解 30 亿参数大模型的潜力
Foundation Models Framework (FMF) 为开发者提供了访问苹果智能背后的大语言模型 (LLM) 的能力。 这个 LLM 拥有 30 亿参数,虽然规模相对较小,但它的设计重点在于效率和隐私保护,使其能够在本地设备上运行,而无需依赖云端服务器。 需要注意的是,这个 LLM 并不擅长世界知识和高级推理, 而是更适合处理文本生成、内容提炼、搜索建议等任务。 通过 Swift API,你可以在 macOS、iOS、iPadOS 和 VisionOS 上构建各种 AI 应用,将 FMF 的能力融入到你的产品中。
端侧 AI 的优势:隐私、安全与离线访问
端侧 AI 是 FMF 的核心优势之一。 与依赖云端服务器的大模型不同,FMF 将计算任务放在本地设备上进行,这意味着所有数据都保留在用户的设备上,从而确保了极高的隐私和安全性。 你的数据不会被上传到云端,也不会被用于训练模型,用户可以完全掌控自己的数据。
此外,端侧 AI 还具有离线访问的优势。 即使在没有网络连接的情况下,你的应用仍然可以利用 FMF 的能力,为用户提供智能服务。 例如,用户可以在飞机上或地铁里使用你的应用生成文本内容,而无需担心网络问题。
根据苹果的官方数据,端侧 AI 可以显著降低延迟,提高响应速度。 在本地设备上运行模型可以避免网络传输带来的延迟,从而为用户提供更流畅的体验。
应用场景:FMF 的无限可能
FMF 的应用场景非常广泛,几乎可以应用于任何需要文本处理和生成任务的应用中。 以下是一些常见的应用场景:
- 搜索建议:在应用中提供搜索建议,帮助用户更快地找到他们想要的内容。例如,在电商应用中,可以根据用户的搜索历史和浏览行为,智能推荐相关的商品。
- 生成式对话:为游戏角色创建对话,使游戏角色更加生动有趣。例如,可以利用 FMF 生成游戏角色的台词,使其更符合角色的性格和背景故事。
- 内容生成:生成文本内容,并使用模型进行改进,例如生成文章摘要、产品描述、营销文案等。
- 应用内用户指南:引导用户使用应用的特定功能,提供个性化的帮助和支持。例如,可以根据用户的使用习惯和遇到的问题,自动生成相应的用户指南。
- 生成测验和提供问答:创建互动式学习体验,提高用户的学习效果。例如,可以利用 FMF 生成测验题目,并根据用户的答题情况提供个性化的反馈。
- 内容分类、摘要和语义搜索:对大量文本内容进行整理和分析,提取关键信息,提高信息检索的效率。例如,可以利用 FMF 对新闻文章进行分类和摘要,帮助用户快速了解新闻内容。
Tool Calling:扩展模型能力,确保响应准确性
Tool calling 是 FMF 的一项重要特性,它允许模型访问你在应用中定义的自定义代码,从而确保响应的准确性。 通过 tool calling,你可以让模型获取额外的信息,并扩展其能力,以提高结果的质量。
例如,你可以创建一个 tool,用于查询天气信息。 当用户向模型询问天气情况时,模型可以调用这个 tool,获取最新的天气数据,并将其整合到响应中,从而为用户提供准确的天气预报。
Tool calling 的实现方式非常灵活,你可以根据自己的需求定义各种各样的 tool,从而扩展模型的能力,使其能够处理更复杂的任务。
结构化输出:控制模型响应格式,实现精确控制
结构化输出 允许你提示模型,使其按照特定的格式生成响应,例如 JSON 格式。 这种特性对于需要将模型输出集成到其他系统中的应用非常有用。
例如,你可以要求模型生成包含特定字段的 JSON 对象,然后将这个 JSON 对象发送到你的后端服务器进行处理。
结构化输出可以帮助你更好地控制模型的响应格式,从而实现更精确的控制,并简化与其他系统的集成。
实时反馈:利用流式传输实现部分生成响应
FMF 内置了对部分生成响应(称为快照)的流式传输支持。 这意味着你可以实时获取模型的输出,而无需等待整个响应生成完毕。
这种特性对于需要实时反馈的应用非常有用,例如聊天机器人、文本编辑器等。 通过流式传输,你可以更快地将模型的输出呈现给用户,从而提高用户体验。
实战演练:使用 Swift Playground 快速上手 FMF
要快速上手 FMF,可以使用 Swift Playground 进行实验。 在 Xcode 26 中,创建一个新的 Playground 项目,然后选择 iOS 或 macOS 模板。
在 Playground 中,你可以使用以下代码来提示模型生成文本内容:
import FoundationModels
import PlaygroundSupport
PlaygroundPage.current.needsIndefiniteExecution = true // 允许 Playground 运行异步代码
Task {
let session = LanguageModelSession()
do {
let response = try await session.respond(to: "Tell me a story about a brave cat.")
print("Model Response: \(response)")
} catch {
print("Error: \(error)")
}
PlaygroundPage.current.finishExecution() // 结束 Playground 运行
}
这段代码会创建一个 LanguageModelSession
对象,然后使用 respond(to:options:isolation:)
方法来向模型发送提示。 由于端侧模型不会立即生成输出,因此我们使用异步调用来获取响应。
运行 Playground,你将会看到模型生成的文本内容。
模型可用性检查:确保 AI 功能正常运行
在实际应用中,你可能需要在调用模型之前检查其可用性。 你可以使用 SystemLanguageModel.default.availability
属性来检查模型的可用性状态。
import SwiftUI
import FoundationModels
struct GenerativeView: View {
// 创建对系统语言模型的引用。
private var model = SystemLanguageModel.default
var body: some View {
switch model.availability {
case .available:
// 显示你的智能 UI。
Text("Model is available!")
case .unavailable(.deviceNotEligible):
// 显示一个备用 UI。
Text("Device not eligible for AI.")
case .unavailable(.appleIntelligenceNotEnabled):
// 要求用户启用 Apple Intelligence。
Text("Please enable Apple Intelligence in Settings.")
case .unavailable(.modelNotReady):
// 模型未准备好,因为它正在下载或由于其他系统原因。
Text("Model is not ready. Please wait...")
case .unavailable(let other):
// 模型由于未知原因而不可用。
Text("Model unavailable for an unknown reason: \(other)")
}
}
}
通过检查模型的可用性状态,你可以根据不同的情况显示不同的 UI,从而确保你的应用能够正常运行。
指令定制与微调:优化模型输出,提升用户体验
你可以通过提供详细的指令来定制模型的输出。 例如,你可以要求模型生成特定长度的文本,或者按照特定的风格写作。
let instructions = """
Suggest five related topics. Keep them concise (three to seven words) and make sure they
build naturally from the person's topic.
"""
let session = LanguageModelSession(instructions: instructions)
let prompt = "Making homemade bread"
let response = try await session.respond(to: prompt)
你还可以使用不同的生成选项来微调模型的输出,例如调整温度 (temperature) 来控制模型的创造力。
// 自定义温度以提高创造力。
let options = GenerationOptions(temperature: 2.0)
let session = LanguageModelSession()
let prompt = "Write me a story about coffee."
let response = try await session.respond(to: prompt, options: options)
通过定制指令和微调生成选项,你可以优化模型的输出,使其更符合你的需求,从而提升用户体验。
总结与展望:拥抱 FMF,开启 AI 应用开发新篇章
本文介绍了 Foundation Models Framework (FMF) 的基本概念和使用方法,并通过 Swift Playground 演示了如何快速上手。 FMF 作为苹果在 端侧 AI 领域的重要布局,具有巨大的潜力,可以为开发者提供强大的工具,构建各种创新的 AI 应用。 通过 Swift API,开发者可以轻松地将 FMF 的能力融入到自己的产品中,为用户提供更智能、更个性化的体验。 Tool calling 和 结构化输出 等特性则进一步扩展了 FMF 的能力,使其能够处理更复杂的任务。
尽管 FMF 仍处于 Beta 阶段,但其强大的功能和易用性已经吸引了众多开发者的关注。 随着 FMF 的不断完善和发展,相信它将会在未来的 AI 应用开发领域发挥越来越重要的作用。 建议开发者们密切关注 FMF 的最新进展,并积极探索其应用场景,共同开启 AI 应用开发的新篇章。苹果官方也提供了丰富的视频教程,例如 Meet FMF, On-Device AI With FMF, Prompt Design for FMF, and Deep Dive into FMF,可以帮助开发者更深入地了解 FMF 的特性和用法。 在未来的文章中,我们将继续探索 FMF 的高级实现和用例,例如集成自定义工具、处理结构化输出、生成部分响应、调整生成选项等等,敬请期待!