Output Terstruktur
Output Terstruktur membuat model mengembalikan data sesuai format JSON yang Anda tentukan, cocok untuk ekstraksi data, pelabelan klasifikasi, pengisian formulir, dan skenario lainnya.
JSON Mode#
Cara Output Terstruktur yang paling sederhana adalah memaksa model mengembalikan JSON yang valid:
Python
from openai import OpenAI
client = OpenAI(
base_url="https://as.apinoma.com/v1",
api_key="<APINOMA_API_KEY_ANDA>"
)
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "system", "content": "Anda adalah asisten ekstraksi data. Kembalikan hasil dalam format JSON."},
{"role": "user", "content": "Ekstrak nama orang, perusahaan, dan jabatan dari teks berikut: Budi adalah insinyur senior di Tokopedia"}
],
response_format={"type": "json_object"}
)
import json
result = json.loads(response.choices[0].message.content)
print(result)
# {"name": "Budi", "company": "Tokopedia", "title": "Insinyur senior"}TypeScript
Saat menggunakan JSON Mode, system prompt harus memuat kata kunci “JSON”; jika tidak, sebagian model mungkin mengabaikan persyaratan format.
Batasan JSON Schema#
Kontrol struktur output dengan lebih presisi, agar nama field dan tipe sesuai harapan:
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[
{"role": "user", "content": "Analisis sentimen ulasan pengguna ini: Produk ini luar biasa dan sangat mudah digunakan!"}
],
response_format={
"type": "json_schema",
"json_schema": {
"name": "sentiment_analysis",
"schema": {
"type": "object",
"properties": {
"sentiment": {
"type": "string",
"enum": ["positive", "negative", "neutral"],
"description": "Kecenderungan sentimen"
},
"confidence": {
"type": "number",
"description": "Skor kepercayaan 0-1"
},
"keywords": {
"type": "array",
"items": {"type": "string"},
"description": "Kata sentimen utama"
}
},
"required": ["sentiment", "confidence", "keywords"],
"additionalProperties": False
}
}
}
)Output:
Skenario Aplikasi Nyata#
Ekstraksi Data
# Ekstrak data terstruktur dari teks tidak terstruktur
response = client.chat.completions.create(
model="openai/gpt-4o",
messages=[{
"role": "user",
"content": """Ekstrak informasi pesanan berikut:
Pelanggan Andi memesan 3 unit MacBook Pro pada 15 Januari 2025,
harga satuan 18.999, alamat pengiriman Jl. Sudirman No. 123, Jakarta"""
}],
response_format={
"type": "json_schema",
"json_schema": {
"name": "order_info",
"schema": {
"type": "object",
"properties": {
"customer": {"type": "string"},
"date": {"type": "string"},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"quantity": {"type": "integer"},
"unit_price": {"type": "number"}
}
}
},
"address": {"type": "string"}
},
"required": ["customer", "date", "items", "address"]
}
}
}
)Pelabelan Klasifikasi
Model yang Didukung#
Model
JSON Mode
JSON Schema
`openai/gpt-4o`
✅
✅
`openai/gpt-4o-mini`
✅
✅
`anthropic/claude-sonnet-4.6`
✅
—
`google/gemini-pro-compatible-flash-lite-preview`
✅
✅
Model yang tidak mendukung JSON Schema dapat mencapai efek serupa dengan menjelaskan format JSON yang diharapkan secara rinci di system prompt.
Terakhir diperbarui pada 23 Juni 2026