3. Teori: Cara Kerja Foundation Models
3. Teori: Cara Kerja Foundation Models
Arsitektur On-Device Inference
Model Apple Intelligence berjalan di Neural Engine perangkat, bukan di CPU atau GPU biasa. Foundation Models Framework menjembatani kode Swift Anda dengan lapisan inferensi ini melalui beberapa lapisan abstraksi:
Kode Swift Anda
↓
LanguageModelSession (public API)
↓
Foundation Models Runtime (private framework)
↓
Apple Intelligence Adapter Layer
↓
Neural Engine / ANE (on-device)
↓
Response kembali ke app Anda
Tidak ada bagian dari pipeline ini yang menyentuh jaringan (kecuali Anda secara eksplisit menggunakan Private Cloud Compute untuk request yang membutuhkan model lebih besar).
Session dan Konteks
LanguageModelSession adalah stateful object — ia menyimpan riwayat percakapan (turns) secara internal. Setiap kali Anda memanggil respond(to:), session mengirim seluruh konteks (instructions + history + prompt baru) ke model.
Session Context Window:
┌────────────────────────────┐
│ Instructions (system) │ ← tetap di awal, tidak berubah
├────────────────────────────┤
│ Turn 1: User message │
│ Turn 1: Model response │
├────────────────────────────┤
│ Turn 2: User message │
│ Turn 2: Model response │
├────────────────────────────┤
│ Turn N: User message (baru│
└────────────────────────────┘
Jika konteks terlalu panjang, session secara otomatis melakukan context compaction — merangkum turns lama untuk mempertahankan informasi esensial tanpa melebihi context window model.
Cara Kerja @Generable dan Structured Output
@Generable adalah Swift Macro yang menghasilkan schema dari struct Swift Anda. Schema ini dikirim ke model bersama prompt, memandu model untuk menghasilkan output yang sesuai struktur tersebut. Ini dikenal sebagai constrained decoding atau structured generation:
Prompt pengguna
+
Schema dari @Generable struct
↓
Model menghasilkan token dengan constraint:
- Hanya menghasilkan token yang valid untuk field berikutnya
- Memastikan semua required field terisi
- Memvalidasi tipe data (Int, String, Bool, enum)
↓
Output di-decode ke Swift struct Anda
Tool Calling: Agentic Loop
Ketika session dikonfigurasi dengan tools, model dapat memutuskan untuk memanggil tool sebelum memberikan jawaban akhir. Framework menjalankan agentic loop secara otomatis:
1. Kirim prompt ke model
2. Model memutuskan: "Saya perlu data eksternal"
3. Model menghasilkan tool call request (nama tool + argumen)
4. Framework menjalankan tool Swift Anda
5. Hasil tool dikirim kembali ke model
6. Model menghasilkan respons final berdasarkan hasil tool
7. Kembali ke langkah 2 jika model butuh tool lagi