๐ŸŽฏ Objective

Transition from using third-party wrappers to mastering Apple's native Foundation Models framework. By the end of this week, you will be able to manage model sessions, enforce structured JSON outputs, and implement tool-calling logic entirely on-device.

๐Ÿ›  Prerequisites

Daily Breakdown

Day 1

Session Management & Lifecycle

Topic: The LanguageModelSession.

Tasks:
  • Configure a session with specific Configuration (Temperature, Top-P).
  • Implement streaming vs. non-streaming responses using AsyncSequence.
  • Handle on-device-only errors (e.g., model not downloaded or thermal throttling).

Key API: LanguageModelSession.shared, LanguageModelSession.Configuration.

Day 2

Advanced Prompting & System Instructions

Topic: Defining the "On-Device Persona."

Tasks:
  • Master SystemPrompt architecture to minimize token usage (latency reduction).
  • Experiment with "Few-Shot" prompting within a local session.
  • Evaluate the difference between user and assistant role-playing in the local buffer.
Day 3

Structured Output with @Generable

Topic: Moving beyond raw strings.

Tasks:
  • Use the @Generable macro to annotate Swift Structs.
  • Force the model to return a populated object rather than text.
  • Implement validation logic for when the model returns malformed JSON.

Lab: Build a "Travel Itinerary" parser that takes a paragraph and returns a [DayPlan] array.

Day 4

Tool Calling & Function Injection

Topic: Teaching the model to "Do."

Tasks:
  • Define a set of AppIntents as tools for the model.
  • Implement the ToolCalling protocol.
  • Handle the hand-off: Model โ†’ Intent Execution โ†’ Result โ†’ Model.

Example: A "Calendar Assistant" where the model calls CreateEventIntent after a chat.

Day 5

Context Windows & Memory Management

Topic: Managing the 32k+ context window efficiently.

Tasks:
  • Implement a "Sliding Window" strategy to prevent memory spikes.
  • Learn to use TokenCounter to predict session costs before execution.
  • Monitor Unified Memory usage in Instruments during heavy inference.
๐Ÿงช

Friday Lab: "The Intentional Agent"

Project: Build a single-view app called "LocalAction".

  1. Input: A text field for user requests (e.g., "Remind me to call John and set my volume to 50%").
  2. Logic: The Foundation Model identifies the tasks, uses Tool Calling to find the correct system intents, and executes them.
  3. Requirement: Must work entirely in Airplane Mode.

๐Ÿ“š Resource Checklist

Success Metric: You have successfully triggered a local Swift function using a natural language command processed via LanguageModelSession without hitting a network endpoint.