0Pricing
AI Prompt Engineering · Pelajaran

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:

  • enum untuk pilihan tetap.
  • minimum/maximum untuk rentang numerik.
  • pattern untuk string yang divalidasi dengan regex.
  • format sebagai petunjuk seperti date-time atau email.
{
  '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_format

Deskripsi 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

  1. Mengapa Keluaran Terstruktur
  2. Skema JSON dalam Prompt
  3. Skema Alat/Fungsi
  4. Siklus Perbaikan dan Validasi
← Kembali ke AI Prompt Engineering