Главная / Статьи / ИИ на устройстве или в облаке в iOS: Foundation Models против OpenAI API

ИИ на устройстве или в облаке в iOS: Foundation Models против OpenAI API

От того, где работает модель, зависят приватность, стоимость и работа офлайн. Сравниваем фреймворк Apple на устройстве с облачным API и показываем, как совместить их в одном приложении.

818 слов

Спросите себя, где на самом деле живёт интеллект вашего приложения. Этот вопрос важнее, чем «а не добавить ли нам ИИ?», и именно он меняет то, как вы проектируете функцию в iOS. Стоит в пет-проекте заменить облачный вызов на фреймворк Apple Foundation Models, работающий на устройстве, и всё становится ясно: вы никогда не выбирали между двумя моделями, вы выбирали между двумя местами, где запускать одну.

Место важнее бенчмарков

Большинство сравнений спорят о баллах моделей. Для приложения на iPhone полезнее другой вопрос: где идёт инференс — на устройстве пользователя или на чужом сервере.

Это одно решение просачивается во всё, что вы выпускаете: обещания о приватности, задержку, расходы на работу, поведение без сети и даже вопросы, которые задаст ревью App Store. Сначала выберите место, и многие другие решения перестанут быть предметом спора.

На устройстве с Foundation Models

Фреймворк Apple даёт языковую модель, которая работает локально на Apple Silicon и использует Neural Engine. Никаких сетевых запросов, никакого API-ключа, который надо охранять, и никакого счёта за токены в конце месяца.

Минимальная сессия выглядит так:

import FoundationModels

// Create a session with the on-device model
let session = LanguageModelSession()

// Ask a simple question — runs entirely on-device
let response = try await session.respond(
    to: "Summarize this note in one sentence: \(userNote)"
)

print(response.content)

Что вы получаете взамен меньшей модели:

  • Нет похода по сети, поэтому всё работает и в самолёте, и в туннеле метро.
  • Ничего не растёт вместе с числом пользователей, потому что вы не платите провайдеру за каждый вызов.
  • Текст пользователя остаётся на телефоне, а для приложений о здоровье, дневников и финансов это очень важно.
  • Он напрямую встраивается в async/await и SwiftUI, так что ощущается как любой другой системный фреймворк.

Платить приходится размером. Эта модель меньше и слабее облачных моделей класса GPT-4. Она отлично справляется с суммаризацией, классификацией и несложными рассуждениями. А вот длинная многошаговая генерация и всё, что требует поведения агента, ей даются плохо, так что такие функции на ней не стройте.

Облако с OpenAI API

Другая сторона выбора — рассуждения уровня передовых моделей, за которые вы платите зависимостью от сети. Теперь вашей функции нужны подключение, ключ и счёт.

Вот такой же вызов, только по HTTP:

// Basic async/await network call to OpenAI's API
func fetchCompletion(prompt: String) async throws -> String {
    var request = URLRequest(url: URL(string: "https://api.openai.com/v1/chat/completions")!)
    request.httpMethod = "POST"
    request.setValue("Bearer \(apiKey)", forHTTPHeaderField: "Authorization")
    request.setValue("application/json", forHTTPHeaderField: "Content-Type")

    let body: [String: Any] = [
        "model": "gpt-4o",
        "messages": [["role": "user", "content": prompt]]
    ]
    request.httpBody = try JSONSerialization.data(withJSONObject: body)

    let (data, _) = try await URLSession.shared.data(for: request)
    // Parse response into your own model here
    return String(data: data, encoding: .utf8) ?? ""
}

Я бы выбрал этот путь, когда качество ответа и есть продукт. Допустим, вы делаете ассистента для исследований: рассуждения хостинговой модели маленькой локальной просто не повторить, так что затраты на сеть оправданы.

Используйте оба

В продакшене выбирать одно почти никогда не приходится. Разделите работу по тому, что нужно каждой задаче, и держите это решение подальше от представлений, например спрячьте его за слоем MVVM, чтобы view model просила результат и не думала, откуда он взялся.

  • На устройстве: автодополнение, теги, быстрые сводки и офлайн-запасной вариант.
  • В облако: глубокая генерация длинных текстов и всё, что требует большого контекста.

Такая схема держит приложение быстрым и дешёвым примерно в 80% взаимодействий, а за облачный вызов вы платите только тогда, когда задача того стоит. Она хорошо сочетается и со SwiftData: кешируйте результаты локально, и повторные запросы вообще не будут ходить в сеть.

Как быстро решить

  • Нужна работа офлайн или строгая приватность данных: берите Foundation Models.
  • Нужны рассуждения высшего уровня или огромное окно контекста: берите OpenAI API.
  • Хотите масштабироваться и не разорить бюджет: делайте гибрид, а путь на устройстве сделайте основным.
  • Готовитесь к вопросу на собеседовании по iOS об архитектуре ИИ: объясните оба варианта и когда выбрали бы каждый, ведь именно такого ответа ждут интервьюеры.

Ни один вариант не побеждает безоговорочно. Foundation Models теперь разумный выбор по умолчанию для быстрых, приватных и дешёвых функций, а тяжёлая работа по-прежнему идёт через хостинговый API. В 2026 году хорошая архитектура iOS — это не выбор стороны. Это точное понимание того, какая работа заслуживает похода по сети, а какая нет.