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", ...}denganstrict: true: model mengisi schema persis seperti yang Anda berikan. Didukung oleh GPT-5.x dan model yang kompatibel.- Forced tool call (
toolsditambahtool_choiceyang 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.
| Model | Mode JSON | Tool calling | Harga |
|---|---|---|---|
| GPT-6 Luna | ya | ya | $0.0055 input · $0.0274 output per 1 juta token |
| GPT-6 Sol | ya | ya | $0.1096 input · $0.548 output per 1 juta token |
| GPT-6 Astra | tidak | ya | $0.548 input · $2.7398 output per 1 juta token |
| GPT-5.6 Sol (juga Luna, Terra) | ya | ya | $0.0667 input · $0.40 output per 1 juta token |
| Claude Opus 5.5 | ya | ya | $0.1067 input · $0.5334 output per 1 juta token |
| Claude Sonnet 5 | ya | ya | $0.3334 input · $1.6667 output per 1 juta token |
| Gemini 3.1 Pro | ya | ya | $0.2515 input · $1.5086 output per 1 juta token |
| Gemini 3.8 Flash (juga 3.7 Flash) | tidak | ya | $0.0097 input · $0.0483 output per 1 juta token |
| DeepSeek V4.1 Flash | ya | ya | $0.0112 input · $0.0445 output per 1 juta token |
| Qwen3.8 Max (juga 3.8 Flash) | ya | ya | $0.1543 input · $0.4629 output per 1 juta token |
| Kimi K3 | ya | ya | $0.1715 input · $0.8572 output per 1 juta token |
| MiniMax M3 | ya | ya | $0.0148 input · $0.0591 output per 1 juta token |
| Tencent Hy4 Preview | ya | ya | $0.0334 input · $0.1001 output per 1 juta token |
| GLM-5.3 (juga 5.3 Flash, 5.2) | tidak | ya | $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.
