AnyLanguageModel 1.0: Один год локальных моделей на платформах Apple
Локальный и облачный инференс имеют свои преимущества, и оба подхода играют роль в создании нового поколения интеллектуальных приложений. Общий API упрощает выбор подходящей модели для каждой задачи.
Год и десятки релизов спустя AnyLanguageModel 1.0 уже доступен, вместе с swift-huggingface 1.0 и swift-xet 1.0.
Вот что изменилось и что нас ждёт дальше:
Совместимый API для простой замены
Основная идея AnyLanguageModel остаётся прежней:
использовать API Foundation Models с моделью, которая подходит вашему приложению.
Чтобы начать работу, измените оператор import:
- import FoundationModels
+ import AnyLanguageModel
После этого тот же код сессии работает с системной моделью, с моделями с открытыми весами через llama.cpp, MLX и Core ML, а также с перечисленными ниже облачными провайдерами.
За последний год мы добавили несколько важных функций:
- Вызов инструментов работает со всеми провайдерами.
- Управляемая генерация также работает со всеми провайдерами,
включая вложенные типы
@Generableи массивы таких типов. - Поддержка изображений позволяет прикреплять изображения к запросам с использованием синтаксиса Foundation Models 27, в том числе при использовании системной модели на iOS, macOS и visionOS 27.
В ОС 27 AnyLanguageModel также работает
с любой моделью, соответствующей протоколу LanguageModel Foundation Models,
включая модели Core AI.
Параллельно с AnyLanguageModel мы расширили swift-huggingface и swift-xet, чтобы обеспечить ускоренную загрузку моделей с Hub в приложения Swift.
Облачные модели тоже поддерживаются
В этом году расширилась и поддержка облачных моделей. Теперь AnyLanguageModel поддерживает:
- API Chat Completions и Responses от OpenAI
- Open Responses для любого провайдера с совместимой конечной точкой
- API Messages от Anthropic с адаптивным рассуждением и параметрами усилий
- API Gemini от Google
- Ollama
- Private Cloud Compute в ОС 27
- Inference Providers Hugging Face и другие совместимые с OpenAI конечные точки, такие как OpenRouter, через пользовательский базовый URL
С помощью 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
)
Облачные провайдеры получают те же функции, что и локальные модели: управляемую генерацию, вызов инструментов в потоковом режиме и сведения об использовании токенов в ответах.
Рассуждение теперь также является частью расшифровки. При смене провайдера блоки рассуждений автоматически исключаются из запросов, если новый провайдер не может воспроизвести их.
Ключи API теперь передаются через замыкание, а не строку, поэтому приложение может получать краткоживущие токены с вашего сервера. В README объясняется, когда стоит позволить пользователям использовать собственные ключи, а когда — направлять запросы через прокси.
AnyLanguageModel также работает в 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 занимает одну строку:
let model = MLXLanguageModel(modelId: "mlx-community/Qwen3.8-27B-4bit")
А если у вас под рукой есть четыре полностью оснащённых Mac Studio, GLM-5.3 от Z.ai занимает около 1,5 ТБ в BF16. Для всех остальных она доступна через Inference Providers.
Переход на версию 1.0
dependencies: [
.package(
url: "https://github.com/huggingface/AnyLanguageModel",
from: "1.0.0",
traits: ["MLX"]
)
]
Если вы обновляете существующее приложение, ознакомьтесь с инструкциями по миграции в примечаниях к выпуску AnyLanguageModel, swift-huggingface и swift-xet, чтобы обновить код.
Отзывы сообщества и вклад участников помогли сформировать несколько наших ключевых функций. Спасибо всем, кто внёс свой вклад, за помощь в том, чтобы сделать AnyLanguageModel полезнее для разработчиков приложений.
Что дальше
Языковые модели доказали, что являются мощным инструментом для внедрения интеллектуальных функций в продукты. Кроме того, это лишь один из множества типов моделей, которые разработчики могут использовать. Мы рады применить тот же подход к другим возможностям: знакомые API Swift с выбором моделей, работающих на устройстве. Скоро появятся модели, которые принимают решения, и модели, которые слушают.
Ссылки
Модели, упомянутые в этой статье 4
Сообщество
· Зарегистрируйтесь или войдите, чтобы прокомментировать
Модели, упомянутые в этой статье 4
Переведено автоматически с английского. Оригинал статьи — по ссылке ниже.
