지난 11월, 우리는 이 블로그에서 다음을 소개했습니다. AnyLanguageModel 이 블로그에서: 앱이 사용할 모델과 제공자를 선택할 수 있게 해주는 Apple의 Foundation Models 프레임워크를 위한 드롭인 대체품입니다. 우리는 로컬 모델에 호기심을 갖고 있지만 항상 어떻게 시작해야 할지 확신하지 못했던 앱 개발자들의 이야기를 들었습니다. 그들은 또한 여러 추론 제공자를 지원하는 데 따르는 추가적인 복잡성을 피하고 싶어했습니다. AnyLanguageModel은 그 피드백에서 자라났습니다.
로컬 추론과 호스팅 추론은 각각의 강점이 있으며, 이 새로운 세대의 지능형 앱을 만드는 데 두 가지 모두 역할이 있습니다. 공유 API를 사용하면 각 작업에 맞는 올바른 모델을 더 쉽게 선택할 수 있습니다.
1년과 수십 번의 릴리스가 지난 후, AnyLanguageModel 1.0 이 출시되었으며, swift-huggingface 1.0 과 swift-xet 1.0.
도 함께 나왔습니다. 무엇이 바뀌었고 앞으로 무엇이 있는지 소개합니다:
드롭인 호환 API
AnyLanguageModel의 핵심 아이디어는 동일하게 유지됩니다:
앱에 맞는 모델과 함께 Foundation Models API를 사용하는 것입니다.
시작하려면 import 구문을 변경하세요:
- import FoundationModels
+ import AnyLanguageModel
그러면 동일한 세션 코드가 시스템 모델에서, llama.cpp, MLX, Core ML을 통한 오픈 웨이트 모델에서, 그리고 아래의 호스팅 제공자에서도 작동합니다.
지난 1년간 우리는 여러 주요 기능을 추가했습니다:
- Tool calling(도구 호출) 은 모든 제공자와 작동합니다.
- Guided generation(가이드 생성) 역시 모든 제공자와 작동하며,
중첩된
@Generable타입과 그 배열을 포함합니다. - Image support(이미지 지원) 를 사용하면 Foundation Models 27의 구문을 사용하여 프롬프트에 이미지를 첨부할 수 있으며, iOS, macOS, visionOS 27에서 시스템 모델을 사용할 때도 마찬가지입니다.
OS 27에서 AnyLanguageModel은 또한
Foundation Models의 LanguageModel 프로토콜을 준수하는 모든 모델과 작동하며,
여기에는 Core AI 모델이 포함됩니다.
AnyLanguageModel과 함께, 우리는 다음을 구축했습니다. swift-huggingface 과 swift-xet Hub에서 Swift 앱으로 가속화된 모델 다운로드를 제공하기 위함입니다.
호스팅 모델 역시 마찬가지입니다
올해에는 호스티드 모델 지원도 확장되었습니다. AnyLanguageModel이 이제 다음을 지원합니다:
- OpenAI의 Chat Completions 및 Responses API
- Open Responses, 호환되는 엔드포인트를 갖춘 모든 제공자를 위해
- Anthropic의 Messages API, 어댑티브 사고(adaptive thinking) 및 노력(effort) 옵션 제공
- Google의 Gemini API
- Ollama
- Private Cloud Compute, OS 27에서
- Hugging Face Inference Providers, 그리고 사용자 지정 base URL을 통한 OpenRouter 등 OpenAI 호환 엔드포인트
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)도 이제 트랜스크립트의 일부입니다. 제공자를 전환할 때, 새 제공자가 추론 블록을 재생할 수 없는 경우 요청에서 자동으로 생략됩니다.
API 키는 문자열 대신 클로저에서 제공되므로, 앱이 자체 서버에서 수명이 짧은 토큰을 가져올 수 있습니다. README 에서는 사용자가 직접 키를 가져오게 할 때와 프록시를 통해 요청을 라우팅할 때를 설명합니다.
AnyLanguageModel은 Linux에서도 실행되므로, 동일한 코드가 서버에서도 작동할 수 있습니다.
오픈 웨이트 모델이 더 좋아졌습니다
로컬 모델을 더 쉽게 사용할 수 있게 만드는 동안, 모델 자체도 더 강력해져서 작은 모델도 좋은 출발점이 되었습니다. 다음은 현재 Hub에서 가장 많이 다운로드되는 모델들입니다:
- Gemma 4 E2B Google에서,
GGUF 형식, 약 3.4 GB,
Q4_0양자화 인지 학습(quantization-aware training) 적용. - LFM2.5 2.6B Liquid AI 제공,
GGUF 형식으로 약 1.7 GB,
Q4_K_M. - Qwen3.8 27B는 MLX용으로 Alibaba 제공, 4비트에서 약 16 GB입니다.
앞의 두 모델은 iPhone에서 실행되고, Qwen3.8 27B는 32 GB 이상 메모리를 갖춘 Mac에서 실행됩니다. MLX 모델을 선택하는 데는 한 줄이면 됩니다:
let model = MLXLanguageModel(modelId: "mlx-community/Qwen3.8-27B-4bit")
그리고 최고 사양으로 맞춘 Mac Studio 네 대를 손쉽게 구할 수 있다면, GLM-5.3 Z.ai 제공은 BF16으로 약 1.5 TB를 차지합니다. 그 외 사용자는 Inference Providers를 통해 이용할 수 있습니다.
1.0으로 업그레이드
dependencies: [
.package(
url: "https://github.com/huggingface/AnyLanguageModel",
from: "1.0.0",
traits: ["MLX"]
)
]
기존 앱을 업그레이드하는 경우 다음의 마이그레이션 안내를 참조하세요: AnyLanguageModel, swift-huggingface및 swift-xet 릴리스 노트에서 코드 업데이트에 도움을 받을 수 있습니다.
커뮤니티의 피드백과 기여가 우리의 여러 주요 기능을 만드는 데 큰 역할을 했습니다. 기여해 주신 모든 분들 께 AnyLanguageModel을 앱 개발자들에게 더 유용하게 만드는 데 도움을 주신 것에 감사드립니다.
다음은 무엇인가
언어 모델은 제품에 지능을 담기 위한 강력한 도구로 입증되었습니다. 또한 개발자가 활용할 수 있는 여러 종류의 모델 중 하나이기도 합니다. 저희는 동일한 접근 방식을 더 많은 기능에 적용하고자 합니다: 디바이스에서 실행되는 다양한 모델을 선택할 수 있는 친숙한 Swift API입니다. 곧 공개됩니다: 판단하는 모델, 듣는 모델.