Развитие искусственного интеллекта в экосистеме Apple за последний год прошло путь от экспериментальных прототипов до зрелых, готовых к продакшену решений. Ключевым моментом этого перехода стало появление и последующее совершенствование фреймворка AnyLanguageModel. Изначально задуманный как простой «заглушка» (drop-in replacement) для стандартного Apple Foundation Models, этот инструмент эволюционировал в мощную абстракцию, позволяющую разработчикам писать код один раз, но запускать его на самых разных моделях — от встроенных в iOS до тяжелых серверных LLM.
Сегодня мы говорим о выходе AnyLanguageModel 1.0, который сопровождается релизами swift-huggingface 1.0 и swift-xet 1.0. Это не просто очередное обновление библиотеки, а фундаментальное изменение в том, как мы строим интеллектуальные приложения. Больше не нужно выбирать между приватностью локального запуска и мощностью облачных API. Теперь вы можете переключаться между ними с помощью одной строки кода, сохраняя единый интерфейс взаимодействия.
В этой статье мы подробно разберем, что изменилось за год, как правильно настроить окружение для работы с моделями разных размеров, какие новые функции (такие как вызов инструментов и работа с изображениями) теперь доступны, и как адаптировать ваш существующий код под новые стандарты. Мы также рассмотрим конкретные модели, которые можно запустить на вашем iPhone или Mac, и разберем технические нюансы работы с ключами API и безопасностью.
01Философия единого API: почему это важно
Главная боль разработчиков, работающих с LLM, — это фрагментация. Раньше, если вы хотели использовать локальную модель через llama.cpp, вам приходилось писать один набор кода. Если вы хотели переключиться на облачный API OpenAI или Anthropic — другой. Если вы хотели использовать MLX для оптимизации под чипы Apple Silicon — третий. Это создавало «технический долг» еще до начала разработки: поддержка нескольких провайдеров усложняла архитектуру, тестирование и поддержку приложения.
AnyLanguageModel решает эту проблему, предоставляя единый интерфейс, совместимый с Apple Foundation Models. Идея проста, но гениальна: вы меняете только одну строку импорта в своем проекте.
- import FoundationModels
+ import AnyLanguageModelПосле этого изменения весь ваш существующий код для работы с сессиями, запросами и ответами продолжает работать. Но теперь он становится полиморфным. Вы можете использовать системную модель Apple, открытые веса через llama.cpp, MLX, Core ML или любые хостинговые провайдеры, такие как OpenAI, Anthropic или Google Gemini, используя абсолютно одинаковый синтаксис. Это не только ускоряет разработку, но и позволяет A/B тестировать разные модели в реальном времени, не переписывая логику приложения.
02Новые возможности: Инструменты, Генерация и Мультимедиа
За прошедший год AnyLanguageModel получил ряд критически важных функций, которые выводят локальные модели из категории «игрушек» в категорию «рабочих инструментов». Рассмотрим ключевые обновления.

Вызов инструментов (Tool Calling)
Раньше локальные модели часто не могли надежно использовать функции (tools) из-за ограничений в форматировании JSON или отсутствии поддержки в движках вывода. Теперь вызов инструментов работает с каждым провайдером. Это означает, что вы можете создавать локальные приложения, которые взаимодействуют с внешними сервисами, календарями или базами данных, используя те же API-вызовы, что и для облачных моделей.
Направляемая генерация (Guided Generation)
Это одна из самых мощных функций для обеспечения детерминизма. Guided generation позволяет вам строго контролировать формат вывода модели. AnyLanguageModel поддерживает вложенные типы @Generable и массивы. Например, вы можете заставить модель вернуть строго структурированный JSON с определенными полями, что критически важно для интеграции с бэкендом. Эта функция также доступна для всех провайдеров, что делает вашу логику обработки ответов независимой от того, где работает модель.
Поддержка изображений
Важным шагом стало добавление поддержки изображений. Используя синтаксис Foundation Models 27, вы можете прикреплять изображения к промптам. Это работает как с системными моделями Apple (на iOS, macOS и visionOS 27), так и с открытыми моделями через AnyLanguageModel. Это открывает путь для создания мультимодальных приложений, которые могут анализировать фотографии, документы или интерфейсы прямо на устройстве пользователя.
03Расширенная поддержка хостинговых провайдеров
Локальные модели — это здорово, но они имеют физические ограничения. Для задач, требующих огромных вычислительных мощностей или специфических знаний, которые не помещаются в память устройства, AnyLanguageModel предлагает бесшовную интеграцию с облачными API. Поддержка расширилась до невероятного количества провайдеров:
- OpenAI: Chat Completions и новые Responses API.
- Anthropic: Messages API с адаптивными опциями мышления (thinking) и усилия (effort).
- Google: Gemini API.
- Ollama: Прямая работа с локальными серверами Ollama.
- Hugging Face Inference Providers: Доступ к тысячам открытых моделей через облако.
- Private Cloud Compute: Поддержка на OS 27 для корпоративных сценариев.
- OpenRouter и другие: Любые эндпоинты, совместимые с OpenAI, через настройку базового URL.
Особенно интересна интеграция с Hugging Face Inference Providers. Это позволяет вам использовать открытые модели, которые слишком велики для вашего устройства, но при этом сохранять тот же код сессии, что и для локального запуска. Вот пример того, как это выглядит на практике:

