피드로 돌아가기
Dev.toAI/ML
원문 읽기

Zod 기반 Structured Output 도입을 통한 LLM 응답 신뢰성 및 타입 안정성 확보
Stop parsing GPT's JSON by hand: structured output with the Responses API and Zod
AI 요약
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으로 대체