Hugging Face выпустила AnyLanguageModel 1.0: локальные и облачные модели в Swift

Hugging Face объявила о выходе AnyLanguageModel 1.0, библиотеки на Swift, которая служит прямой заменой фреймворка Apple Foundation Models и позволяет выбирать модель и провайдера, который использует приложение. Одновременно вышли swift-huggingface 1.0 и swift-xet 1.0. Библиотека впервые была представлена в блоге компании в ноябре прошлого года; с тех пор, по словам авторов, вышли десятки релизов.
Появилась библиотека из обратной связи разработчиков приложений: им было любопытно попробовать локальные модели, но они не всегда понимали, с чего начать, и хотели избежать сложности поддержки нескольких провайдеров инференса (запуска моделей). Hugging Face подчёркивает, что у локального и облачного запуска есть свои сильные стороны, а общий API упрощает выбор подходящей модели под каждую задачу.
Идея не изменилась: использовать API Foundation Models с той моделью, которая подходит приложению. Для перехода достаточно заменить строку импорта «import FoundationModels» на «import AnyLanguageModel». Тот же код сессии затем работает с системной моделью, с открытыми моделями через llama.cpp, MLX и Core ML и с облачными провайдерами. За год добавили три крупные возможности: вызов инструментов (tool calling) работает со всеми провайдерами; управляемая генерация (guided generation) тоже работает со всеми провайдерами, включая вложенные типы @Generable и массивы таких типов; поддержка изображений позволяет прикреплять их к запросам в синтаксисе Foundation Models 27, в том числе с системной моделью на iOS, macOS и visionOS 27. На OS 27 библиотека работает и с любой моделью, соответствующей протоколу LanguageModel из Foundation Models, включая модели Core AI. Для ускоренной загрузки моделей из Hub в приложениях на Swift отдельно созданы swift-huggingface и swift-xet.
Расширилась и поддержка облачных моделей. Теперь поддерживаются: Chat Completions и Responses API от OpenAI; Open Responses для любого провайдера с совместимым endpoint (точкой доступа); Messages API от Anthropic с адаптивным мышлением (adaptive thinking) и настройкой усилия (effort); Gemini API от Google; Ollama; Private Cloud Compute на OS 27; Hugging Face Inference Providers и другие OpenAI-совместимые endpoint, например OpenRouter, через собственный базовый URL. Через Inference Providers с тем же кодом сессии можно использовать открытые модели, слишком большие для запуска на устройстве; в примере указана openai/gpt-oss-120b. Облачные провайдеры получают те же функции, что и локальные модели: управляемую генерацию, вызов инструментов со стримингом и учёт токенов в ответах.
Рассуждения (reasoning) теперь входят в транскрипт: при смене провайдера блоки рассуждений автоматически исключаются из запросов, если новый провайдер не может их воспроизвести. API-ключи передаются через замыкание (closure), а не строкой, так что приложение может получать краткоживущие токены со своего сервера; в README объясняется, когда давать пользователям вводить собственные ключи, а когда пропускать запросы через прокси. Библиотека также работает на Linux, поэтому тот же код можно запускать на сервере.
Отдельный раздел посвящён открытым моделям, которые, как пишут авторы, стали способнее, так что малые, хорошая точка входа. В числе самых скачиваемых на Hub сейчас названы: Gemma 4 E2B от Google (GGUF, около 3,4 ГБ при Q4_0 с квантованием с учётом обучения), LFM2.5 2.6B от Liquid AI (GGUF, около 1,7 ГБ при Q4_K_M) и Qwen3.8 27B для MLX от Alibaba (около 16 ГБ при 4 битах). Первые две помещаются на iPhone, а Qwen3.8 27B работает на Mac с 32 ГБ памяти и более; выбор MLX-модели занимает одну строку кода. С юмором добавлено: если под рукой четыре Mac Studio в максимальной комплектации, можно держать GLM-5.3 от Z.ai в BF16, это около 1,5 ТБ; остальным он доступен через Inference Providers.
Для обновления в Package.swift указывается зависимость на репозиторий huggingface/AnyLanguageModel от версии 1.0.0 с трейтом MLX; руководство по миграции, в примечаниях к релизам всех трёх библиотек. Авторы благодарят сообщество за обратную связь и вклад. В планах, расширить тот же подход (знакомые API на Swift и выбор моделей, работающих на устройстве) на другие возможности: «модели, которые принимают решения, и модели, которые слушают». Сроки и подробности не названы.
Ключевые факты
- Вышла AnyLanguageModel 1.0, замена Apple Foundation Models на Swift; для перехода достаточно сменить строку импорта. Вместе с ней вышли swift-huggingface 1.0 и swift-xet 1.0.
- Один код сессии работает с системной моделью Apple, с открытыми моделями через llama.cpp, MLX и Core ML и с облачными API: OpenAI, Anthropic, Google Gemini, Ollama, Private Cloud Compute, Hugging Face Inference Providers, OpenRouter.
- Вызов инструментов и управляемая генерация поддерживаются у всех провайдеров; добавлены поддержка изображений, учёт токенов и автоматическое исключение блоков рассуждений при смене провайдера.
- Малые модели вроде Gemma 4 E2B (около 3,4 ГБ) и LFM2.5 2.6B (около 1,7 ГБ) помещаются на iPhone; Qwen3.8 27B (около 16 ГБ при 4 битах) требует Mac с 32 ГБ памяти и более.
- В планах, «модели, которые принимают решения, и модели, которые слушают»; сроков и деталей нет.
Почему это важно
Для разработчиков под платформы Apple выбор между локальной и облачной моделью обычно означает разные API и усложнение кода. AnyLanguageModel 1.0 превращает это в смену провайдера в одном месте при неизменном коде сессии на основе Foundation Models. Версия 1.0 вышла спустя год и десятки релизов после первого представления библиотеки.
Кому это важно
Разработчикам приложений для iOS, macOS и visionOS, которые хотят добавить языковые модели и не привязываться к одному провайдеру. Также тем, кто собирается запускать малые открытые модели прямо на устройстве, и тем, кто использует Swift на сервере под Linux.
Как это применить
Заменить в проекте «import FoundationModels» на «import AnyLanguageModel». Добавить в Package.swift зависимость на репозиторий huggingface/AnyLanguageModel от версии 1.0.0 (для MLX, с трейтом MLX). Локальную модель MLX выбирают одной строкой через MLXLanguageModel, а большие открытые модели можно подключить через Hugging Face Inference Providers с тем же кодом. Для существующих приложений руководство по миграции есть в примечаниях к релизам AnyLanguageModel, swift-huggingface и swift-xet. Условия оплаты облачных провайдеров в тексте не приводятся.
Можно ли доверять
Это официальное объявление самого разработчика, поэтому оно описывает возможности в выгодном свете. В тексте нет бенчмарков, показателей производительности и данных о числе загрузок библиотеки; авторы публикации не названы, а дата выхода не указана. Размеры моделей даны приблизительно («около»). Часть возможностей привязана к OS 27, при этом соответствие версии конкретным датам релиза в тексте не разъясняется.
Риски и подводные камни
Часть функций (изображения с системной моделью, поддержка протокола LanguageModel, Core AI, Private Cloud Compute) доступна только на OS 27. Большие модели на устройстве требуют много памяти: Qwen3.8 27B нужен Mac с 32 ГБ и более, а GLM-5.3 в BF16 занимает около 1,5 ТБ и доступен только через облачных провайдеров. При передаче ключей API в приложении стоит учитывать рекомендации из README: когда допустимы пользовательские ключи, а когда нужен прокси. Анонсированные «модели, которые принимают решения» и «модели, которые слушают» пока без сроков и описания.