프롬프트·AI 활용

Structured Output

구조화 출력

AI 활용 분야에서 쓰이는 용어로, LLM 응답을 미리 정의한 스키마(JSON·Pydantic·TypeScript 등)대로 강제하여 후속 코드가 안전하게 파싱·검증할 수 있게 만든 출력 방식입니다.

쉬운 풀이

Structured Output은 LLM(Large Language Model, 거대 언어 모델)이 답을 자유 줄글이 아니라 개발자가 미리 짜 둔 양식(스키마)에 100% 맞춰 내놓도록 잠가 두는 출력 방식이에요. 인턴 면접 지원서를 자기소개 자유 양식이 아니라 회사가 준 PDF 양식의 칸에만 적어 내라고 못 박는 감각과 비슷합니다. 적용하면 누락된 필드·잘못된 타입·없는 enum 값이 원천 차단돼, 파싱 코드의 try/except와 재시도 루프가 한 겹씩 사라져요. AI 에이전트가 외부 도구·DB를 호출하는 거의 모든 제품에서 1차 안전망으로 쓰입니다.

한 줄 비유
표준 견적서 양식을 출력 파이프 입구에 끼워, 양식을 벗어난 답은 통과하지 못하게 막는 검수대입니다.
활용 예시
Case 1

OpenAI 공식 출시 — 회의록에서 액션 아이템 추출

OpenAI는 2024년 8월 6일 Structured Outputs 출시 발표에서 비정형 텍스트(회의록)에서 액션 아이템·마감일·담당자를 JSON 배열로 뽑는 예제를 핵심 사용처로 제시했습니다.[1] 같은 GPT-4 계열을 프롬프트만으로 돌렸을 때 약 35.9%이던 복잡 스키마 준수율이, strict: true를 적용하자 100%로 올라간 평가 그래프가 함께 공개됐습니다.[1] 회의록·이메일·고객 문의에서 정해진 필드만 추출해 사내 DB에 적재하는 파이프라인의 표준 부품으로 자리잡았습니다.

Case 2

한국 사내 정책 챗봇 — 시트 데이터를 정책 객체로

한국 개발자 커뮤니티에 공유된 사례에 따르면, 사내 정책을 스프레드시트로 관리하던 팀이 LLM 챗봇 지식베이스로 옮기면서 정책 한 건을 JSON 객체 하나로 매핑하고 Structured Outputs로 생성·검증했습니다.[4] JSON Schema에 필수값과 포맷을 박아 두니 누락·타입 오류가 사전에 걸러지고, 변경된 정책만 객체 단위로 부분 교체하기 쉬워졌다고 보고했습니다.[4] 보험·금융처럼 항목이 자주 바뀌는 도메인에서 "정책 변경 → 즉시 챗봇 반영" 흐름에 적합합니다.

Case 3

에이전트 함수 호출 — 도구 인자 안정화

OpenAI 공식 문서는 tools 정의에 strict: true를 붙이면 모델이 만든 인자 객체가 항상 스키마에 부합한다고 명시하고, 이를 에이전트·데이터 추출·도구 사용의 표준으로 권장합니다.[1][3] Anthropic은 2025년 11월 13일 동일 옵션을 베타로 공개했고, Google Gemini도 response_schema로 Pydantic·Zod 타입을 그대로 받아 같은 결과를 보장합니다.[2][5] SQL 쿼리·결제 API·사내 시스템을 LLM이 호출하는 에이전트에서, 인자 검증 코드와 재시도 루프를 크게 줄일 수 있습니다.

Case 4

분류·UI 자동 생성 — enum과 재귀 스키마

OpenAI 출시 데모는 사용자 요청에 따라 랜딩 페이지·로그인 화면·위젯의 컴포넌트 트리를 JSON으로 생성하는 UI 동적 생성 예제를 공개했습니다.[1] 컴포넌트 type을 enum으로 묶고 children을 자기 자신을 가리키는 재귀 스키마로 정의해, 깊이가 임의인 UI를 항상 유효한 트리로 받습니다.[1] 상품 카테고리 분류, 감정 분석, 문서 라우팅처럼 결과를 정해진 enum 안에서만 받아야 하는 업무에 동일한 패턴이 들어맞습니다.

