데일리 · 기사 01 · 6 분 읽기
- 오픈소스
- Hugging Face
허깅페이스, 앱에 여러 AI 모델을 연결하는 개발 도구 공개
10월 20일 발표 · 10월 21일 공식 원문 재확인
요약·개요
Hugging Face가 10월 20일 Swift 개발자용 라이브러리 AnyLanguageModel 1.0을 공개했습니다. 앱이 기기 안 모델과 외부 AI 서비스에 같은 방식으로 요청하게 해 주는 도구로, 모델과 외부 서비스 요금은 개발자가 따로 챙겨야 합니다.
메모를 요약해 주는 앱을 만든다고 해 봅시다. 사용자가 보는 입력창은 같아도, 답을 만드는 AI가 휴대폰 안에 있느냐 외부 서버에 있느냐에 따라 개발자가 짜야 할 연결 코드가 달라집니다. AnyLanguageModel은 이 연결 코드를 한 가지 방식으로 맞추는 도구입니다.
핵심 팩트
AI 모델 공유 플랫폼을 운영하는 Hugging Face가 10월 20일 Swift 개발자용 라이브러리 AnyLanguageModel 1.0을 공개했습니다. 기준은 Apple Foundation Models입니다. 애플 기기에 들어 있는 시스템 모델을 앱에서 쓰게 해 주는 애플의 프레임워크인데, AnyLanguageModel은 이 API를 그대로 둔 채 앱이 쓸 모델과 제공자를 고를 수 있게 했습니다. 새 AI 모델이 아니라 모델을 앱에 연결하는 도구입니다. 개발팀 발표
기기 안 모델은 llama.cpp·MLX·Core ML을 거쳐 씁니다. 셋 다 공개 모델을 기기에서 직접 돌리는 실행 도구입니다. 외부 모델로는 OpenAI·Anthropic·Google Gemini 같은 API에 연결합니다. 저장소 코드는 Apache 2.0 라이선스로 공개돼 있습니다. 공식 저장소 라이선스

