Structured Output: JSON Mode & Function Calling
Memaksa AI menghasilkan output terstruktur yang bisa diparse mesin — bukan teks bebas
Tujuan Pembelajaran
- Memahami JSON Mode, structured outputs, dan function calling di berbagai LLM provider
- Mampu mendesain schema output yang presisi untuk production systems
- Mampu mengimplementasikan structured output dalam aplikasi
Analogi
Structured Output = Formulir vs Surat:
Free text (Surat):
"Halo, saya pesan 2 nasi goreng dan 1 es teh. Terima kasih."
→ Harus dibaca manusia, rawan misinterpretasi
Structured output (Formulir):
{
"items": [
{ "name": "nasi goreng", "qty": 2 },
{ "name": "es teh", "qty": 1 }
],
"total": 45000
}
→ Bisa langsung diproses sistem, zero misinterpretasi
Free text seperti surat — manusia harus baca. Structured output seperti formulir — sistem bisa langsung proses tanpa ambigu.
Penjelasan Konsep
Structured output adalah teknik memaksa LLM menghasilkan output dalam format terstruktur (JSON, XML) yang bisa langsung diparse oleh kode — bukan teks bebas yang perlu regex atau parsing manual.
JSON Mode (OpenAI, Anthropic, Gemini): Aktifkan response_format: { type: “json_object” } di API call. LLM akan selalu menghasilkan valid JSON. Gunakan prompt untuk mendeskripsikan schema yang diinginkan.
Function Calling / Tool Use: Alih-alih meminta JSON, definisikan ‘functions’ atau ‘tools’ dengan parameter schema. LLM akan memilih function yang tepat dan mengisi parameternya. Ini adalah cara paling reliable untuk structured output.
Designing output schema: (1) Definisikan semua field dengan tipe data (string, number, boolean, array, object). (2) Tambahkan deskripsi untuk setiap field. (3) Tentukan required vs optional fields. (4) Gunakan enum untuk nilai yang terbatas. (5) Jangan lupa error/status field.
Validation: JANGAN percaya output AI 100%. Selalu validasi dengan Zod/Yup/Pydantic. AI bisa menghasilkan JSON valid tapi dengan nilai yang tidak expected (misal: “temperature”: “hot” padahal schmema minta number). Schema validation catch these errors.
Inti yang Perlu Dipahami
Bagian ini berfokus pada memahami JSON Mode, structured outputs, dan function calling di berbagai LLM provider., mampu mendesain schema output yang presisi untuk production systems., dan mampu mengimplementasikan structured output dalam aplikasi. Jangan terburu-buru menghafal istilahnya. Lebih penting untuk memahami peran setiap konsep dan kapan konsep itu muncul dalam pekerjaan web development.
Saat membaca Structured Output, gunakan tujuan belajar sebagai penanda arah. Kalau kamu sudah bisa menjelaskan tujuan itu dengan kata-katamu sendiri, berarti fondasinya mulai terbentuk.
Cara Membayangkannya
Free text seperti surat — manusia harus baca. Structured output seperti formulir — sistem bisa langsung proses tanpa ambigu. Analogi ini dipakai supaya konsep teknis tidak terasa melayang. Hubungkan setiap istilah dengan perannya: siapa yang meminta, siapa yang memproses, data apa yang berpindah, dan hasil apa yang diharapkan.
Kalau analoginya sudah terasa masuk akal, barulah lihat istilah teknisnya. Cara ini membuat materi lebih mudah dipahami daripada langsung menghafal definisi.
Saat Melihat Contoh Kode
Contoh kode pada chapter ini memakai bahasa typescript. Bacalah contoh kode sebagai ilustrasi alur, bukan sebagai bagian yang harus langsung dihafal. Zod schema jadi single source of truth: digunakan untuk prompting (deskripsikan schema ke AI) dan validasi (parse output AI). Kalau validasi gagal, retry dengan error message sebagai feedback.
Perhatikan nama fungsi, urutan langkah, dan data yang berpindah. Biasanya tiga hal itu sudah cukup untuk memahami hubungan antara teori dan praktik.
Konteks dalam Perjalanan Belajar
Setiap konsep di platform ini dipilih karena dipakai di industri. Fokus pada pemahaman, bukan hafalan.
Kamu sudah di bagian lanjutan. Mulai pikirkan bagaimana konsep ini dipakai di dunia kerja — bukan hanya untuk belajar, tapi untuk membangun produk nyata.
Gunakan pertanyaan reflektif dan prompt AI di akhir chapter sebagai latihan aktif. Membaca saja tidak cukup — kamu perlu menjelaskan ulang dengan kata-katamu sendiri.
Contoh Kode
// Function calling dengan Zod schema
import { z } from 'zod';
const UserProfileSchema = z.object({
name: z.string(),
age: z.number().min(0).max(150),
skills: z.array(z.string()),
experience: z.enum(['junior', 'mid', 'senior']),
contact: z.object({
email: z.string().email(),
phone: z.string().optional(),
}),
});
// Prompt: Extract user profile from text
// Response: structured JSON yang bisa divalidasi
const raw = await ai.generate(prompt);
const parsed = UserProfileSchema.parse(JSON.parse(raw));
// Kalau parse gagal → Zod throw error → retry atau fallbackPenjelasan Kode
Prompt AI
Minta AI mengekstrak informasi dari teks bebas (contoh: deskripsi produk, CV, artikel berita) menjadi structured JSON. Definisikan schema dengan Zod. Implementasi retry kalau parsing gagal.
Pertanyaan Reflektif
Berapa banyak kode yang kamu tulis untuk parsing output AI? (Regex, split, find, dll). Bagaimana kalau semua itu diganti dengan structured output + Zod validation?