Skema JSON dalam Prompt
Membatasi bentuk keluaran.
Skema JSON dalam Prompt adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Prompt Engineering, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Prompt Engineering mencakup 4 pelajaran total.
Skema sebagai Kontrak Output
JSON Schema secara deklaratif menjelaskan bentuk output yang valid: tipe, kunci wajib, batasan nilai, dan struktur bertingkat. Ketika dikirimkan ke API output terstruktur, skema menjadi kontrak yang tegas; ketika disematkan dalam perintah, skema menjadi panduan yang kuat.
Menguasai penulisan skema adalah keterampilan inti dalam pembuatan terstruktur.
Tanda strict Mengubah Segalanya
Dalam mode ketat, penyedia mengharuskan setiap properti dicantumkan dalam required dan additionalProperties bernilai false. Bidang opsional dinyatakan sebagai gabungan dengan null, bukan dengan menghilangkannya.
{
'type': 'object',
'properties': {
'name': {'type': 'string'},
'nickname': {'type': ['string', 'null']}
},
'required': ['name', 'nickname'],
'additionalProperties': False
}Membatasi Nilai Skalar
Masukkan validasi ke dalam skema, bukan ke pemrosesan pasca:
enumuntuk pilihan tetap.minimum/maximumuntuk rentang numerik.patternuntuk string yang divalidasi dengan regex.formatsebagai petunjuk sepertidate-timeatauemail.
{
'rating': {'type': 'integer', 'minimum': 1, 'maximum': 5},
'sku': {'type': 'string', 'pattern': '^[A-Z]{3}-[0-9]{4}$'},
'created': {'type': 'string', 'format': 'date-time'}
}Array dan Tupel
Gunakan items untuk array homogen dan tambahkan minItems/maxItems untuk membatasi panjangnya. Untuk tupel posisi, berikan array skema melalui prefixItems.
{
'tags': {
'type': 'array',
'items': {'type': 'string'},
'minItems': 1,
'maxItems': 5
}
}Gabungan Terbedakan dengan oneOf
Modelkan hasil polimorfik dengan oneOf serta bidang pembeda. Model memilih tepat satu cabang, lalu deserialisasi Anda beralih berdasarkan tag tersebut.
{
'oneOf': [
{'type': 'object', 'properties': {
'kind': {'const': 'email'},
'address': {'type': 'string', 'format': 'email'}},
'required': ['kind', 'address']},
{'type': 'object', 'properties': {
'kind': {'const': 'phone'},
'number': {'type': 'string'}},
'required': ['kind', 'number']}
]
}Membuat Skema dari Tipe
Menulis skema secara manual rentan terhadap kesalahan. Turunkan skema dari model bertipe agar skema dan kode Anda tidak pernah menyimpang.
from pydantic import BaseModel
class Invoice(BaseModel):
total: float
currency: str
paid: bool
schema = Invoice.model_json_schema()
# pass schema directly to response_formatDeskripsi Juga Merupakan Perintah
Setiap description dalam skema dibaca oleh model. Gunakan deskripsi untuk mengarahkan semantik, bukan sekadar mendokumentasikan bidang.
Misalnya, deskripsi seperti 'ISO-3166 alpha-2 country code, uppercase' secara berarti meningkatkan akurasi bidang. Perlakukan deskripsi sebagai perintah mikro yang disematkan dalam kontrak.
{
'country': {
'type': 'string',
'description': 'ISO-3166 alpha-2 code, uppercase, e.g. US, TR, DE'
}
}Menyematkan Skema dalam Perintah
Jika penyedia tidak memiliki dukungan asli, sematkan skema dalam perintah dan tuntut kesesuaian. Padukan dengan satu contoh dalam konteks serta instruksi eksplisit hanya JSON, tanpa prosa.
SYSTEM = (
'You output ONLY JSON matching this schema. No markdown, no commentary.\n'
'Schema:\n' + json.dumps(schema) + '\n'
'If a value is unknown, use null.'
)Menghindari Skema yang Membengkak
Skema yang terlalu dalam atau bercabang membingungkan model dan meningkatkan biaya token. Panduan:
- Jaga struktur bertingkat tetap dangkal; ratakan jika memungkinkan.
- Utamakan enum daripada string bebas.
- Pecah skema raksasa menjadi beberapa panggilan terfokus.
- Beberapa penyedia membatasi kedalaman struktur bertingkat dan jumlah total properti; periksa batasnya.
Referensi dan Penggunaan Ulang
Gunakan $defs dan $ref untuk menggunakan ulang subskema (misalnya, Address yang digunakan dalam penagihan dan pengiriman). Perhatikan bahwa beberapa mode ketat membatasi kedalaman rekursi, jadi pastikan dukungannya sebelum mengandalkan referensi yang merujuk pada dirinya sendiri.
{
'$defs': {
'Address': {'type': 'object', 'properties': {
'city': {'type': 'string'}}, 'required': ['city'],
'additionalProperties': False}
},
'type': 'object',
'properties': {
'billing': {'$ref': '#/$defs/Address'},
'shipping': {'$ref': '#/$defs/Address'}
},
'required': ['billing', 'shipping'],
'additionalProperties': False
}Validasi Skemanya Sendiri
Satu kelas bug yang sulit terlihat: skema yang tidak terbentuk dengan benar, bukan outputnya. Lakukan lint dan validasi skema dalam CI terhadap metaschema JSON Schema, lalu lakukan perjalanan pulang-pergi pada objek contoh melalui validator Anda sebelum merilisnya.
import jsonschema
jsonschema.Draft202012Validator.check_schema(schema)
# also: validate a known-good sample
jsonschema.validate(sample_obj, schema)Pemeriksaan Singkat
Dalam mode JSON Schema ketat milik penyedia, bagaimana bidang opsional dinyatakan dengan benar?
Ringkasan
Sekarang Anda dapat menulis skema yang tepat:
- mode ketat mengharuskan semua bidang wajib serta additionalProperties bernilai false.
- Batasi skalar dengan enum, rentang, pattern, dan format.
- Modelkan polimorfisme dengan pembeda oneOf.
- Buat skema dari model bertipe; perlakukan deskripsi sebagai perintah mikro.
- Validasi skemanya sendiri dalam CI.
Berikutnya: menerapkan skema pada pemanggilan alat dan fungsi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Skema JSON dalam Prompt” gratis?
Ya — teks lengkap “Skema JSON dalam Prompt” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Prompt Engineering, upgrade ke CoddyKit PRO. Kursus AI Prompt Engineering mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Skema JSON dalam Prompt”?
Membatasi bentuk keluaran. Kamu berlatih AI Prompt Engineering dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Prompt Engineering?
Tidak diperlukan pengalaman sebelumnya. AI Prompt Engineering di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Skema JSON dalam Prompt” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Prompt Engineering ini?
Ya. Setiap pelajaran AI Prompt Engineering menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Mengapa Keluaran Terstruktur
- Skema JSON dalam Prompt
- Skema Alat/Fungsi
- Siklus Perbaikan dan Validasi