// education & ai

구조화된 데이터 출력 (Structured Output & JSON)

생성형 AI를 실제 웹 서비스의 데이터베이스나 백엔드 로직에 연동하려면 텍스트 답변 대신 검증 가능한 규격화된 **JSON 데이터(Structured Output)**로 받아야 합니다.


1. Structured Output 용어 사전 (Glossary)


2. Pydantic 라이브러리 기반 정밀 JSON 데이터 추출

from pydantic import BaseModel, Field
from typing import List, Optional

# 1. Pydantic을 이용한 원하는 출력 스키마 정의
class MovieReviewAnalysis(BaseModel):
    movie_title: str = Field(description="영화 제목")
    rating: float = Field(description="1.0 ~ 5.0 사이의 별점")
    sentiment: str = Field(description="긍정, 부정, 중립 중 하나")
    keywords: List[str] = Field(description="리뷰에서 추출한 핵심 키워드 3개")
    summary: str = Field(description="한 줄 요약")

# 2. OpenAI Structured Output API 호출
completion = client.beta.chat.completions.parse(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "너는 영화 리뷰 데이터 분석 시스템이야."},
        {"role": "user", "content": "인터스텔라 봤는데 우주 연출이 대박이고 음악이 지렸다. 인생작 5점 줌!"}
    ],
    response_format=MovieReviewAnalysis,
)

# 3. 파싱된 객체 바로 사용
result: MovieReviewAnalysis = completion.choices[0].message.parsed
print(f"영화제목: {result.movie_title}")
print(f"평점: {result.rating} / 감정: {result.sentiment}")
print(f"키워드: {result.keywords}")

3. 자주 묻는 질문 (Q&A)

Q. response_format={"type": "json_object"}Structured Outputs의 차이는? A. 기존 json_object 방식은 JSON 형태로 출력하려 노력하지만 키 이름이 빠지거나 문법이 깨질 확률이 미세하게 존재했습니다. 반면 Structured Outputs(Pydantic 스키마 연동)는 스키마 일치율 100%를 보장합니다.

🎓 DAVHAVE AI & 모바일 개발 마스터링

AI 및 마스터 가이드 수강 중 도움이 필요하시거나 사내 AI 교육 및 에이전트 도입 컨설팅이 필요하신가요?

AI 마스터 문의하기 →
https://davhave.com/education/ai/claude/ch06-structured-outputs-json
← 이전 레슨토큰 최적화와 프롬프트 캐싱 다음 레슨 →RAG 시스템의 설계와 최적화