Structured Outputs
구조화된 출력이 어떻게 기계가 읽을 수 있는 AI 데이터를 제공하는지 배우세요. Ultralytics Platform에서 Ultralytics YOLO26을 사용하여 스키마 적용 및 비전 작업을 살펴보세요.
구조화된 출력(Structured Outputs)은 인공지능 분야에서 모델 응답이 미리 정의된 데이터 형식, 일반적으로 JSON Schema를 엄격히 준수하도록 강제하는 방법론을 말합니다. 전통적인 Large Language Models (LLMs)에서 텍스트 생성은 확률적 토큰 예측에 의존하므로, 종종 구조화되지 않은 자유 형식의 텍스트가 생성됩니다. 구조화된 출력을 활용하면 개발자는 AI 시스템이 기계 읽기 가능하고 예측 가능한 데이터를 반환하도록 보장할 수 있으며, 이를 통해 깨지기 쉬운 파싱 스크립트와 복잡한 에러 처리가 불필요해집니다.
구조화된 출력과 JSON 모드 비교#
generative AI의 초기 버전은 기본적인 "JSON 모드"를 제공했으나, 이는 요청된 특정 키나 데이터 타입이 포함되어 있음을 보장하지 못한 채 출력 결과가 유효한 JSON인지 여부만 확인해 주었습니다. 구조화된 출력은 제약 디코딩(constrained decoding)이라는 기법을 통해 이 문제를 해결합니다. 생성 과정에서 inference engine은 모든 단계에서 모델의 어휘를 필터링하여 개발자가 제공한 스키마를 위반하는 토큰을 마스킹합니다. 이를 통해 100% 스키마 준수가 보장됩니다.
Function Calling (Tool Use)의 개념은 이 방법론과 밀접한 관련이 있습니다. 함수 호출은 모델이 외부 도구를 실행할 시점을 결정할 수 있도록 허용하는 한편, 할루시네이션 없이 도구에 필요한 매개변수를 정확히 채워 넣기 위해 전적으로 구조화된 출력에 의존합니다.
산업계 도입 및 프레임워크#
2024년에서 2025년 사이에 주요 AI 제공업체들은 엔터프라이즈 시스템의 신뢰성을 향상시키기 위해 구조화된 출력을 기본 기능으로 도입했습니다. 예를 들어, OpenAI Structured Outputs API를 사용하면 개발자는 Python의 Pydantic이나 JavaScript의 Zod를 사용하여 엄격한 스키마를 정의할 수 있습니다. 이와 유사하게, Anthropic's Claude structured outputs 및 Google Gemini structured output 도구 역시 이제 복잡한 프롬프트에 대한 엄격한 스키마 강제를 지원합니다.
오픈소스 생태계 역시 vLLM 및 Outlines과 같은 프레임워크를 활용하여 PyTorch로 구축된 커스텀 모델에 constrained decoding methodologies를 제공합니다.
실제 애플리케이션 사례#
구조화된 출력을 구현하면 모호한 AI 응답이 실행 가능한 predictive modeling 데이터로 변환됩니다. 주요 활용 사례는 다음과 같습니다:
- Data Extraction Pipelines: 기업은 구조화된 출력을 사용하여 정형화되지 않은 원본 문서에서 특정 엔티티(지원자 이름, 송장 총액, 날짜 등)를 추출하고 수동 데이터 입력 없이 SQL 데이터베이스에 직접 적재합니다.
- Autonomous AI Agents: 에이전틱 워크플로는 복잡한 소프트웨어를 탐색하기 위해 구조화된 데이터에 의존합니다. 에이전트는 사용자 쿼리를 분석하여 외부 API를 트리거하는 엄격한 JSON 페이로드를 출력할 수 있으며, Databricks Model Serving과 같은 시스템을 통해 운영을 안전하게 확장합니다.
컴퓨터 비전에서의 구조화된 출력#
자연어 처리 분야에서 주로 논의되지만, 구조화된 출력은 Computer Vision의 근본적인 작동 원리이기도 합니다. 비전 모델은 자유 형식의 텍스트를 출력하지 않으며, 좌표, 클래스, 신뢰도 점수를 나타내는 고도로 조직화된 텐서를 기본적으로 생성합니다. 예를 들어 Ultralytics YOLO26과 같은 최첨단 모델은 이미지를 평가하여 엄격하게 포맷팅된 공간 데이터를 반환하며, 이는 저지연 엣지 환경에서 원활한 model deployment를 수행하는 데 이상적입니다.
다음 스니펫은 ultralytics 패키지를 사용하여 구조화된 object detection 결과를 얼마나 쉽게 추출할 수 있는지 보여줍니다:
from ultralytics import YOLO
# Load the recommended Ultralytics YOLO26 model
model = YOLO("yolo26n.pt")
# Perform inference to generate structured visual data
results = model("image.jpg")
# The model strictly outputs structured bounding box objects
for box in results[0].boxes:
print(f"Class ID: {box.cls}, Confidence: {box.conf}, Coordinates: {box.xyxy}")확률적 AI 로직과 결정론적 소프트웨어 요구사항 사이의 간극을 메우는 구조화된 출력은 Ultralytics Platform 및 그 이상의 환경에서 확장 가능하고 프로덕션 수준의 시스템을 구축하는 데 있어 핵심적인 구성 요소 역할을 합니다.






