156 lines
4.0 KiB
Markdown
156 lines
4.0 KiB
Markdown
---
|
|
name: apple-foundation-models
|
|
description: Use this skill when working with Apple's Foundation Models framework for on-device AI and LLM capabilities in iOS/macOS apps
|
|
version: 1.0.0
|
|
---
|
|
|
|
# Apple Foundation Models Skill
|
|
|
|
## When to Use This Skill
|
|
|
|
Use this skill when you need help with:
|
|
|
|
- **On-device AI**: Building iOS/macOS apps with on-device language models
|
|
- **SystemLanguageModel**: Working with Apple's on-device LLM API
|
|
- **Guided Generation**: Generating structured Swift types from prompts
|
|
- **Tool Calling**: Extending model capabilities with custom tools
|
|
- **Prompting**: Crafting effective prompts for on-device models
|
|
- **Safety**: Implementing guardrails and handling sensitive content
|
|
- **Localization**: Supporting multilingual AI features
|
|
|
|
This skill covers iOS 26.0+, iPadOS 26.0+, macOS 26.0+, and visionOS 26.0+.
|
|
|
|
## Description
|
|
Use this skill when working with Apple's Foundation Models framework for on-device AI and LLM capabilities in iOS/macOS apps. Covers SystemLanguageModel, LanguageModelSession, guided generation, tool calling, and prompting patterns.
|
|
|
|
## Quick Reference
|
|
|
|
### Core Components
|
|
|
|
### Advanced
|
|
- `Transcript`
|
|
- `Transcript.Entry`
|
|
- `Transcript.Response`
|
|
- `Transcript.ResponseFormat`
|
|
- `Transcript.Segment`
|
|
- `Transcript.StructuredSegment`
|
|
|
|
### Api Reference
|
|
- `FoundationModels`
|
|
- `GenerationID`
|
|
- `SystemLanguageModel`
|
|
- `SystemLanguageModel.Adapter`
|
|
- `SystemLanguageModel.Guardrails`
|
|
- `SystemLanguageModel.UseCase`
|
|
|
|
### Getting Started
|
|
- `SystemLanguageModel.Availability`
|
|
|
|
### Guided Generation
|
|
- `DynamicGenerationSchema`
|
|
- `Generable`
|
|
- `GenerationGuide`
|
|
- `GenerationSchema`
|
|
- `Guide`
|
|
|
|
### Localization
|
|
- `LanguageModelFeedback`
|
|
|
|
### Prompting
|
|
- `Instructions`
|
|
- `InstructionsBuilder`
|
|
- `InstructionsRepresentable`
|
|
- `LanguageModelSession`
|
|
- `LanguageModelSession.GenerationError`
|
|
- `LanguageModelSession.ToolCallError`
|
|
- `Prompt`
|
|
- `PromptBuilder`
|
|
- `PromptRepresentable`
|
|
- `Transcript.Instructions`
|
|
- `Transcript.Prompt`
|
|
|
|
### Tool Calling
|
|
- `Tool`
|
|
|
|
|
|
## Key Concepts
|
|
|
|
### Platform Support
|
|
- iOS 26.0+
|
|
- iPadOS 26.0+
|
|
- macOS 26.0+
|
|
- Mac Catalyst 26.0+
|
|
- visionOS 26.0+
|
|
|
|
### On-Device AI
|
|
All models run entirely on-device, ensuring privacy and offline capability.
|
|
|
|
## Usage Guidelines
|
|
|
|
1. Check model availability before use
|
|
2. Define clear instructions for the model's behavior
|
|
3. Use guided generation for structured outputs
|
|
4. Implement tool calling for dynamic capabilities
|
|
5. Handle errors appropriately
|
|
|
|
## Navigation
|
|
|
|
See the `references/` directory for detailed API documentation organized by category:
|
|
- `references/advanced.md` - Advanced
|
|
- `references/api_reference.md` - Api Reference
|
|
- `references/getting_started.md` - Getting Started
|
|
- `references/guided_generation.md` - Guided Generation
|
|
- `references/localization.md` - Localization
|
|
- `references/prompting.md` - Prompting
|
|
- `references/tool_calling.md` - Tool Calling
|
|
|
|
|
|
## Best Practices
|
|
|
|
- **Prompting**: Be specific and clear in your prompts
|
|
- **Instructions**: Define the model's behavior upfront
|
|
- **Safety**: Enable guardrails for sensitive content
|
|
- **Localization**: Check supported languages for your use case
|
|
- **Performance**: Use prewarm() for better response times
|
|
- **Streaming**: Use streamResponse() for real-time user feedback
|
|
|
|
## Common Patterns
|
|
|
|
### Basic Session
|
|
```swift
|
|
let model = SystemLanguageModel(useCase: .general)
|
|
let session = LanguageModelSession(model: model)
|
|
let response = try await session.respond(to: Prompt("Your question"))
|
|
```
|
|
|
|
### Guided Generation
|
|
```swift
|
|
struct Recipe: Generable {
|
|
let title: String
|
|
let ingredients: [String]
|
|
}
|
|
|
|
let recipe = try await session.respond(
|
|
generating: Recipe.self,
|
|
prompt: Prompt("Create a pasta recipe")
|
|
)
|
|
```
|
|
|
|
### Tool Calling
|
|
```swift
|
|
struct WeatherTool: Tool {
|
|
func call(arguments: String) async throws -> String {
|
|
// Fetch weather data
|
|
}
|
|
}
|
|
|
|
let session = LanguageModelSession(
|
|
model: model,
|
|
tools: [WeatherTool()]
|
|
)
|
|
```
|
|
|
|
## Reference Documentation
|
|
|
|
For complete API details, see the categorized documentation in the `references/` directory.
|