3.4.3.2 필수 키(Key) 존재 여부 및 데이터 타입 강제
구조 기반 정답지(Structure-based Ground Truth)가 결정론적 오라클 시스템에서 지니는 가장 막강한 권력은, AI가 환각(Hallucination)을 일으키기 이전에 런타임(Runtime) 환경을 붕괴시키는 ’치명적 파싱 에러(Parsing Error)’를 원천 차단한다는 점에 있다. 애플리케이션 백엔드는 언어 모델의 유창한 문장이 아니라, 정확히 명명된 변수와 예측 가능한 타입(Type)을 가진 데이터 덩어리를 필요로 하기 때문이다.
이러한 정답지는 자연어 내용의 참/거짓을 평가하기 앞서, 구조적 무결점(Structural Integrity)을 수문장처럼 검증하는 역할을 수행한다.
1. 필수 속성(Required Fields)의 엄격한 강제
아무리 훌륭한 데이터를 추출했더라도, 백엔드 로직이 기대하는 필수 식별자가 누락되면 시스템은 KeyError나 NullPointerException을 직면하며 즉시 다운(Down)된다. 구조 기반 정답지는 스키마 정의를 통해 ’반드시 존재해야 하는 속성’과 ’경우에 따라 생략 가능한 옵션 속성’의 경계선을 기계적으로 획정한다.
- 안티 패턴 (허술한 검증): 모델이
{"name": "홍길동", "age": 30}을 반환했으나, 정작 데이터베이스 식별자인user_id를 누락했음에도 내용이 그럴싸하다는 이유로Pass를 부여하는 경우. - 결정론적 구조 패턴: 오라클은
required: ["user_id", "name"]이라는 정답지 스키마를 바탕으로, 응답 JSON 내에 해당 Key 공간이 물리적으로 할당되어 있는지를 O(1)로 탐색한다. 만약 단 하나의 필수 키라도 누락되었다면, 내부에 담긴 데이터의 화려함과 무관하게 즉각적인Fail을 격발한다.
2. 데이터 타입 캐스팅(Type Casting)과 도메인 경계 검증
언어 모델의 근본적인 한계는 모든 서브워드(Subword)를 텍스트 토큰(Token)으로 인식한다는 점이다. 모델에게 숫자 100은 정수형 공간이 아니라 문자형 코드로 생성된다. 이 과정에서 모델은 언제라도 100 대신 "100", "백", 혹은 "100.0"을 뱉어낼 수 있는 내재적 비결정성을 지닌다.
구조 기반 정답지는 이러한 데이터 타입의 변이를 허용하지 않는 엄격한 타입 힌팅(Type Hinting)을 오라클에게 지시한다.
- Type 강제성: 정답지가
"price": {"type": "integer"}로 선언되어 있다면, AI가 생성한{"price": "15000"}(문자열)이나{"price": 15000.5}(실수)는 모두 타당한 비즈니스 값이더라도 오라클 단에서 기각된다. - 포맷 및 열거형(Enum) 통제: 더 나아가, 정답지는 단순 타입을 넘어 도메인이 허용하는 값의 집합을 제한한다. 통화 코드 필드에
{"enum": ["KRW", "USD", "EUR"]}를 강제함으로써, AI가 환각을 일으켜"KOR"나"Won"이라는 잘못된 규격을 창조해 내는 빈틈을 원천 봉쇄한다.
결과적으로 필수 키 검사와 데이터 타입 강제화는, 불확실성이 가득한 LLM의 생성물을 **’결정론적인 소프트웨어 엔지니어링의 세계’로 건너오게 만드는 가장 강력한 데이터 파싱 계약(Data Parsing Contract)**이다. 오라클은 이 계약을 수호하는 무자비한 집행관으로서, 단 하나의 타입 오차조차 허용해서는 안 된다.