let model = OpenAILanguageModel(
baseURL: URL(string: "https://router.huggingface.co/v1/"),
apiKey: ProcessInfo.processInfo.environment["HF_TOKEN"],
model: "openai/gpt-oss-120b",
apiVariant: .chatCompletions
)Облачные провайдеры получают те же функции, что и локальные: направляемую генерацию, вызов инструментов с потоковой передачей данных и отслеживание использования токенов. Важное улучшение касается «рассуждений» (reasoning). Когда вы переключаетесь между провайдерами, блоки рассуждения автоматически исключаются из запросов, если новый провайдер не может их воспроизвести. Это предотвращает ошибки и делает переключение прозрачным для пользователя.
04Экосистема моделей: от iPhone до Mac Studio
Упрощение работы с моделями — это только половина дела. Вторая половина — это доступность самих моделей. За последний год качество открытых моделей (open-weight) значительно выросло, сделав их жизнеспособной альтернативой коммерческим решениям для многих задач. Давайте посмотрим на конкретные примеры моделей, доступных на Hugging Face, и их требования к ресурсам.
Модели для iPhone
Для мобильных устройств, где память и энергопотребление ограничены, идеально подходят компактные модели. Два лидера здесь:
- Gemma 4 E2B от Google: Доступна в формате GGUF. При квантовании Q4_0 с обучением, aware квантованием, размер модели составляет около 3.4 ГБ. Это делает её отличным выбором для современных iPhone, обеспечивая хороший баланс между скоростью и качеством.
- LFM2.5 2.6B от Liquid AI: Еще более легкая модель, весом около 1.7 ГБ при квантовании Q4_K_M. Она отлично подходит для устройств с меньшим объемом памяти или для задач, требующих максимальной скорости отклика.
Обе эти модели помещаются в память iPhone и могут работать офлайн, что критически важно для приложений, работающих с конфиденциальными данными пользователей.
Модели для Mac
Mac, особенно с чипами M-series и большим объемом унифицированной памяти, открывают возможности для гораздо более мощных моделей. Примером служит Qwen3.8 27B от Alibaba. В 4-битном квантовании она занимает около 16 ГБ. Это означает, что она будет комфортно работать на Mac с 32 ГБ памяти или более. Для запуска такой модели в среде MLX достаточно одной строки кода:

let model = MLXLanguageModel(modelId: "mlx-community/Qwen3.8-27B-4bit")Для энтузиастов с Mac Studio, полностью укомплектованным 192 ГБ памяти, доступна даже GLM-5.3 от Z.ai в формате BF16, занимающая около 1.5 ТБ. Однако для большинства разработчиков такие модели будут недоступны локально, и здесь снова вступает в игру Inference Providers, позволяя использовать ту же логику кода для доступа к этим гигантам.
05Миграция на версию 1.0
Если вы уже используете AnyLanguageModel в своих проектах, обновление до версии 1.0 требует внимания к деталям. Разработчики подготовили подробные руководства по миграции в release notes для AnyLanguageModel, swift-huggingface и swift-xet. Основные изменения касаются структуры зависимостей и некоторых внутренних API.
Для обновления вашего проекта в Swift Package Manager, вам нужно будет изменить секцию зависимостей. Пример конфигурации для использования с поддержкой MLX выглядит так:
dependencies: [
.package(
url: "https://github.com/huggingface/AnyLanguageModel",
from: "1.0.0"
),
.package(
url: "https://github.com/huggingface/swift-huggingface",
from: "1.0.0"
),
.package(
url: "https://github.com/huggingface/swift-xet",
from: "1.0.0"
)
]
targets: [
.target(
name: "YourApp",
dependencies: [
"AnyLanguageModel",
.product(name: "AnyLanguageModel", package: "AnyLanguageModel", condition: .when(traits: ["MLX"]))
]
)
]Обратите внимание на использование traits для условной компиляции MLX. Это позволяет оптимизировать размер бинарного файла, если вы не планируете использовать MLX в конкретной сборке. Также не забудьте обновить swift-huggingface и swift-xet, так как они отвечают за ускоренную загрузку моделей из Hugging Face Hub. Без этих библиотек загрузка весов может быть медленной или нерабочей.
06Что это значит на практике
Внедрение AnyLanguageModel 1.0 меняет парадигму разработки AI-приложений на платформах Apple. Вот три ключевых вывода для разработчиков:
- Гибкость без компромиссов. Вы больше не обязаны выбирать между приватностью (локальные модели) и мощностью (облачные API). Вы можете начать с локальной модели для прототипирования, а затем переключиться на облачную для продакшена, используя тот же код. Или использовать гибридный подход: локальная модель для простых задач, облачная — для сложных.
- Стандартизация интерфейсов. Поддержка Tool Calling, Guided Generation и мультимедиа на всех провайдерах означает, что вы можете строить сложную логику приложения, не беспокоясь о специфике каждого LLM. Это снижает порог входа для разработчиков, которые ранее боялись интеграции LLM из-за сложности настройки.
- Доступность экосистемы. Благодаря интеграции с Hugging Face и поддержке множества форматов (GGUF, MLX, Core ML), вы получаете доступ к тысячам моделей. Вы можете выбрать модель, которая идеально подходит под ваши ресурсы и задачи, от легких 1.7 ГБ моделей для iPhone до 27B моделей для Mac.
Будущее уже здесь. С выходом AnyLanguageModel 1.0, Apple и сообщество Hugging Face создали инфраструктуру, которая делает локальный ИИ не просто возможной опцией, а удобной, мощной и стандартизированной частью современного стека разработки. Если вы еще не начали экспериментировать с локальными моделями, сейчас самое время. Начните с простой замены импорта и посмотрите, как ваши приложения могут стать быстрее, приватнее и умнее.
Источник: Hugging Face ↗
