The Apple Basis Fashions gives a big language mannequin (LLM) that Apple has optimized to run regionally on end-user gadgets, akin to laptops, desktops, or cell gadgets. Conventional LLMs function in information facilities geared up with high-powered GPUs, which require substantial reminiscence and substantial energy. Bringing that performance to an end-user system requires vital adjustments to the mannequin. In Apple’s case, the 2 most vital adjustments to supply Basis Fashions are decreasing the variety of parameters and quantizing mannequin values.
These decreased fashions nonetheless comprise all of the inherent dangers of LLMs, akin to hallucinations, whereas these adjustments to suit onto an end-user system make some makes use of both unattainable or much less efficient. You may nonetheless discover it beneficial for some duties, akin to summarizing textual content, understanding textual content, modifying textual content, and easy era duties, akin to writing and information era. On this tutorial, you’ll modify an app to make use of Apple Basis Fashions to summarize textual content.
Apple Basis Mannequin Necessities
To make use of the on-device language mannequin, the person must have {hardware} that helps Apple Intelligence. The person should additionally activate Apple Intelligence on their system, and the system have to be operating model 26 or later of the working system. When creating, your pc should run macOS 26.0 or later, or you will need to run your apps on a tool that natively helps Apple Intelligence and runs iOS 26 or iPadOS 26 or later. Even when the Simulator is operating an applicable model of the OS, it can solely work if the underlying macOS helps Apple Basis Fashions.
When following together with this tutorial, additionally word that macOS 26 digital machines typically fail to help Apple Basis Fashions. You’ll want both a bodily Mac operating macOS 26 or later, or a tool with Apple Basis Fashions help to run the app.
Checking For Mannequin Availability
Obtain the supplies for this tutorial, and open the starter undertaking. You’ll see a undertaking that implements a share extension that presently echoes any textual content despatched to the extension in a brand new window. This app has two schemas: LocalSummarizer, which accommodates the app, and SummarizeExtension, which incorporates the share extension. Choose the SummarizeExtension schema. Construct and run the app. You may be requested to pick out an app to run with the extension. Select the Safari app within the Simulator, because it gives a straightforward technique to ship information to the extension for testing.
Carry up any internet web page that accommodates an extended discipline of textual content. Faucet and maintain on some textual content, after which choose the textual content.
Now long-press on the chosen textual content, and choose Share. For those who don’t see a Share possibility within the menu, click on the precise chevron. Select the LocalSummarizer possibility with the Kodeco Brand. This may load a Textual content Abstract overlay window that may present the chosen textual content.
You may faucet the Copy Abstract button to repeat the textual content to the clipboard and swipe down on the window to return to the unique app. On this tutorial, you’ll replace this app to make use of Apple Basis Fashions to show a abstract of the chosen textual content as an alternative.
Earlier than utilizing Apple Basis Fashions, you will need to make sure the person’s system helps it and that the person has turned it on. To do that, create a brand new SwiftUI view named ModelCheckView.swift below the SummarizeExtension folder. To do that, go to File ▸ File from Template… and choose SwiftUI View. Give the view the ModelCheckView.swift identify and ensure the SummarizeExtension goal is the one one chosen.
Now open the ModelCheckView.swift file. Add the import wanted to make use of Basis Fashions on the high:
import FoundationModels
Then add the next properties to the highest of the struct:
let sharedText: String
let onDone: () -> Void
let mannequin = SystemLanguageModel.default
You’ll use the sharedText property to cross the textual content to be summarized into the view that shows the summarization. You may cross a way to onDone that might be known as when the person closes the summarizing view. You place an occasion of SystemLanguageModel.default into mannequin. This property gives entry to Basis Fashions in your app. Additionally, delete the #Preview macro and its closure.
Now change the view with:
// 1
swap mannequin.availability {
// 2
case .out there:
SummaryView(sharedText: sharedText, onDone: onDone)
// 3
case .unavailable(.deviceNotEligible):
Textual content("Apple Intelligence just isn't out there on this system.")
case .unavailable(.appleIntelligenceNotEnabled):
Textual content("Apple Intelligence is obtainable, however not enabled on this system.")
case .unavailable(.modelNotReady):
Textual content("The mannequin is not prepared. Attempt once more later.")
// 4
case .unavailable:
Textual content("An unknown error prevents Apple Intelligence from working.")
}
This code handles present error situations and gives a default for any future error states, displaying associated textual content for every.
1. The mannequin.availability property accommodates an enum with the supply standing for the default mannequin. You utilize a swap assertion to show totally different data for every standing.
2. For the case when Basis Fashions is obtainable and dealing, you’ll show the prevailing SummaryView, passing within the sharedText and onDone properties handed into this view.
3. You show a textual content message for every of the present errors to assist the person establish what must be accomplished to permit the app to work. Word that should you get modelNotReady within the Simulator, it’s often as a result of the system operating the Simulator doesn’t help Basis Fashions. This message additionally seems in lots of circumstances should you try and run the app on a Simulator operating inside a digital machine on a tool that doesn’t help Basis Fashions.
4. This case handles any errors not particularly dealt with earlier. This may future-proof the app to show an error message to the person, even when it could actually’t present particulars.
Now you might want to replace the extension to show this view as an alternative of the present SummaryView view. Open ShareViewController.swift, which is a wrapper that bridges the normal UIKit extension into SwiftUI. Discover the showSwiftUIView(with:) technique. Change the primary line to:
let wvc = UIHostingController(
rootView: ModelCheckView(
sharedText: textual content,
onDone: closeExtension
)
)
This may name your new intermediate ModelCheckView as an alternative of the SummaryView immediately. Run the app, choose some textual content after which share it to the SummarizeExtension. You need to see the identical factor as earlier than in case your system or Simulator helps Basis Fashions. In any other case, you’ll see the suitable error.
For testing, you too can check totally different availability choices for Basis Fashions from inside XCode. Choose a Scheme (both LocalSummarizer or SummarizeExtension), click on on the dropdown arrow and choose Edit Scheme….
Underneath Run, choose the Choices tab. You’ll see a dropdown with a number of choices for Simulated Basis Fashions Availability. This selection defaults to Off, which permits the system’s precise standing by way of to the app. You may change to a different out there standing, and the app will replicate that change. If you choose Apple Intelligence Not Enabled, the app will show that message.
Don’t overlook to set this again to Off earlier than persevering with to avoid wasting your self frustration.
Subsequent, you’ll arrange the app itself to offer the same standing view. Open ContentView.swift below the LocalSummarizer goal. You’ll use an easier model of the final view. Add the next import to the highest:
import FoundationModels
This allows you to reference Basis Fashions on the view. Now change the physique to:
swap SystemLanguageModel.default.availability {
case .out there:
Textual content("This system help Apple Basis Fashions.")
case .unavailable(.deviceNotEligible):
Textual content("Apple Intelligence just isn't out there on this system.")
case .unavailable(.appleIntelligenceNotEnabled):
Textual content("Apple Intelligence is obtainable, however not enabled on this system.")
case .unavailable(.modelNotReady):
Textual content("The mannequin is not prepared. Attempt once more later.")
case .unavailable:
Textual content("An unknown error prevents Apple Intelligence from working.")
}
As earlier than, this shows an outline for all errors together with a message when Basis Fashions is obtainable.
Now that you just’ve ensured Basis Fashions is obtainable on the person’s system, you’ll use it to summarize textual content within the subsequent part.