1. 앱, 라이브러리, 모델이 하는 일
사용자가 앱의 입력창에 메모를 넣으면, 앱은 그 메모를 모델에 보내고 돌아온 요약을 화면에 띄웁니다. 그 사이에서 요청을 보내고 답을 받는 코드는 개발자가 씁니다. 라이브러리는 이런 코드를 짤 때 가져다 쓰는 도구 묶음이고, Swift는 주로 애플 기기용 앱을 만들 때 쓰는 프로그래밍 언어입니다.
AnyLanguageModel에는 모델이 들어 있지 않습니다. 어떤 모델을 붙일지는 개발자가 정하고, 그 모델을 돌릴 기기 조건이나 외부 서비스 이용 조건도 개발자가 갖춥니다.
%% 모델을 붙이기 전에 정할 순서 · 편집부 정리
flowchart TD
A["필요한 결과 · 예: 메모 요약"] --> B["계산할 곳 · 기기 안 또는 외부 서버"]
B --> C["그 경로의 조건 · 모델 파일, API 키, 요금"]
C --> D["실제 메모로 결과 비교"]고양이와 풀어보기 Q&A
- 고양이 연구원
메모 요약 앱에 이걸 넣으면 요약 AI까지 따라와?
포켓 노트모델은 따로 골라서 붙여야 해. 이 라이브러리는 앱과 모델 사이의 연결을 맡고, 요약은 네가 붙인 모델이 만들어.
- 고양이 연구원
개발자가 아니면 나랑은 상관없는 소식이야?
포켓 노트직접 설치할 일은 없어. 사용자는 메모를 넣고 요약을 받을 뿐이고, 이 소식은 Swift로 앱을 만드는 개발자에게 해당해.
2. 요청 방식을 맞추는 공통 API
API는 프로그램끼리 요청과 답을 주고받는 약속입니다. 제공자마다 약속이 다르면 앱의 연결 코드도 제공자마다 따로 짜야 합니다. AnyLanguageModel은 앱 쪽 요청을 Foundation Models API 하나로 맞추고, 그 뒤에 연결되는 모델만 바꿔 끼우게 합니다. 이미 Foundation Models로 만든 앱이라면 import 한 줄만 바꿔 옮겨 올 수 있다고 저장소는 설명합니다. 공식 저장소
고양이와 풀어보기 Q&A
- 고양이 연구원
모델을 바꾸면 내 코드는 얼마나 고쳐야 해?
포켓 노트요청을 보내고 답을 받는 부분은 거의 그대로야. 이미지 입력처럼 모델에 따라 지원이 갈리는 기능을 쓴다면, 바꾼 모델로 한 번 돌려 봐야 해. 공식 저장소
3. 기기 안에서 계산할까, 서버에 물을까
로컬 실행은 모델의 계산이 사용자 기기에서 이뤄지는 방식이고, 외부 제공 모델은 앱이 네트워크로 제공자의 서버에 요청하는 방식입니다. 휴대폰에 설치된 앱이라도 답은 서버에서 계산될 수 있습니다.
| 비교할 것 | 기기 내 모델 | 외부 제공 모델 |
|---|---|---|
| 모델 계산 | 사용자 기기 | 제공자 서버 |
| 준비할 것 | 지원 기기·메모리·모델 파일 | 네트워크·API 키·서비스 조건 |
| 비용 | 기기 자원, 앱 배포·운영 부담 | 제공자 요금과 호출량 |
| 데이터 경로 | 그 계산은 기기 안에서 처리 | 보낸 데이터가 제공자 서버로 이동 |
고양이와 풀어보기 Q&A
- 고양이 연구원
기기 안 모델을 쓰면 내 메모는 밖으로 안 나가?
포켓 노트요약 계산은 기기 안에서 끝나. 다만 모델을 내려받거나 웹을 검색하는 기능은 따로 네트워크를 쓸 수 있으니, 앱 전체가 오프라인으로 돈다고 볼 수는 없어.
- 고양이 연구원
그럼 로컬이 더 빠르고 싸?
포켓 노트모델 크기와 기기 성능에 따라 달라. 외부 호출 요금은 없지만 저장 공간·메모리·배터리를 써.
4. 요약에서 ‘목요일’이 빠졌다면
“회의는 금요일 오후 3시, 자료는 목요일까지 공유”라는 메모를 두 모델에 똑같이 넣는다고 해 봅시다. 공통 API 덕분에 연결 코드는 같지만, 문제가 생겼을 때 들여다볼 곳은 증상에 따라 갈립니다.
| 증상 | 볼 곳 |
|---|---|
| 기기 내 모델에서 답이 오지 않음 | 모델 파일·지원 기기·메모리 |
| 외부 모델에서 답이 오지 않음 | 네트워크·API 키·서비스 상태 |
| 답은 왔는데 ‘목요일’이 빠짐 | 같은 메모로 두 모델의 요약 비교 |
답이 돌아왔다면 연결은 된 겁니다. 하지만 요약에서 ‘목요일’이 빠졌다면 사용자가 맡긴 일은 실패했고, 이건 실제 메모를 넣어 비교해야 드러납니다. 저장소 설명으로는 답을 정해진 형식으로 받는 guided generation도 모든 제공자에서 쓸 수 있습니다. 이 기능이 맞춰 주는 건 형식이라, 칸 안의 내용이 맞는지는 역시 실제 입력으로 비교해야 합니다. 공식 저장소
고양이와 풀어보기 Q&A
- 고양이 연구원
어느 모델이 내 메모를 더 잘 요약하는지는 어떻게 알아?
포켓 노트직접 넣어 봐야 알아. 실제 메모 몇 개를 두 모델에 똑같이 넣고, 날짜나 마감처럼 빠지면 안 되는 내용이 남았는지 비교해 봐. 이 라이브러리는 모델을 바꿔 끼우기 쉽게 해 줄 뿐, 어느 쪽이 나은지 골라 주지는 않아.
5. 라이선스, 요금, API 키
저장소 코드는 Apache 2.0 라이선스로 공개돼 있습니다. 이 라이선스가 정하는 건 라이브러리 코드를 쓰는 조건까지이고, 내려받는 모델의 라이선스와 외부 API 요금은 각 제공자가 정합니다. 라이선스
| 항목 | 볼 조건 |
|---|---|
| 라이브러리 코드 | Apache 2.0 라이선스와 고지 조건 |
| 내려받는 모델 | 그 모델의 라이선스·지원 환경 |
| 외부 API | 제공자의 요금·사용량·데이터 처리 조건 |
외부 API를 쓴다면 API 키 관리도 개발자 몫입니다. 저장소는 키를 앱 안에 그대로 넣지 말라고 안내합니다. 배포된 앱은 분석해서 키를 빼낼 수 있기 때문입니다. 그 대신 사용자가 자기 키를 넣는 방식과 개발자의 서버를 거쳐 요청하는 방식을 장단점과 함께 소개합니다. 인증 정보 안내
고양이와 풀어보기 Q&A
- 고양이 연구원
키를 앱에 넣으면 안 된다면, 만드는 동안 시험은 어떻게 해?
포켓 노트개발하고 시험하는 동안에는 환경 변수에 넣어 써도 된다고 저장소가 설명해. 배포하기 전에 사용자 키 방식이나 서버 경유 방식으로 바꾸면 돼.
마무리
이 소식에서 챙길 점
AnyLanguageModel은 Swift 앱이 기기 안 모델과 외부 모델을 같은 방식으로 부르게 해 주는 연결 도구입니다. 모델을 바꿔 볼 때 고칠 코드는 줄어듭니다. 어떤 모델을 쓸지, 요금과 API 키를 어떻게 다룰지, 요약이 쓸 만한지는 여전히 개발자가 실제 입력으로 정해야 합니다.
로컬 AI가 낯설다면 지난 주간의 설명에서 모델이 기기 안에서 도는 원리부터 읽을 수 있습니다.