Materi
Aplikasi butuh data, bukan paragraf: nama pelanggan, jumlah barang, kategori keluhan. Caranya meminta model menjawab dalam format JSON yang ditentukan. Halaman Structured outputs Anthropic mendaftar masalah yang tetap muncul tanpa fitur khusus: JSON yang gagal diurai, field wajib yang hilang, dan tipe yang tidak konsisten. Dengan fitur keluaran terstruktur pun, halaman yang sama menyebut keluaran bisa tidak sesuai skema bila model menolak atau terpotong max_tokens, dan batasan angka seperti minimum tidak didukung. Pemeriksaan akhir tetap tugas kodemu.
Langkah pertama mengurai teks dengan json.loads. Teks yang bukan JSON sah membuat fungsi itu melempar json.JSONDecodeError, turunan ValueError. Model kadang menambahkan kalimat pembuka atau pagar kode di sekitar objeknya, jadi ambil dulu teks dari kurung kurawal pertama sampai terakhir, dan tolak hasil urai yang bukan dict.
import json
teks = 'Tentu! {"kota": "Padang", "berat_kg": 2.5}'
objek = teks[teks.find("{"): teks.rfind("}") + 1]
try:
data = json.loads(objek)
except json.JSONDecodeError as e:
print("bukan JSON sah:", e.msg)
print(isinstance(True, int)) # True <- bool lolos pemeriksaan int
print(isinstance(2.5, float)) # TrueLangkah kedua memeriksa isinya: setiap kunci wajib ada, tidak ada kunci asing, tipenya benar, nilai pilihan termasuk daftar yang diizinkan, dan angkanya di dalam rentang. Kumpulkan semua galat dalam satu list, karena list itu nanti dikirim balik ke model. Sintaks JSON ada di kelas Berkas, Format, dan Data yang Rapi; JSON Schema formal di kelas Pengujian Kontrak API.