Section 10/151 menit
10. Error Handling dan Safety Guardrails
10. Error Handling dan Safety Guardrails
Jenis Error
swift
import FoundationModels
func safeRespond(to prompt: String) async throws -> String {
let session = LanguageModelSession()
do {
let response = try await session.respond(to: prompt)
return response.content
} catch let error as LanguageModelError {
switch error {
case .guardrailViolation:
// Model menolak karena konten melanggar kebijakan Apple
return "Permintaan ini tidak dapat diproses karena melanggar kebijakan penggunaan."
case .contextLengthExceeded:
// Percakapan terlalu panjang
return "Percakapan terlalu panjang. Mulai sesi baru."
case .modelUnavailable:
// Model sedang tidak tersedia (sedang update, dll)
return "Model AI sedang tidak tersedia, coba lagi nanti."
@unknown default:
throw error
}
}
}
Cek Availability Sebelum Setiap Operasi
swift
@Observable
class AIViewModel {
var modelAvailability: SystemLanguageModel.Availability = .unavailable(.deviceNotSupported)
init() {
checkAvailability()
}
private func checkAvailability() {
modelAvailability = SystemLanguageModel.default.availability
}
var isAvailable: Bool {
if case .available = modelAvailability { return true }
return false
}
var unavailabilityMessage: String {
guard case .unavailable(let reason) = modelAvailability else { return "" }
switch reason {
case .appleIntelligenceNotEnabled:
return "Aktifkan Apple Intelligence di Settings > Apple Intelligence & Siri"
case .deviceNotSupported:
return "Perangkat Anda tidak mendukung Apple Intelligence"
case .modelNotReady:
return "Model sedang dipersiapkan, coba beberapa saat lagi"
@unknown default:
return "Fitur AI tidak tersedia saat ini"
}
}
}
Guardrails Bawaan
Foundation Models memiliki guardrails bawaan dari Apple yang tidak bisa dinonaktifkan. Model secara otomatis menolak:
- Konten berbahaya (kekerasan grafis, konten seksual eksplisit)
- Instruksi untuk aktivitas ilegal
- Upaya jailbreak
Ini adalah jaminan keamanan yang Apple sematkan di level model, bukan hanya di API.