AI Prompt Engineering · 강의

스키마 및 규칙 검증기

제약 조건 적용

레슨 3/413개 단계

스키마 및 규칙 검증기은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

검증기가 계약을 강제합니다

검증기는 명시적인 사양에 따라 출력을 검사하는 안전장치입니다. 이 사양은 JSON 스키마, 비즈니스 규칙 집합 또는 둘 다일 수 있습니다. 콘텐츠 조정 분류기와 달리 검증기는 결정론적이며 완전히 감사할 수 있습니다. 동일한 입력에는 항상 동일한 판정이 내려집니다.

스키마 검증 계층

첫 번째 검증기는 출력이 구조적 계약과 일치하는지 확인합니다. 수정 안내가 완전해지도록 첫 번째 오류만이 아니라 모든 오류를 수집하십시오.

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

스키마를 넘어: 비즈니스 규칙

스키마만으로는 모든 것을 표현할 수 없습니다. 스키마는 discount가 숫자라고 말할 수는 있지만, 그 값이 소계를 초과해서는 안 된다고 말할 수는 없습니다. 규칙 검증기는 이러한 필드 간 및 도메인 불변식을 코드로 표현합니다.

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

검증기로서의 유형 지정 모델

유형 지정 모델 라이브러리(예: Pydantic)는 스키마 생성기와 검증기 역할을 함께 하며, 규칙을 위한 사용자 지정 검증기도 제공합니다. 파싱 실패 자체가 판정입니다.

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

근거 연결 및 인용 검증기

RAG 출력의 경우 주장이 제공된 맥락으로 뒷받침되는지 검증하십시오. 모델이 출처 식별자를 인용하도록 요구한 다음, 인용된 각 식별자가 존재하고 인용된 구간이 실제로 출처에 나타나는지 확인하십시오. 누락되었거나 조작된 출처를 인용한 답변은 거부하십시오.

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

참조 및 시스템 간 검사

일부 규칙에는 외부 조회가 필요합니다. 참조된 주문 ID가 존재하는지, 제품의 재고가 있는지, 날짜가 유효한 범위에 속하는지 확인해야 합니다. 이러한 검증기는 시스템을 조회합니다. 응답 경로에 있으므로 캐시와 일괄 처리를 활용해 빠르게 유지하십시오.

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

심각도가 태그된 판정

모든 위반이 같은 것은 아닙니다. 파이프라인이 적절한 조치를 선택할 수 있도록 각 규칙에 심각도를 태그하십시오. 치명적 위반은 강제 차단하고, 품질 문제는 재생성하며, 사소한 문제는 경고와 함께 통과시키십시오.

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

순서대로 검증기 조합

비용이 낮은 검증기부터 실행하고 강제 실패가 발생하면 조기에 종료하십시오. 스키마, 메모리 내 규칙, 외부 조회, 모델 판정 검사 순서로 실행합니다. 이렇게 하면 일반적인 거부 경로에서 비용을 최소화할 수 있습니다.

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

검증기가 수정 피드백을 이끕니다

검증기의 가치는 메시지가 수정 루프에 입력될 때 배가됩니다. 필드 경로, 실패한 규칙, 문제를 일으킨 값을 포함한 기계가 처리할 수 있는 오류를 출력하여 모델이 한 차례에 정확하게 수정할 수 있게 하십시오.

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

검증기 자체를 테스트하십시오

버그가 있는 검증기는 잘못된 출력을 조용히 통과시키거나 올바른 출력을 차단합니다. 각 규칙을 정상 및 오류 사례로 단위 테스트하고, 숫자 불변식에는 속성 기반 테스트를 추가하십시오. 검증기 모음은 스크립트가 아니라 프로덕션에 필수적인 코드입니다.

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

검증기와 제약 디코딩 비교

제약 디코딩은 생성 시점에 구조적 오류를 방지하지만 의미를 강제할 수는 없습니다(비즈니스 규칙을 알지 못하기 때문입니다). 검증기는 사후에 의미상의 위반을 포착합니다. 두 가지를 모두 사용하십시오. 형태에는 디코딩을, 의미에는 검증기를, 조정에는 수정 루프를 사용하십시오.

빠른 확인

JSON 스키마는 discount와 subtotal을 숫자로 표시합니다. 모델이 subtotal 100에 discount 120을 반환했습니다. 어떤 계층에서 이를 포착해야 합니까?

복습

스키마 및 규칙 검증기:

  • 스키마 검증은 구조를 다루고, 규칙 검증기는 의미를 다룹니다.
  • 유형 지정 모델은 한곳에서 스키마를 생성하고 검증합니다.
  • RAG와 데이터 흐름에는 근거 연결, 인용 및 참조 검사를 추가하십시오.
  • 심각도를 태그하고, 비용이 낮은 것부터 조합하며, 정확한 수정 오류를 전달하십시오.
  • 프로덕션에 필수적인 코드로 검증기를 테스트하십시오.

다음: 모델이 자신의 출력을 검사하는 자기 비평 검증입니다.

무료로 시작

AI 튜터와 함께 AI Prompt Engineering을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
53
레슨
199

자주 묻는 질문

“스키마 및 규칙 검증기” 강의는 무료인가요?

네 — “스키마 및 규칙 검증기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

“스키마 및 규칙 검증기”에서 뭘 배우나요?

제약 조건 적용 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“스키마 및 규칙 검증기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 가드레일이란 무엇인가
  2. 입력 및 출력 필터링
  3. 스키마 및 규칙 검증기
  4. 자기 비평 검증
← AI Prompt Engineering(으)로 돌아가기