Python bindings for Apple's Foundation Models framework, providing access to the on-device foundation model at the core of Apple Intelligence on macOS.
The Foundation Models SDK for Python provides a Pythonic interface to Apple's Foundation Models framework.
You can:
- Evaluate Swift Foundation Models app features by running batch inference and analyzing results from Python
- Perform on-device inference with the system foundation model
- Stream real-time text generation responses
- Use guided generation with structured output schemas and constraints
- Get type-safe responses using Python decorators for guided generation
- Configure custom model settings for different model options
- Process transcripts exported from Swift apps for quality analysis
Keep in mind that it's your responsibility to design AI experiences with care. To learn about practical strategies you can implement in code, check out: Improving the safety of generative model output and Apple's Human Interface Guidelines on Generative AI.
- macOS 26.0+
- Download Xcode 26.0+ and agree to the Xcode and Apple SDKs agreement in the Xcode app.
- Python 3.10+
- Apple Intelligence turned on for a compatible Mac
This project is not yet taking contributions. Stay tuned!
pip install apple-fm-sdkAlternatively, you can use the development install instructions below.
import apple_fm_sdk as fm
import asyncio
async def main():
# Get the default system foundation model
model = fm.SystemLanguageModel()
# Check if the model is available
is_available, reason = model.is_available()
if is_available:
# Create a session
session = fm.LanguageModelSession()
# Generate a response
response = await session.respond("Hello, how are you?")
print(f"Model response: {response}")
else:
print(f"Foundation Models not available: {reason}")
# Run async function
asyncio.run(main())You can also use guided generation to ask the model to generate an
object from a specific Python class marked with the generable decorator:
import apple_fm_sdk as fm
@fm.generable # This decorator signals this type be generated by a model
class Cat:
name: str
age:int = fm.guide("Age in years", range=(0, 20))
async def generate_cat():
# Get the default system foundation model
model = fm.SystemLanguageModel()
# Check if the model is available
is_available, reason = model.is_available()
if is_available:
# Create a session
session = fm.LanguageModelSession()
# Generate a response of the type Cat
cat = await session.respond("Generate an adorable rescue cat", generating=Cat)
print(f"Model response: {cat}")
else:
print(f"Foundation Models not available: {reason}")If you need to modify the SDK or install from source:
- Get the code
git clone https://github.com/apple/python-apple-fm-sdk
cd python-apple-fm-sdk- (Optional but recommended) Make a virtual environment. Install uv (or your package manager of choice) then:
uv venv
source .venv/bin/activate- Install the package locally in editable mode:
uv sync- After making any change, be sure to build the project again and test:
uv pip install -e .
pytestFor licensing see accompanying LICENSE file. Copyright (C) 2026 Apple Inc. All Rights Reserved.