Claude Platform Docs
SDK, CLI и библиотекиБиблиотеки и интеграции

Apple Foundation Models

Используйте Claude на платформах Apple через фреймворк Foundation Models с помощью Swift-пакета Claude for Foundation Models.

Claude for Foundation Models — это Swift-пакет, который делает Claude доступным в качестве серверной языковой модели во фреймворке Apple Foundation Models. Пакет реализует для Claude соответствие протоколу LanguageModel фреймворка, поэтому вы управляете им с помощью того же API LanguageModelSession, который используете для модели Apple на устройстве: respond(to:), «streaming» (потоковая передача), управляемая генерация и вызов инструментов работают одинаково.

Запросы идут напрямую из вашего приложения в Claude API; Apple не находится на пути запроса и не видит подсказок или ответов. Использование оплачивается с вашего аккаунта Anthropic по стандартным ценам API, поэтому вашей организации необходим доступный кредитный баланс или активный способ оплаты. Ваше приложение решает, когда использовать Claude, а когда — модель Apple на устройстве: передавайте в каждую сессию ту модель, которая вам нужна.

Требования

  • iOS 27, macOS 27, visionOS 27 или watchOS 27 (все в бета-версии): выпуски ОС, в которых фреймворк Foundation Models поддерживает серверные языковые модели
  • Xcode 27 (бета)
  • «API key» (ключ API) Claude из Claude Console для разработки. Варианты для продакшена см. в разделе Аутентификация.

Установка пакета

Добавьте пакет в ваш Package.swift:

dependencies: [
  .package(url: "https://github.com/anthropics/ClaudeForFoundationModels.git", from: "0.1.0")
]

Или в Xcode: File > Add Package Dependencies… и введите URL репозитория.

Затем добавьте ClaudeForFoundationModels в зависимости вашей цели и импортируйте его вместе с FoundationModels:

import FoundationModels
import ClaudeForFoundationModels

Быстрый старт

ClaudeLanguageModel — это точка входа. Передайте его в LanguageModelSession и используйте сессию точно так же, как с любым провайдером Foundation Models:

import FoundationModels
import ClaudeForFoundationModels

let model = ClaudeLanguageModel(
  name: .sonnet5,
  auth: .apiKey(ProcessInfo.processInfo.environment["ANTHROPIC_API_KEY"] ?? "")
)

let session = LanguageModelSession(model: model)
let response = try await session.respond(to: "Plan a 4-day trip to Buenos Aires.")
print(response.content)

Инициализатор также принимает baseURL (по умолчанию https://api.anthropic.com), timeout и serverTools (см. Серверные инструменты).

В качестве полной рабочей программы репозиторий включает Examples/ClaudeExample — запускаемую цель командной строки, которая в потоковом режиме выводит ход чата в терминал, с флагом --search, включающим серверный веб-поиск для этого хода. Для запуска требуется хост с macOS 27.

Выбор модели

Идентификаторы моделей — это значения ClaudeModel. Используйте встроенную константу или создайте значение с явно указанными возможностями для идентификатора, который ещё не встроен (см. Возможности):

ClaudeLanguageModel(name: .opus5_5, auth: auth)

Константы отражают идентификаторы моделей API (.opus5 — это claude-opus-5) и несут в себе возможности каждой модели. Новые модели поставляются как новые константы в выпусках пакета; проверьте ClaudeModel в Xcode для получения актуального списка, а также обзор моделей для сравнения моделей.

Возможности

Каждая ClaudeModel объявляет, что она принимает: параметры сэмплирования, уровни усилия, адаптивные размышления, структурированный вывод и ввод изображений. Пакет использует это, чтобы определить, какие поля запроса отправлять, поскольку отправка поля, которое модель отклоняет, является жёсткой ошибкой. Константы несут правильные возможности. Для идентификатора, который не встроен, объявите, что принимает модель (сокращённой формы, которая угадывает, намеренно не существует):

let model = ClaudeModel(
  id: "claude-experimental-x",
  capabilities: .init(samplingParams: false, effortLevels: [.low, .high])
)
ClaudeLanguageModel(name: model, auth: auth)

Усилие

Зафиксируйте уровень усилий Claude для каждого запроса с помощью fixedEffort:. Он имеет приоритет над подсказками фреймворка о рассуждениях для отдельных запросов. Именованные уровни рассуждений фреймворка заканчиваются на high; чтобы вместо этого запросить больше усилий для одного запроса, передайте пользовательский уровень рассуждений с названием уровня усилий Claude (.custom("xhigh") или .custom("max")), который сопоставляется напрямую. Если уровень усилий не отправлен, API использует уровень модели по умолчанию, который различается в зависимости от модели (см. Уровни усилий):

ClaudeLanguageModel(name: .opus5_5, auth: auth, fixedEffort: .xhigh)

Уровень должен быть одним из тех, которые принимает модель. Каждая ClaudeModel объявляет, какие из пяти уровней (low, medium, high, xhigh, max) принимает её модель, если принимает вообще: некоторые модели не принимают усилие совсем.

Когда использовать Claude, а когда модель на устройстве

Модель Apple на устройстве быстрая, приватная и доступна офлайн, но она рассчитана на лёгкие задачи. Переходите к Claude, когда вам нужен больший контекст, передовые рассуждения или серверные инструменты, такие как веб-поиск и выполнение кода. Поскольку обе используют один и тот же API LanguageModelSession, вы можете переключаться, заменяя аргумент model:.

Аутентификация

Задайте учётные данные с помощью параметра auth:. Используйте .appAttest, чтобы выпускать приложение без бэкенда, .proxied, чтобы направлять запросы через собственный бэкенд, или .apiKey для итераций во время разработки.

App Attest

Каждая установка вашего приложения использует сервис Apple App Attest, чтобы доказать, что это подлинная, немодифицированная сборка зарегистрированного вами приложения. Затем Anthropic выдаёт устройству краткосрочный «access token» (токен доступа), по которому использование тарифицируется в счёт вашего рабочего пространства. Приложение не содержит ключ API, и вам не нужно поддерживать какой-либо прокси-сервер.

Аутентификация App Attest доступна только в том случае, если ваше приложение обращается к Claude API напрямую. Она недоступна через Amazon Bedrock, Google Cloud или Microsoft Foundry.

Чтобы выпускать приложение без запуска бэкенда, используйте .appAttest:

ClaudeLanguageModel(
  name: .sonnet5,
  auth: .appAttest(clientID: "clid_...")
)