Tema
Bahasa
·3 mnt baca

Mode JSON dan output terstruktur: model mana yang mendukung apa

Matriks per model tentang mode JSON di GetVibe API, perbedaan antara json_object dan json_schema, serta solusi cadangan yang berfungsi pada setiap model: pemanggilan tool paksa.

Mode JSON dan output terstruktur: model mana yang mendukung apa

Jika kode Anda mengurai jawaban model, Anda memerlukan JSON yang dapat diurai pada setiap pemanggilan. Ada tiga cara untuk mendapatkannya di GetVibe API: mode json_object, mode json_schema ketat, dan forced tool call. Model berbeda dalam hal dukungan terhadap masing-masing opsi ini. Artikel ini menyajikan matriks dari katalog kami dan menunjukkan pendekatan yang tepat untuk setiap kasus.

Tiga pendekatan

  • response_format: {"type": "json_object"}: model mengembalikan JSON yang valid. Anda menjelaskan field-nya di dalam prompt.
  • response_format: {"type": "json_schema", ...} dengan strict: true: model mengisi schema persis seperti yang Anda berikan. Didukung oleh GPT-5.x dan model yang kompatibel.
  • Forced tool call (tools ditambah tool_choice yang menyebutkan satu fungsi): model mengembalikan argumen fungsi sebagai JSON yang sesuai dengan schema parameter fungsi tersebut. Semua model teks dalam katalog kami mendukung tool calling, sehingga ini adalah opsi yang portabel.

Matriks

Kolom mode JSON adalah caps.jsonMode dari https://getvibeapi.com/api/catalog, dibaca pada 25 September 2026.

ModelMode JSONTool callingHarga
GPT-6 Lunayaya$0.0055 input · $0.0274 output per 1 juta token
GPT-6 Solyaya$0.1096 input · $0.548 output per 1 juta token
GPT-6 Astratidakya$0.548 input · $2.7398 output per 1 juta token
GPT-5.6 Sol (juga Luna, Terra)yaya$0.0667 input · $0.40 output per 1 juta token
Claude Opus 5.5yaya$0.1067 input · $0.5334 output per 1 juta token
Claude Sonnet 5yaya$0.3334 input · $1.6667 output per 1 juta token
Gemini 3.1 Proyaya$0.2515 input · $1.5086 output per 1 juta token
Gemini 3.8 Flash (juga 3.7 Flash)tidakya$0.0097 input · $0.0483 output per 1 juta token
DeepSeek V4.1 Flashyaya$0.0112 input · $0.0445 output per 1 juta token
Qwen3.8 Max (juga 3.8 Flash)yaya$0.1543 input · $0.4629 output per 1 juta token
Kimi K3yaya$0.1715 input · $0.8572 output per 1 juta token
MiniMax M3yaya$0.0148 input · $0.0591 output per 1 juta token
Tencent Hy4 Previewyaya$0.0334 input · $0.1001 output per 1 juta token
GLM-5.3 (juga 5.3 Flash, 5.2)tidakya$0.10 input · $0.3143 output per 1 juta token

Untuk model yang ditandai "tidak", gunakan forced tool call, atau jelaskan JSON di dalam prompt dan validasikan di sisi Anda.

Fungsi mode ketat di sisi kami

Dengan strict: true dalam request json_schema, gateway hanya merutekan request ke varian model yang benar-benar mematuhi schema. Hal ini dilakukan pada setiap percobaan, termasuk saat beralih ke backup. Jika tidak ada varian yang sesuai, Anda akan mendapatkan error eksplisit structured_output_unsupported, bukan teks biasa saat JSON diharapkan. Perlindungan ini didasarkan pada pengukuran kami dan hanya mencakup varian yang telah kami ukur.

Satu kasus yang perlu diketahui: API milik DeepSeek sendiri tidak memiliki mode json_schema. Untuk model DeepSeek, gunakan json_object, atau forced tool call jika Anda memerlukan satu bentuk yang persis.

Contoh

Schema ketat:

from openai import OpenAI
import json

client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...")
schema = {
    "type": "object",
    "properties": {"name": {"type": "string"}, "score": {"type": "number"}},
    "required": ["name", "score"],
    "additionalProperties": False,
}
resp = client.chat.completions.create(
    model="gpt-6-luna",
    response_format={"type": "json_schema",
                     "json_schema": {"name": "review", "strict": True, "schema": schema}},
    messages=[{"role": "user", "content": "Nilai produk ini: pengiriman cepat, kemasan rapi"}],
)
print(json.loads(resp.choices[0].message.content))

Forced tool call, yang berfungsi pada model tanpa mode JSON:

resp = client.chat.completions.create(
    model="gemini-3.8-flash",
    tools=[{"type": "function", "function": {"name": "save_review", "parameters": schema}}],
    tool_choice={"type": "function", "function": {"name": "save_review"}},
    messages=[{"role": "user", "content": "Nilai produk ini: pengiriman cepat, kemasan rapi"}],
)
args = json.loads(resp.choices[0].message.tool_calls[0].function.arguments)

Selalu lakukan validasi

Bahkan saat mode JSON aktif, periksa objek yang telah diurai terhadap schema Anda sebelum menggunakannya, dan lakukan retry jika validasi gagal. Hal ini paling penting pada output yang panjang, ketika respons yang terhenti di max_tokens menghasilkan JSON yang terpotong. Periksa finish_reason: length berarti jawaban terhenti terlalu cepat.

Langkah berikutnya

Baca dokumentasi structured outputs dan panduan tool calling, atau temukan model berkemampuan JSON berbiaya rendah dalam daftar LLM API termurah kami.

mode JSONoutput terstrukturresponse_format json_schemaoutput JSON LLMjson_object vs json_schemafunction calling JSON

Coba GetVibe API secara gratis

GPT, Claude, Gemini, dan lainnya melalui satu API yang kompatibel dengan OpenAI. Bayar dalam USD dengan kartu atau kripto.

Artikel terkait

Mode JSON dan output terstruktur: model mana yang mendukung apa | GetVibe API