Apple의 온디바이스 LLM에 직접 접근하는 Foundation Models Framework!
이 영상은 Swift 기반 프로젝트에 생성형 AI 기능을 추가하는 방법을, 실제 Xcode 프로젝트를 따라가며 실습 중심으로 상세히 알려줍니다.
@Generable 매크로 PromptBuilder 동적 생성 streamResponse API // MARK: codealong chapter N (Xcode Find로 챕터별 변경 확인/진행)import FoundationModels
let session = LanguageModelSession()
let response = try await session.respond(to: "파리 3일 여행 일정 만들어줘")
print(response.content) // ==> 3일 일정을 자연어로 생성
let instructions = "각 날짜에 활동, 호텔, 레스토랑 포함, title/desc/day별 반환"
LanguageModelSession(instruction: instructions)switch model.availability {
case .available: // 정상
case .notEligible: // 미지원
case .intelligenceNotEnabled: // 설정 미적용
case .modelNotReady: // 다운로드 중
}@Generable 적용struct Itinerary: Generable {
var title: String
var description: String
var days: [Day]
}
struct Day: Generable {
var title: String
var activities: [Activity]
}
// 프롬프트 응답을 구조화된 타입으로
let itinerary: Itinerary = try await session.respond(
to: "세렝게티 3일 여행 일정",
generating: Itinerary.self
)
let kidFriendly = true
let prompt = PromptBuilder {
"파리 3일 여행 일정 생성"
if kidFriendly { "어린이 친화적 일정으로" }
}
streamResponse API로 실시간 데이터 받기for try await partial in session.streamResponse(...) {
if let title = partial.title {
// 부분적으로 완성될 때마다 UI 즉시 갱신
}
}
PartiallyGenerated 타입 (모든 필드 Optional)로, 토큰 단위로 UI 반영 if let 바인딩 패턴 활용struct FindPointsOfInterestTool: Tool {
let name = "find points of interest"
func call(arguments: Arguments) async -> Output {
// MapKit, 서버 API 등 실제 DB·지도 데이터 실시간 활용 가능
}
}
prewarm()로 미리 모델 적재 

이 블로그 포스트는 해당 영상의 모든 실습・세부 구조・코드・주석・비즈니스/UX 관점까지 100% 빠짐없이 담았습니다. 실제 Swift 프로젝트에서 그대로 활용 가능합니다.