피드로 돌아가기
Stop parsing GPT's JSON by hand: structured output with the Responses API and Zod
Dev.toDev.to
AI/ML

Zod 기반 Structured Output 도입을 통한 LLM 응답 신뢰성 및 타입 안정성 확보

Stop parsing GPT's JSON by hand: structured output with the Responses API and Zod

dmitryvz2026년 6월 9일7intermediate

Context

LLM 응답의 비정형성으로 인한 JSON Parsing 에러 및 런타임 Exception 발생. Prompt Engineering만으로는 Markdown Fence 포함이나 Key Drift 같은 비결정적 출력을 완전히 제어하지 못하는 한계 존재.

Technical Solution

  • Zod Schema를 Single Source of Truth로 정의하여 API Response Contract와 TypeScript Type을 동기화한 구조 설계
  • Decode Time에 모델 출력을 제약하는 OpenAI Responses API의 zodTextFormat을 적용하여 비정형 텍스트(Preamble, Fences) 원천 차단
  • .nullable().optional() 설정을 통해 모델의 Null Emission으로 인한 Validation Error를 방지하고 유연한 데이터 수용 체계 구축
  • Schema 내에 error 필드를 명시하여 분석 실패 상황을 Exception이 아닌 Typed Data로 처리하는 Failure-as-Data 패턴 도입
  • Schema 기반의 구조적 보장과 비즈니스 로직 기반의 Completeness Check를 분리하여 데이터 무결성 검증 단계 최적화

1. LLM 응답 타입 정의 시 `z.string().nullable().optional()` 조합으로 런타임 Validation 실패 최소화

2. '분석 불가' 상황을 위한 에러 필드를 Schema에 포함하여 예외 처리 로직을 일반 데이터 흐름으로 통합

3. Schema-level의 구조 보장과 Application-level의 비즈니스 완전성 검증을 분리하여 설계

4. JSON.parse 및 정규표현식 기반의 수동 파싱 코드를 제거하고 API 수준의 Structured Output으로 대체

원문 읽기