Skjemavalidatorer og regelvalidatorer
Håndheve begrensninger.
Skjemavalidatorer og regelvalidatorer er en gratis leksjon i AI-prompt engineering på CoddyKit. Dette er leksjon 3 av 4. Du kan lese valgfritt 3 leksjoner fra denne læringsstien gratis i sin helhet – deretter låser CoddyKit PRO opp alle leksjoner, samt praktisk øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-prompt engineering, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Validatorer håndhever kontrakten
En validator er en sikkerhetsmekanisme som kontrollerer utdata mot en eksplisitt spesifikasjon: et JSON Schema, et sett med forretningsregler eller begge deler. I motsetning til en modereringsklassifikator er en validator deterministisk og fullt etterprøvbar; samme inndata gir alltid samme avgjørelse.
Skjemavalideringslag
Den første validatoren bekrefter at utdataene samsvarer med den strukturelle kontrakten. Samle inn alle feil, ikke bare den første, slik at tilbakemeldingen til reparasjonen blir fullstendig.
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)]Mer enn skjema: forretningsregler
Skjemaer kan ikke uttrykke alt. Et skjema kan angi at discount er et tall, men ikke at verdien ikke må overstige delbeløpet. Regelvalidatorer koder disse invariantene på tvers av felt og domener.
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)]Typede modeller som validatorer
Et bibliotek for typede modeller (for eksempel Pydantic) fungerer både som skjemagenerator og validator, med egendefinerte validatorer for regler. En feil ved parsing er avgjørelsen.
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 vValidatorer for forankring og kildehenvisninger
For RAG-utdata må De validere at påstander er underbygget av den oppgitte konteksten. Krev at modellen oppgir kilde-ID-er, og kontroller deretter at hver oppgitte ID finnes, og at de siterte tekstutdragene faktisk forekommer i kilden. Avvis svar som viser til manglende eller oppdiktede kilder.
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 TrueReferanse- og kryssystemkontroller
Noen regler krever eksterne oppslag: finnes den refererte ordre-ID-en, er produktet på lager, og ligger datoen i et gyldig tidsvindu? Disse validatorene spør systemene Deres. Hold dem raske ved å bruke hurtigbuffer og satsvis behandling, siden de ligger i svarbanen.
def order_exists(o):
return db.exists('SELECT 1 FROM orders WHERE id = %s', o['order_id'])Avgjørelser merket med alvorlighetsgrad
Ikke alle brudd er like alvorlige. Merk hver regel med en alvorlighetsgrad, slik at pipelinen kan velge riktig handling: blokker kritiske brudd, generer svaret på nytt ved kvalitetsproblemer, og godkjenn mindre brudd med en advarsel.
RULE_SEVERITY = {
'discount_le_subtotal': 'critical',
'total_consistent': 'critical',
'tone_professional': 'warning'
}Sett sammen validatorer i riktig rekkefølge
Kjør validatorene fra de billigste til de dyreste, og avslutt tidlig ved alvorlige feil: først skjemaet, deretter regler i minnet, så eksterne oppslag og til slutt eventuelle kontroller utført av en modellbasert dommer. Dette minimerer kostnadene når forespørsler vanligvis avvises.
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()Validatorer gir tilbakemelding til reparasjonen
Verdien av en validator øker betydelig når meldingene dens brukes i reparasjonssløyfen. Generer maskinlesbare feil med feltbanen, regelen som feilet, og verdien som forårsaket feilen, slik at modellen kan rette opp feilen presist i én omgang.
{'errors': [
{'path': 'discount', 'rule': 'discount_le_subtotal',
'got': 120, 'limit': 100}
]}Test selve validatorene
En feil i en validator kan stille og rolig slippe gjennom ugyldige utdata eller blokkere gyldige utdata. Test hver regel med positive og negative testdata, og legg til egenskapsbaserte tester for numeriske invarianter. Validatorsuiten er produksjonskritisk kode, ikke et skript.
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})Validatorer kontra begrenset dekoding
Begrenset dekoding hindrer strukturelle feil under genereringen, men kan ikke håndheve semantikk fordi den ikke kjenner forretningsreglene Deres. Validatorer oppdager semantiske brudd i etterkant. Bruk begge deler: dekoding for struktur, validatorer for betydning og reparasjonssløyfen for å avstemme resultatet.
Hurtigsjekk
Et JSON Schema angir at discount og subtotal er tall. Modellen returnerer discount 120 med subtotal 100. Hvilket lag bør oppdage dette?
Oppsummering
Skjema- og regelvalidatorer:
- Skjemavalidering dekker struktur, mens regelvalidatorer dekker semantikk.
- Typede modeller genererer skjemaer og validerer på ett sted.
- Legg til kontroller av forankring, kildehenvisninger og referanser for RAG og dataflyter.
- Merk alvorlighetsgrad, sett sammen validatorene fra billigst til dyrest, og gi presise reparasjonsfeil.
- Test validatorer som produksjonskritisk kode.
Deretter: validering med selvkritikk, der modellen kontrollerer sine egne utdata.
Lær deg AI-prompt engineering med en AI-veileder – gratis
Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.
- Kurs
- 53
- Leksjoner
- 199
Ofte stilte spørsmål
Er leksjonen «Skjemavalidatorer og regelvalidatorer» gratis?
Ja – du kan lese valgfritt 3 av leksjonene i læringsstien AI-prompt engineering, inkludert «Skjemavalidatorer og regelvalidatorer», gratis i sin helhet her på nettet. Deretter låser CoddyKit PRO opp alle leksjoner, samt interaktiv øving med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Kurset i AI-prompt engineering inneholder totalt 4 leksjoner.
Hva lærer jeg i «Skjemavalidatorer og regelvalidatorer»?
Håndheve begrensninger. Du øver på AI-prompt engineering med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.
Trenger jeg erfaring for å begynne med AI-prompt engineering?
Ingen tidligere erfaring er nødvendig. AI-prompt engineering på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.
Hvor lang tid tar leksjonen «Skjemavalidatorer og regelvalidatorer»?
De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.
Kan jeg skrive og kjøre kode i denne AI-prompt engineering-leksjonen?
Ja. Alle AI-prompt engineering-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.
Alle leksjonene i dette kurset
- Hva er guardrails
- Filtrering av input og output
- Skjemavalidatorer og regelvalidatorer
- Validering med self-critique