Structured Outputs
structured output이 machine-readable AI data를 제공하는 방식을 알아봅니다. Ultralytics 플랫폼에서 Ultralytics YOLO26을 사용한 schema enforcement와 vision task를 살펴봅니다.
구조화된 출력은 모델 응답이 일반적으로 JSON Schema와 같은 사전 정의된 데이터 형식을 엄격하게 준수하도록 강제하는 인공지능 방법론을 의미합니다. 기존 대규모 언어 모델(LLMs)에서는 텍스트 생성이 확률적 토큰 예측에 의존하므로, 구조화되지 않은 자유 형식의 텍스트가 생성되는 경우가 많습니다. 구조화된 출력을 활용하면 개발자는 AI 시스템이 기계가 읽을 수 있고 예측 가능한 데이터를 반환하도록 보장할 수 있어, 취약한 파싱 스크립트와 복잡한 오류 처리의 필요성을 없앨 수 있습니다.
구조화된 출력과 JSON 모드 비교#
초기 생성형 AI 버전에서는 기본적인 "JSON 모드"를 제공했지만, 이는 출력이 유효한 JSON인지 여부만 보장했을 뿐 요청된 특정 키나 데이터 형식을 포함하는지는 보장하지 않았습니다. 구조화된 출력은 제한 디코딩이라는 기법을 통해 이 문제를 해결합니다. 생성 과정에서 추론 엔진은 각 단계마다 모델의 어휘를 필터링하여 개발자가 제공한 스키마를 위반할 수 있는 토큰을 마스킹합니다. 이를 통해 스키마를 100% 준수하도록 보장합니다.
함수 호출(도구 사용) 개념은 이 방법론과 밀접하게 관련되어 있습니다. 함수 호출을 사용하면 모델이 외부 도구를 언제 실행할지 결정할 수 있지만, 환각 없이 도구에 필요한 매개변수를 정확하게 채우려면 전적으로 구조화된 출력에 의존해야 합니다.
산업 도입 및 프레임워크#
2024년부터 2025년 사이에 주요 AI 제공업체들은 엔터프라이즈 시스템의 안정성을 향상하기 위해 구조화된 출력을 기본 기능으로 제공하기 시작했습니다. 예를 들어, OpenAI 구조화된 출력 API를 사용하면 개발자가 Python에서는 Pydantic을, JavaScript에서는 Zod를 사용하여 엄격한 스키마를 정의할 수 있습니다. 마찬가지로 Anthropic의 Claude 구조화된 출력과 Google Gemini 구조화된 출력 도구도 이제 복잡한 프롬프트에 대한 엄격한 스키마 적용을 지원합니다.
오픈 소스 생태계에서도 PyTorch로 구축된 사용자 지정 모델에 제한 디코딩 방법론을 제공하기 위해 vLLM 및 Outlines와 같은 프레임워크를 활용합니다.
실제 적용 사례#
구조화된 출력을 구현하면 모호한 AI 응답이 실행 가능한 예측 모델링 데이터로 변환됩니다. 주요 사용 사례는 다음과 같습니다:
- 데이터 추출 파이프라인: 엔터프라이즈에서는 구조화된 출력을 사용하여 원시 비구조화 문서에서 특정 엔터티(예: 지원자 이름, 송장 합계, 날짜)를 추출하고, 수동 데이터 입력 없이 이를 SQL 데이터베이스로 직접 수집합니다.
- 자율 AI 에이전트: 에이전트 기반 워크플로는 복잡한 소프트웨어를 탐색하기 위해 구조화된 데이터에 의존합니다. 에이전트는 사용자 쿼리를 분석하고 외부 API를 트리거하는 엄격한 JSON 페이로드를 출력하여 Databricks Model Serving과 같은 시스템을 통해 작업을 안전하게 확장할 수 있습니다.
컴퓨터 비전에서의 구조화된 출력#
자연어 처리에서 많이 논의되지만, 구조화된 출력은 컴퓨터 비전의 기본 작동 원리입니다. 비전 모델은 자유 형식의 텍스트를 출력하지 않고 좌표, 클래스, 신뢰도 점수를 나타내는 고도로 정리된 텐서를 기본적으로 생성합니다. 예를 들어 Ultralytics YOLO26과 같은 최첨단 모델은 이미지를 평가한 후 엄격하게 형식이 지정된 공간 데이터를 반환하므로, 지연 시간이 짧은 엣지 환경에서 원활한 모델 배포에 적합합니다.
다음 스니펫은 ultralytics 패키지를 사용하여 구조화된 객체 감지 결과를 얼마나 쉽게 추출할 수 있는지 보여줍니다:
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 및 그 외 환경에서 확장 가능하고 프로덕션에 바로 사용할 수 있는 시스템을 구축하는 데 중요한 구성 요소로 활용됩니다.