참고사항
  1. 자주 하는 데이터 추출 업무 한 가지를 골라 결과 JSON 한 건을 손으로 만들어 봅니다
  2. 그 JSON을 토대로 필수 필드·타입·enum·additionalProperties: false까지 들어간 JSON Schema를 작성합니다
  3. OpenAI는 response_formatjson_schemastrict: true, Anthropic은 도구 정의에 strict: true, Google Gemini는 response_schema를 지정합니다
  4. 같은 입력을 일반 프롬프트와 Structured Outputs 두 방식으로 각 30회 돌려 스키마 일치율과 평균 지연을 비교합니다
  5. refusal 처리 코드와 max_tokens 도달 시 처리 코드, 그리고 새 스키마 첫 호출의 컴파일 지연(최대 1분)까지 운영 가이드에 포함합니다

스키마가 맞다고 내용이 맞는 건 아닙니다. OpenAI 문서는 "수식 계산처럼 값 자체가 틀리는 오류는 막지 못한다"고 명시하며, 새 스키마는 첫 호출 시 최대 1분 가까이 전처리 지연이 발생할 수 있고 병렬 함수 호출과는 호환되지 않는다고 안내합니다.[1] arXiv JSONSchemaBench 연구는 일부 엔진에서 복잡 스키마 컴파일이 수십 초에서 수분 걸리고, Outlines는 타임아웃 때문에 준수율이 가장 낮게 나온 케이스도 보고했습니다.[5] 또 형식을 강제하면 모델이 "거절할 기회"를 잃고 무의미한 값으로 필드를 채울 수 있어, refusal 필드와 빈 결과 처리 로직을 별도로 둬야 한다는 지적이 한국 분석 기사에서도 반복적으로 나옵니다.[8]

진화 방향은 두 갈래입니다. 하나는 추론 엔진 쪽으로, XGrammar 같은 오픈소스 엔진이 CFG를 토큰 단위로 분리·캐싱해 구조화 생성에서 최대 100배 가까운 속도 향상을 보고했고, 일부 LLM 서빙 스택에 통합되고 있습니다.[6] 다른 하나는 모델·SDK 통합으로, OpenAI는 Pydantic, Anthropic은 Zod 같은 타입 스키마를 그대로 받아 JSON Schema로 변환·역직렬화해 주는 네이티브 지원을 표준화하고 있어, "스키마=코드의 타입 그 자체"가 되는 흐름이 자리잡고 있습니다.[1][2] 한국에서도 사내 정책·약관·계약서·신고 양식을 LLM에 넣을 때 Structured Outputs를 표준 출구로 두고, 스키마 검증·로깅·재시도까지 한 파이프라인으로 묶는 패턴이 자리잡고 있다는 보고가 늘고 있습니다.[4]

이 용어와의 관계
  • 유사 개념
    Prompt Version같은 프롬프트·AI 활용 갈래에서 자주 함께 등장하는 개념입니다.
  • 유사 개념
    Prompt Library같은 프롬프트·AI 활용 갈래에서 자주 함께 등장하는 개념입니다.
  • 유사 개념
    Persona Prompting같은 프롬프트·AI 활용 갈래에서 자주 함께 등장하는 개념입니다.
관련 태그
참고 자료
  1. Introducing Structured Outputs in the API — 공식 발표 · OpenAI · 2024-08-06
  2. Increase output consistency (Structured Outputs) — 공식 문서 · Anthropic · 2025
  3. Structured Outputs guide — 공식 문서 · OpenAI Platform · 2024
  4. LLM의 JSON 응답을 안정적으로 받는 방법: Structured Outputs — 개발자 사례 · 2024
  5. Generating Structured Outputs from Language Models: Benchmark and Studies — 학술 논문 · arXiv · 2025-01
  6. XGrammar: Flexible and Efficient Structured Generation Engine for Large Language Models — 학술 논문 · arXiv · 2024-11-22
  7. Outlines: Structured Outputs — 오픈소스 · dottxt-ai · 2024
  8. 완벽한 JSON이 완벽한 답은 아니다: 구조화된 출력의 함정 — 분석 기사 · 2025
대표 출처OpenAI 공식 발표 (2024.08.06) — Structured Outputs in the API; Anthropic Structured Outputs 베타 (2025.11.13) 후속