0Pricing
AI Prompt Engineering · Lekcja

Walidatory schematów i reguł

Wymuszanie ograniczeń

Walidatory schematów i reguł to bezpłatna lekcja AI Prompt Engineering na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Prompt Engineering, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Walidatory egzekwują kontrakt

Walidator to mechanizm ochronny, który sprawdza dane wyjściowe względem jawnej specyfikacji: JSON Schema, zestawu reguł biznesowych albo obu tych elementów. W przeciwieństwie do klasyfikatora moderacyjnego walidator jest deterministyczny i w pełni audytowalny — te same dane wejściowe zawsze dają ten sam werdykt.

Warstwa walidacji schematu

Pierwszy walidator potwierdza, że dane wyjściowe spełniają kontrakt strukturalny. Należy zebrać wszystkie błędy, a nie tylko pierwszy, aby informacje zwrotne potrzebne do naprawy były kompletne.

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)]

Poza schematem: reguły biznesowe

Schematy nie pozwalają wyrazić wszystkiego. Schemat może określać, że discount jest liczbą, ale nie że nie może przekraczać wartości subtotal. Walidatory reguł kodują te niezmienniki między polami i niezmienniki domenowe.

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)]

Modele typowane jako walidatory

Biblioteka modeli typowanych (np. Pydantic) pełni jednocześnie funkcję generatora schematów i walidatora, a także obsługuje niestandardowe walidatory reguł. Niepowodzenie parsowania jest werdyktem.

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 v

Walidatory ugruntowania i cytowań

W przypadku danych wyjściowych RAG należy sprawdzać, czy twierdzenia są poparte dostarczonym kontekstem. Należy wymagać od modelu podawania identyfikatorów źródeł, a następnie weryfikować, czy każdy przytoczony identyfikator istnieje oraz czy cytowane fragmenty rzeczywiście występują w źródle. Należy odrzucać odpowiedzi, które odwołują się do brakujących lub zmyślonych źródeł.

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 True

Kontrole referencyjne i między systemami

Niektóre reguły wymagają wyszukiwania w zewnętrznych systemach: czy przywołany identyfikator zamówienia istnieje, czy produkt jest dostępny, czy data mieści się w prawidłowym przedziale? Te walidatory odpytują Państwa systemy. Należy zadbać o ich szybkość (buforowanie, przetwarzanie wsadowe), ponieważ znajdują się na ścieżce obsługi odpowiedzi.

def order_exists(o):
    return db.exists('SELECT 1 FROM orders WHERE id = %s', o['order_id'])

Werdykty z oznaczeniem ważności

Nie wszystkie naruszenia mają taką samą wagę. Każdej regule należy przypisać poziom ważności, aby potok mógł wybrać właściwe działanie: całkowicie blokować krytyczne naruszenia, ponawiać generowanie w przypadku problemów jakościowych, a drobne naruszenia przepuszczać z ostrzeżeniem.

RULE_SEVERITY = {
  'discount_le_subtotal': 'critical',
  'total_consistent': 'critical',
  'tone_professional': 'warning'
}

Komponowanie walidatorów w odpowiedniej kolejności

Walidatory należy uruchamiać od najtańszych i przerywać działanie po krytycznych błędach: najpierw schemat, następnie reguły działające w pamięci, potem wyszukiwania zewnętrzne, a na końcu ewentualne kontrole wykonywane przez model oceniający. Minimalizuje to koszty na typowej ścieżce odrzucenia.

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()

Walidatory napędzają informacje zwrotne potrzebne do naprawy

Wartość walidatora rośnie wielokrotnie, gdy jego komunikaty zasilają pętlę naprawczą. Należy generować błędy możliwe do przetworzenia przez maszynę, zawierające ścieżkę pola, niespełnioną regułę i nieprawidłową wartość, aby model mógł precyzyjnie naprawić problem w jednej iteracji.

{'errors': [
  {'path': 'discount', 'rule': 'discount_le_subtotal',
   'got': 120, 'limit': 100}
]}

Testowanie samych walidatorów

Błędny walidator może po cichu przepuszczać nieprawidłowe dane wyjściowe albo blokować prawidłowe. Należy testować każdą regułę za pomocą przypadków pozytywnych i negatywnych oraz dodawać testy oparte na właściwościach dla niezmienników liczbowych. Zestaw testów walidatorów to kod o krytycznym znaczeniu dla produkcji, a nie skrypt.

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})

Walidatory a dekodowanie z ograniczeniami

Dekodowanie z ograniczeniami zapobiega błędom strukturalnym podczas generowania, ale nie może wymuszać semantyki (nie zna Państwa reguł biznesowych). Walidatory wykrywają naruszenia semantyczne już po wygenerowaniu danych. Należy stosować oba mechanizmy: dekodowanie do kontroli kształtu, walidatory do kontroli znaczenia, a pętlę naprawczą do uzgadniania wyników.

Szybki test

JSON Schema oznacza discount i subtotal jako liczby. Model zwraca discount równy 120 przy subtotal równym 100. Która warstwa powinna to wykryć?

Podsumowanie

Walidatory schematów i reguł:

  • Walidacja schematu obejmuje strukturę, a walidatory reguł — semantykę.
  • Modele typowane generują schematy i przeprowadzają walidację w jednym miejscu.
  • W przypadku RAG i przepływów danych należy dodawać kontrole ugruntowania, cytowań i odwołań.
  • Należy oznaczać ważność, komponować walidatory od najtańszych i przekazywać precyzyjne błędy do naprawy.
  • Walidatory należy testować jak kod o krytycznym znaczeniu dla produkcji.

Następnie: walidacja samokrytyczna, w której model sprawdza własne dane wyjściowe.

Często zadawane pytania

Czy lekcja „Walidatory schematów i reguł” jest bezpłatna?

Tak — pełny tekst „Walidatory schematów i reguł” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Prompt Engineering, przejdź na CoddyKit PRO. Kurs AI Prompt Engineering zawiera 4 lekcji w sumie.

Co nauczysz się w „Walidatory schematów i reguł”?

Wymuszanie ograniczeń Ćwiczysz AI Prompt Engineering z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć AI Prompt Engineering?

Nie wymagamy żadnego doświadczenia. AI Prompt Engineering w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Walidatory schematów i reguł”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji AI Prompt Engineering?

Tak. Każda lekcja AI Prompt Engineering zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Czym są mechanizmy ochronne
  2. Filtrowanie danych wejściowych i wyjściowych
  3. Walidatory schematów i reguł
  4. Walidacja przez samokrytykę
← Powrót do AI Prompt Engineering