Validator Skema dan Aturan
Menegakkan batasan.
Validator Skema dan Aturan adalah pelajaran AI Prompt Engineering gratis di CoddyKit. Ini adalah pelajaran 3 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.
Pemeriksa Menegakkan Kontrak
Pemeriksa adalah pagar pengaman yang memeriksa keluaran berdasarkan spesifikasi eksplisit: JSON Schema, sekumpulan aturan bisnis, atau keduanya. Tidak seperti pengklasifikasi moderasi, pemeriksa bersifat deterministik dan sepenuhnya dapat diaudit; masukan yang sama selalu menghasilkan keputusan yang sama.
Lapisan Validasi Skema
Pemeriksa pertama memastikan keluaran sesuai dengan kontrak struktural. Kumpulkan semua kesalahan, bukan hanya yang pertama, agar umpan balik perbaikan lengkap.
import jsonschema
def schema_errors(obj, schema):
v = jsonschema.Draft202012Validator(schema)
return [f"{list(e.path) or 'root'}: {e.message}"
for e in v.iter_errors(obj)]Melampaui Skema: Aturan Bisnis
Skema tidak dapat menyatakan semuanya. Skema dapat menyatakan bahwa discount adalah angka, tetapi tidak bahwa nilainya tidak boleh melebihi subtotal. Pemeriksa aturan menyandikan invarian lintas kolom dan domain ini dalam kode.
RULES = [
('discount_le_subtotal', lambda o: o['discount'] <= o['subtotal']),
('total_consistent', lambda o: o['total'] == o['subtotal'] - o['discount']),
('currency_supported', lambda o: o['currency'] in SUPPORTED)
]
def rule_errors(o):
return [name for name, fn in RULES if not fn(o)]Model Bertipe sebagai Pemeriksa
Pustaka model bertipe (misalnya, Pydantic) berfungsi ganda sebagai pembuat skema dan pemeriksa, dengan pemeriksa khusus untuk aturan. Kegagalan penguraian adalah keputusannya.
from pydantic import BaseModel, field_validator
class Order(BaseModel):
subtotal: float
discount: float
total: float
@field_validator('discount')
@classmethod
def discount_ok(cls, v, info):
if v < 0:
raise ValueError('discount must be non-negative')
return vPemeriksaan Grounding dan Sitasi
Untuk keluaran RAG, validasikan bahwa klaim didukung oleh konteks yang diberikan. Wajibkan model mencantumkan id sumber, lalu verifikasi bahwa setiap id yang dicantumkan memang ada dan rentang kutipan benar-benar muncul dalam sumber. Tolak jawaban yang mencantumkan sumber yang tidak ada atau dibuat-buat.
def citations_valid(answer, sources):
for cite in answer['citations']:
if cite['source_id'] not in sources:
return False
if cite['quote'] not in sources[cite['source_id']]:
return False
return TruePemeriksaan Referensial dan Lintas Sistem
Beberapa aturan memerlukan pencarian eksternal: apakah id pesanan yang dirujuk ada, apakah produk tersedia, apakah tanggal berada dalam rentang yang valid? Pemeriksa ini mengakses sistem Anda. Pastikan prosesnya cepat (gunakan tembolok dan pemrosesan batch) karena pemeriksa berada di jalur respons.
def order_exists(o):
return db.exists('SELECT 1 FROM orders WHERE id = %s', o['order_id'])Keputusan Berlabel Tingkat Keparahan
Tidak semua pelanggaran memiliki tingkat yang sama. Beri label tingkat keparahan pada setiap aturan agar alur dapat memilih tindakan yang tepat: blokir tegas pelanggaran kritis, buat ulang keluaran untuk masalah kualitas, dan lanjutkan dengan peringatan untuk masalah kecil.
RULE_SEVERITY = {
'discount_le_subtotal': 'critical',
'total_consistent': 'critical',
'tone_professional': 'warning'
}Susun Pemeriksa secara Berurutan
Jalankan pemeriksa dari yang paling murah dan hentikan segera saat terjadi kegagalan tegas: skema, lalu aturan dalam memori, kemudian pencarian eksternal, dan terakhir pemeriksaan oleh penilai berbasis model. Ini meminimalkan biaya pada jalur penolakan yang umum.
def validate_all(obj):
errs = schema_errors(obj, SCHEMA)
if errs: return Reject(errs, 'critical')
errs = rule_errors(obj)
if errs: return Reject(errs, max_severity(errs))
if not order_exists(obj): return Reject(['order_id'], 'critical')
return Accept()Pemeriksa Menghasilkan Umpan Balik Perbaikan
Nilai pemeriksa meningkat berlipat ketika pesannya menjadi masukan bagi putaran perbaikan. Hasilkan kesalahan yang dapat ditindaklanjuti mesin, lengkap dengan jalur kolom, aturan yang gagal, dan nilai yang bermasalah agar model dapat memperbaikinya secara tepat dalam satu putaran.
{'errors': [
{'path': 'discount', 'rule': 'discount_le_subtotal',
'got': 120, 'limit': 100}
]}Uji Pemeriksa Itu Sendiri
Pemeriksa yang bermasalah dapat secara diam-diam meloloskan keluaran buruk atau memblokir keluaran baik. Uji setiap aturan dengan kasus uji positif dan negatif, lalu tambahkan pengujian berbasis properti untuk invarian numerik. Rangkaian pengujian pemeriksa adalah kode yang sangat penting bagi produksi, bukan skrip.
def test_discount_rule():
assert rule_errors({'discount':10,'subtotal':100,'total':90}) == []
assert 'discount_le_subtotal' in rule_errors(
{'discount':120,'subtotal':100,'total':-20})Pemeriksa vs Penguraian Terkendala
Penguraian terkendala mencegah kesalahan struktural saat pembuatan, tetapi tidak dapat menegakkan semantik (karena tidak mengetahui aturan bisnis Anda). Pemeriksa menangkap pelanggaran semantik setelahnya. Gunakan keduanya: penguraian untuk bentuk, pemeriksa untuk makna, dan putaran perbaikan untuk menyelaraskannya.
Pemeriksaan Singkat
JSON Schema menandai discount dan subtotal sebagai angka. Model mengembalikan discount 120 dengan subtotal 100. Lapisan mana yang seharusnya menangkap hal ini?
Rangkuman
Pemeriksa skema dan aturan:
- Validasi skema mencakup struktur; pemeriksa aturan mencakup semantik.
- Model bertipe membuat skema dan melakukan validasi di satu tempat.
- Tambahkan pemeriksaan grounding, sitasi, dan referensial untuk RAG serta alur data.
- Beri label tingkat keparahan, susun dari yang paling murah, dan berikan kesalahan perbaikan yang tepat.
- Uji pemeriksa sebagai kode yang sangat penting bagi produksi.
Berikutnya: validasi kritik mandiri, saat model memeriksa keluarannya sendiri.
Belajar AI Prompt Engineering dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 53
- Pelajaran
- 199
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Validator Skema dan Aturan” gratis?
Ya — teks lengkap “Validator Skema dan Aturan” 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 “Validator Skema dan Aturan”?
Menegakkan batasan. 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 3 dari 4.
Berapa lama pelajaran “Validator Skema dan Aturan” 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
- Apa Itu Guardrail
- Pemfilteran Masukan dan Keluaran
- Validator Skema dan Aturan
- Validasi Kritik Diri