使用 foundation models 框架为你的 swiftui app 开发生成式 ai 功能。首先,应用这个框架的基本要素来创建一个出色的功能。然后,观看一些分步示例以了解如何使用你构建的工具来完善模型、流式传输结果,并进行进一步优化以提升性能。

视频封面
视频地址

此文章由AI生成,可能存在错误,如有问题,请联系djs66256@163.com

使用 Foundation Models 框架为 App 集成设备端 AI

概述

Foundation Models 框架为开发者提供了直接在苹果设备上运行生成式 AI 的能力,无需依赖云服务即可为应用添加智能功能。该框架支持 macOS、iPadOS、iOS 和 visionOS 平台,所有计算都在设备端完成,既保障了用户数据隐私,又不会增加应用体积。

核心功能实现

提示工程与 Playground 迭代

提示设计是获得优质结果的关键。开发者可以利用 Xcode 的 Playground 功能进行实时迭代:

import FoundationModels

// 创建会话并发送请求
let session = FMSession()
let response = try await session.prompt("为约书亚树国家公园创建3天行程")

对于结构化数据输出,需要自定义数据结构并遵循 Generable 协议:

import FoundationModels

@Generable
struct Itinerary {
    let title: String
    let description: String
    let days: [DayPlan]
}

@Generable
struct DayPlan {
    let dayNumber: Int
    let activities: [String]
}

使用 Guide 宏可以添加更精确的输出控制:

@Guide(description: "行程标题应简短吸引人")
@Guide(description: "days数组应始终包含3个元素")
struct Itinerary {
    // ...
}

工具调用扩展能力

Foundation Models 框架支持通过工具协议扩展模型能力,接入外部数据源:

struct LandmarkTool: Tool {
    static let name = "landmark_tool"
    static let description = "获取地标的兴趣点信息"
    
    enum Category: String, Generable {
        case visitorCenter, trail, campground
    }
    
    struct Arguments: Generable {
        let category: Category
        let query: String
    }
    
    func call(_ input: Arguments) async throws -> [MKMapItem] {
        let request = MKLocalSearch.Request()
        request.naturalLanguageQuery = input.query
        request.resultTypes = .pointOfInterest
        request.region = MKCoordinateRegion(/* 坐标和范围 */)
        let search = MKLocalSearch(request: request)
        return try await search.start().mapItems
    }
}

流式输出优化体验

将响应类型改为 PartiallyGenerated 可实现内容流式传输:

struct ItineraryPlanner {
    @Published var itinerary: PartiallyGenerated<Itinerary>?
    
    func generateItinerary() async {
        let session = FMSession(tools: [LandmarkTool()])
        let stream = try await session.prompt(
            "为约书亚树国家公园创建3天行程",
            responseType: PartiallyGenerated<Itinerary>.self
        )
        
        for await partial in stream {
            itinerary = partial
        }
    }
}

性能优化策略

实测分析发现性能瓶颈主要集中在三个方面:

  1. 模型加载时间:可通过预热策略优化,在用户可能发起请求时提前加载模型
  2. 输入令牌数:在多轮对话后续请求中设置 IncludeSchemaInPrompt 为 false
  3. 推理时间:使用 Instruments 的 Foundation Models 工具进行精细分析

应用场景与优势

以旅行规划应用为例,Foundation Models 框架可提供以下优势:

  • 隐私保护:所有数据处理均在设备端完成
  • 离线能力:预置模型无需网络连接
  • 响应速度:流式输出提供即时反馈
  • 扩展性:通过工具协议接入各类数据源

深入学习资源

开发者可进一步参考以下资源深入了解 Foundation Models 框架:

相关视频

了解 Foundation Models 框架
探索 Apple 平台上的机器学习和 AI 框架
探索设备端基础模型的提示设计和安全
深入了解 Foundation Models 框架

文档

Generating content and performing tasks with Foundation Models
Human Interface Guidelines: Generative AI

Foundation Models 框架为苹果生态应用开启了设备端智能的新篇章,开发者现在可以构建既强大又隐私的生成式 AI 功能,为用户创造更智能、更安全的体验。