On-Device AI Nedir?
On-device AI, veriyi sunucuya göndermek yerine modeli doğrudan telefonun CPU, GPU veya neural engine'i üzerinde çalıştırır. Artık iki platform da uygulamanın model dosyası taşımadan çağırabileceği, sistemin yönettiği bir dil modeli sunuyor: Apple'da Foundation Models framework, Android'de ise AICore servisi üzerinde çalışan ve ML Kit GenAI API'leriyle erişilen Gemini Nano.
Apple: Foundation Models Framework
Foundation Models (iOS, iPadOS, macOS ve visionOS 26+), Apple Intelligence'ın arkasındaki on-device modele Swift'ten doğrudan erişim sağlar. Yalnızca Apple Intelligence destekli cihazlarda (iPhone tarafında iPhone 15 Pro ve sonrası), Apple Intelligence açıksa ve model indirilmişse çalışır.
Önce erişilebilirliği kontrol edin
switch SystemLanguageModel.default.availability {
case .available:
showSmartFeatures()
case .unavailable(.deviceNotEligible):
showClassicUI()
case .unavailable(.appleIntelligenceNotEnabled), .unavailable(.modelNotReady):
showEnableHint()
case .unavailable:
showClassicUI()
}
Guided generation ve tool calling
Serbest metni parse etmek yerine bir tipi @Generable ile işaretleyin; framework geçerli bir örnek üretilmesini garanti eder:
@Generable
struct TripIdea {
@Guide(description: "Short title, max 6 words")
let title: String
@Guide(description: "Trip length in days", .range(1...7))
let days: Int
}
let session = LanguageModelSession(instructions: "You plan short trips.")
let idea = try await session.respond(to: "Weekend near Izmir",
generating: TripIdea.self).content
Tool'lar Tool protokolüne uyar (name, description, @Generable Arguments, call(arguments:)). Model, gerektiğinde bunları çağırarak yerel veritabanınızı veya uygulama servislerinizi sorgular.
Hesaba katmanız gereken sınırlar
- Context küçüktür: ilk iOS 26 modelinde 4.096 token. iOS 26.4'ten itibaren sabit değer yazmak yerine
contextSizevetokenCount(for:)kullanın. - Bir session aynı anda tek istek işler;
isRespondingdeğerini kontrol edin. - Apple'ın dokümantasyonuna göre model matematik, kod üretimi ve karmaşık akıl yürütme için uygun değil. Özetleme, bilgi çıkarma, sınıflandırma ve kısa yaratıcı metinlerde güçlüdür.
2026 yenilikleri
WWDC26 ile prompt'lara görsel ekleme, PrivateCloudComputeLanguageModel (entitlement gerektiren daha büyük sunucu modeli), aynı session API'si arkasında model değiştirmeyi sağlayan LanguageModel protokolü ve watchOS 27 desteği geldi. iOS 27 ayrıca kendi neural modellerinizi Apple silicon üzerinde çalıştırmak için Core AI'ı tanıttı. Core ML ise karar ağaçları gibi neural olmayan modeller için önerilen çözüm ve iOS 26 ile öncesinde tek seçenek olmaya devam ediyor.
Android: ML Kit GenAI ile Gemini Nano
AICore, tek bir Gemini Nano temel modelini indirir, günceller ve uygulamalar arasında paylaştırır. Ekim 2026 itibarıyla ML Kit şunları sunuyor:
- Göreve özel API'ler (beta): summarization, proofreading, rewriting ve image description. Her biri yerleşik bir prompt ile fine-tune edilmiştir.
- Direct model access (beta): ilk olarak Prompt API adıyla duyurulan, artık
GenerativeModelsınıfıyla sunulan, özel metin veya görsel+metin prompt'ları için API. Structured output ve function calling hâlâ alpha/preview aşamasında.
Cihaz desteği yeni amiral gemileriyle sınırlı: Pixel 9, 10 ve 11 serisi, Galaxy S25 ve S26 ile bazı Honor, OnePlus, OPPO, vivo, Xiaomi ve Motorola modelleri. Direct model access, cihazdaki Gemini Nano sürümüne (nano-v2, v3, v4) bağlıdır ve çıktılar sürümler arasında farklılık gösterebilir.
val summarizer = Summarization.getClient(
SummarizerOptions.builder(context)
.setInputType(InputType.ARTICLE)
.setOutputType(OutputType.ONE_BULLET)
.setLanguage(Language.ENGLISH)
.build()
)
when (summarizer.checkFeatureStatus().await()) {
FeatureStatus.AVAILABLE -> summarize()
FeatureStatus.DOWNLOADABLE -> summarizer.downloadFeature(callback)
else -> showFallback()
}
Önemli kısıtlar: inference yalnızca uygulama ön plandayken çalışır (BACKGROUND_USE_BLOCKED), uygulama başına kota vardır (BUSY), bootloader'ı açık cihazlar desteklenmez, summarization girdisi 4.000 token ile sınırlıdır. Summarization yalnızca İngilizce, Japonca ve Korece destekliyor; Türkçe için cloud planlayın.
On-Device mı, Cloud mu?
| Kriter | On-device | Cloud |
|---|---|---|
| Gizlilik | Veri telefonda kalır | Veri cihazdan çıkar |
| Gecikme | Ağ gidiş-dönüşü yok | Ağa bağımlı |
| Maliyet | Token ücreti yok | İstek başına ödeme |
| Offline | İndirildikten sonra çalışır | Bağlantı gerekir |
| Model kalitesi | Küçük model, kısa context | Büyük model, uzun context |
| Pil | Cihaz enerjisi ve ısı | Cihaza yük az |
| Erişim | Sadece desteklenen cihazlar | Tüm cihazlar |
Pratik Entegrasyon İpuçları
- Önce kontrol, sonra karar. Erişilebilirliği kontrol etmeden AI butonu göstermeyin; gizleyin veya fallback'e yönlendirin.
- Fallback merdiveni kurun: önce on-device model, sonra kullanıcı onayıyla cloud model, en son AI'sız akış.
- Dar prompt'lar yazın. İstek başına tek görev, güvenilir kurallar instructions içinde, net uzunluk ("tek cümlede"), serbest metin yerine structured output.
- İndirme durumunu yönetin. İlk açılışta model hâlâ iniyor olabilir; ilerleme gösterin veya sonra tekrar deneyin.
- Deterministik olmayan bir sistem gibi test edin. Sabit bir örnek girdi seti tutun, her OS veya model güncellemesinde tekrar çalıştırın, desteklenmeyen cihazları da deneyin.
- Hataları yakalayın. Guardrail ihlalleri ve context taşması hata fırlatır; kullanıcıya anlamlı bir mesaj gösterin.
Privacy Label ve Data Safety
Yalnızca cihazda işlenen veri, Apple'ın App Privacy bölümü ve Google Play Data safety formu açısından genellikle "toplanmış" sayılmaz. Prompt veya çıktılar cihazdan çıktığında durum değişir: cloud fallback, analytics'e loglanan prompt'lar, kullanıcı metni içeren crash raporları, üçüncü taraf modeller. Bu akışları beyan edin, AI özelliklerini gizlilik politikanızda anlatın, kullanıcı metnini loglamayın.