Оглавление

Разработчики приложений с искусственным интеллектом для платформ Apple сталкиваются с настоящим вавилонским столпотворением API. Каждый провайдер моделей — локальный или облачный — требует собственного подхода к интеграции, что превращает эксперименты в мучительный процесс выбора между приватностью, производительностью и функциональностью.

Единый интерфейс для разнородных моделей

Новый Swift-пакет AnyLanguageModel предлагает элегантное решение: единый API, совместимый с фреймворком Foundation Models от Apple, но поддерживающий десятки различных бэкендов. Вместо изучения специфики каждого провайдера достаточно заменить импорт:

- import FoundationModels
+ import AnyLanguageModel

После этого код работы с моделями остается идентичным, независимо от того, используете ли вы системную модель Apple, локальную через MLX или облачную от OpenAI.

Поддерживаемые провайдеры

Библиотека охватывает все основные подходы к запуску языковых моделей:

  • Apple Foundation Models: нативные системные модели (macOS 26+ / iOS 26+)
  • Core ML: конвертированные модели с ускорением на Neural Engine
  • MLX: квантованные модели для Apple Silicon
  • llama.cpp: загрузка GGUF-моделей через llama.swift
  • Ollama: подключение к локально запущенным моделям через HTTP API
  • OpenAI, Anthropic, Google Gemini: облачные провайдеры для сравнения и резервирования
  • Hugging Face Inference Providers: сотни облачных моделей от ведущих провайдеров

Архитектурные компромиссы и преимущества

Выбор API Foundation Models в качестве основы может показаться странным — почему ограничивать себя решением одной компании? Однако этот подход имеет веские преимущества:

  • Фреймворк действительно хорошо спроектирован, с учетом Swift-специфики и макросов
  • Ограниченность API становится стабильным фундаментом, а не недостатком
  • Минимизация абстракций сохраняет близость к решаемой проблеме

Это классический пример решения реальной боли разработчиков вместо создания очередного абстрактного фреймворка. Вместо того чтобы предлагать «идеальный» API, авторы взяли существующий стандарт де-факто и расширили его совместимость. Особенно умно решение с пакетными трейтами — зачем тащить зависимости llama.cpp, если нужен только MLX?

Борьба с раздуванием зависимостей

Одна из ключевых проблем много-бэкендовых библиотек — необходимость устанавливать все зависимости сразу. AnyLanguageModel решает это через систему трейтов Swift 6.1:

dependencies: [
 .package(
 url: "https://github.com/mattt/AnyLanguageModel.git",
 from: "0.4.0",
 traits: ["MLX"] // Только зависимости MLX
 )
]

По умолчанию устанавливается только базовый API с облачными провайдерами, не требующими тяжелых зависимостей. Для проектов Xcode предусмотрен обходной путь через локальные Swift-пакеты.

Расширение за пределы Apple API

Хотя библиотека следует философии минимальных изменений API, иногда приходится выходить за рамки возможностей Foundation Models. Например, работа с изображениями в Vision-Language моделях:

let response = try await session.respond(
 to: "Что на этом изображении?",
 image: .init(url: URL(fileURLWithPath: "/path/to/image.png"))
)

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

Демонстрация в действии

Для ознакомления с библиотекой создан chat-ui-swift — SwiftUI-приложение чата, демонстрирующее ключевые возможности:

  • Интеграция с Apple Intelligence через Foundation Models
  • OAuth-аутентификация Hugging Face для моделей с ограниченным доступом
  • Потоковые ответы
  • Сохранение истории чатов

Планы по развитию

Библиотека находится на стадии pre-1.0 с уже стабильным основным API. В разработке:

  • Tool calling для всех провайдеров
  • Интеграция MCP для инструментов и взаимодействий
  • Guided generation для структурированных выходов
  • Оптимизации производительности локального вывода

Это первый шаг к созданию единой инфраструктуры для агентских workflow на платформах Apple, где модели смогут использовать инструменты и системные ресурсы.

По сообщению Hugging Face, библиотека доступна для использования и обратной связи.