苹果在 WWDC25 上发布了令人瞩目的 Foundation Models Framework (FMF),标志着其在大模型领域迈出了重要一步。本文将带你快速上手,在 Xcode 26 上体验这项令人兴奋的 端侧 AI 技术,探索如何利用它来生成文本内容,开启属于你的 AI 应用开发之旅。 本文将围绕FMF框架的关键要素,如端侧 AISwift APItool 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 的高级实现和用例,例如集成自定义工具、处理结构化输出、生成部分响应、调整生成选项等等,敬请期待!