형식 실패는 품질 문제로 위장한 버그야
프롬프트에서 JSON을 요청했는데 모델이 Markdown 코드 블록으로 감싼 JSON을 반환하면 후속 파이프라인에서 오류가 나. 이건 품질 문제가 아니라 형식 준수 문제야. 따라서 별도의 지표로 측정해야 해.
형식 검증으로 확인할 수 있는 것
- JSON이 예상한 키와 자료형을 갖추고 올바르게 해석되는지.
- 코드 블록의 형식이 올바르고, 표시된 언어가 실제 내용과 일치하는지.
- 인용이 지정된 방식에 맞는지. 예를 들어 번호, 대괄호, 출처 표기 형식을 확인할 수 있어.
- 목록에 요구한 수만큼 항목이 있는지. 예를 들어 글머리표가 정확히 5개인지 확인할 수 있어.
- 출력이 길이 제한을 지키는지. 예를 들어 최대 100단어를 넘지 않는지 확인할 수 있어.
- 필수 토큰이 포함되어 있는지. 예를 들어 “FINAL ANSWER:”나 “Step 1:”이 있는지 확인할 수 있어.
세 가지 엄격도 수준
- 정규식 일치 — 패턴을 확인해. 빠르지만 형식이 조금만 달라져도 깨지기 쉬워.
- 스키마 검증 — Pydantic, JSON 스키마, Zod로 자료형 오류와 누락된 필드를 잡아.
- 의미 검증 — 스키마를 통과한 내용이 불변 조건까지 만족하는지 확인해. 예를 들어 인용 ID가 실제 출처를 가리키는지 검사할 수 있어.
원칙: 형식 준수는 품질과 별개의 축이야. 따로 추적해. 훌륭한 본문을 만들더라도 JSON 스키마를 10%나 위반하는 모델은 제대로 작동한다고 볼 수 없어.
주요 제공업체는 구조화 출력 방식을 제공해
OpenAI의 response_format=json_schema, Anthropic의 도구 사용, Google의 제어 생성이 대표적이야. 스키마에 맞는 출력을 보장해 주지. 과제에 적용할 수 있다면 사용해. 형식 실패율이 거의 0으로 떨어져서 의미의 정확성을 평가하는 데 집중할 수 있어.