Panduan output terstruktur JSON
Panduan output terstruktur JSON
Semua angka tentang JSON structured output guide di halaman ini diverifikasi langsung terhadap HuggingFace API dan config.json asli dari repositori terkait, disampel November 2026. Tidak ada skor benchmark, harga, atau nama repositori yang dikarang; apa pun yang tidak bisa dibuktikan config ditandai sebagai perlu diukur sendiri.
Ringkasan 30 detik
Di EXAIV, katalog /models waktu nyata adalah acuan: saat ini hanya kimi-k3 yang dapat dipanggil, lewat endpoint kompatibel OpenAI di https://exaiv.com/api/ai/v1. Integrasi hanya me
Spesifikasi terverifikasi
response_format | Behavior | When to use |
|---|---|---|
{"type": "text"} | Plain text (default) | Free-form answers, prose, chat |
{"type": "json_object"} | The output must be valid JSON | Quick win when you do not need a fixed shape |
{"type": "json_schema"} | The output must match your schema | Anything feeding a parser |
Reference table
| Check | Why |
|---|---|
content is not None | A refusal may leave the content empty |
| The string parses as JSON | Defensive; costs nothing |
| The parsed object matches your business rules | The schema permits values you may not want |
finish_reason is stop | length means the output was cut off |
| Required fields are meaningful, not just present | {"verdict": ""} satisfies a string schema |
Reference table
| Symptom | Likely cause | Response |
|---|---|---|
| Empty content | The request was refused or filtered | Inspect the finish reason and the raw body; handle as a refusal |
| Truncated JSON | The output hit max_tokens | Raise the limit, or shorten the requested content |
| Wrong shape despite the schema | A model that does not support the constraint | Fall back to json_object, or parse defensively |
| Schema rejected at request time | Strict-mode requirements not met | Read the error body; fix additionalProperties and required |
| Hallucinated values | The schema permits them | Add an enum, a format, or a validation rule |
Reference table
| Structured output | Tool calling | |
|---|---|---|
| Purpose | Return data | Perform an action |
| Output | JSON matching a schema | A call with arguments |
| The model chooses | Only whether to comply | Which tool, and with what arguments |
| Best for | Extraction, classification, summaries | Lookups, actions, multi-step work |
Reference table
| Situation | Use |
|---|---|
| A fixed set of fields you always need | json_schema with a strict schema |
| Free-form JSON where the shape can vary | json_object |
| A short answer that should stay prose | text |
Apa yang bisa dibuktikan angka
Pemisahan fakta dan klaim paling penting untuk bahasa multimodal. vision_config dan image_placeholder pada config resmi hanya membuktikan arsitektur conditional generation yang mampu menerima gambar; keduanya tidak dengan sendirinya membuktikan pembuatan video, format permintaan tertentu, atau skor benchmark apa pun. Tag image-text-to-text dari HuggingFace menjelaskan arah masukan. Selalu jadikan model card resmi sebagai sumber terakhir.
Configuration and error handling
Perencanaan memori untuk MoE triliunan parameter memakai aturan yang sama: komputasi mengikuti parameter aktif, memori mengikuti total parameter. Model 1T pada 4-bit masih butuh sekitar 500GB hanya untuk bobot, dan versi 2.78T lebih besar lagi, sehingga ini beban server multi-GPU bukan satu kartu konsumen. Untuk satu kartu, lihat keluarga ringan. Jalur lokal adalah vLLM atau SGLang dengan bobot resmi, dan konversi komunitas perlu dicek sumber serta label kuantisasinya dulu.
Batas penggunaan
Di EXAIV, katalog /models waktu nyata adalah acuan: saat ini hanya kimi-k3 yang dapat dipanggil, lewat endpoint kompatibel OpenAI di https://exaiv.com/api/ai/v1. Integrasi hanya mengubah base_url, api_key, dan model; streaming serta tool calling tetap memakai format OpenAI standar. Harga selalu mengikuti halaman /pricing dan tidak ditulis mati di sini. Simpan log berisi ID model, jumlah token, dan latensi agar penggantian model belakangan punya baseline yang sama.
Penanganan error yang sering muncul
Gejala pertama adalah 401 Unauthorized, hampir selalu karena kunci kedaluwarsa, header salah, atau lupa prefiks Bearer; ambil nilai terbaru dari konsol lalu uji dengan permintaan pendek sebelum mencurigai model. Berikutnya adalah 404 atau pesan model tidak ditemukan, yang berarti ID yang dikirim tidak ada di katalog saat itu; buka halaman /models untuk melihat nama sebenarnya lalu perbaiki kolom model. Kode 429 adalah pembatasan laju, jadi tambahkan exponential backoff dan pisahkan permintaan yang aman diulang dari yang tidak boleh diulang
Untuk streaming, ingat bahwa hasilnya datang berupa potongan, bukan teks utuh; pihak client harus menggabungkan potongan itu dan menangani kasus chunk terakhir tanpa content. Untuk tool calling, pakai format OpenAI persis; jika alat tidak dipanggil, penyebabnya biasanya deskripsi fungsi yang kurang jelas atau system prompt yang belum mengizinkan penggunaan alat, bukan keterbatasan model
Biaya, kuota, dan catatan penting
Panggilan dihitung dari jumlah token masukan dan keluaran, bukan dari jumlah request, sehingga memasukkan seluruh dokumen panjang setiap kali akan menaikkan biaya dengan cepat. Cara yang disarankan adalah memotong atau merangkum bagian yang tidak relevan sebelum mengirim, dan mengaktifkan streaming hanya di tempat pengguna memang perlu melihat hasil segera. Harga serta paket kredit yang berlaku selalu lihat di halaman /pricing karena angka dalam artikel mana pun bisa menjadi usang
Sebaiknya simpan cache hasil untuk pertanyaan yang berulang, serta catat log berisi ID model, jumlah token, dan waktu respons sebagai dataset untuk rekonsiliasi kemudian. Ketika mengganti model dari kimi-k3 ke glm-5.3-flash atau sebaliknya, jalankan ulang kumpulan uji yang sama karena perilaku pemanggilan alat dan panjang jawaban berbeda, meski format permintaannya identik
Daftar periksa sebelum produksi
Tiga hal yang paling sering terlewat saat berpindah dari uji coba ke pemakaian harian.
Pertama, simpan versi berkas GGUF beserta tanggal konversinya. Komunitas terus merilis perbaikan konversi, dan tanpa catatan itu Anda tidak akan bisa kembali ke versi yang sudah terbukti stabil ketika rilis baru ternyata menurunkan kualitas. Catat juga nama penerbit, karena dua berkas dengan nama Q4_K_M dari penerbit berbeda bukanlah barang yang sama.
Kedua, ukur pemakaian memori pada beban nyata, bukan hanya dari rumus. Angka hasil perhitungan adalah perkiraan; pada beban sesungguhnya memori sering naik karena buffer tambahan, antrean batch, dan konteks yang lebih panjang dari dugaan. Jalankan tiga kali dengan prompt yang sama, ambil nilai tengah, dan simpan angka puncak dari nvidia-smi sebagai patokan.
Ketiga, siapkan jalur cadangan. Untuk layanan internal, sediakan model ringan lain yang bisa mengambil alih saat hy4 sedang sibuk atau sedang dimuat ulang. Lapisan routing sederhana ini biasanya jauh lebih murah daripada memaksa satu model menanggung seluruh lalu lintas, dan sekaligus memberi ruang untuk menguji kuantisasi baru tanpa menghentikan layanan.
Selain tiga hal itu, biasakan memeriksa templat percakapan setiap kali mengganti versi model. Templat yang tidak cocok tetap menghasilkan token yang terlihat lancar tetapi jawabannya melenceng, dan gejalanya sering salah didiagnosis sebagai bobot yang rusak. Menyimpan templat bersama berkas GGUF di satu folder yang sama membuat proses ini jauh lebih mudah diaudit.
Catatan istilah dan satuan
Beberapa istilah dalam panduan ini sering tertukar, jadi ada baiknya disamakan sejak awal. Parameter total adalah seluruh bobot yang harus dimuat ke memori, sedangkan parameter aktif adalah bagian yang ikut menghitung setiap token; pada model MoE keduanya bisa berbeda satu orde besaran. KV cache adalah memori tambahan yang tumbuh linear mengikuti panjang konteks, bukan mengikuti jumlah parameter. Quantization adalah proses menurunkan presisi bobot agar berkas lebih kecil, bukan proses memperkecil jumlah parameter.
Satuan yang dipakai: GB di sini adalah ukuran berkas hasil pengukuran pada repositori, sehingga angkanya bisa sedikit berbeza dari hasil perkalian parameter dengan byte per parameter karena ada metadata dan sebagian lapisan yang tetap disimpan pada presisi lebih tinggi. Token adalah satuan teks yang diproses model, dan satu token bahasa Inggris rata-rata sekitar empat karakter, sementara satu karakter Cina biasanya mendekati satu token. Semua angka unduhan yang disebut adalah penghitung publik 30 hari dari HuggingFace, bukan jumlah pengguna aktif.
Terakhir, bedakan nama berat di HuggingFace dengan ID model di katalog platform. Nama berat dipakai saat mengunduh dan memuat model secara lokal; ID katalog dipakai saat memanggil API. Keduanya adalah dua sistem penamaan yang berbeda, dan mencampurnya adalah sumber kesalahan yang paling sering muncul saat pertama kali menghubungkan model lokal ke aplikasi yang sudah ada.
Catatan tambahan: simpan juga konfigurasi batch dan panjang konteks yang dipakai saat pengukuran, karena keduanya menggerakkan jejak memori lebih jauh daripada pertukaran tingkat kuantisasi mana pun. Dengan begitu setiap perubahan di kemudian hari punya angka pembanding yang adil.
FAQ
ID model mana yang dipakai di EXAIV?
Apakah angka di artikel terverifikasi?
Apakah config membuktikan pembuatan video?
Haruskah ganti SDK?
Di mana cek harga?
Bisakah pakai bobot lokal?
Bacaan lanjutan
- Kimi K3 API guide — first API call
- GLM family overview — callable catalog
- Claude Code third-party models — support boundary
- pricing — live credit packs
Sumber data
Data parameter dan file disampel November 2026 dan dapat berubah.
Istilah dan daftar periksa sebelum produksi
Total parameter, parameter aktif, dan KV cache adalah tiga besaran berbeda. Total parameter adalah seluruh bobot yang harus dimuat ke memori; parameter aktif adalah bagian yang menghitung satu token. KV cache adalah memori sementara yang tumbuh linear mengikuti panjang konteks, sehingga jendela 1M adalah batas atas bukan default gratis. Quantization menurunkan presisi bobot yang disimpan agar berkas mengecil, bukan mengurangi jumlah parameter. vision_config dalam config.json menjelaskan arsitektur, bukan format permintaan yang boleh Anda karang sendiri.
Sebelum membawa apa pun yang dibangun dari catatan ini ke produksi, jalankan enam pemeriksaan. Baca ulang angka dari sumber langsung pada hari Anda menerbitkan karena penghitung unduhan berubah setiap minggu. Buka katalog /models waktu nyata dan pastikan ID yang akan dipanggil masih ada. Buka /pricing daripada menyalin harga ke aplikasi. Jangan pernah menulis request body secara permanen sebelum memvalidasinya terhadap referensi resmi. Catat ID model, jumlah token masukan keluaran, dan latensi pada satu kumpulan prompt representatif lalu pertahankan kumpulan itu agar penggantian model belakangan menghasilkan bacaan yang sebanding. Baca lisensi pada model card sebelum penggunaan komersial karena syarat vendor bukanlah default yang permisif. Tambahkan exponential backoff untuk permintaan yang aman diulang, tetapkan timeout, dan catat log menurut kelas error agar 401, 404, dan 429 tidak pernah diperlakukan sama. Sediakan juga jalur rotasi kunci: jangan simpan key di repository, dan siapkan rencana rollback saat berpindah ke sistem manajemen kunci. Jika model dapat dimuat tetapi keluaran kacau, curigai templat percakapan sebelum menyalahkan bobot; simpan templat berdampingan dengan bobot agar keduanya mudah diaudit. Kebiasaan ini hanya butuh beberapa menit namun mencegah kelas laporan bug keliru yang paling sering muncul.